40 use,
intrinsic :: iso_c_binding, only : c_ptr
70 uulag1, uulag2, vvlag1, vvlag2, wwlag1, wwlag2, ab1, ab2, ab3, nab, n)&
71 bind(c, name =
'rhs_maker_sumab_hip')
72 use,
intrinsic :: iso_c_binding
74 type(c_ptr),
value :: u_d, v_d, w_d, uu_d, vv_d, ww_d
75 type(c_ptr),
value :: uulag1, uulag2, vvlag1, vvlag2, wwlag1, wwlag2
76 real(c_rp) :: ab1, ab2, ab3
77 integer(c_int) :: nab, n
83 abx2_d, aby2_d, abz2_d, &
84 bfx_d, bfy_d, bfz_d, &
85 rho, ab1, ab2, ab3, n) &
86 bind(c, name =
'rhs_maker_ext_hip')
87 use,
intrinsic :: iso_c_binding
89 type(c_ptr),
value :: abx1_d, aby1_d, abz1_d
90 type(c_ptr),
value :: abx2_d, aby2_d, abz2_d
91 type(c_ptr),
value :: bfx_d, bfy_d, bfz_d
92 real(c_rp) :: rho, ab1, ab2, ab3
99 ext1, ext2, ext3, n) &
100 bind(c, name =
'scalar_rhs_maker_ext_hip')
101 use,
intrinsic :: iso_c_binding
103 type(c_ptr),
value :: fs_lag_d, fs_laglag_d, fs_d
104 real(c_rp) :: rho, ext1, ext2, ext3
111 wlag1_d, wlag2_d, bfx_d, bfy_d, bfz_d, u_d, v_d, w_d, B_d, &
112 rho, dt, bd2, bd3, bd4, nbd, n) bind(c, name = 'rhs_maker_bdf_hip')
113 use,
intrinsic :: iso_c_binding
115 type(c_ptr),
value :: ulag1_d, ulag2_d, vlag1_d
116 type(c_ptr),
value :: vlag2_d, wlag1_d, wlag2_d
117 type(c_ptr),
value :: bfx_d, bfy_d, bfz_d, u_d, v_d, w_d, B_d
118 reaL(c_rp) :: rho, dt, bd2, bd3, bd4
119 integer(c_int) :: nbd, n
125 rho, dt, bd2, bd3, bd4, nbd, n) &
126 bind(c, name =
'scalar_rhs_maker_bdf_hip')
127 use,
intrinsic :: iso_c_binding
129 type(c_ptr),
value :: s_lag_d, s_laglag_d
130 type(c_ptr),
value :: fs_d, s_d, B_d
131 reaL(c_rp) :: rho, dt, bd2, bd3, bd4
132 integer(c_int) :: nbd, n
138 bf_y_d, bf_z_d, rho, dt, n) bind(c, name = 'rhs_maker_oifs_hip')
139 use,
intrinsic :: iso_c_binding
141 type(c_ptr),
value :: bf_x_d, bf_y_d, bf_z_d
142 type(c_ptr),
value :: phi_x_d, phi_y_d, phi_z_d
143 reaL(c_rp) :: rho, dt
150 bind(c, name =
'scalar_rhs_maker_oifs_hip')
151 use,
intrinsic :: iso_c_binding
153 type(c_ptr),
value :: bf_s_d
154 type(c_ptr),
value :: phi_s_d
155 reaL(c_rp) :: rho, dt
162 uulag1, uulag2, vvlag1, vvlag2, wwlag1, wwlag2, ab1, ab2, ab3, nab, n)&
163 bind(c, name =
'rhs_maker_sumab_cuda')
164 use,
intrinsic :: iso_c_binding
166 type(c_ptr),
value :: u_d, v_d, w_d, uu_d, vv_d, ww_d
167 type(c_ptr),
value :: uulag1, uulag2, vvlag1, vvlag2, wwlag1, wwlag2
168 real(c_rp) :: ab1, ab2, ab3
169 integer(c_int) :: nab, n
175 abx2_d, aby2_d, abz2_d, &
176 bfx_d, bfy_d, bfz_d, &
177 rho, ab1, ab2, ab3, n) &
178 bind(c, name =
'rhs_maker_ext_cuda')
179 use,
intrinsic :: iso_c_binding
181 type(c_ptr),
value :: abx1_d, aby1_d, abz1_d
182 type(c_ptr),
value :: abx2_d, aby2_d, abz2_d
183 type(c_ptr),
value :: bfx_d, bfy_d, bfz_d
184 real(c_rp) :: rho, ab1, ab2, ab3
191 ext1, ext2, ext3, n) &
192 bind(c, name =
'scalar_rhs_maker_ext_cuda')
193 use,
intrinsic :: iso_c_binding
195 type(c_ptr),
value :: fs_lag_d, fs_laglag_d, fs_d
196 real(c_rp) :: rho, ext1, ext2, ext3
203 wlag1_d, wlag2_d, bfx_d, bfy_d, bfz_d, u_d, v_d, w_d, B_d, &
204 rho, dt, bd2, bd3, bd4, nbd, n) bind(c, name = 'rhs_maker_bdf_cuda')
205 use,
intrinsic :: iso_c_binding
207 type(c_ptr),
value :: ulag1_d, ulag2_d, vlag1_d
208 type(c_ptr),
value :: vlag2_d, wlag1_d, wlag2_d
209 type(c_ptr),
value :: bfx_d, bfy_d, bfz_d, u_d, v_d, w_d, B_d
210 reaL(c_rp) :: rho, dt, bd2, bd3, bd4
211 integer(c_int) :: nbd, n
217 rho, dt, bd2, bd3, bd4, nbd, n) &
218 bind(c, name =
'scalar_rhs_maker_bdf_cuda')
219 use,
intrinsic :: iso_c_binding
221 type(c_ptr),
value :: s_lag_d, s_laglag_d
222 type(c_ptr),
value :: fs_d, s_d, B_d
223 reaL(c_rp) :: rho, dt, bd2, bd3, bd4
224 integer(c_int) :: nbd, n
230 bf_y_d, bf_z_d, rho, dt, n) bind(c, name = 'rhs_maker_oifs_cuda')
231 use,
intrinsic :: iso_c_binding
233 type(c_ptr),
value :: bf_x_d, bf_y_d, bf_z_d
234 type(c_ptr),
value :: phi_x_d, phi_y_d, phi_z_d
235 reaL(c_rp) :: rho, dt
242 bind(c, name =
'scalar_rhs_maker_oifs_cuda')
243 use,
intrinsic :: iso_c_binding
245 type(c_ptr),
value :: bf_s_d
246 type(c_ptr),
value :: phi_s_d
247 reaL(c_rp) :: rho, dt
254 uulag1, uulag2, vvlag1, vvlag2, wwlag1, wwlag2, ab1, ab2, ab3, nab, n)&
255 bind(c, name =
'rhs_maker_sumab_opencl')
256 use,
intrinsic :: iso_c_binding
258 type(c_ptr),
value :: u_d, v_d, w_d, uu_d, vv_d, ww_d
259 type(c_ptr),
value :: uulag1, uulag2, vvlag1, vvlag2, wwlag1, wwlag2
260 real(c_rp) :: ab1, ab2, ab3
261 integer(c_int) :: nab, n
267 abx2_d, aby2_d, abz2_d, &
268 bfx_d, bfy_d, bfz_d, &
269 rho, ab1, ab2, ab3, n) &
270 bind(c, name =
'rhs_maker_ext_opencl')
271 use,
intrinsic :: iso_c_binding
273 type(c_ptr),
value :: abx1_d, aby1_d, abz1_d
274 type(c_ptr),
value :: abx2_d, aby2_d, abz2_d
275 type(c_ptr),
value :: bfx_d, bfy_d, bfz_d
276 real(c_rp) :: rho, ab1, ab2, ab3
283 ext1, ext2, ext3, n) &
284 bind(c, name =
'scalar_rhs_maker_ext_opencl')
285 use,
intrinsic :: iso_c_binding
287 type(c_ptr),
value :: fs_lag_d, fs_laglag_d, fs_d
288 real(c_rp) :: rho, ext1, ext2, ext3
295 wlag1_d, wlag2_d, bfx_d, bfy_d, bfz_d, u_d, v_d, w_d, B_d, &
296 rho, dt, bd2, bd3, bd4, nbd, n) bind(c, name = 'rhs_maker_bdf_opencl')
297 use,
intrinsic :: iso_c_binding
299 type(c_ptr),
value :: ulag1_d, ulag2_d, vlag1_d
300 type(c_ptr),
value :: vlag2_d, wlag1_d, wlag2_d
301 type(c_ptr),
value :: bfx_d, bfy_d, bfz_d, u_d, v_d, w_d, B_d
302 reaL(c_rp) :: rho, dt, bd2, bd3, bd4
303 integer(c_int) :: nbd, n
309 rho, dt, bd2, bd3, bd4, nbd, n) &
310 bind(c, name =
'scalar_rhs_maker_bdf_opencl')
311 use,
intrinsic :: iso_c_binding
313 type(c_ptr),
value :: s_lag_d, s_laglag_d
314 type(c_ptr),
value :: fs_d, s_d, B_d
315 reaL(c_rp) :: rho, dt, bd2, bd3, bd4
316 integer(c_int) :: nbd, n
322 bf_y_d, bf_z_d, rho, dt, n) bind(c, name = 'rhs_maker_oifs_opencl')
323 use,
intrinsic :: iso_c_binding
325 type(c_ptr),
value :: bf_x_d, bf_y_d, bf_z_d
326 type(c_ptr),
value :: phi_x_d, phi_y_d, phi_z_d
327 reaL(c_rp) :: rho, dt
334 bind(c, name =
'scalar_rhs_maker_oifs_opencl')
335 use,
intrinsic :: iso_c_binding
337 type(c_ptr),
value :: bf_s_d
338 type(c_ptr),
value :: phi_s_d
339 reaL(c_rp) :: rho, dt
347 subroutine rhs_maker_sumab_device(u, v, w, uu, vv, ww, uulag, vvlag, wwlag, ab, nab)
348 type(
field_t),
intent(inout) :: u,v, w
349 type(
field_t),
intent(inout) :: uu, vv, ww
351 real(kind=
rp),
dimension(3),
intent(in) :: ab
352 integer,
intent(in) :: nab
356 uulag%lf(1)%x_d, uulag%lf(2)%x_d, vvlag%lf(1)%x_d, vvlag%lf(2)%x_d, &
357 wwlag%lf(1)%x_d, wwlag%lf(2)%x_d, ab(1), ab(2), ab(3), nab, &
361 uulag%lf(1)%x_d, uulag%lf(2)%x_d, vvlag%lf(1)%x_d, vvlag%lf(2)%x_d, &
362 wwlag%lf(1)%x_d, wwlag%lf(2)%x_d, ab(1), ab(2), ab(3), nab, &
366 uulag%lf(1)%x_d, uulag%lf(2)%x_d, vvlag%lf(1)%x_d, vvlag%lf(2)%x_d, &
367 wwlag%lf(1)%x_d, wwlag%lf(2)%x_d, ab(1), ab(2), ab(3), nab, &
374 fx_laglag, fy_laglag, fz_laglag, fx, fy, fz, &
376 type(
field_t),
intent(inout) :: fx_lag, fy_lag, fz_lag
377 type(
field_t),
intent(inout) :: fx_laglag, fy_laglag, fz_laglag
378 real(kind=
rp),
intent(in) :: rho, ext_coeffs(4)
379 integer,
intent(in) :: n
380 real(kind=
rp),
intent(inout) :: fx(n), fy(n), fz(n)
381 type(c_ptr) :: fx_d, fy_d, fz_d
389 fx_laglag%x_d, fy_laglag%x_d, fz_laglag%x_d, &
390 fx_d, fy_d, fz_d, rho, &
391 ext_coeffs(1), ext_coeffs(2), ext_coeffs(3), n)
394 fx_laglag%x_d, fy_laglag%x_d, fz_laglag%x_d, &
395 fx_d, fy_d, fz_d, rho, &
396 ext_coeffs(1), ext_coeffs(2), ext_coeffs(3), n)
399 fx_laglag%x_d, fy_laglag%x_d, fz_laglag%x_d, &
400 fx_d, fy_d, fz_d, rho, &
401 ext_coeffs(1), ext_coeffs(2), ext_coeffs(3), n)
408 type(
field_t),
intent(inout) :: fs_lag
409 type(
field_t),
intent(inout) :: fs_laglag
410 real(kind=
rp),
intent(in) :: rho, ext_coeffs(4)
411 integer,
intent(in) :: n
412 real(kind=
rp),
intent(inout) :: fs(n)
419 ext_coeffs(1), ext_coeffs(2), ext_coeffs(3), n)
422 ext_coeffs(1), ext_coeffs(2), ext_coeffs(3), n)
425 ext_coeffs(1), ext_coeffs(2), ext_coeffs(3), n)
431 u, v, w, B, rho, dt, bd, nbd, n)
432 integer,
intent(in) :: n, nbd
433 type(
field_t),
intent(in) :: u, v, w
435 real(kind=
rp),
intent(inout) :: bfx(n), bfy(n), bfz(n)
436 real(kind=
rp),
intent(in) :: b(n)
437 real(kind=
rp),
intent(in) :: dt, rho, bd(4)
438 type(c_ptr) :: bfx_d, bfy_d, bfz_d, b_d
447 vlag%lf(1)%x_d, vlag%lf(2)%x_d, &
448 wlag%lf(1)%x_d, wlag%lf(2)%x_d, &
449 bfx_d, bfy_d, bfz_d, u%x_d, v%x_d, w%x_d, &
450 b_d, rho, dt, bd(2), bd(3), bd(4), nbd, n)
453 vlag%lf(1)%x_d, vlag%lf(2)%x_d, &
454 wlag%lf(1)%x_d, wlag%lf(2)%x_d, &
455 bfx_d, bfy_d, bfz_d, u%x_d, v%x_d, w%x_d, &
456 b_d, rho, dt, bd(2), bd(3), bd(4), nbd, n)
459 vlag%lf(1)%x_d, vlag%lf(2)%x_d, &
460 wlag%lf(1)%x_d, wlag%lf(2)%x_d, &
461 bfx_d, bfy_d, bfz_d, u%x_d, v%x_d, w%x_d, &
462 b_d, rho, dt, bd(2), bd(3), bd(4), nbd, n)
469 integer,
intent(in) :: n, nbd
472 real(kind=
rp),
intent(inout) :: fs(n)
473 real(kind=
rp),
intent(in) :: b(n)
474 real(kind=
rp),
intent(in) :: dt, rho, bd(4)
475 type(c_ptr) :: fs_d, b_d
482 fs_d, s%x_d, b_d, rho, dt, bd(2), bd(3), bd(4), &
486 fs_d, s%x_d, b_d, rho, dt, bd(2), bd(3), bd(4), &
490 fs_d, s%x_d, b_d, rho, dt, bd(2), bd(3), bd(4), &
498 real(kind=
rp),
intent(in) :: rho, dt
499 integer,
intent(in) :: n
500 real(kind=
rp),
intent(inout) :: bf_x(n), bf_y(n), bf_z(n)
501 real(kind=
rp),
intent(inout) :: phi_x(n), phi_y(n), phi_z(n)
503 type(c_ptr) :: phi_x_d, phi_y_d, phi_z_d, bf_x_d, bf_y_d, bf_z_d
514 bf_x_d, bf_y_d, bf_z_d, rho, dt, n)
517 bf_x_d, bf_y_d, bf_z_d, rho, dt, n)
520 bf_x_d, bf_y_d, bf_z_d, rho, dt, n)
526 real(kind=
rp),
intent(in) :: rho, dt
527 integer,
intent(in) :: n
528 real(kind=
rp),
intent(inout) :: bf_s(n)
529 real(kind=
rp),
intent(inout) :: phi_s(n)
530 type(c_ptr) :: phi_s_d, bf_s_d
Return the device pointer for an associated Fortran array.
Device abstraction, common interface for various accelerators.
Contains the field_serties_t type.
integer, parameter, public c_rp
integer, parameter, public rp
Global precision used in computations.
subroutine scalar_rhs_maker_bdf_device(s_lag, fs, s, b, rho, dt, bd, nbd, n)
subroutine rhs_maker_sumab_device(u, v, w, uu, vv, ww, uulag, vvlag, wwlag, ab, nab)
subroutine rhs_maker_oifs_device(phi_x, phi_y, phi_z, bf_x, bf_y, bf_z, rho, dt, n)
subroutine scalar_rhs_maker_ext_device(fs_lag, fs_laglag, fs, rho, ext_coeffs, n)
subroutine rhs_maker_ext_device(fx_lag, fy_lag, fz_lag, fx_laglag, fy_laglag, fz_laglag, fx, fy, fz, rho, ext_coeffs, n)
subroutine scalar_rhs_maker_oifs_device(phi_s, bf_s, rho, dt, n)
subroutine rhs_maker_bdf_device(ulag, vlag, wlag, bfx, bfy, bfz, u, v, w, b, rho, dt, bd, nbd, n)
Routines to generate the right-hand sides for the convection-diffusion equation. Employs the EXT/BDF ...
void scalar_rhs_maker_bdf_opencl(void *s_lag, void *s_laglag, void *fs, void *s, void *B, real *rho, real *dt, real *bd2, real *bd3, real *bd4, int *nbd, int *n)
void rhs_maker_sumab_opencl(void *u, void *v, void *w, void *uu, void *vv, void *ww, void *ulag1, void *ulag2, void *vlag1, void *vlag2, void *wlag1, void *wlag2, real *ext1, real *ext2, real *ext3, int *nab, int *n)
void scalar_rhs_maker_oifs_opencl(void *phi_s, void *bf_s, real *rho, real *dt, int *n)
void rhs_maker_ext_opencl(void *abx1, void *aby1, void *abz1, void *abx2, void *aby2, void *abz2, void *bfx, void *bfy, void *bfz, real *rho, real *ext1, real *ext2, real *ext3, int *n)
void rhs_maker_oifs_opencl(void *phi_x, void *phi_y, void *phi_z, void *bf_x, void *bf_y, void *bf_z, real *rho, real *dt, int *n)
void scalar_rhs_maker_ext_opencl(void *fs_lag, void *fs_laglag, void *fs, real *rho, real *ext1, real *ext2, real *ext3, int *n)
void rhs_maker_bdf_opencl(void *ulag1, void *ulag2, void *vlag1, void *vlag2, void *wlag1, void *wlag2, void *bfx, void *bfy, void *bfz, void *u, void *v, void *w, void *B, real *rho, real *dt, real *bd2, real *bd3, real *bd4, int *nbd, int *n)
void scalar_rhs_maker_oifs_cuda(void *phi_s, void *bf_s, real *rho, real *dt, int *n)
void scalar_rhs_maker_bdf_cuda(void *s_lag, void *s_laglag, void *fs, void *s, void *B, real *rho, real *dt, real *bd2, real *bd3, real *bd4, int *nbd, int *n)
void rhs_maker_oifs_cuda(void *phi_x, void *phi_y, void *phi_z, void *bf_x, void *bf_y, void *bf_z, real *rho, real *dt, int *n)
void rhs_maker_ext_cuda(void *abx1, void *aby1, void *abz1, void *abx2, void *aby2, void *abz2, void *bfx, void *bfy, void *bfz, real *rho, real *ab1, real *ab2, real *ab3, int *n)
void rhs_maker_bdf_cuda(void *ulag1, void *ulag2, void *vlag1, void *vlag2, void *wlag1, void *wlag2, void *bfx, void *bfy, void *bfz, void *u, void *v, void *w, void *B, real *rho, real *dt, real *bd2, real *bd3, real *bd4, int *nbd, int *n)
void scalar_rhs_maker_ext_cuda(void *fs_lag, void *fs_laglag, void *fs, real *rho, real *ext1, real *ext2, real *ext3, int *n)
void rhs_maker_sumab_cuda(void *u, void *v, void *w, void *uu, void *vv, void *ww, void *ulag1, void *ulag2, void *vlag1, void *vlag2, void *wlag1, void *wlag2, real *ab1, real *ab2, real *ab3, int *nab, int *n)
Stores a series (sequence) of fields, logically connected to a base field, and arranged according to ...
Abstract type to add contributions to F from lagged BD terms.
Abstract type to sum up contributions to kth order extrapolation scheme.
Abstract type to add contributions of kth order OIFS scheme.
Abstract type to compute extrapolated velocity field for the pressure equation.