This module provides the MUSUBI specific functions for calculating macroscopic quantities from the state variables.
The depending common interface between MUSUBI and ATELES is defined in the tem_derived_module. The functionality for accessing a variable from the state and evaluating a lua function are also provided in the tem_derived module.
Do not use get_Element or get_Point routines to update the state !
Calculate wss from shear stress (tau) tau: x, y, z, xy, yz, xz
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=rk), | intent(in) | :: | tau(6) |
subroutine to add derive variables for weakly compressible LBM (schemekind = 'fluid') to the varsys.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(tem_varSys_type), | intent(inout) | :: | varSys | global variable system |
||
| type(mus_varSys_solverData_type), | intent(in), | target | :: | solverData | Contains pointer to solver data types |
|
| type(mus_scheme_header_type), | intent(in) | :: | schemeHeader | identifier of the scheme |
||
| type(tem_stencilHeader_type), | intent(in) | :: | stencil | compute stencil defintion |
||
| character(len=*), | intent(in) | :: | fldLabel | array of field label prefix. Size=nFields |
||
| type(grw_labelarray_type), | intent(inout) | :: | derVarName | array of derive physical variables |
Initiates the calculation of density This routine sets the function Pointer for density calcualtion and calls the generice get Element from PDF routine
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Calculate the temperature of a given set of elements (sum up all links).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Calculate the pressure of a given set of elements (sum up all links).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Calculate the force on the boundary of a given set of elements
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Calculate the shear rate
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Calculate the deviatoric shear stress for Newtonian fluid (exclude pressure) (no mixtures).\n Shear Stress depends on variable: nonEquilibirium
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Calculate the wall shear stress (WSS) of a given element with the given input
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Calculate the shear stress magnitude of a given element number with the given
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Derive absorb layer variable defined as a source term.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Derive external force variable defined as a source term. It evaluates spacetime function defined in lua file for force variable and convert it to state value which is to be added to the state
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Derive external force variable defined as a source term. It evaluates spacetime function defined in lua file for force variable and convert it to state value which is to be added to the state
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Derive external force variable defined as a source term. It evaluates spacetime function defined in lua file for force variable and convert it to state value which is to be added to the state
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Update state with source variable "absorb_layer". absorb_layer is used to absorb the flow and gradually reduce the flow quantities like pressure and velocity to a fixed value. It is based on: Xu, H., & Sagaut, P. (2013). Analysis of the absorbing layers for the weakly-compressible lattice Boltzmann methods. Journal of Computational Physics, 245(x), 14–42. Jacob, J.; Sagaut, P. (2019): Solid wall and open boundary conditions in hybrid recursive regularized lattice Boltzmann method for compressible flows. In Physics of Fluids 31 (12), p. 126103.
| 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 |
Update state with source variable "absorb_layer". absorb_layer is used to absorb the flow and gradually reduce the flow quantities like pressure and velocity to a fixed value. It is based on: Xu, H., & Sagaut, P. (2013). Analysis of the absorbing layers for the weakly-compressible lattice Boltzmann methods. Journal of Computational Physics, 245(x), 14–42. Jacob, J.; Sagaut, P. (2019): Solid wall and open boundary conditions in hybrid recursive regularized lattice Boltzmann method for compressible flows. In Physics of Fluids 31 (12), p. 126103.
| 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 |
Update state with source variable "absorb_layer". absorb_layer is used to absorb the flow and gradually reduce the flow quantities like pressure and velocity to a fixed value. It is based on: Xu, H., & Sagaut, P. (2013). Analysis of the absorbing layers for the weakly-compressible lattice Boltzmann methods. Journal of Computational Physics, 245(x), 14–42. Jacob, J.; Sagaut, P. (2019): Solid wall and open boundary conditions in hybrid recursive regularized lattice Boltzmann method for compressible flows. In Physics of Fluids 31 (12), p. 126103.
| 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 |
Update state with source variable "absorb_layer". absorb_layer is used to absorb the flow and gradually reduce the flow quantities like pressure and velocity to a fixed value. It is based on: Xu, H., & Sagaut, P. (2013). Analysis of the absorbing layers for the weakly-compressible lattice Boltzmann methods. Journal of Computational Physics, 245(x), 14–42. Jacob, J.; Sagaut, P. (2019): Solid wall and open boundary conditions in hybrid recursive regularized lattice Boltzmann method for compressible flows. In Physics of Fluids 31 (12), p. 126103.
| 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 |
Update state with source variable "force". Force term used here is from: "Discrete lattice effects on the forcing term in the lattice Boltzmann method", Zhaoli Guo, Chugung Zheng and Baochang Shi. In the paper, use force term is referred as Method 2 as: Force must be defined as body force per unit volume KM: If this force formula is used then velocity needs to be computed as u = \sum c_i f_i + \vec{F}/2
| 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 |
Update state with source variable "force" for 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
| 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 |
Update state with source variable "force" for 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
| 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 |
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
| 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 |
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
| 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 |
Update state with source variable "force_1stOrd" Force term used here is from: "A D3Q27 multiple-relaxation-time lattice Boltzmann method for turbulent flows", K. Suga, Y. Kuwata, K. Takashima, R. Chikasue
| 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 |
Update state with source variable "turb_channel_force" for BGK.
| 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 |
Update state with source variable "force" for generic MRT collision model for turb_channel_force. It uses velocityX average in bulk to adapt the driving force for turbulent channel.
| 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 |
Update state with source variable "force" for generic MRT collision model for turb_channel_force. It uses velocityX average in bulk to adapt the driving force for turbulent channel.
| 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 |
Update state with source variable "force" for d3q19 MRT collision model for turb_channel_force. It uses velocityX average in bulk to adapt the driving force for turbulent channel.
| 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 |
Update state with source variable "force" for d3q19 MRT collision model for turb_channel_force. It uses velocityX average in bulk to adapt the driving force for turbulent channel.
| 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 |
This routine computes equilbrium from density and velocity This must comply with interface in mus_variable_module derive_FromMacro
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=rk), | intent(in) | :: | density(:) | Array of density. Single species: dens_1, dens_2 .. dens_n multi-species: dens_1_sp1, dens_1_sp2, dens_2_sp1, dens_2_sp2 ... dens_n_sp1, dens_n_sp2 |
||
| real(kind=rk), | intent(in) | :: | velocity(:,:) | Array of velocity. Size: dimension 1: n*nFields. dimension 2: 3 (nComp) 1st dimension arrangement for multi-species is same as density |
||
| integer, | intent(in) | :: | iField | Current field |
||
| integer, | intent(in) | :: | nElems | number of elements |
||
| type(tem_varSys_type), | intent(in) | :: | varSys | variable system which is required to access fieldProp information via variable method data c_ptr |
||
| type(mus_scheme_layout_type), | intent(in) | :: | layout | scheme layout contains stencil definition and lattice weights |
||
| real(kind=rk), | intent(out) | :: | res(:) | Output of this routine Dimension: n*nComponents of res |
This routine computes equilbrium from auxField
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_derVarPos_type), | intent(in) | :: | derVarPos | Position of derive variable in variable system |
||
| real(kind=rk), | intent(in) | :: | auxField(:) | Array of auxField. Single species: dens_1, vel_1, dens_2, vel_2, .. dens_n, vel_n multi-species: dens_1_sp1, vel_1_spc1, dens_1_sp2, vel_1_spc2, dens_2_sp1, vel_2_spc2, dens_2_sp2, vel_2_spc2 ... dens_n_sp1, vel_n_sp1, dens_n_sp2, vel_n_spc2 Access: (iElem-1)*nAuxScalars + auxField_varPos |
||
| integer, | intent(in) | :: | iField | Current field |
||
| integer, | intent(in) | :: | nElems | number of elements |
||
| type(tem_varSys_type), | intent(in) | :: | varSys | variable system which is required to access fieldProp information via variable method data c_ptr |
||
| type(mus_scheme_layout_type), | intent(in) | :: | layout | scheme layout contains stencil definition and lattice weights |
||
| real(kind=rk), | intent(out) | :: | fEq(:) | Output of this routine Dimension: n*QQ of res |
This routine computes density from state array
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=rk), | intent(in) | :: | state(:) | Array of state n * layout%fStencil%QQ * nFields |
||
| integer, | intent(in) | :: | iField | Current field |
||
| integer, | intent(in) | :: | nElems | number of elements |
||
| type(tem_varSys_type), | intent(in) | :: | varSys | variable system which is required to access fieldProp information via variable method data c_ptr |
||
| type(mus_scheme_layout_type), | intent(in) | :: | layout | scheme layout contains stencil definition and lattice weights |
||
| real(kind=rk), | intent(out) | :: | res(:) | Output of this routine Dimension: n * nComponents of res |
This routine computes velocity from state array
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=rk), | intent(in) | :: | state(:) | Array of state n * layout%fStencil%QQ * nFields |
||
| integer, | intent(in) | :: | iField | Current field |
||
| integer, | intent(in) | :: | nElems | number of elements |
||
| type(tem_varSys_type), | intent(in) | :: | varSys | variable system which is required to access fieldProp information via variable method data c_ptr |
||
| type(mus_scheme_layout_type), | intent(in) | :: | layout | scheme layout contains stencil definition and lattice weights |
||
| real(kind=rk), | intent(out) | :: | res(:) | Output of this routine Dimension: n * nComponents of res |
This routine computes velocity from pre collision state array using Fetch
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=rk), | intent(in) | :: | state(:) | Array of state n * layout%fStencil%QQ * nFields |
||
| integer, | intent(in) | :: | neigh(:) | connectivity array |
||
| integer, | intent(in) | :: | iField | Current field |
||
| integer, | intent(in) | :: | nSize | number of elements in state array |
||
| integer, | intent(in) | :: | nElems | number of elements |
||
| type(tem_varSys_type), | intent(in) | :: | varSys | variable system which is required to access fieldProp information via variable method data c_ptr |
||
| type(mus_scheme_layout_type), | intent(in) | :: | layout | scheme layout contains stencil definition and lattice weights |
||
| real(kind=rk), | intent(out) | :: | res(:) | Output of this routine Dimension: n * nComponents of res |
This routine computes auxField from state array
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_derVarPos_type), | intent(in) | :: | derVarPos | Position of derive variable in variable system |
||
| real(kind=rk), | intent(in) | :: | state(:) | Array of state n * layout%stencil(1)%QQ * nFields |
||
| integer, | intent(in) | :: | neigh(:) | connectivity vector |
||
| integer, | intent(in) | :: | iField | Current field |
||
| integer, | intent(in) | :: | nElems | number of elements |
||
| integer, | intent(in) | :: | nSize | number of elements in state array |
||
| integer, | intent(in) | :: | iLevel | current level |
||
| type(tem_stencilHeader_type), | intent(in) | :: | stencil | stencil header contains discrete velocity vectors |
||
| type(tem_varSys_type), | intent(in) | :: | varSys | variable system which is required to access fieldProp information via variable method data c_ptr |
||
| real(kind=rk), | intent(inout) | :: | auxField(:) | Output of this routine Size: nElems*nAuxScalars |
This routine computes auxField from state array
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_derVarPos_type), | intent(in) | :: | derVarPos | Position of derive variable in variable system |
||
| real(kind=rk), | intent(in) | :: | state(:) | Array of state n * layout%stencil(1)%QQ * nFields |
||
| integer, | intent(in) | :: | neigh(:) | connectivity vector |
||
| integer, | intent(in) | :: | iField | Current field |
||
| integer, | intent(in) | :: | nElems | number of elements |
||
| integer, | intent(in) | :: | nSize | number of elements in state array |
||
| integer, | intent(in) | :: | iLevel | current level |
||
| type(tem_stencilHeader_type), | intent(in) | :: | stencil | stencil header contains discrete velocity vectors |
||
| type(tem_varSys_type), | intent(in) | :: | varSys | variable system which is required to access fieldProp information via variable method data c_ptr |
||
| real(kind=rk), | intent(inout) | :: | auxField(:) | Output of this routine Size: nElems*nAuxScalars |
This routine computes auxField from state array
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_derVarPos_type), | intent(in) | :: | derVarPos | Position of derive variable in variable system |
||
| real(kind=rk), | intent(in) | :: | state(:) | Array of state n * layout%stencil(1)%QQ * nFields |
||
| integer, | intent(in) | :: | neigh(:) | connectivity vector |
||
| integer, | intent(in) | :: | iField | Current field |
||
| integer, | intent(in) | :: | nElems | number of elements |
||
| integer, | intent(in) | :: | nSize | number of elements in state array |
||
| integer, | intent(in) | :: | iLevel | current level |
||
| type(tem_stencilHeader_type), | intent(in) | :: | stencil | stencil header contains discrete velocity vectors |
||
| type(tem_varSys_type), | intent(in) | :: | varSys | variable system which is required to access fieldProp information via variable method data c_ptr |
||
| real(kind=rk), | intent(inout) | :: | auxField(:) | Output of this routine Size: nElems*nAuxScalars |
This routine computes auxField from state array
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_derVarPos_type), | intent(in) | :: | derVarPos | Position of derive variable in variable system |
||
| real(kind=rk), | intent(in) | :: | state(:) | Array of state n * layout%stencil(1)%QQ * nFields |
||
| integer, | intent(in) | :: | neigh(:) | connectivity vector |
||
| integer, | intent(in) | :: | iField | Current field |
||
| integer, | intent(in) | :: | nElems | number of elements |
||
| integer, | intent(in) | :: | nSize | number of elements in state array |
||
| integer, | intent(in) | :: | iLevel | current level |
||
| type(tem_stencilHeader_type), | intent(in) | :: | stencil | stencil header contains discrete velocity vectors |
||
| type(tem_varSys_type), | intent(in) | :: | varSys | variable system which is required to access fieldProp information via variable method data c_ptr |
||
| real(kind=rk), | intent(inout) | :: | auxField(:) | Output of this routine Size: nElems*nAuxScalars |
This routine computes velocity from state array
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=rk), | intent(in) | :: | state(:) | Array of state n * layout%fStencil%QQ * nFields |
||
| integer, | intent(in) | :: | iField | Current field |
||
| integer, | intent(in) | :: | nElems | number of elements |
||
| type(tem_varSys_type), | intent(in) | :: | varSys | variable system which is required to access fieldProp information via variable method data c_ptr |
||
| type(mus_scheme_layout_type), | intent(in) | :: | layout | scheme layout contains stencil definition and lattice weights |
||
| real(kind=rk), | intent(out) | :: | res(:) | Output of this routine Dimension: n * nComponents of res |
Initiates the calculation of density. This routine sets the function Pointer for density calcualtion and calls the generice get Value of Index routine
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| integer, | intent(in) | :: | iLevel | Level on which values are requested |
||
| integer, | intent(in) | :: | idx(:) | Index of points in the growing array and variable val array to return. Size: most times nVals, if contiguous arrays are used it depends on the number of first indices |
||
| integer, | intent(in), | optional | :: | idxLen(:) | With idx as start index in contiguous memory, idxLength defines length of each contiguous memory Size: dependes on number of first index for contiguous array, but the sum of all idxLen is equal to nVals |
|
| integer, | intent(in) | :: | nVals | Number of values to obtain for this variable (vectorized access). |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Dimension: n requested entries x nComponents of this variable Access: (iElem-1)*fun%nComponents + iComp |
Initiates the calculation of pressure. This routine sets the function Pointer for pressure calcualtion and calls the generice get Value of Index routine
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| integer, | intent(in) | :: | iLevel | Level on which values are requested |
||
| integer, | intent(in) | :: | idx(:) | Index of points in the growing array and variable val array to return. Size: most times nVals, if contiguous arrays are used it depends on the number of first indices |
||
| integer, | intent(in), | optional | :: | idxLen(:) | With idx as start index in contiguous memory, idxLength defines length of each contiguous memory Size: dependes on number of first index for contiguous array, but the sum of all idxLen is equal to nVals |
|
| integer, | intent(in) | :: | nVals | Number of values to obtain for this variable (vectorized access). |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Dimension: n requested entries x nComponents of this variable Access: (iElem-1)*fun%nComponents + iComp |
Update state with source variable "absorb_layer". absorb_layer is used to absorb the flow and gradually reduce the flow quantities like pressure and velocity to a fixed value. It is based on: Xu, H., & Sagaut, P. (2013). Analysis of the absorbing layers for the weakly-compressible lattice Boltzmann methods. Journal of Computational Physics, 245(x), 14–42. Jacob, J.; Sagaut, P. (2019): Solid wall and open boundary conditions in hybrid recursive regularized lattice Boltzmann method for compressible flows. In Physics of Fluids 31 (12), p. 126103.
| 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 |
Calculate momentum from density and velocity stored in auxField
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Initiates the calculation of equlibrium This routine sets the function Pointer for equlibrium calcualtion and calls the generice get Element from PDF routine
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Initiates the calculation of NonEquil This routine sets the function Pointer for NonEquil calcualtion and calls the generice get Element from PDF routine
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Initiates the calculation of StrainRate This routine sets the function Pointer for StrainRate calcualtion and calls the generice get Element from PDF routine
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Calculate kinetic energy from density and velocity in auxField This routine sets the function Pointer for kinetic energy calcualtion and calls the generice get Element from PDF routine
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Initiates the calculation of moment for 2D This routine sets the function Pointer for moment for 2D calcualtion and calls the generice get Element from PDF routine
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
||
| integer, | intent(in) | :: | elempos(:) | Position of the TreeID of the element to get the variable for in the global treeID list. |
||
| type(tem_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| type(treelmesh_type), | intent(in) | :: | tree | global treelm mesh info |
||
| integer, | intent(in) | :: | nElems | Number of values to obtain for this variable (vectorized access). |
||
| integer, | intent(in) | :: | nDofs | Number of degrees of freedom within an element. |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Linearized array dimension: (n requested entries) x (nComponents of this variable) x (nDegrees of freedom) Access: (iElem-1)fun%nComponentsnDofs + (iDof-1)*fun%nComponents + iComp |
Initiates the calculation of equilibrium. This routine sets the function Pointer for equilibrium calcualtion and calls the generice get Value of Index routine
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| integer, | intent(in) | :: | iLevel | Level on which values are requested |
||
| integer, | intent(in) | :: | idx(:) | Index of points in the growing array and variable val array to return. Size: most times nVals, if contiguous arrays are used it depends on the number of first indices |
||
| integer, | intent(in), | optional | :: | idxLen(:) | With idx as start index in contiguous memory, idxLength defines length of each contiguous memory Size: dependes on number of first index for contiguous array, but the sum of all idxLen is equal to nVals |
|
| integer, | intent(in) | :: | nVals | Number of values to obtain for this variable (vectorized access). |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Dimension: n requested entries x nComponents of this variable Access: (iElem-1)*fun%nComponents + iComp |
Initiates the calculation of non_equilibrium. This routine sets the function Pointer for non_equilibrium calcualtion and calls the generice get Value of Index routine
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| integer, | intent(in) | :: | iLevel | Level on which values are requested |
||
| integer, | intent(in) | :: | idx(:) | Index of points in the growing array and variable val array to return. Size: most times nVals, if contiguous arrays are used it depends on the number of first indices |
||
| integer, | intent(in), | optional | :: | idxLen(:) | With idx as start index in contiguous memory, idxLength defines length of each contiguous memory Size: dependes on number of first index for contiguous array, but the sum of all idxLen is equal to nVals |
|
| integer, | intent(in) | :: | nVals | Number of values to obtain for this variable (vectorized access). |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Dimension: n requested entries x nComponents of this variable Access: (iElem-1)*fun%nComponents + iComp |
Initiates the calculation of kinetic_energy. This routine sets the function Pointer for kinetic_energy calcualtion and calls the generice get Value of Index routine
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| integer, | intent(in) | :: | iLevel | Level on which values are requested |
||
| integer, | intent(in) | :: | idx(:) | Index of points in the growing array and variable val array to return. Size: most times nVals, if contiguous arrays are used it depends on the number of first indices |
||
| integer, | intent(in), | optional | :: | idxLen(:) | With idx as start index in contiguous memory, idxLength defines length of each contiguous memory Size: dependes on number of first index for contiguous array, but the sum of all idxLen is equal to nVals |
|
| integer, | intent(in) | :: | nVals | Number of values to obtain for this variable (vectorized access). |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Dimension: n requested entries x nComponents of this variable Access: (iElem-1)*fun%nComponents + iComp |
Initiates the calculation of kinetic_energy. This routine sets the function Pointer for kinetic_energy calcualtion and calls the generice get Value of Index routine
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| integer, | intent(in) | :: | iLevel | Level on which values are requested |
||
| integer, | intent(in) | :: | idx(:) | Index of points in the growing array and variable val array to return. Size: most times nVals, if contiguous arrays are used it depends on the number of first indices |
||
| integer, | intent(in), | optional | :: | idxLen(:) | With idx as start index in contiguous memory, idxLength defines length of each contiguous memory Size: dependes on number of first index for contiguous array, but the sum of all idxLen is equal to nVals |
|
| integer, | intent(in) | :: | nVals | Number of values to obtain for this variable (vectorized access). |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Dimension: n requested entries x nComponents of this variable Access: (iElem-1)*fun%nComponents + iComp |
Calculate Momentum from density and velocity in auxField.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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_time_type), | intent(in) | :: | time | Point in time at which to evaluate the variable. |
||
| integer, | intent(in) | :: | iLevel | Level on which values are requested |
||
| integer, | intent(in) | :: | idx(:) | Index return. Size: most times nVals, if contiguous arrays are used it depends on the number of first indices |
||
| integer, | intent(in), | optional | :: | idxLen(:) | With idx as start index in contiguous memory, idxLength defines length of each contiguous memory Size: dependes on number of first index for contiguous array, but the sum of all idxLen is equal to nVals |
|
| integer, | intent(in) | :: | nVals | Number of values to obtain for this variable (vectorized access). |
||
| real(kind=rk), | intent(out) | :: | res(:) | Resulting values for the requested variable. Dimension: n requested entries x nComponents of this variable Access: (iElem-1)*fun%nComponents + iComp |
Calculate the density of a given set of elements (sum up all links). This routine is used to compute density for all scheme kinds For multispecies, it can compute both species density and mixture density
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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(:) | results |
||
| integer, | intent(in) | :: | nVals | nVals to get |
Calculate the equlibrium of given elements with the given input state array.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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(:) | results |
||
| integer, | intent(in) | :: | nVals | nVals to get |
For 2D only!
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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(:) | results |
||
| integer, | intent(in) | :: | nVals | nVals to get |
Calculate the Non-Equlibrium
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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(:) | results |
||
| integer, | intent(in) | :: | nVals | nVals to get |
Calculate the strain rate ( or rate of strain, or rate of deformation)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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(:) | results |
||
| integer, | intent(in) | :: | nVals | nVals to get |