35 use,
intrinsic :: iso_c_binding, only: c_ptr, c_int
45 gamma, p_d, rho_d, n) &
46 bind(c, name =
'hip_compute_max_wave_speed')
47 use,
intrinsic :: iso_c_binding
49 type(c_ptr),
value :: max_wave_speed_d, u_d, v_d, w_d, p_d, rho_d
57 bind(c, name =
'hip_compute_entropy')
58 use,
intrinsic :: iso_c_binding
60 type(c_ptr),
value :: S_d, p_d, rho_d
68 m_y_d, m_z_d, rho_d, n) &
69 bind(c, name =
'hip_update_uvw')
70 use,
intrinsic :: iso_c_binding
72 type(c_ptr),
value :: u_d, v_d, w_d, m_x_d, m_y_d, m_z_d, rho_d
79 p_d, ruvw_d, u_d, v_d, w_d, E_d, rho_d, gamma, n) &
80 bind(c, name =
'hip_update_mxyz_p_ruvw')
81 use,
intrinsic :: iso_c_binding
83 type(c_ptr),
value :: u_d, v_d, w_d, m_x_d, m_y_d, m_z_d, rho_d
84 type(c_ptr),
value :: p_d, ruvw_d, E_d
92 bind(c, name =
'hip_update_e')
93 use,
intrinsic :: iso_c_binding
95 type(c_ptr),
value :: p_d, E_d, ruvw_d
104 gamma, p_d, rho_d, n) &
105 bind(c, name =
'cuda_compute_max_wave_speed')
106 use,
intrinsic :: iso_c_binding
108 type(c_ptr),
value :: max_wave_speed_d, u_d, v_d, w_d, p_d, rho_d
116 bind(c, name =
'cuda_compute_entropy')
117 use,
intrinsic :: iso_c_binding
119 type(c_ptr),
value :: S_d, p_d, rho_d
127 m_y_d, m_z_d, rho_d, n) &
128 bind(c, name =
'cuda_update_uvw')
129 use,
intrinsic :: iso_c_binding
131 type(c_ptr),
value :: u_d, v_d, w_d, m_x_d, m_y_d, m_z_d, rho_d
138 p_d, ruvw_d, u_d, v_d, w_d, E_d, rho_d, gamma, n) &
139 bind(c, name =
'cuda_update_mxyz_p_ruvw')
140 use,
intrinsic :: iso_c_binding
142 type(c_ptr),
value :: u_d, v_d, w_d, m_x_d, m_y_d, m_z_d, rho_d
143 type(c_ptr),
value :: p_d, ruvw_d, E_d
151 bind(c, name =
'cuda_update_e')
152 use,
intrinsic :: iso_c_binding
154 type(c_ptr),
value :: p_d, E_d, ruvw_d
163 gamma, p_d, rho_d, n) &
164 bind(c, name =
'opencl_compute_max_wave_speed')
165 use,
intrinsic :: iso_c_binding
167 type(c_ptr),
value :: max_wave_speed_d, u_d, v_d, w_d, p_d, rho_d
168 real(c_rp),
value :: gamma
169 integer(c_int),
value :: n
175 bind(c, name =
'opencl_compute_entropy')
176 use,
intrinsic :: iso_c_binding
178 type(c_ptr),
value :: S_d, p_d, rho_d
179 real(c_rp),
value :: gamma
180 integer(c_int),
value :: n
186 m_y_d, m_z_d, rho_d, n) &
187 bind(c, name =
'opencl_update_uvw')
188 use,
intrinsic :: iso_c_binding
190 type(c_ptr),
value :: u_d, v_d, w_d, m_x_d, m_y_d, m_z_d, rho_d
191 integer(c_int),
value :: n
197 p_d, ruvw_d, u_d, v_d, w_d, E_d, rho_d, gamma, n) &
198 bind(c, name =
'opencl_update_mxyz_p_ruvw')
199 use,
intrinsic :: iso_c_binding
201 type(c_ptr),
value :: u_d, v_d, w_d, m_x_d, m_y_d, m_z_d, rho_d
202 type(c_ptr),
value :: p_d, ruvw_d, E_d
203 real(c_rp),
value :: gamma
204 integer(c_int),
value :: n
210 bind(c, name =
'opencl_update_e')
211 use,
intrinsic :: iso_c_binding
213 type(c_ptr),
value :: p_d, E_d, ruvw_d
214 real(c_rp),
value :: gamma
215 integer(c_int),
value :: n
230 integer,
intent(in) :: n
231 real(kind=
rp),
intent(in) :: gamma
232 type(
field_t),
intent(inout) :: max_wave_speed
233 type(
field_t),
intent(in) :: u, v, w, p, rho
242 call neko_error(
'No device backend configured')
248 integer,
intent(in) :: n
249 real(kind=
rp),
intent(in) :: gamma
250 type(
field_t),
intent(inout) :: s
251 type(
field_t),
intent(in) :: p, rho
260 call neko_error(
'No device backend configured')
266 m_x_d, m_y_d, m_z_d, rho_d, n)
267 type(c_ptr),
intent(inout) :: u_d, v_d, w_d
268 type(c_ptr),
intent(in) :: m_x_d, m_y_d, m_z_d, rho_d
269 integer,
intent(in) :: n
279 call neko_error(
'No device backend configured')
286 p_d, ruvw_d, u_d, v_d, w_d, E_d, rho_d, gamma, n)
287 integer,
intent(in) :: n
288 type(c_ptr),
intent(inout) :: m_x_d, m_y_d, m_z_d, p_d, ruvw_d
289 type(c_ptr),
intent(in) :: u_d, v_d, w_d, e_d, rho_d
290 real(kind=
rp),
intent(in) :: gamma
295 p_d, ruvw_d, u_d, v_d, w_d, e_d, rho_d, gamma, n)
298 p_d, ruvw_d, u_d, v_d, w_d, e_d, rho_d, gamma, n)
301 p_d, ruvw_d, u_d, v_d, w_d, e_d, rho_d, gamma, n)
303 call neko_error(
'No device backend configured')
310 integer,
intent(in) :: n
311 type(c_ptr),
intent(inout) :: e_d, p_d
313 type(c_ptr),
intent(in) :: ruvw_d
314 real(kind=
rp),
intent(in) :: gamma
323 call neko_error(
'No device backend configured')
void opencl_compute_entropy(void *S_d, void *p_d, void *rho_d, real gamma, int n)
void cuda_compute_entropy(void *S_d, void *p_d, void *rho_d, real *gamma, int *n)
void opencl_compute_max_wave_speed(void *max_wave_speed, void *u, void *v, void *w, real gamma, void *p, void *rho, int n)
void cuda_compute_max_wave_speed(void *max_wave_speed_d, void *u_d, void *v_d, void *w_d, real *gamma, void *p_d, void *rho_d, int *n)
void opencl_update_uvw(void *u, void *v, void *w, void *m_x, void *m_y, void *m_z, void *rho, int n)
void opencl_update_e(void *E, void *p, void *ruvw, real gamma, int n)
void opencl_update_mxyz_p_ruvw(void *m_x, void *m_y, void *m_z, void *p, void *ruvw, void *u, void *v, void *w, void *E, void *rho, real gamma, int n)
void cuda_update_uvw(void *u, void *v, void *w, void *m_x, void *m_y, void *m_z, void *rho, int *n)
void cuda_update_mxyz_p_ruvw(void *m_x, void *m_y, void *m_z, void *p, void *ruvw, void *u, void *v, void *w, void *E, void *rho, real *gamma, int *n)
void cuda_update_e(void *E, void *p, void *ruvw, real *gamma, int *n)
Device implementation of compressible flow operations.
subroutine, public compressible_ops_device_compute_entropy(s, p, rho, gamma, n)
Compute entropy field S = 1/(gamma-1) * rho * (log(p) - gamma * log(rho)) on device.
subroutine, public compressible_ops_device_update_uvw(u_d, v_d, w_d, m_x_d, m_y_d, m_z_d, rho_d, n)
Update u,v,w fields.
subroutine, public compressible_ops_device_update_mxyz_p_ruvw(m_x_d, m_y_d, m_z_d, p_d, ruvw_d, u_d, v_d, w_d, e_d, rho_d, gamma, n)
Update m_x, m_y, m_z, p, ruvw, fields.
subroutine, public compressible_ops_device_compute_max_wave_speed(max_wave_speed, u, v, w, gamma, p, rho, n)
Compute maximum wave speed for compressible flows on device.
subroutine, public compressible_ops_device_update_e(e_d, p_d, ruvw_d, gamma, n)
Update E field.
integer, parameter, public c_rp
integer, parameter, public rp
Global precision used in computations.