38 use json_module,
only : json_file
58 real(kind=
rp) :: kappa = 0.41_rp
60 real(kind=
rp) :: b = 0.0_rp
62 real(kind=
rp) :: z0 = 0.0_rp
72 procedure, pass(this) :: init_from_components => &
91 character(len=*),
intent(in) :: scheme_name
92 type(
coef_t),
intent(in) :: coef
93 integer,
intent(in) :: msk(:)
94 integer,
intent(in) :: facet(:)
95 integer,
intent(in) :: h_index
96 type(json_file),
intent(inout) :: json
97 real(kind=
rp) :: kappa, b, z0
103 call this%init_from_components(scheme_name, coef, msk, facet, h_index, &
112 type(
coef_t),
intent(in) :: coef
113 type(json_file),
intent(inout) :: json
114 character(len=LOG_SIZE) :: log_buf
116 call this%partial_init_base(coef, json)
122 write(log_buf,
'(A)')
'Model : Rough log law'
124 write(log_buf,
'(A, E15.7)')
'kappa : ', this%kappa
126 write(log_buf,
'(A, E15.7)')
'B : ', this%B
128 write(log_buf,
'(A, E15.7)')
'z0 : ', this%z0
139 integer,
intent(in) :: msk(:)
140 integer,
intent(in) :: facet(:)
142 call this%finalize_base(msk, facet)
156 facet, h_index, kappa, B, z0)
158 character(len=*),
intent(in) :: scheme_name
159 type(
coef_t),
intent(in) :: coef
160 integer,
intent(in) :: msk(:)
161 integer,
intent(in) :: facet(:)
162 integer,
intent(in) :: h_index
163 real(kind=
rp),
intent(in) :: kappa
164 real(kind=
rp),
intent(in) :: b
165 real(kind=
rp),
intent(in) :: z0
167 call this%init_base(scheme_name, coef, msk, facet, h_index)
179 call this%free_base()
188 real(kind=
rp),
intent(in) :: t
189 integer,
intent(in) :: tstep
194 real(kind=
rp) :: ui, vi, wi, magu, utau, normu
202 this%ind_s_d, this%ind_t_d, this%ind_e_d, &
203 this%n_x%x_d, this%n_y%x_d, this%n_z%x_d, &
204 this%h%x_d, this%tau_x%x_d, this%tau_y%x_d, &
205 this%tau_z%x_d, this%n_nodes, u%Xh%lx, this%kappa, &
206 this%B, this%z0, tstep)
209 this%ind_t, this%ind_e, this%n_x%x, this%n_y%x, this%n_z%x, &
210 this%h%x, this%tau_x%x, this%tau_y%x, this%tau_z%x, &
211 this%n_nodes, u%Xh%lx, u%msh%nelv, this%kappa, &
212 this%B, this%z0, tstep)
__global__ void rough_log_law_compute(const T *__restrict__ u_d, const T *__restrict__ v_d, const T *__restrict__ w_d, const int *__restrict__ ind_r_d, const int *__restrict__ ind_s_d, const int *__restrict__ ind_t_d, const int *__restrict__ ind_e_d, const T *__restrict__ n_x_d, const T *__restrict__ n_y_d, const T *__restrict__ n_z_d, const T *__restrict__ h_d, T *__restrict__ tau_x_d, T *__restrict__ tau_y_d, T *__restrict__ tau_z_d, const int n_nodes, const int lx, const T kappa, const T B, const T z0)
Utilities for retrieving parameters from the case files.
type(log_t), public neko_log
Global log stream.
integer, parameter, public log_size
integer, parameter neko_bcknd_device
integer, parameter, public rp
Global precision used in computations.
Defines a registry for storing solution fields.
type(registry_t), target, public neko_registry
Global field registry.
Implements the CPU kernel for the rough_log_law_t type.
subroutine, public rough_log_law_compute_cpu(u, v, w, ind_r, ind_s, ind_t, ind_e, n_x, n_y, n_z, h, tau_x, tau_y, tau_z, n_nodes, lx, nelv, kappa, b, z0, tstep)
Compute the wall shear stress on CPU using the rough log-law model.
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, b, z0, tstep)
Compute the wall shear stress on device using the rough log-law model.
Implements rough_log_law_t.
subroutine rough_log_law_init_from_components(this, scheme_name, coef, msk, facet, h_index, kappa, b, z0)
Constructor from components.
subroutine rough_log_law_finalize(this, msk, facet)
Finalize the construction using the mask and facet arrays of the bc.
subroutine rough_log_law_init(this, scheme_name, coef, msk, facet, h_index, json)
Constructor from JSON.
subroutine rough_log_law_partial_init(this, coef, json)
Constructor from JSON.
subroutine rough_log_law_free(this)
Destructor for the rough_log_law_t (base) class.
Defines a registry for storing and requesting temporary objects This can be used when you have a func...
type(scratch_registry_t), target, public neko_scratch_registry
Global scratch registry.
Coefficients defined on a given (mesh, ) tuple. Arrays use indices (i,j,k,e): element e,...
Wall model based on the log-law for a rough wall. The formula defining the law is ....
Base abstract type for wall-stress models for wall-modelled LES.