43 type,
public,
abstract ::
ax_t
55 module subroutine ax_helm_allocator(object, type_name)
56 class(ax_t),
allocatable,
intent(inout) :: object
57 character(len=*),
intent(in) :: type_name
58 end subroutine ax_helm_allocator
69 subroutine ax_helm_allocate(obj)
71 class(ax_t),
allocatable,
intent(inout) :: obj
72 end subroutine ax_helm_allocate
77 module subroutine register_ax_helm(type_name, allocator)
78 character(len=*),
intent(in) :: type_name
79 procedure(ax_helm_allocate),
pointer,
intent(in) :: allocator
80 end subroutine register_ax_helm
84 type ax_helm_allocator_entry
85 character(len=20) :: type_name
86 procedure(ax_helm_allocate),
pointer,
nopass :: allocator
87 end type ax_helm_allocator_entry
90 type(ax_helm_allocator_entry),
allocatable :: ax_helm_registry(:)
93 integer :: ax_helm_registry_size = 0
95 public :: ax_helm_allocator, register_ax_helm, ax_helm_allocate
105 subroutine ax_compute(this, w, u, coef, msh, Xh)
112 class(ax_t),
intent(in) :: this
113 type(
space_t),
intent(in) :: Xh
114 type(
mesh_t),
intent(in) :: msh
115 type(
coef_t),
intent(in) :: coef
116 real(kind=
rp),
intent(inout) :: w(xh%lx, xh%ly, xh%lz, msh%nelv)
117 real(kind=
rp),
intent(in) :: u(xh%lx, xh%ly, xh%lz, msh%nelv)
118 end subroutine ax_compute
133 subroutine ax_compute_vector(this, au, av, aw, u, v, w, coef, msh, Xh)
140 class(ax_t),
intent(in) :: this
141 type(
space_t),
intent(in) :: Xh
142 type(
mesh_t),
intent(in) :: msh
143 type(
coef_t),
intent(in) :: coef
144 real(kind=
rp),
intent(inout) :: au(xh%lx, xh%ly, xh%lz, msh%nelv)
145 real(kind=
rp),
intent(inout) :: av(xh%lx, xh%ly, xh%lz, msh%nelv)
146 real(kind=
rp),
intent(inout) :: aw(xh%lx, xh%ly, xh%lz, msh%nelv)
147 real(kind=
rp),
intent(in) :: u(xh%lx, xh%ly, xh%lz, msh%nelv)
148 real(kind=
rp),
intent(in) :: v(xh%lx, xh%ly, xh%lz, msh%nelv)
149 real(kind=
rp),
intent(in) :: w(xh%lx, xh%ly, xh%lz, msh%nelv)
150 end subroutine ax_compute_vector
160 subroutine ax_free(this)
161 class(ax_t),
intent(inout) :: this
162 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.
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.