mus_deriveStrainRate Subroutine

private recursive subroutine mus_deriveStrainRate(fun, varsys, stencil, iLevel, posInState, pdf, res, nVals)

Calculate the strain rate ( or rate of strain, or rate of deformation)

The equation is: where is the stress in the -direction on a face normal to the -axis,\n is the non-equilibrium pdf.\n For more information, please refer to: equation 45 in\n Krueger T, Varnik F, Raabe D. Shear stress in lattice Boltzmann simulations. Physical Review E. 2009;79(4):1-14.\n

For multi-level mesh, Omega on finer level needs to be adjusted in order to get the correct shearstress calculation.\n First, we defines c as the dx ratio between finer and coarse level.\n Then the viscosity on the different levels must satisfy:\n This constrain leads to a relationship of omega on different levels:\n For more information, please refer to:\n Manuel H, Harald K, Joerg B, Sabine R. Aeroacoustic validation of the lattice boltzmann method on non-uniform grids. ECCOMAS 2012


class(tem_varSys_op_type), intent(in) :: fun

description of the method to obtain the variables, here some preset values might be stored, like the space time function to use or the required variables.

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

the variable system to obtain the variable from.

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

fluid stencil defintion

integer, intent(in) :: iLevel

current level

integer, intent(in) :: posInState(:)

Position of element in levelwise state array

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

pdf array

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


integer, intent(in) :: nVals

nVals to get


proc~~mus_derivestrainrate~~CallsGraph proc~mus_derivestrainrate mus_deriveStrainRate proc~secondmom secondMom proc~mus_derivestrainrate->proc~secondmom



type(mus_varSys_data_type), private, pointer:: fPtr
type(mus_scheme_type), private, pointer:: scheme
real(kind=rk), private, allocatable:: tmpPDF(:)
real(kind=rk), private, allocatable:: nonEq(:)
real(kind=rk), private, allocatable:: tau(:)
real(kind=rk), private, allocatable:: fEq(:)
real(kind=rk), private :: dens
real(kind=rk), private :: vel(3)
real(kind=rk), private :: omega
integer, private :: pdfPos
integer, private :: nCompsPDF
integer, private :: iVal
integer, private :: iDir