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
129 a21_d, a22_d, a23_d, &
130 a31_d, a32_d, a33_d, &
131 delta_d, nut_d, mult_d, c, eps, n)
132 type(c_ptr) :: 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, mult_d
137 real(kind=
rp) :: c, eps
140 a21_d, a22_d, a23_d, &
141 a31_d, a32_d, a33_d, &
142 delta_d, nut_d, mult_d, c, eps, n)
145 a21_d, a22_d, a23_d, &
146 a31_d, a32_d, a33_d, &
147 delta_d, nut_d, mult_d, c, eps, n)
149 call neko_error(
'opencl backend is not supported for device_vreman_nut')
151 call neko_error(
'no device backend configured')
157 a21_d, a22_d, a23_d, &
158 a31_d, a32_d, a33_d, &
159 delta_d, nut_d, mult_d, c, eps, n, &
160 dTdx_d, dTdy_d, dTdz_d, g, ri_c, ref_temp)
161 type(c_ptr) :: a11_d, a12_d, a13_d, &
162 a21_d, a22_d, a23_d, &
163 a31_d, a32_d, a33_d, &
164 delta_d, nut_d, mult_d
165 type(c_ptr) :: dtdx_d, dtdy_d, dtdz_d
167 real(kind=
rp) :: c, eps
168 real(kind=
rp) :: g(3), ri_c, ref_temp
171 a21_d, a22_d, a23_d, &
172 a31_d, a32_d, a33_d, &
173 delta_d, nut_d, mult_d, c, eps, n, &
174 dtdx_d, dtdy_d, dtdz_d, g, ri_c, ref_temp)
177 a21_d, a22_d, a23_d, &
178 a31_d, a32_d, a33_d, &
179 delta_d, nut_d, mult_d, c, eps, n, &
180 dtdx_d, dtdy_d, dtdz_d, g, ri_c, ref_temp)
182 call neko_error(
'opencl backend is not supported for device_vreman_nut (buoyancy)')
184 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 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)