36 use,
intrinsic :: iso_c_binding, only : c_ptr
44 n_x_d, n_y_d, n_z_d, nu_d, rho_w_d, h_d, &
45 tau_x_d, tau_y_d, tau_z_d, n_nodes, &
47 bind(c, name =
'hip_spalding_compute')
48 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
51 type(c_ptr),
value :: u_d, v_d, w_d, rho_w_d
52 type(c_ptr),
value :: n_x_d, n_y_d, n_z_d, h_d, nu_d
53 real(c_rp) :: kappa, B
54 type(c_ptr),
value :: tau_x_d, tau_y_d, tau_z_d
55 integer(c_int) :: n_nodes, tstep
61 n_x_d, n_y_d, n_z_d, nu_d, rho_w_d, h_d, &
62 tau_x_d, tau_y_d, tau_z_d, n_nodes, &
64 bind(c, name =
'cuda_spalding_compute')
65 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
68 type(c_ptr),
value :: u_d, v_d, w_d, rho_w_d
69 type(c_ptr),
value :: n_x_d, n_y_d, n_z_d, h_d, nu_d
70 real(c_rp) :: kappa, B
71 type(c_ptr),
value :: tau_x_d, tau_y_d, tau_z_d
72 integer(c_int) :: n_nodes, tstep
78 n_x_d, n_y_d, n_z_d, nu_d, rho_w_d, h_d, &
79 tau_x_d, tau_y_d, tau_z_d, n_nodes, &
81 bind(c, name =
'opencl_spalding_compute')
82 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
85 type(c_ptr),
value :: u_d, v_d, w_d, rho_w_d
86 type(c_ptr),
value :: n_x_d, n_y_d, n_z_d, h_d, nu_d
87 real(c_rp) :: kappa, B
88 type(c_ptr),
value :: tau_x_d, tau_y_d, tau_z_d
89 integer(c_int) :: n_nodes, tstep
94 subroutine metal_spalding_compute(u_d, v_d, w_d, &
95 n_x_d, n_y_d, n_z_d, nu_d, rho_w_d, h_d, &
96 tau_x_d, tau_y_d, tau_z_d, n_nodes, &
98 bind(c, name =
'metal_spalding_compute')
99 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
102 type(c_ptr),
value :: u_d, v_d, w_d, rho_w_d
103 type(c_ptr),
value :: n_x_d, n_y_d, n_z_d, h_d, nu_d
104 real(c_rp) :: kappa, B
105 type(c_ptr),
value :: tau_x_d, tau_y_d, tau_z_d
106 integer(c_int) :: n_nodes, tstep
107 end subroutine metal_spalding_compute
117 n_x_d, n_y_d, n_z_d, nu_d, rho_w_d, h_d, tau_x_d, tau_y_d, tau_z_d, &
118 n_nodes, kappa, B, tstep)
119 integer,
intent(in) :: n_nodes, tstep
120 type(c_ptr),
intent(in) :: u_d, v_d, w_d, rho_w_d
121 type(c_ptr),
intent(in) :: n_x_d, n_y_d, n_z_d, h_d, nu_d
122 type(c_ptr),
intent(inout) :: tau_x_d, tau_y_d, tau_z_d
123 real(kind=rp),
intent(in) :: kappa, b
127 n_x_d, n_y_d, n_z_d, nu_d, rho_w_d, h_d, &
128 tau_x_d, tau_y_d, tau_z_d, n_nodes, kappa, b, tstep)
131 n_x_d, n_y_d, n_z_d, nu_d, rho_w_d, h_d, &
132 tau_x_d, tau_y_d, tau_z_d, n_nodes, kappa, b, tstep)
135 n_x_d, n_y_d, n_z_d, nu_d, rho_w_d, h_d, &
136 tau_x_d, tau_y_d, tau_z_d, n_nodes, kappa, b, tstep)
138 call metal_spalding_compute(u_d, v_d, w_d, &
139 n_x_d, n_y_d, n_z_d, nu_d, rho_w_d, h_d, &
140 tau_x_d, tau_y_d, tau_z_d, n_nodes, kappa, b, tstep)
142 call neko_error(
'No device backend configured')
integer, parameter, public c_rp
integer, parameter, public rp
Global precision used in computations.
Implements the device kernel for the spalding_t type.
subroutine, public spalding_compute_device(u_d, v_d, w_d, n_x_d, n_y_d, n_z_d, nu_d, rho_w_d, h_d, tau_x_d, tau_y_d, tau_z_d, n_nodes, kappa, b, tstep)
Compute the wall shear stress on device using Spalding's model.
void opencl_spalding_compute(void *u_d, void *v_d, void *w_d, void *n_x_d, void *n_y_d, void *n_z_d, void *nu_d, void *rho_w_d, void *h_d, void *tau_x_d, void *tau_y_d, void *tau_z_d, int *n_nodes, real *kappa, real *B, int *tstep)
void cuda_spalding_compute(void *u_d, void *v_d, void *w_d, void *n_x_d, void *n_y_d, void *n_z_d, void *nu_d, void *rho_w_d, void *h_d, void *tau_x_d, void *tau_y_d, void *tau_z_d, int *n_nodes, real *kappa, real *B, int *tstep)