37 use,
intrinsic :: iso_c_binding
59 uulag1, uulag2, vvlag1, vvlag2, wwlag1, wwlag2, ab1, ab2, ab3, nab, n)&
60 bind(c, name=
'rhs_maker_sumab_hip')
61 use,
intrinsic :: iso_c_binding
63 type(c_ptr),
value :: u_d, v_d, w_d, uu_d, vv_d, ww_d
64 type(c_ptr),
value :: uulag1, uulag2, vvlag1, vvlag2, wwlag1, wwlag2
65 real(c_rp) :: ab1, ab2, ab3
66 integer(c_int) :: nab, n
72 abx2_d, aby2_d, abz2_d, &
73 bfx_d, bfy_d, bfz_d, &
74 rho, ab1, ab2, ab3, n) &
75 bind(c, name=
'rhs_maker_ext_hip')
76 use,
intrinsic :: iso_c_binding
78 type(c_ptr),
value :: abx1_d, aby1_d, abz1_d
79 type(c_ptr),
value :: abx2_d, aby2_d, abz2_d
80 type(c_ptr),
value :: bfx_d, bfy_d, bfz_d
81 real(c_rp) :: rho, ab1, ab2, ab3
88 wlag1_d, wlag2_d, bfx_d, bfy_d, bfz_d, u_d, v_d, w_d, B_d, &
89 rho, dt, bd2, bd3, bd4, nbd, n) bind(c, name='rhs_maker_bdf_hip')
90 use,
intrinsic :: iso_c_binding
92 type(c_ptr),
value :: ulag1_d, ulag2_d, vlag1_d
93 type(c_ptr),
value :: vlag2_d, wlag1_d, wlag2_d
94 type(c_ptr),
value :: bfx_d, bfy_d, bfz_d, u_d, v_d, w_d, B_d
95 reaL(c_rp) :: rho, dt, bd2, bd3, bd4
96 integer(c_int) :: nbd, n
102 uulag1, uulag2, vvlag1, vvlag2, wwlag1, wwlag2, ab1, ab2, ab3, nab, n)&
103 bind(c, name=
'rhs_maker_sumab_cuda')
104 use,
intrinsic :: iso_c_binding
106 type(c_ptr),
value :: u_d, v_d, w_d, uu_d, vv_d, ww_d
107 type(c_ptr),
value :: uulag1, uulag2, vvlag1, vvlag2, wwlag1, wwlag2
108 real(c_rp) :: ab1, ab2, ab3
109 integer(c_int) :: nab, n
115 abx2_d, aby2_d, abz2_d, &
116 bfx_d, bfy_d, bfz_d, &
117 rho, ab1, ab2, ab3, n) &
118 bind(c, name=
'rhs_maker_ext_cuda')
119 use,
intrinsic :: iso_c_binding
121 type(c_ptr),
value :: abx1_d, aby1_d, abz1_d
122 type(c_ptr),
value :: abx2_d, aby2_d, abz2_d
123 type(c_ptr),
value :: bfx_d, bfy_d, bfz_d
124 real(c_rp) :: rho, ab1, ab2, ab3
131 wlag1_d, wlag2_d, bfx_d, bfy_d, bfz_d, u_d, v_d, w_d, B_d, &
132 rho, dt, bd2, bd3, bd4, nbd, n) bind(c, name='rhs_maker_bdf_cuda')
133 use,
intrinsic :: iso_c_binding
135 type(c_ptr),
value :: ulag1_d, ulag2_d, vlag1_d
136 type(c_ptr),
value :: vlag2_d, wlag1_d, wlag2_d
137 type(c_ptr),
value :: bfx_d, bfy_d, bfz_d, u_d, v_d, w_d, B_d
138 reaL(c_rp) :: rho, dt, bd2, bd3, bd4
139 integer(c_int) :: nbd, n
145 uulag1, uulag2, vvlag1, vvlag2, wwlag1, wwlag2, ab1, ab2, ab3, nab, n)&
146 bind(c, name=
'rhs_maker_sumab_opencl')
147 use,
intrinsic :: iso_c_binding
149 type(c_ptr),
value :: u_d, v_d, w_d, uu_d, vv_d, ww_d
150 type(c_ptr),
value :: uulag1, uulag2, vvlag1, vvlag2, wwlag1, wwlag2
151 real(c_rp) :: ab1, ab2, ab3
152 integer(c_int) :: nab, n
158 abx2_d, aby2_d, abz2_d, &
159 bfx_d, bfy_d, bfz_d, &
160 rho, ab1, ab2, ab3, n) &
161 bind(c, name=
'rhs_maker_ext_opencl')
162 use,
intrinsic :: iso_c_binding
164 type(c_ptr),
value :: abx1_d, aby1_d, abz1_d
165 type(c_ptr),
value :: abx2_d, aby2_d, abz2_d
166 type(c_ptr),
value :: bfx_d, bfy_d, bfz_d
167 real(c_rp) :: rho, ab1, ab2, ab3
174 wlag1_d, wlag2_d, bfx_d, bfy_d, bfz_d, u_d, v_d, w_d, B_d, &
175 rho, dt, bd2, bd3, bd4, nbd, n) bind(c, name='rhs_maker_bdf_opencl')
176 use,
intrinsic :: iso_c_binding
178 type(c_ptr),
value :: ulag1_d, ulag2_d, vlag1_d
179 type(c_ptr),
value :: vlag2_d, wlag1_d, wlag2_d
180 type(c_ptr),
value :: bfx_d, bfy_d, bfz_d, u_d, v_d, w_d, B_d
181 reaL(c_rp) :: rho, dt, bd2, bd3, bd4
182 integer(c_int) :: nbd, n
189 subroutine rhs_maker_sumab_device(u, v, w, uu, vv, ww, uulag, vvlag, wwlag, ab, nab)
190 type(field_t),
intent(inout) :: u,v, w
191 type(field_t),
intent(inout) :: uu, vv, ww
192 type(field_series_t),
intent(inout) :: uulag, vvlag, wwlag
193 real(kind=rp),
dimension(3),
intent(in) :: ab
194 integer,
intent(in) :: nab
198 uulag%lf(1)%x_d, uulag%lf(2)%x_d, vvlag%lf(1)%x_d, vvlag%lf(2)%x_d, &
199 wwlag%lf(1)%x_d, wwlag%lf(2)%x_d, ab(1), ab(2), ab(3), nab, &
203 uulag%lf(1)%x_d, uulag%lf(2)%x_d, vvlag%lf(1)%x_d, vvlag%lf(2)%x_d, &
204 wwlag%lf(1)%x_d, wwlag%lf(2)%x_d, ab(1), ab(2), ab(3), nab, &
208 uulag%lf(1)%x_d, uulag%lf(2)%x_d, vvlag%lf(1)%x_d, vvlag%lf(2)%x_d, &
209 wwlag%lf(1)%x_d, wwlag%lf(2)%x_d, ab(1), ab(2), ab(3), nab, &
216 fx_laglag, fy_laglag, fz_laglag, fx, fy, fz, &
218 type(field_t),
intent(inout) :: temp1, temp2, temp3
219 type(field_t),
intent(inout) :: fx_lag, fy_lag, fz_lag
220 type(field_t),
intent(inout) :: fx_laglag, fy_laglag, fz_laglag
221 real(kind=rp),
intent(inout) :: rho, ext_coeffs(4)
222 integer,
intent(in) :: n
223 real(kind=rp),
intent(inout) :: fx(n), fy(n), fz(n)
224 type(c_ptr) :: fx_d, fy_d, fz_d
232 fx_laglag%x_d, fy_laglag%x_d, fz_laglag%x_d, &
233 fx_d, fy_d, fz_d, rho, &
234 ext_coeffs(1), ext_coeffs(2), ext_coeffs(3), n)
237 fx_laglag%x_d, fy_laglag%x_d, fz_laglag%x_d, &
238 fx_d, fy_d, fz_d, rho, &
239 ext_coeffs(1), ext_coeffs(2), ext_coeffs(3), n)
242 fx_laglag%x_d, fy_laglag%x_d, fz_laglag%x_d, &
243 fx_d, fy_d, fz_d, rho, &
244 ext_coeffs(1), ext_coeffs(2), ext_coeffs(3), n)
250 ulag, vlag, wlag, bfx, bfy, bfz, &
251 u, v, w, B, rho, dt, bd, nbd, n)
252 integer,
intent(in) :: n, nbd
253 type(field_t),
intent(inout) :: ta1, ta2, ta3
254 type(field_t),
intent(in) :: u, v, w
255 type(field_t),
intent(inout) :: tb1, tb2, tb3
256 type(field_series_t),
intent(in) :: ulag, vlag, wlag
257 real(kind=rp),
intent(inout) :: bfx(n), bfy(n), bfz(n)
258 real(kind=rp),
intent(in) :: b(n)
259 real(kind=rp),
intent(in) :: dt, rho, bd(10)
260 type(c_ptr) :: bfx_d, bfy_d, bfz_d, b_d
269 vlag%lf(1)%x_d, vlag%lf(2)%x_d, &
270 wlag%lf(1)%x_d, wlag%lf(2)%x_d, &
271 bfx_d, bfy_d, bfz_d, u%x_d, v%x_d, w%x_d, &
272 b_d, rho, dt, bd(2), bd(3), bd(4), nbd, n)
275 vlag%lf(1)%x_d, vlag%lf(2)%x_d, &
276 wlag%lf(1)%x_d, wlag%lf(2)%x_d, &
277 bfx_d, bfy_d, bfz_d, u%x_d, v%x_d, w%x_d, &
278 b_d, rho, dt, bd(2), bd(3), bd(4), nbd, n)
281 vlag%lf(1)%x_d, vlag%lf(2)%x_d, &
282 wlag%lf(1)%x_d, wlag%lf(2)%x_d, &
283 bfx_d, bfy_d, bfz_d, u%x_d, v%x_d, w%x_d, &
284 b_d, rho, dt, bd(2), bd(3), bd(4), nbd, n)
Return the device pointer for an associated Fortran array.
Device abstraction, common interface for various accelerators.
subroutine rhs_maker_sumab_device(u, v, w, uu, vv, ww, uulag, vvlag, wwlag, ab, nab)
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 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 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 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_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 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 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)
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 compute extrapolated velocity field for the pressure equation.