36 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
40 use mpi_f08,
only : mpi_sum, mpi_in_place, mpi_allreduce
48 dTdx_d, dTdy_d, dTdz_d, &
49 a11_d, a12_d, a13_d, &
50 a21_d, a22_d, a23_d, &
51 a31_d, a32_d, a33_d, &
52 delta_d, nut_d, temperature_alphat, TKE_alphat, TKE_source, &
53 c_k, T0, g1, g2, g3, &
55 bind(c, name =
'hip_deardorff_nut_compute')
56 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
58 type(c_ptr),
value :: TKE_d, &
59 dTdx_d, dTdy_d, dTdz_d, &
60 a11_d, a12_d, a13_d, &
61 a21_d, a22_d, a23_d, &
62 a31_d, a32_d, a33_d, &
63 delta_d, nut_d, temperature_alphat, &
64 TKE_alphat, TKE_source
66 real(c_rp) :: c_k, T0, g1, g2, g3, eps
72 dTdx_d, dTdy_d, dTdz_d, &
73 a11_d, a12_d, a13_d, &
74 a21_d, a22_d, a23_d, &
75 a31_d, a32_d, a33_d, &
76 delta_d, nut_d, temperature_alphat, TKE_alphat, TKE_source, &
77 c_k, T0, g1, g2, g3, &
79 bind(c, name =
'cuda_deardorff_nut_compute')
80 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
82 type(c_ptr),
value :: TKE_d, &
83 dTdx_d, dTdy_d, dTdz_d, &
84 a11_d, a12_d, a13_d, &
85 a21_d, a22_d, a23_d, &
86 a31_d, a32_d, a33_d, &
87 delta_d, nut_d, temperature_alphat, &
88 TKE_alphat, TKE_source
90 real(c_rp) :: c_k, T0, g1, g2, g3, eps
96 dTdx_d, dTdy_d, dTdz_d, &
97 a11_d, a12_d, a13_d, &
98 a21_d, a22_d, a23_d, &
99 a31_d, a32_d, a33_d, &
100 delta_d, nut_d, temperature_alphat, TKE_alphat, TKE_source, &
101 c_k, T0, g1, g2, g3, &
103 bind(c, name =
'opencl_deardorff_nut_compute')
104 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
106 type(c_ptr),
value :: TKE_d, &
107 dTdx_d, dTdy_d, dTdz_d, &
108 a11_d, a12_d, a13_d, &
109 a21_d, a22_d, a23_d, &
110 a31_d, a32_d, a33_d, &
111 delta_d, nut_d, temperature_alphat, &
112 TKE_alphat, TKE_source
114 real(c_rp) :: c_k, T0, g1, g2, g3, eps
119 subroutine metal_deardorff_nut_compute(TKE_d, &
120 dTdx_d, dTdy_d, dTdz_d, &
121 a11_d, a12_d, a13_d, &
122 a21_d, a22_d, a23_d, &
123 a31_d, a32_d, a33_d, &
124 delta_d, nut_d, temperature_alphat, TKE_alphat, TKE_source, &
125 c_k, T0, g1, g2, g3, &
127 bind(c, name =
'metal_deardorff_nut_compute')
128 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
130 type(c_ptr),
value :: TKE_d, &
131 dTdx_d, dTdy_d, dTdz_d, &
132 a11_d, a12_d, a13_d, &
133 a21_d, a22_d, a23_d, &
134 a31_d, a32_d, a33_d, &
135 delta_d, nut_d, temperature_alphat, &
136 TKE_alphat, TKE_source
138 real(c_rp) :: c_k, T0, g1, g2, g3, eps
139 end subroutine metal_deardorff_nut_compute
172 dTdx_d, dTdy_d, dTdz_d, a11_d, a12_d, a13_d, &
173 a21_d, a22_d, a23_d, &
174 a31_d, a32_d, a33_d, &
176 nut_d, temperature_alphat, TKE_alphat, TKE_source, &
178 type(c_ptr) :: tke_d, dtdx_d, dtdy_d, dtdz_d, &
179 a11_d, a12_d, a13_d, &
180 a21_d, a22_d, a23_d, &
181 a31_d, a32_d, a33_d, &
182 delta_d, nut_d, temperature_alphat, tke_alphat, tke_source
184 real(kind=
rp) :: c_k, t0, g(3), eps
187 dtdx_d, dtdy_d, dtdz_d, &
188 a11_d, a12_d, a13_d, &
189 a21_d, a22_d, a23_d, &
190 a31_d, a32_d, a33_d, &
191 delta_d, nut_d, temperature_alphat, tke_alphat, tke_source, &
192 c_k, t0, g(1), g(2), g(3), eps, n)
195 dtdx_d, dtdy_d, dtdz_d, &
196 a11_d, a12_d, a13_d, &
197 a21_d, a22_d, a23_d, &
198 a31_d, a32_d, a33_d, &
199 delta_d, nut_d, temperature_alphat, tke_alphat, tke_source, &
200 c_k, t0, g(1), g(2), g(3), eps, n)
203 dtdx_d, dtdy_d, dtdz_d, &
204 a11_d, a12_d, a13_d, &
205 a21_d, a22_d, a23_d, &
206 a31_d, a32_d, a33_d, &
207 delta_d, nut_d, temperature_alphat, tke_alphat, tke_source, &
208 c_k, t0, g(1), g(2), g(3), eps, n)
210 call metal_deardorff_nut_compute(tke_d, &
211 dtdx_d, dtdy_d, dtdz_d, &
212 a11_d, a12_d, a13_d, &
213 a21_d, a22_d, a23_d, &
214 a31_d, a32_d, a33_d, &
215 delta_d, nut_d, temperature_alphat, tke_alphat, tke_source, &
216 c_k, t0, g(1), g(2), g(3), eps, n)
218 call neko_error(
'no device backend configured')
void opencl_deardorff_nut_compute(void *TKE, void *dTdx, void *dTdy, void *dTdz, void *a11, void *a12, void *a13, void *a21, void *a22, void *a23, void *a31, void *a32, void *a33, void *delta, void *nut, void *temperature_alphat, void *TKE_alphat, void *TKE_source, real *c_k, real *T0, real *g1, real *g2, real *g3, real *eps, int *n)
void cuda_deardorff_nut_compute(void *TKE, void *dTdx, void *dTdy, void *dTdz, void *a11, void *a12, void *a13, void *a21, void *a22, void *a23, void *a31, void *a32, void *a33, void *delta, void *nut, void *temperature_alphat, void *TKE_alphat, void *TKE_source, real *c_k, real *T0, real *g1, real *g2, real *g3, real *eps, int *n)
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.
Device kernel wrapper for computing Deardorff SGS quantities.
subroutine, public device_deardorff_nut_compute(tke_d, dtdx_d, dtdy_d, dtdz_d, a11_d, a12_d, a13_d, a21_d, a22_d, a23_d, a31_d, a32_d, a33_d, delta_d, nut_d, temperature_alphat, tke_alphat, tke_source, c_k, t0, g, eps, n)
Compute Deardorff SGS quantities on the device backend.
integer, parameter, public c_rp
integer, parameter, public rp
Global precision used in computations.