44 type,
public,
abstract ::
ax_t
56 module subroutine ax_helm_allocator(object, type_name)
57 class(ax_t),
allocatable,
intent(inout) :: object
58 character(len=*),
intent(in) :: type_name
59 end subroutine ax_helm_allocator
70 subroutine ax_helm_allocate(obj)
72 class(ax_t),
allocatable,
intent(inout) :: obj
73 end subroutine ax_helm_allocate
78 module subroutine register_ax_helm(type_name, allocator)
79 character(len=*),
intent(in) :: type_name
80 procedure(ax_helm_allocate),
pointer,
intent(in) :: allocator
81 end subroutine register_ax_helm
85 type ax_helm_allocator_entry
86 character(len=NEKO_TYPENAME_LEN) :: type_name
87 procedure(ax_helm_allocate),
pointer,
nopass :: allocator
88 end type ax_helm_allocator_entry
91 type(ax_helm_allocator_entry),
allocatable :: ax_helm_registry(:)
94 integer :: ax_helm_registry_size = 0
96 public :: ax_helm_allocator, register_ax_helm, ax_helm_allocate
106 subroutine ax_compute(this, w, u, coef, msh, Xh)
113 class(ax_t),
intent(in) :: this
114 type(
space_t),
intent(in) :: Xh
115 type(
mesh_t),
intent(in) :: msh
116 type(
coef_t),
intent(in) :: coef
117 real(kind=
rp),
intent(inout) :: w(xh%lx, xh%ly, xh%lz, msh%nelv)
118 real(kind=
rp),
intent(in) :: u(xh%lx, xh%ly, xh%lz, msh%nelv)
119 end subroutine ax_compute
134 subroutine ax_compute_vector(this, au, av, aw, u, v, w, coef, msh, Xh)
141 class(ax_t),
intent(in) :: this
142 type(
space_t),
intent(in) :: Xh
143 type(
mesh_t),
intent(in) :: msh
144 type(
coef_t),
intent(in) :: coef
145 real(kind=
rp),
intent(inout) :: au(xh%lx, xh%ly, xh%lz, msh%nelv)
146 real(kind=
rp),
intent(inout) :: av(xh%lx, xh%ly, xh%lz, msh%nelv)
147 real(kind=
rp),
intent(inout) :: aw(xh%lx, xh%ly, xh%lz, msh%nelv)
148 real(kind=
rp),
intent(in) :: u(xh%lx, xh%ly, xh%lz, msh%nelv)
149 real(kind=
rp),
intent(in) :: v(xh%lx, xh%ly, xh%lz, msh%nelv)
150 real(kind=
rp),
intent(in) :: w(xh%lx, xh%ly, xh%lz, msh%nelv)
151 end subroutine ax_compute_vector
161 subroutine ax_free(this)
162 class(ax_t),
intent(inout) :: this
163 end subroutine ax_free
Abstract interface for computing inside a Krylov method, taking 3 components of a vector field in a ...
Abstract interface for computing inside a Krylov method.
Defines a Matrix-vector product.
subroutine ax_free(this)
Release resources held by a matrix-vector product.
integer, parameter, public rp
Global precision used in computations.
Defines a function space.
integer, parameter, public neko_typename_len
Base type for a matrix-vector product providing .
Coefficients defined on a given (mesh, ) tuple. Arrays use indices (i,j,k,e): element e,...
The function space for the SEM solution fields.