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.

Usage

```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.

Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|

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 |

Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|

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 |