67 rho_w, h, tau_x, tau_y, tau_z, n_nodes, kappa, B, p, s)
68 integer,
intent(in) :: n_nodes
69 real(kind=
rp),
dimension(n_nodes),
intent(in) :: u, v, w
70 real(kind=
rp),
dimension(n_nodes),
intent(in) :: rho_w
71 real(kind=
rp),
dimension(n_nodes),
intent(in) :: n_x, n_y, n_z, h, nu
72 real(kind=
rp),
dimension(n_nodes),
intent(out) :: tau_x, tau_y, tau_z
73 real(kind=
rp),
intent(in) :: kappa, b, p, s
75 real(kind=
rp) :: ui, vi, wi, magu, utau, normu, rho
76 real(kind=
rp) :: rey, e_const, blend, up, warg
78 e_const = exp(kappa * b)
88 normu = ui * n_x(i) + vi * n_y(i) + wi * n_z(i)
90 ui = ui - normu * n_x(i)
91 vi = vi - normu * n_y(i)
92 wi = wi - normu * n_z(i)
94 magu = sqrt(ui**2 + vi**2 + wi**2)
103 rey = magu * h(i) / nu(i)
104 blend = exp(-((rey / s) ** p))
105 warg = kappa * e_const * rey
106 up = blend * sqrt(rey) + (1.0_rp - blend) *
lambert_w0(warg, 1) / kappa
109 tau_x(i) = -rho * utau**2 * ui / (magu +
neko_eps)
110 tau_y(i) = -rho * utau**2 * vi / (magu +
neko_eps)
111 tau_z(i) = -rho * utau**2 * wi / (magu +
neko_eps)
subroutine, public cai_sagaut_model_ii_compute_cpu(u, v, w, n_x, n_y, n_z, nu, rho_w, h, tau_x, tau_y, tau_z, n_nodes, kappa, b, p, s)
Evaluate wall shear stresses with the CPU Model-II kernel.
pure real(kind=rp) function, public lambert_w0(x, niter)
Approximate the principal real branch of the Lambert W function for non-negative real x.