fricVel_powerLaw Subroutine

private subroutine fricVel_powerLaw(velTau, velSW, distToBnd, viscKine, nElems)

This routine computes friction velocity from explicit two equation Werner and Wengle wall model. Haussmann, Marc; BARRETO, Alejandro CLARO; KOUYI, Gislain LIPEME; Rivière, Nicolas; Nirschl, Hermann; Krause, Mathias J. (2019): Large-eddy simulation coupled with wall models for turbulent channel flows at high Reynolds numbers with a lattice Boltzmann method — Application to Coriolis mass flowmeter. In Computers & Mathematics with Applications 78 (10), pp. 3285–3302. DOI: 10.1016/j.camwa.2019.04.033.

The explicit power-law in terms of friction velocity given in Eq. 33 in S. Wilhelm, J. Jacob, and P. Sagaut, "An explicit power-law-based wall model for lattice Boltzmann method–Reynolds-averaged numerical simulations of the flow around airfoils", Physics of Fluids 30, 065111 (2018)

The model constants are chosen according to Werner and Wengle: Wengle, H. and Werner, H. (1993) ‘Large-eddy Simulation of Turbulent Flow Over Sharp-edged Obstacles in a Plate Channel’, (1985), pp. 192–199.


real(kind=rk), intent(inout) :: velTau(:)

Friction velocity computed from wall model. it is inout to provide velTau from previous timestep as initial velTau for fixed-point or Newton iteration solver

real(kind=rk), intent(in) :: velSW(:)

Stream-wise velocity component from which friction velocity is computed

real(kind=rk), intent(in) :: distToBnd(:)

Distance to the boundary in the discrete normai direction

real(kind=rk), intent(in) :: viscKine(:)

Kinematic viscosity

integer, intent(in) :: nElems

Number of elements in input and output arrays



integer, private :: iElem
real(kind=rk), private :: visc_div_dist
real(kind=rk), private :: fac