33submodule(
precon) precon_fctry
46 character(len=20) :: PC_KNOWN_TYPES(4) = [character(len=20) :: &
55 module subroutine precon_factory(pc, type_name)
56 class(pc_t),
allocatable,
intent(inout) :: pc
57 character(len=*),
intent(in) :: type_name
58 character(len=:),
allocatable :: type_string
60 if (
allocated(pc))
then
61 call precon_destroy(pc)
65 if (trim(type_name) .eq.
'jacobi')
then
73 else if (type_name(1:4) .eq.
'hsmg')
then
75 else if (type_name(1:4) .eq.
'phmg')
then
77 call neko_error(
'Hybrid ph multigrid only supported for CPU')
80 else if(trim(type_name) .eq.
'ident')
then
88 new_line(
'A') //
"- ", .true.)
89 call neko_error(
"Unknown preconditioner type: " &
90 // trim(type_name) //
". Known types are: " &
94 end subroutine precon_factory
97 module subroutine precon_destroy(pc)
98 class(pc_t),
allocatable,
intent(inout) :: pc
100 if (
allocated(pc))
then
101 select type (pcp => pc)
115 end subroutine precon_destroy
117end submodule precon_fctry
Identity Krylov preconditioner for accelerators.
Jacobi preconditioner accelerator backend.
Krylov preconditioner (identity)
integer, parameter neko_bcknd_sx
integer, parameter neko_bcknd_device
Hybrid ph-multigrid preconditioner.
Jacobi preconditioner SX-Aurora backend.
character(:) function, allocatable, public concat_string_array(array, sep, prepend)
Concatenate an array of strings into one string with array items separated by spaces.
Defines a canonical Krylov preconditioner for accelerators.
Defines a jacobi preconditioner.
Defines a canonical Krylov preconditioner.
Defines a jacobi preconditioner.
Defines a jacobi preconditioner for SX-Aurora.