Update state with source variable "force" for d3q19 MRT collision model. Force term used here is from: Chai, Z., & Zhao, T. (2012). Effect of the forcing term in the multiple-relaxation-time lattice Boltzmann equation on the shear stress or the strain rate tensor. Physical Review E, 86(1), 1–11. Force term for MRT is and
Force must be defined as body force per unit volume
Simuilar to derive routine but it updates the state whereas derive is used for tracking.
This subroutine's interface must match the abstract interface definition proc_apply_source in derived/mus_source_type_module.f90 in order to be callable via applySrc function pointer.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(mus_source_op_type), | intent(in) | :: | fun | Description of method to apply source terms |
||
real(kind=rk), | intent(in) | :: | inState(:) | input pdf vector |
||
real(kind=rk), | intent(inout) | :: | outState(:) | output pdf vector |
||
integer, | intent(in) | :: | neigh(:) | connectivity Array corresponding to state vector |
||
real(kind=rk), | intent(in) | :: | auxField(:) | auxField array |
||
integer, | intent(in) | :: | nPdfSize | number of elements in state Array |
||
integer, | intent(in) | :: | iLevel | current level |
||
type(tem_varSys_type), | intent(in) | :: | varSys | variable system |
||
type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
type(mus_convertFac_type), | intent(in) | :: | phyConvFac | Physics conversion factor for current level |
||
type(mus_derVarPos_type), | intent(in) | :: | derVarPos(:) | position of derived quantities in varsys |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(mus_varSys_data_type), | private, | pointer | :: | fPtr | |||
type(mus_scheme_type), | private, | pointer | :: | scheme | |||
real(kind=rk), | private | :: | forceField(fun%elemLvl(iLevel)%nElems*3) | ||||
real(kind=rk), | private | :: | F(3) | ||||
real(kind=rk), | private | :: | velocity(3) | ||||
integer, | private | :: | nElems | ||||
integer, | private | :: | iElem | ||||
integer, | private | :: | iDir | ||||
integer, | private | :: | |||||
integer, | private | :: | nScalars | ||||
integer, | private | :: | posInTotal | ||||
integer, | private | :: | statePos | ||||
integer, | private | :: | elemOff | ||||
integer, | private | :: | vel_pos(3) | ||||
real(kind=rk), | private | :: | omegaKine | ||||
real(kind=rk), | private | :: | omegaBulk | ||||
real(kind=rk), | private | :: | discForce | ||||
real(kind=rk), | private | :: | momForce(9) | ||||
real(kind=rk), | private | :: | s_mrt(9) | ||||
real(kind=rk), | private | :: | mInvXOmega(9,9) |