177 return 2*log(0.5*(1 +
xi)) + log(0.5*(1 +
xi*
xi)) - 2*
atan(
xi) + pi/2;
187 return 2*log(0.5*(1 +
xi*
xi));
291template<
typename T,
int BC_TYPE>
333 if(idx >= n_nodes)
return;
338 const int max_iter = 50;
344 for (
int i = idx;
i < n_nodes;
i +=
str) {
345 const int index = (ind_e_d[
i] - 1) * lx * lx * lx +
346 (ind_t_d[
i] - 1) * lx * lx +
347 (ind_s_d[
i] - 1) * lx +
353 T ti = temp_d[index];
371 magu =
fmax(magu, (
T)1
e-6);
374 T utau = kappa * magu / log(
hi/z0);
379 z0h = z0 *
exp(z0h_in *
sqrt((utau*z0)/(mu/rho)));
392 q = kappa/
Pr*utau*(ts-ti)/log(
hi/
z0h);
421 for (
int it = 0; it < max_iter; ++it) {
467 const int index_ts = (ind_e_d[
i] - 1) * lx * lx * lx +
468 (ind_t_d[
i] - 1 - h_z_idx[
i]) * lx * lx +
469 (ind_s_d[
i] - 1 - h_y_idx[
i]) * lx +
470 (ind_r_d[
i] - 1 - h_x_idx[
i]);
__global__ void dirichlet_apply_scalar_kernel(const int *__restrict__ msk, T *__restrict__ x, const T g, const int m)
__device__ T slaw_m_neutral(T z, T z0)
__device__ T slaw_h_neutral(T z, T z0h)
__device__ T slaw_m_convective(T z, T L_ob, T z0)
__device__ T slaw_h_stable(T z, T L_ob, T z0h)
__global__ void most_compute(const T *__restrict__ u_d, const T *__restrict__ v_d, const T *__restrict__ w_d, const T *__restrict__ temp_d, const T *__restrict__ h_d, const T *__restrict__ n_x_d, const T *__restrict__ n_y_d, const T *__restrict__ n_z_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, T *__restrict__ tau_x_d, T *__restrict__ tau_y_d, T *__restrict__ tau_z_d, int n_nodes, int lx, T kappa, const T *__restrict__ mu_w_d, const T *__restrict__ rho_w_d, T g1, T g2, T g3, T Pr, T z0, T z0h_in, T bc_value, T *__restrict__ Ri_b_diagn, T *__restrict__ L_ob_diagn, T *__restrict__ utau_diagn, T *__restrict__ magu_diagn, T *__restrict__ ti_diagn, T *__restrict__ ts_diagn, T *__restrict__ q_diagn, const int *__restrict__ h_x_idx, const int *__restrict__ h_y_idx, const int *__restrict__ h_z_idx)
__device__ T corr_h_convective(T z, T L_ob)
__device__ T corr_m_convective(T z, T L_ob)
__device__ T f_dirichlet_stable(T Ri_b, T z, T z0, T z0h, T L_ob, T Pr)
__device__ T corr_h_stable(T z, T L_ob)
__device__ T slaw_m_stable(T z, T L_ob, T z0)
__device__ T dfdl_neumann_convective(T l_upper, T l_lower, T z, T z0, T z0h, T fd_h, T Pr)
__device__ T dfdl_dirichlet_convective(T l_upper, T l_lower, T z, T z0, T z0h, T fd_h, T Pr)
__device__ T slaw_h_convective(T z, T L_ob, T z0h)
__device__ T f_neumann_stable(T Ri_b, T z, T z0, T z0h, T L_ob, T Pr)
__device__ T f_neumann_convective(T Ri_b, T z, T z0, T z0h, T L_ob, T Pr)
__device__ T corr_m_stable(T z, T L_ob)
__device__ T dfdl_neumann_stable(T l_upper, T l_lower, T z, T z0, T z0h, T fd_h, T Pr)
__device__ T f_dirichlet_convective(T Ri_b, T z, T z0, T z0h, T L_ob, T Pr)
__device__ T dfdl_dirichlet_stable(T l_upper, T l_lower, T z, T z0, T z0h, T fd_h, T Pr)