Neko 1.99.3
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
rough_log_law_device.F90
Go to the documentation of this file.
1
3 use num_types, only : rp, c_rp
4 use, intrinsic :: iso_c_binding, only : c_ptr
5 use utils, only : neko_error
6 implicit none
7 private
8
9#ifdef HAVE_HIP
10 interface
11 subroutine hip_rough_log_law_compute(u_d, v_d, w_d, &
12 ind_r_d, ind_s_d, ind_t_d, ind_e_d, &
13 n_x_d, n_y_d, n_z_d, h_d, &
14 tau_x_d, tau_y_d, tau_z_d, n_nodes, lx, &
15 kappa, rho_w_d, B, z0, tstep) &
16 bind(c, name = 'hip_rough_log_law_compute')
17 use, intrinsic :: iso_c_binding, only : c_ptr, c_int
18 use num_types, only : c_rp
19 implicit none
20 type(c_ptr), value :: u_d, v_d, w_d
21 type(c_ptr), value :: ind_r_d, ind_s_d, ind_t_d, ind_e_d
22 type(c_ptr), value :: n_x_d, n_y_d, n_z_d, h_d
23 real(c_rp) :: kappa, B, z0
24 type(c_ptr), value :: rho_w_d
25 type(c_ptr), value :: tau_x_d, tau_y_d, tau_z_d
26 integer(c_int) :: n_nodes, lx, tstep
27 end subroutine hip_rough_log_law_compute
28 end interface
29#elif HAVE_CUDA
30 interface
31 subroutine cuda_rough_log_law_compute(u_d, v_d, w_d, &
32 ind_r_d, ind_s_d, ind_t_d, ind_e_d, &
33 n_x_d, n_y_d, n_z_d, h_d, &
34 tau_x_d, tau_y_d, tau_z_d, n_nodes, lx, &
35 kappa, rho_w_d, B, z0, tstep) &
36 bind(c, name = 'cuda_rough_log_law_compute')
37 use, intrinsic :: iso_c_binding, only : c_ptr, c_int
38 use num_types, only : c_rp
39 implicit none
40 type(c_ptr), value :: u_d, v_d, w_d
41 type(c_ptr), value :: ind_r_d, ind_s_d, ind_t_d, ind_e_d
42 type(c_ptr), value :: n_x_d, n_y_d, n_z_d, h_d
43 real(c_rp) :: kappa, B, z0
44 type(c_ptr), value :: rho_w_d
45 type(c_ptr), value :: tau_x_d, tau_y_d, tau_z_d
46 integer(c_int) :: n_nodes, lx, tstep
47 end subroutine cuda_rough_log_law_compute
48 end interface
49#elif HAVE_OPENCL
50#endif
52
53contains
57 subroutine rough_log_law_compute_device(u_d, v_d, w_d, &
58 ind_r_d, ind_s_d, ind_t_d, ind_e_d, &
59 n_x_d, n_y_d, n_z_d, h_d, tau_x_d, tau_y_d, tau_z_d, &
60 n_nodes, lx, kappa, rho_w_d, B, z0, tstep)
61 integer, intent(in) :: n_nodes, lx, tstep
62 type(c_ptr), intent(in) :: u_d, v_d, w_d
63 type(c_ptr), intent(in) :: ind_r_d, ind_s_d, ind_t_d, ind_e_d
64 type(c_ptr), intent(in) :: n_x_d, n_y_d, n_z_d, h_d
65 type(c_ptr), intent(inout) :: tau_x_d, tau_y_d, tau_z_d
66 type(c_ptr), intent(in) :: rho_w_d
67 real(kind=rp), intent(in) :: kappa, b, z0
68
69#if HAVE_HIP
70 call hip_rough_log_law_compute(u_d, v_d, w_d, &
71 ind_r_d, ind_s_d, ind_t_d, ind_e_d, &
72 n_x_d, n_y_d, n_z_d, h_d, &
73 tau_x_d, tau_y_d, tau_z_d, n_nodes, lx, &
74 kappa, rho_w_d, b, z0, tstep)
75#elif HAVE_CUDA
76 call cuda_rough_log_law_compute(u_d, v_d, w_d, &
77 ind_r_d, ind_s_d, ind_t_d, ind_e_d, &
78 n_x_d, n_y_d, n_z_d, h_d, &
79 tau_x_d, tau_y_d, tau_z_d, n_nodes, lx, &
80 kappa, rho_w_d, b, z0, tstep)
81#elif HAVE_OPENCL
82 call neko_error("OPENCL is not implemented for the rough log-law model")
83#else
84 call neko_error('No device backend configured')
85#endif
86
87 end subroutine rough_log_law_compute_device
88end module rough_log_law_device
integer, parameter, public c_rp
Definition num_types.f90:13
integer, parameter, public rp
Global precision used in computations.
Definition num_types.f90:12
Implements the device kernel for the rough_log_law_t type.
subroutine, public rough_log_law_compute_device(u_d, v_d, w_d, ind_r_d, ind_s_d, ind_t_d, ind_e_d, n_x_d, n_y_d, n_z_d, h_d, tau_x_d, tau_y_d, tau_z_d, n_nodes, lx, kappa, rho_w_d, b, z0, tstep)
Compute the wall shear stress on device using the rough log-law model.
Utilities.
Definition utils.f90:35
void cuda_rough_log_law_compute(void *u_d, void *v_d, void *w_d, void *ind_r_d, void *ind_s_d, void *ind_t_d, void *ind_e_d, void *n_x_d, void *n_y_d, void *n_z_d, void *h_d, void *tau_x_d, void *tau_y_d, void *tau_z_d, int *n_nodes, int *lx, real *kappa, void *rho_w_d, real *B, real *z0, int *tstep)