turbulent_wall_powerLaw_incomp Subroutine

public subroutine turbulent_wall_powerLaw_incomp(me, state, bcBuffer, globBC, levelDesc, tree, nSize, iLevel, sim_time, neigh, layout, fieldProp, varPos, nScalars, varSys, derVarPos, physics, iField, mixture)

Power-law wall function for turbulent flow. Calculate velocity and along with that the corresponding PFD at the wall using a wall function based on the power-law. The implementation is based on the following paper: Haussmann, M. et al. (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’, Computers & Mathematics with Applications. Elsevier Ltd, 78(10), pp. 3285–3302. The main formulas used from it are mentioned in the code below.

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.

Note, that we use information of the second fluid element FF, to specify quantities at the first fluid element F which is adjacent to the wall W.


```lua boundary_condition = { { label = 'wall', kind = 'turbulent_wall_powerlaw' } }

This subroutine's interface must match the abstract interface definition boundaryRoutine in bc/mus_bc_header_module.f90 in order to be callable via fnct function pointer.


class(boundary_type) :: me

global boundary type

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

Current state vector of iLevel

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

state values of boundary elements of all fields of iLevel

type(glob_boundary_type), intent(in) :: globBC

scheme global boundary type

type(tem_levelDesc_type), intent(in) :: levelDesc

iLevel descriptor

type(treelmesh_type), intent(in) :: tree

Treelm Mesh

integer, intent(in) :: nSize

size of state array ( in terms of elements )

integer, intent(in) :: iLevel

the level On which this boundary was invoked

type(tem_time_type), intent(in) :: sim_time

global time information

integer, intent(in) :: neigh(:)

connectivity array corresponding to state vector

type(mus_scheme_layout_type), intent(in) :: layout

stencil layout information

type(mus_field_prop_type), intent(in) :: fieldProp

fluid parameters and properties

integer, intent(in) :: varPos(:)

pointer to field variable in the state vector

integer, intent(in) :: nScalars

number of Scalars in the scheme var system

type(tem_varSys_type), intent(in) :: varSys

scheme variable system

type(mus_derVarPos_type), intent(in) :: derVarPos

position of derived quantities in varsys

type(mus_physics_type), intent(in) :: physics

scheme global boundary type

integer, intent(in) :: iField

current field

type(mus_mixture_type), intent(in) :: mixture

mixture info


proc~~turbulent_wall_powerlaw_incomp~~CallsGraph proc~turbulent_wall_powerlaw_incomp turbulent_wall_powerLaw_incomp proc~tem_elemsizelevel tem_ElemSizeLevel proc~turbulent_wall_powerlaw_incomp->proc~tem_elemsizelevel



real(kind=rk), private :: m
real(kind=rk), private :: C_m
real(kind=rk), private :: yPlus_v
real(kind=rk), private :: onePlusM
real(kind=rk), private :: oneMinusM
real(kind=rk), private :: expC
real(kind=rk), private :: velLimiter
integer, private :: QQ
integer, private :: iDir
integer, private :: iElem
integer, private :: normalIn
integer, private :: normalOut
real(kind=rk), private :: normal(3)
integer, private :: elemPos
real(kind=rk), private :: rhoF
real(kind=rk), private :: velF(3)
real(kind=rk), private :: velF_SW
real(kind=rk), private :: auxVelF
real(kind=rk), private :: feqF(layout%fStencil%QQ)
integer, private :: neighPos
real(kind=rk), private :: rhoFF
real(kind=rk), private :: rhoFF_inv
real(kind=rk), private :: velFF(3)
real(kind=rk), private :: velFF_SW
real(kind=rk), private :: pdfFF(layout%fStencil%QQ)
real(kind=rk), private :: feqFF(layout%fStencil%QQ)
real(kind=rk), private :: fneqFF(layout%fStencil%QQ)
real(kind=rk), private :: unitSW(3)
real(kind=rk), private :: numerator(3)
real(kind=rk), private :: viscKineFF
real(kind=rk), private :: omegaKineFF
real(kind=rk), private :: dx
real(kind=rk), private :: yWF
real(kind=rk), private :: yWFF
real(kind=rk), private :: tau_w
real(kind=rk), private :: qVal