36 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
49 drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
50 jacinv, w3, nel, lx, gdim) &
51 bind(c, name =
'hip_coef_generate_geo')
52 use,
intrinsic :: iso_c_binding
54 type(c_ptr),
value :: G11, G12, G13, G22, G23, G33
55 type(c_ptr),
value :: drdx, drdy, drdz
56 type(c_ptr),
value :: dsdx, dsdy, dsdz
57 type(c_ptr),
value :: dtdx, dtdy, dtdz
58 type(c_ptr),
value :: jacinv, w3
59 integer(c_int) :: nel, gdim, lx
65 dsdz, dtdx, dtdy, dtdz, dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, &
66 dydt, dzdt, dx, dy, dz, x, y, z, jacinv, jac, lx, nel) &
67 bind(c, name =
'hip_coef_generate_dxyzdrst')
68 use,
intrinsic :: iso_c_binding
70 type(c_ptr),
value :: drdx, drdy, drdz
71 type(c_ptr),
value :: dsdx, dsdy, dsdz
72 type(c_ptr),
value :: dtdx, dtdy, dtdz
73 type(c_ptr),
value :: dxdr, dydr, dzdr
74 type(c_ptr),
value :: dxds, dyds, dzds
75 type(c_ptr),
value :: dxdt, dydt, dzdt
76 type(c_ptr),
value :: dx, dy, dz, x, y, z
77 type(c_ptr),
value :: jacinv, jac
78 integer(c_int) :: lx, nel
84 bind(c, name =
'hip_coef_generate_mass')
85 use,
intrinsic :: iso_c_binding
87 type(c_ptr),
value :: B, Binv, jac, w3
88 integer(c_int) :: lxyz, nel
94 dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, dydt, dzdt, &
95 wx, wy, wz, lx, nel, eps) &
96 bind(c, name =
'hip_coef_generate_area_and_normal')
97 use,
intrinsic :: iso_c_binding
100 type(c_ptr),
value :: area, nx, ny, nz
101 type(c_ptr),
value :: dxdr, dydr, dzdr
102 type(c_ptr),
value :: dxds, dyds, dzds
103 type(c_ptr),
value :: dxdt, dydt, dzdt
104 type(c_ptr),
value :: wx, wy, wz
105 integer(c_int) :: lx, nel
106 real(kind=
c_rp),
value :: eps
112 i_idx, j_idx, k_idx, e_idx, facet, lx, n) &
113 bind(c, name =
'hip_coef_get_normal')
114 use,
intrinsic :: iso_c_binding
116 type(c_ptr),
value :: normal_x, normal_y, normal_z
117 type(c_ptr),
value :: nx, ny, nz
118 type(c_ptr),
value :: i_idx, j_idx, k_idx, e_idx, facet
119 integer(c_int) :: lx, n
126 drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
127 jacinv, w3, nel, lx, gdim) &
128 bind(c, name =
'cuda_coef_generate_geo')
129 use,
intrinsic :: iso_c_binding
131 type(c_ptr),
value :: G11, G12, G13, G22, G23, G33
132 type(c_ptr),
value :: drdx, drdy, drdz
133 type(c_ptr),
value :: dsdx, dsdy, dsdz
134 type(c_ptr),
value :: dtdx, dtdy, dtdz
135 type(c_ptr),
value :: jacinv, w3
136 integer(c_int) :: nel, gdim, lx
142 dsdz, dtdx, dtdy, dtdz, dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, &
143 dydt, dzdt, dx, dy, dz, x, y, z, jacinv, jac, lx, nel) &
144 bind(c, name =
'cuda_coef_generate_dxyzdrst')
145 use,
intrinsic :: iso_c_binding
147 type(c_ptr),
value :: drdx, drdy, drdz
148 type(c_ptr),
value :: dsdx, dsdy, dsdz
149 type(c_ptr),
value :: dtdx, dtdy, dtdz
150 type(c_ptr),
value :: dxdr, dydr, dzdr
151 type(c_ptr),
value :: dxds, dyds, dzds
152 type(c_ptr),
value :: dxdt, dydt, dzdt
153 type(c_ptr),
value :: dx, dy, dz, x, y, z
154 type(c_ptr),
value :: jacinv, jac
155 integer(c_int) :: lx, nel
161 bind(c, name =
'cuda_coef_generate_mass')
162 use,
intrinsic :: iso_c_binding
164 type(c_ptr),
value :: B, Binv, jac, w3
165 integer(c_int) :: lxyz, nel
171 dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, dydt, dzdt, &
172 wx, wy, wz, lx, nel, eps) &
173 bind(c, name =
'cuda_coef_generate_area_and_normal')
174 use,
intrinsic :: iso_c_binding
177 type(c_ptr),
value :: area, nx, ny, nz
178 type(c_ptr),
value :: dxdr, dydr, dzdr
179 type(c_ptr),
value :: dxds, dyds, dzds
180 type(c_ptr),
value :: dxdt, dydt, dzdt
181 type(c_ptr),
value :: wx, wy, wz
182 integer(c_int) :: lx, nel
183 real(kind=
c_rp),
value :: eps
189 i_idx, j_idx, k_idx, e_idx, facet, lx, n) &
190 bind(c, name =
'cuda_coef_get_normal')
191 use,
intrinsic :: iso_c_binding
193 type(c_ptr),
value :: normal_x, normal_y, normal_z
194 type(c_ptr),
value :: nx, ny, nz
195 type(c_ptr),
value :: i_idx, j_idx, k_idx, e_idx, facet
196 integer(c_int) :: lx, n
203 drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
204 jacinv, w3, nel, lx, gdim) &
205 bind(c, name =
'opencl_coef_generate_geo')
206 use,
intrinsic :: iso_c_binding
208 type(c_ptr),
value :: G11, G12, G13, G22, G23, G33
209 type(c_ptr),
value :: drdx, drdy, drdz
210 type(c_ptr),
value :: dsdx, dsdy, dsdz
211 type(c_ptr),
value :: dtdx, dtdy, dtdz
212 type(c_ptr),
value :: jacinv, w3
213 integer(c_int) :: nel, gdim, lx
219 dsdz, dtdx, dtdy, dtdz, dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, &
220 dydt, dzdt, dx, dy, dz, x, y, z, jacinv, jac, lx, nel) &
221 bind(c, name =
'opencl_coef_generate_dxyzdrst')
222 use,
intrinsic :: iso_c_binding
224 type(c_ptr),
value :: drdx, drdy, drdz
225 type(c_ptr),
value :: dsdx, dsdy, dsdz
226 type(c_ptr),
value :: dtdx, dtdy, dtdz
227 type(c_ptr),
value :: dxdr, dydr, dzdr
228 type(c_ptr),
value :: dxds, dyds, dzds
229 type(c_ptr),
value :: dxdt, dydt, dzdt
230 type(c_ptr),
value :: dx, dy, dz, x, y, z
231 type(c_ptr),
value :: jacinv, jac
232 integer(c_int) :: lx, nel
238 bind(c, name =
'opencl_coef_generate_mass')
239 use,
intrinsic :: iso_c_binding
241 type(c_ptr),
value :: B, Binv, jac, w3
242 integer(c_int) :: lxyz, nel
248 dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, dydt, dzdt, &
249 wx, wy, wz, lx, nel, eps) &
250 bind(c, name =
'opencl_coef_generate_area_and_normal')
251 use,
intrinsic :: iso_c_binding
254 type(c_ptr),
value :: area, nx, ny, nz
255 type(c_ptr),
value :: dxdr, dydr, dzdr
256 type(c_ptr),
value :: dxds, dyds, dzds
257 type(c_ptr),
value :: dxdt, dydt, dzdt
258 type(c_ptr),
value :: wx, wy, wz
259 integer(c_int) :: lx, nel
260 real(kind=
c_rp),
value :: eps
266 nx, ny, nz, i_idx, j_idx, k_idx, e_idx, facet, lx, n) &
267 bind(c, name =
'opencl_coef_get_normal')
268 use,
intrinsic :: iso_c_binding
270 type(c_ptr),
value :: normal_x, normal_y, normal_z
271 type(c_ptr),
value :: nx, ny, nz
272 type(c_ptr),
value :: i_idx, j_idx, k_idx, e_idx, facet
273 integer(c_int) :: lx, n
278 subroutine metal_coef_generate_geo(G11, G12, G13, G22, G23, G33, &
279 drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, &
280 jacinv, w3, nel, lx, gdim) &
281 bind(c, name =
'metal_coef_generate_geo')
282 use,
intrinsic :: iso_c_binding
284 type(c_ptr),
value :: G11, G12, G13, G22, G23, G33
285 type(c_ptr),
value :: drdx, drdy, drdz
286 type(c_ptr),
value :: dsdx, dsdy, dsdz
287 type(c_ptr),
value :: dtdx, dtdy, dtdz
288 type(c_ptr),
value :: jacinv, w3
289 integer(c_int) :: nel, gdim, lx
290 end subroutine metal_coef_generate_geo
294 subroutine metal_coef_generate_dxyzdrst(drdx, drdy, drdz, dsdx, dsdy, &
295 dsdz, dtdx, dtdy, dtdz, dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, &
296 dydt, dzdt, dx, dy, dz, x, y, z, jacinv, jac, lx, nel) &
297 bind(c, name =
'metal_coef_generate_dxyzdrst')
298 use,
intrinsic :: iso_c_binding
300 type(c_ptr),
value :: drdx, drdy, drdz
301 type(c_ptr),
value :: dsdx, dsdy, dsdz
302 type(c_ptr),
value :: dtdx, dtdy, dtdz
303 type(c_ptr),
value :: dxdr, dydr, dzdr
304 type(c_ptr),
value :: dxds, dyds, dzds
305 type(c_ptr),
value :: dxdt, dydt, dzdt
306 type(c_ptr),
value :: dx, dy, dz, x, y, z
307 type(c_ptr),
value :: jacinv, jac
308 integer(c_int) :: lx, nel
309 end subroutine metal_coef_generate_dxyzdrst
313 subroutine metal_coef_generate_mass(B, Binv, jac, w3, lxyz, nel) &
314 bind(c, name =
'metal_coef_generate_mass')
315 use,
intrinsic :: iso_c_binding
317 type(c_ptr),
value :: B, Binv, jac, w3
318 integer(c_int) :: lxyz, nel
319 end subroutine metal_coef_generate_mass
323 subroutine metal_coef_generate_area_and_normal(area, nx, ny, nz, &
324 dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, dydt, dzdt, &
325 wx, wy, wz, lx, nel, eps) &
326 bind(c, name =
'metal_coef_generate_area_and_normal')
327 use,
intrinsic :: iso_c_binding
330 type(c_ptr),
value :: area, nx, ny, nz
331 type(c_ptr),
value :: dxdr, dydr, dzdr
332 type(c_ptr),
value :: dxds, dyds, dzds
333 type(c_ptr),
value :: dxdt, dydt, dzdt
334 type(c_ptr),
value :: wx, wy, wz
335 integer(c_int) :: lx, nel
336 real(kind=
c_rp),
value :: eps
337 end subroutine metal_coef_generate_area_and_normal
345 G23_d, G33_d, drdx_d, drdy_d, drdz_d, dsdx_d, dsdy_d, &
346 dsdz_d, dtdx_d, dtdy_d, dtdz_d, jacinv_d, w3_d, nel, lx, gdim)
347 type(c_ptr) :: g11_d, g12_d, g13_d, g22_d, g23_d, g33_d
348 type(c_ptr) :: drdx_d, drdy_d, drdz_d
349 type(c_ptr) :: dsdx_d, dsdy_d, dsdz_d
350 type(c_ptr) :: dtdx_d, dtdy_d, dtdz_d
351 type(c_ptr) :: jacinv_d, w3_d
352 integer :: nel, gdim, lx
356 g33_d, drdx_d, drdy_d, drdz_d, dsdx_d, dsdy_d, dsdz_d, &
357 dtdx_d, dtdy_d, dtdz_d, jacinv_d, w3_d, nel, lx, gdim)
360 g33_d, drdx_d, drdy_d, drdz_d, dsdx_d, dsdy_d, dsdz_d, &
361 dtdx_d, dtdy_d, dtdz_d, jacinv_d, w3_d, nel, lx, gdim)
364 g33_d, drdx_d, drdy_d, drdz_d, dsdx_d, dsdy_d, dsdz_d, &
365 dtdx_d, dtdy_d, dtdz_d, jacinv_d, w3_d, nel, lx, gdim)
367 call metal_coef_generate_geo(g11_d, g12_d, g13_d, g22_d, g23_d, &
368 g33_d, drdx_d, drdy_d, drdz_d, dsdx_d, dsdy_d, dsdz_d, &
369 dtdx_d, dtdy_d, dtdz_d, jacinv_d, w3_d, nel, lx, gdim)
371 call neko_error(
'No device backend configured')
377 dsdx_d, dsdy_d, dsdz_d, &
378 dtdx_d, dtdy_d, dtdz_d, &
379 dxdr_d, dydr_d, dzdr_d, &
380 dxds_d, dyds_d, dzds_d, &
381 dxdt_d, dydt_d, dzdt_d, &
384 jacinv_d, jac_d, lx, nel)
385 type(c_ptr) :: drdx_d, drdy_d, drdz_d
386 type(c_ptr) :: dsdx_d, dsdy_d, dsdz_d
387 type(c_ptr) :: dtdx_d, dtdy_d, dtdz_d
388 type(c_ptr) :: dxdr_d, dydr_d, dzdr_d
389 type(c_ptr) :: dxds_d, dyds_d, dzds_d
390 type(c_ptr) :: dxdt_d, dydt_d, dzdt_d
391 type(c_ptr) :: dx_d, dy_d, dz_d, x_d, y_d, z_d
392 type(c_ptr) :: jacinv_d, jac_d
397 dsdy_d, dsdz_d, dtdx_d, dtdy_d, dtdz_d, dxdr_d, dydr_d, &
398 dzdr_d, dxds_d, dyds_d, dzds_d, dxdt_d, dydt_d, dzdt_d, &
399 dx_d, dy_d, dz_d, x_d, y_d, z_d, jacinv_d, jac_d, lx, nel)
402 dsdy_d, dsdz_d, dtdx_d, dtdy_d, dtdz_d, dxdr_d, dydr_d, &
403 dzdr_d, dxds_d, dyds_d, dzds_d, dxdt_d, dydt_d, dzdt_d, &
404 dx_d, dy_d, dz_d, x_d, y_d, z_d, jacinv_d, jac_d, lx, nel)
407 dsdy_d, dsdz_d, dtdx_d, dtdy_d, dtdz_d, dxdr_d, dydr_d, &
408 dzdr_d, dxds_d, dyds_d, dzds_d, dxdt_d, dydt_d, dzdt_d, &
409 dx_d, dy_d, dz_d, x_d, y_d, z_d, jacinv_d, jac_d, lx, nel)
411 call metal_coef_generate_dxyzdrst(drdx_d, drdy_d, drdz_d, dsdx_d, &
412 dsdy_d, dsdz_d, dtdx_d, dtdy_d, dtdz_d, dxdr_d, dydr_d, &
413 dzdr_d, dxds_d, dyds_d, dzds_d, dxdt_d, dydt_d, dzdt_d, &
414 dx_d, dy_d, dz_d, x_d, y_d, z_d, jacinv_d, jac_d, lx, nel)
416 call neko_error(
'No device backend configured')
421 type(c_ptr) :: b, binv, jac, w3
431 call metal_coef_generate_mass(b, binv, jac, w3, lxyz, nel)
433 call neko_error(
'No device backend configured')
438 dxdr_d, dydr_d, dzdr_d, &
439 dxds_d, dyds_d, dzds_d, &
440 dxdt_d, dydt_d, dzdt_d, &
443 type(c_ptr) :: area_d, nx_d, ny_d, nz_d
444 type(c_ptr) :: dxdr_d, dydr_d, dzdr_d
445 type(c_ptr) :: dxds_d, dyds_d, dzds_d
446 type(c_ptr) :: dxdt_d, dydt_d, dzdt_d
447 type(c_ptr) :: wx_d, wy_d, wz_d
449 real(kind=
c_rp),
value :: eps
453 dxdr_d, dydr_d, dzdr_d, &
454 dxds_d, dyds_d, dzds_d, &
455 dxdt_d, dydt_d, dzdt_d, &
460 dxdr_d, dydr_d, dzdr_d, &
461 dxds_d, dyds_d, dzds_d, &
462 dxdt_d, dydt_d, dzdt_d, &
467 dxdr_d, dydr_d, dzdr_d, &
468 dxds_d, dyds_d, dzds_d, &
469 dxdt_d, dydt_d, dzdt_d, &
473 call metal_coef_generate_area_and_normal(area_d, nx_d, ny_d, nz_d, &
474 dxdr_d, dydr_d, dzdr_d, &
475 dxds_d, dyds_d, dzds_d, &
476 dxdt_d, dydt_d, dzdt_d, &
480 call neko_error(
'No device backend configured')
485 nx_d, ny_d, nz_d, i_idx_d, j_idx_d, k_idx_d, e_idx_d, facet_d, lx, n)
486 type(c_ptr) :: normal_x_d, normal_y_d, normal_z_d
487 type(c_ptr) :: nx_d, ny_d, nz_d
488 type(c_ptr) :: i_idx_d, j_idx_d, k_idx_d, e_idx_d, facet_d
493 nx_d, ny_d, nz_d, i_idx_d, j_idx_d, k_idx_d, e_idx_d, facet_d, &
497 nx_d, ny_d, nz_d, i_idx_d, j_idx_d, k_idx_d, e_idx_d, facet_d, &
501 nx_d, ny_d, nz_d, i_idx_d, j_idx_d, k_idx_d, e_idx_d, facet_d, &
504 call neko_error(
'No device backend configured')
void opencl_coef_generate_mass(void *B, void *Binv, void *jac, void *w3, int *lxyz, int *nel)
void opencl_coef_get_normal(void *normal_x, void *normal_y, void *normal_z, void *nx, void *ny, void *nz, void *i_idx, void *j_idx, void *k_idx, void *e_idx, void *facet, int *lx, int *n)
void opencl_coef_generate_geo(void *G11, void *G12, void *G13, void *G22, void *G23, void *G33, void *drdx, void *drdy, void *drdz, void *dsdx, void *dsdy, void *dsdz, void *dtdx, void *dtdy, void *dtdz, void *jacinv, void *w3, int *nel, int *lx, int *gdim)
void opencl_coef_generate_dxyzdrst(void *drdx, void *drdy, void *drdz, void *dsdx, void *dsdy, void *dsdz, void *dtdx, void *dtdy, void *dtdz, void *dxdr, void *dydr, void *dzdr, void *dxds, void *dyds, void *dzds, void *dxdt, void *dydt, void *dzdt, void *dx, void *dy, void *dz, void *x, void *y, void *z, void *jacinv, void *jac, int *lx, int *nel)
void opencl_coef_generate_area_and_normal(void *area, void *nx, void *ny, void *nz, void *dxdr, void *dydr, void *dzdr, void *dxds, void *dyds, void *dzds, void *dxdt, void *dydt, void *dzdt, void *wx, void *wy, void *wz, int *lx, int *nel, real eps)
void cuda_coef_get_normal(void *normal_x, void *normal_y, void *normal_z, void *nx, void *ny, void *nz, void *i_idx, void *j_idx, void *k_idx, void *e_idx, void *facet, int *lx, int *n)
void cuda_coef_generate_area_and_normal(void *area, void *nx, void *ny, void *nz, void *dxdr, void *dydr, void *dzdr, void *dxds, void *dyds, void *dzds, void *dxdt, void *dydt, void *dzdt, void *wx, void *wy, void *wz, int *lx, int *nel, real eps)
void cuda_coef_generate_mass(void *B, void *Binv, void *jac, void *w3, int *lxyz, int *nel)
void cuda_coef_generate_dxyzdrst(void *drdx, void *drdy, void *drdz, void *dsdx, void *dsdy, void *dsdz, void *dtdx, void *dtdy, void *dtdz, void *dxdr, void *dydr, void *dzdr, void *dxds, void *dyds, void *dzds, void *dxdt, void *dydt, void *dzdt, void *dx, void *dy, void *dz, void *x, void *y, void *z, void *jacinv, void *jac, int *lx, int *nel)
void cuda_coef_generate_geo(void *G11, void *G12, void *G13, void *G22, void *G23, void *G33, void *drdx, void *drdy, void *drdz, void *dsdx, void *dsdy, void *dsdz, void *dtdx, void *dtdy, void *dtdz, void *jacinv, void *w3, int *nel, int *lx, int *gdim)
subroutine, public device_coef_generate_area_and_normal(area_d, nx_d, ny_d, nz_d, dxdr_d, dydr_d, dzdr_d, dxds_d, dyds_d, dzds_d, dxdt_d, dydt_d, dzdt_d, wx_d, wy_d, wz_d, lx, nel, eps)
subroutine, public device_coef_generate_dxydrst(drdx_d, drdy_d, drdz_d, dsdx_d, dsdy_d, dsdz_d, dtdx_d, dtdy_d, dtdz_d, dxdr_d, dydr_d, dzdr_d, dxds_d, dyds_d, dzds_d, dxdt_d, dydt_d, dzdt_d, dx_d, dy_d, dz_d, x_d, y_d, z_d, jacinv_d, jac_d, lx, nel)
subroutine, public device_coef_generate_mass(b, binv, jac, w3, lxyz, nel)
subroutine, public device_coef_get_normal(normal_x_d, normal_y_d, normal_z_d, nx_d, ny_d, nz_d, i_idx_d, j_idx_d, k_idx_d, e_idx_d, facet_d, lx, n)
subroutine, public device_coef_generate_geo(g11_d, g12_d, g13_d, g22_d, g23_d, g33_d, drdx_d, drdy_d, drdz_d, dsdx_d, dsdy_d, dsdz_d, dtdx_d, dtdy_d, dtdz_d, jacinv_d, w3_d, nel, lx, gdim)
integer, parameter, public c_rp
integer, parameter, public rp
Global precision used in computations.