mus_bc_fluid_turbulent_module Module

Boundary condition wall treatment routines

This module contains higher order wall treatments A detailed description on the implementation details are given in tem_bc_module.

Constant parameters for van-driest damping function


Uses

Used by

  • module~~mus_bc_fluid_turbulent_module~~UsedByGraph module~mus_bc_fluid_turbulent_module mus_bc_fluid_turbulent_module module~mus_bc_general_module mus_bc_general_module module~mus_bc_general_module->module~mus_bc_fluid_turbulent_module module~mus_control_module mus_control_module module~mus_control_module->module~mus_bc_general_module module~mus_debug_module mus_debug_module module~mus_control_module->module~mus_debug_module module~mus_debug_module->module~mus_bc_general_module module~mus_dynloadbal_module mus_dynLoadBal_module module~mus_dynloadbal_module->module~mus_bc_general_module module~mus_construction_module mus_construction_module module~mus_dynloadbal_module->module~mus_construction_module module~mus_program_module mus_program_module module~mus_program_module->module~mus_bc_general_module module~mus_program_module->module~mus_control_module module~mus_program_module->module~mus_dynloadbal_module module~mus_program_module->module~mus_construction_module module~mus_construction_module->module~mus_debug_module program~musubi musubi program~musubi->module~mus_control_module program~musubi->module~mus_program_module module~mus_hvs_construction_module mus_hvs_construction_module module~mus_hvs_construction_module->module~mus_construction_module program~mus_harvesting mus_harvesting program~mus_harvesting->module~mus_construction_module

Variables

Type Visibility Attributes Name Initial
real(kind=rk), private, parameter :: vd_Aplus = 26.0_rk

Subroutines

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

BC routine for turbulent wall. It uses wall model to compute velocity on the boundary node. The implementation is based on the following paper: Haussmann, Marc; Ries, Florian; Jeppener-Haltenhoff, Jonathan B.; Li, Yongxiang; Schmidt, Marius; Welch, Cooper et al. (2020): Evaluation of a Near-Wall-Modeled Large Eddy Lattice Boltzmann Method for the Analysis of Complex Flows Relevant to IC Engines. In Computation 8 (2), p. 43. DOI: 10.3390/computation8020043.

Read more…

Arguments

Type IntentOptional 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

contains physics conversion factors

integer, intent(in) :: iField

current field

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

mixture info

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

BC routine for turbulent wall. It uses wall model to compute velocity on the boundary node. The implementation is based on the following paper: Haussmann, Marc; Ries, Florian; Jeppener-Haltenhoff, Jonathan B.; Li, Yongxiang; Schmidt, Marius; Welch, Cooper et al. (2020): Evaluation of a Near-Wall-Modeled Large Eddy Lattice Boltzmann Method for the Analysis of Complex Flows Relevant to IC Engines. In Computation 8 (2), p. 43. DOI: 10.3390/computation8020043.

Read more…

Arguments

Type IntentOptional 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

contains physics conversion factors

integer, intent(in) :: iField

current field

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

mixture info

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

BC routine for turbulent wall based on Guo's nonequilibrium extrapolation. 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.

Read more…

Arguments

Type IntentOptional 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

contains physics conversion factors

integer, intent(in) :: iField

current field

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

mixture info

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

BC routine for turbulent wall based on Guo's nonequilibrium extrapolation. 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.

Read more…

Arguments

Type IntentOptional 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

contains physics conversion factors

integer, intent(in) :: iField

current field

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

mixture info

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

BC routine for turbulent wall based on equilibrium BC. 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.

Read more…

Arguments

Type IntentOptional 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

contains physics conversion factors

integer, intent(in) :: iField

current field

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

mixture info

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

BC routine for turbulent wall based on equilibrium BC. 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.

Read more…

Arguments

Type IntentOptional 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

contains physics conversion factors

integer, intent(in) :: iField

current field

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

mixture info

private subroutine calcVelSW_unitSW_velTau_tVisc(velSW, unitSW, turbwallFunc, nElems, elemPos, neighBufferPre, viscKine, turbulence, stencil, iLevel, quantities)

Calculation stream-wise velocity compononent from wall function and friction velocity, stream-wise unit vector and turbulent viscosity with mixing length formulation.

Arguments

Type IntentOptional Attributes Name
real(kind=rk), intent(out) :: velSW(:)

Stream-wise velocity component from wall function

real(kind=rk), intent(out) :: unitSW(:,:)

Stream-wise unit vector

type(mus_turb_wallFunc_type), intent(inout) :: turbwallFunc

Turbulent wall model type contains viscosity, velTau, distToBnd and function pointers to compute velTau and velSW

integer, intent(in) :: nElems

Number of elements in current boundary

integer, intent(in) :: elemPos(:)

Current element position in state array. (Used to access viscosity)

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

Pre-collision from 1st and 2nd fluid neighbor

type(mus_viscosity_type) :: viscKine

Kinematic viscosity

type(mus_turbulence_type), intent(in) :: turbulence

turbulence model type

type(tem_stencilHeader_type), intent(in) :: stencil

Fluid stencil

integer, intent(in) :: iLevel

Current level

type(mus_scheme_derived_quantities_type), intent(in) :: quantities

Class that contains pointers to the proper derived quantities functions

private subroutine calcTurbWallBndForceAndMoment(bndForce, bndMoment, momRefPnt, globBC, baryOfTotal, bcBuffer, state, nSize, neigh, layout, physics, nScalars, varPos, iLevel, iField)

This routine computes bndForce on boundary elements using momentum exchange method.

Arguments

Type IntentOptional Attributes Name
real(kind=rk), intent(out) :: bndForce(:,:)

Boundary force

real(kind=rk), intent(out) :: bndMoment(:,:)

Boundary moment

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

Reference point for moment calculation

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

scheme global boundary type

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

barycenter of elements in total list Size: nElemsTotal, 3

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

state values of boundary elements of all fields of iLevel

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

Current state vector of iLevel

integer, intent(in) :: nSize

size of state array ( in terms of elements )

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

connectivity array corresponding to state vector

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

stencil layout information

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

contains physics conversion factors

integer, intent(in) :: nScalars

number of Scalars in the scheme var system

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

pointer to field variable in the state vector

integer, intent(in) :: iLevel

the level On which this boundary was invoked

integer, intent(in) :: iField

current field