# mus_deriveStrainRateIncomp Subroutine

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

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

The formula is: where $\tau_{\alpha \beta}$ is the stress in the $\beta$-direction on a face normal to the $\alpha$-axis,\n $f^{neq}_i = f_i - f^{eq}_i$ 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 $c={ \Delta dx }_{ c }/{ \Delta dx }_{ f }$ Then the viscosity on the different levels must satisfy:\n $\frac { { \nu }_{ f } }{ { \nu }_{ c } } =c$ This constrain leads to a relationship of omega on different levels:\n ${\omega}_f = \frac {1}{ {\lambda}(\frac{1}{{\omega}_c}-0.5)+0.5 }$ 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

### Arguments

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

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(:)

results

integer, intent(in) :: nVals

nVals to get

## Variables

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