42 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
54 dx_d, dy_d, dz_d, dxt_d, dyt_d, dzt_d, &
55 h1_d, g11_d, g22_d, g33_d, g12_d, g13_d, g23_d, nelv, lx) &
56 bind(c, name=
'hip_ax_helm')
57 use,
intrinsic :: iso_c_binding
58 type(c_ptr),
value :: w_d, u_d
59 type(c_ptr),
value :: dx_d, dy_d, dz_d
60 type(c_ptr),
value :: dxt_d, dyt_d, dzt_d
61 type(c_ptr),
value :: h1_d, g11_d, g22_d, g33_d, g12_d, g13_d, g23_d
62 integer(c_int) :: nel, lx
68 dx_d, dy_d, dz_d, dxt_d, dyt_d, dzt_d,&
69 h1_d, g11_d, g22_d, g33_d, g12_d, g13_d, g23_d, nelv, lx) &
70 bind(c, name=
'cuda_ax_helm')
71 use,
intrinsic :: iso_c_binding
72 type(c_ptr),
value :: w_d, u_d
73 type(c_ptr),
value :: dx_d, dy_d, dz_d
74 type(c_ptr),
value :: dxt_d, dyt_d, dzt_d
75 type(c_ptr),
value :: h1_d, g11_d, g22_d, g33_d, g12_d, g13_d, g23_d
76 integer(c_int) :: nel, lx
82 dx_d, dy_d, dz_d, dxt_d, dyt_d, dzt_d, &
83 h1_d, g11_d, g22_d, g33_d, g12_d, g13_d, g23_d, nelv, lx) &
84 bind(c, name=
'opencl_ax_helm')
85 use,
intrinsic :: iso_c_binding
86 type(c_ptr),
value :: w_d, u_d
87 type(c_ptr),
value :: dx_d, dy_d, dz_d
88 type(c_ptr),
value :: dxt_d, dyt_d, dzt_d
89 type(c_ptr),
value :: h1_d, g11_d, g22_d, g33_d, g12_d, g13_d, g23_d
90 integer(c_int) :: nel, lx
98 type(
mesh_t),
intent(inout) :: msh
99 type(
space_t),
intent(inout) :: Xh
100 type(
coef_t),
intent(inout) :: coef
101 real(kind=
rp),
intent(inout) :: w(xh%lx, xh%ly, xh%lz, msh%nelv)
102 real(kind=
rp),
intent(inout) :: u(xh%lx, xh%ly, xh%lz, msh%nelv)
103 type(c_ptr) :: u_d, w_d
109 call hip_ax_helm(w_d, u_d, xh%dx_d, xh%dy_d, xh%dz_d, &
110 xh%dxt_d, xh%dyt_d, xh%dzt_d, coef%h1_d, &
111 coef%G11_d, coef%G22_d, coef%G33_d, &
112 coef%G12_d, coef%G13_d, coef%G23_d, &
115 call cuda_ax_helm(w_d, u_d, xh%dx_d, xh%dy_d, xh%dz_d, &
116 xh%dxt_d, xh%dyt_d, xh%dzt_d, coef%h1_d, &
117 coef%G11_d, coef%G22_d, coef%G33_d, &
118 coef%G12_d, coef%G13_d, coef%G23_d, &
122 xh%dxt_d, xh%dyt_d, xh%dzt_d, coef%h1_d, &
123 coef%G11_d, coef%G22_d, coef%G33_d, &
124 coef%G12_d, coef%G13_d, coef%G23_d, &
129 call device_addcol4(w_d ,coef%h2_d, coef%B_d, u_d, coef%dof%size())
void opencl_ax_helm(void *w, void *u, void *dx, void *dy, void *dz, void *dxt, void *dyt, void *dzt, void *h1, void *g11, void *g22, void *g33, void *g12, void *g13, void *g23, int *nelv, int *lx)
void cuda_ax_helm(void *w, void *u, void *dx, void *dy, void *dz, void *dxt, void *dyt, void *dzt, void *h1, void *g11, void *g22, void *g33, void *g12, void *g13, void *g23, int *nelv, int *lx)
Return the device pointer for an associated Fortran array.
subroutine ax_helm_device_compute(w, u, coef, msh, Xh)
Defines a Matrix-vector product.
subroutine, public device_addcol4(a_d, b_d, c_d, d_d, n)
Device abstraction, common interface for various accelerators.
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.