34 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
38 use mpi_f08,
only : mpi_sum, mpi_in_place, mpi_allreduce
46 a21_d, a22_d, a23_d, &
47 a31_d, a32_d, a33_d, &
48 delta_d, nut_d, mult_d, c, eps, n) &
49 bind(c, name =
'hip_vreman_nut_compute')
50 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
52 type(c_ptr),
value :: a11_d, a12_d, a13_d, &
53 a21_d, a22_d, a23_d, &
54 a31_d, a32_d, a33_d, &
55 delta_d, nut_d, mult_d
62 a21_d, a22_d, a23_d, &
63 a31_d, a32_d, a33_d, &
64 delta_d, nut_d, mult_d, c, eps, n, &
65 dTdx_d, dTdy_d, dTdz_d, g, ri_c, ref_temp) &
66 bind(c, name =
'hip_vreman_nut_compute_buoy')
67 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
69 type(c_ptr),
value :: a11_d, a12_d, a13_d, &
70 a21_d, a22_d, a23_d, &
71 a31_d, a32_d, a33_d, &
72 delta_d, nut_d, mult_d
75 type(c_ptr),
value :: dTdx_d, dTdy_d, dTdz_d
77 real(c_rp) :: ri_c, ref_temp
84 a21_d, a22_d, a23_d, &
85 a31_d, a32_d, a33_d, &
86 delta_d, nut_d, mult_d, c, eps, n) &
87 bind(c, name =
'cuda_vreman_nut_compute')
88 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
90 type(c_ptr),
value :: a11_d, a12_d, a13_d, &
91 a21_d, a22_d, a23_d, &
92 a31_d, a32_d, a33_d, &
93 delta_d, nut_d, mult_d
100 a21_d, a22_d, a23_d, &
101 a31_d, a32_d, a33_d, &
102 delta_d, nut_d, mult_d, c, eps, n, &
103 dTdx_d, dTdy_d, dTdz_d, g, ri_c, ref_temp) &
104 bind(c, name =
'cuda_vreman_nut_compute_buoy')
105 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
107 type(c_ptr),
value :: a11_d, a12_d, a13_d, &
108 a21_d, a22_d, a23_d, &
109 a31_d, a32_d, a33_d, &
110 delta_d, nut_d, mult_d
113 type(c_ptr),
value :: dTdx_d, dTdy_d, dTdz_d
115 real(c_rp) :: ri_c, ref_temp
122 a21_d, a22_d, a23_d, &
123 a31_d, a32_d, a33_d, &
124 delta_d, nut_d, mult_d, c, eps, n) &
125 bind(c, name =
'opencl_vreman_nut_compute')
126 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
128 type(c_ptr),
value :: a11_d, a12_d, a13_d, &
129 a21_d, a22_d, a23_d, &
130 a31_d, a32_d, a33_d, &
131 delta_d, nut_d, mult_d
138 a21_d, a22_d, a23_d, &
139 a31_d, a32_d, a33_d, &
140 delta_d, nut_d, mult_d, c, eps, n, &
141 dTdx_d, dTdy_d, dTdz_d, g, ri_c, ref_temp) &
142 bind(c, name =
'opencl_vreman_nut_compute_buoy')
143 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
145 type(c_ptr),
value :: a11_d, a12_d, a13_d, &
146 a21_d, a22_d, a23_d, &
147 a31_d, a32_d, a33_d, &
148 delta_d, nut_d, mult_d
151 type(c_ptr),
value :: dTdx_d, dTdy_d, dTdz_d
153 real(c_rp) :: ri_c, ref_temp
159 subroutine metal_vreman_nut_compute(a11_d, a12_d, a13_d, &
160 a21_d, a22_d, a23_d, &
161 a31_d, a32_d, a33_d, &
162 delta_d, nut_d, mult_d, c, eps, n) &
163 bind(c, name =
'metal_vreman_nut_compute')
164 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
166 type(c_ptr),
value :: a11_d, a12_d, a13_d, &
167 a21_d, a22_d, a23_d, &
168 a31_d, a32_d, a33_d, &
169 delta_d, nut_d, mult_d
172 end subroutine metal_vreman_nut_compute
175 subroutine metal_vreman_nut_compute_buoy(a11_d, a12_d, a13_d, &
176 a21_d, a22_d, a23_d, &
177 a31_d, a32_d, a33_d, &
178 delta_d, nut_d, mult_d, c, eps, n, &
179 dTdx_d, dTdy_d, dTdz_d, g, ri_c, ref_temp) &
180 bind(c, name =
'metal_vreman_nut_compute_buoy')
181 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
183 type(c_ptr),
value :: a11_d, a12_d, a13_d, &
184 a21_d, a22_d, a23_d, &
185 a31_d, a32_d, a33_d, &
186 delta_d, nut_d, mult_d
189 type(c_ptr),
value :: dTdx_d, dTdy_d, dTdz_d
191 real(c_rp) :: ri_c, ref_temp
192 end subroutine metal_vreman_nut_compute_buoy
204 a21_d, a22_d, a23_d, &
205 a31_d, a32_d, a33_d, &
206 delta_d, nut_d, mult_d, c, eps, n)
207 type(c_ptr) :: a11_d, a12_d, a13_d, &
208 a21_d, a22_d, a23_d, &
209 a31_d, a32_d, a33_d, &
210 delta_d, nut_d, mult_d
212 real(kind=
rp) :: c, eps
215 a21_d, a22_d, a23_d, &
216 a31_d, a32_d, a33_d, &
217 delta_d, nut_d, mult_d, c, eps, n)
220 a21_d, a22_d, a23_d, &
221 a31_d, a32_d, a33_d, &
222 delta_d, nut_d, mult_d, c, eps, n)
225 a21_d, a22_d, a23_d, &
226 a31_d, a32_d, a33_d, &
227 delta_d, nut_d, mult_d, c, eps, n)
229 call metal_vreman_nut_compute(a11_d, a12_d, a13_d, &
230 a21_d, a22_d, a23_d, &
231 a31_d, a32_d, a33_d, &
232 delta_d, nut_d, mult_d, c, eps, n)
234 call neko_error(
'no device backend configured')
240 a21_d, a22_d, a23_d, &
241 a31_d, a32_d, a33_d, &
242 delta_d, nut_d, mult_d, c, eps, n, &
243 dTdx_d, dTdy_d, dTdz_d, g, ri_c, ref_temp)
244 type(c_ptr) :: a11_d, a12_d, a13_d, &
245 a21_d, a22_d, a23_d, &
246 a31_d, a32_d, a33_d, &
247 delta_d, nut_d, mult_d
248 type(c_ptr) :: dtdx_d, dtdy_d, dtdz_d
250 real(kind=
rp) :: c, eps
251 real(kind=
rp) :: g(3), ri_c, ref_temp
254 a21_d, a22_d, a23_d, &
255 a31_d, a32_d, a33_d, &
256 delta_d, nut_d, mult_d, c, eps, n, &
257 dtdx_d, dtdy_d, dtdz_d, g, ri_c, ref_temp)
260 a21_d, a22_d, a23_d, &
261 a31_d, a32_d, a33_d, &
262 delta_d, nut_d, mult_d, c, eps, n, &
263 dtdx_d, dtdy_d, dtdz_d, g, ri_c, ref_temp)
266 a21_d, a22_d, a23_d, &
267 a31_d, a32_d, a33_d, &
268 delta_d, nut_d, mult_d, c, eps, n, &
269 dtdx_d, dtdy_d, dtdz_d, g, ri_c, ref_temp)
271 call metal_vreman_nut_compute_buoy(a11_d, a12_d, a13_d, &
272 a21_d, a22_d, a23_d, &
273 a31_d, a32_d, a33_d, &
274 delta_d, nut_d, mult_d, c, eps, n, &
275 dtdx_d, dtdy_d, dtdz_d, g, ri_c, ref_temp)
277 call neko_error(
'no device backend configured (vreman buoyancy)')
type(mpi_datatype), public mpi_real_precision
MPI type for working precision of REAL types.
integer, public pe_size
MPI size of communicator.
type(mpi_comm), public neko_comm
MPI communicator.
subroutine, public device_vreman_nut_compute(a11_d, a12_d, a13_d, a21_d, a22_d, a23_d, a31_d, a32_d, a33_d, delta_d, nut_d, mult_d, c, eps, n)
Compute the eddy viscosity field for the Sigma model indevice.
subroutine, public device_vreman_nut_compute_buoy(a11_d, a12_d, a13_d, a21_d, a22_d, a23_d, a31_d, a32_d, a33_d, delta_d, nut_d, mult_d, c, eps, n, dtdx_d, dtdy_d, dtdz_d, g, ri_c, ref_temp)
integer, parameter, public c_rp
integer, parameter, public rp
Global precision used in computations.
void opencl_vreman_nut_compute(void *a11, void *a12, void *a13, void *a21, void *a22, void *a23, void *a31, void *a32, void *a33, void *delta, void *nut, void *mult, real *c, real *eps, int *n)
void opencl_vreman_nut_compute_buoy(void *a11, void *a12, void *a13, void *a21, void *a22, void *a23, void *a31, void *a32, void *a33, void *delta, void *nut, void *mult, real *c, real *eps, int *n, void *dTdx, void *dTdy, void *dTdz, real *g, real *ri_c, real *ref_temp)
void cuda_vreman_nut_compute(void *a11, void *a12, void *a13, void *a21, void *a22, void *a23, void *a31, void *a32, void *a33, void *delta, void *nut, void *mult, real *c, real *eps, int *n)
void cuda_vreman_nut_compute_buoy(void *a11, void *a12, void *a13, void *a21, void *a22, void *a23, void *a31, void *a32, void *a33, void *delta, void *nut, void *mult, real *c, real *eps, int *n, void *dTdx, void *dTdy, void *dTdz, real *g, real *ri_c, real *ref_temp)