33 submodule(
precon) precon_fctry
45 character(len=20) :: PC_KNOWN_TYPES(3) = [character(len=20) :: &
53 module subroutine precon_factory(pc, type_name)
54 class(pc_t),
target,
allocatable,
intent(inout) :: pc
55 character(len=*),
intent(in) :: type_name
56 character(len=:),
allocatable :: type_string
58 if (
allocated(pc))
then
59 call precon_destroy(pc)
63 if (trim(type_name) .eq.
'jacobi')
then
71 else if (type_name(1:4) .eq.
'hsmg')
then
73 else if(trim(type_name) .eq.
'ident')
then
81 new_line(
'A') //
"- ", .true.)
82 call neko_error(
"Unknown preconditioner type: " &
83 // trim(type_name) //
". Known types are: " &
87 end subroutine precon_factory
90 module subroutine precon_destroy(pc)
91 class(pc_t),
allocatable,
intent(inout) :: pc
93 if (
allocated(pc))
then
94 select type (pcp => pc)
106 end subroutine precon_destroy
108 end 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
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.