mus_derQuanMSLiquid_module Module

This module provides the MUSUBI specific functions for calculating macroscopic quantities from the state variables for multispecies liquid model.

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 !


Uses

Used by

  • module~~mus_derquanmsliquid_module~~UsedByGraph module~mus_derquanmsliquid_module mus_derQuanMSLiquid_module module~mus_variable_module mus_variable_module module~mus_variable_module->module~mus_derquanmsliquid_module module~mus_derquanmsgas_module mus_derQuanMSGas_module module~mus_variable_module->module~mus_derquanmsgas_module module~mus_derquanmsgas_module->module~mus_derquanmsliquid_module module~mus_bc_species_module mus_bc_species_module module~mus_bc_species_module->module~mus_derquanmsliquid_module module~mus_scheme_module mus_scheme_module module~mus_scheme_module->module~mus_variable_module module~mus_bc_general_module mus_bc_general_module module~mus_bc_general_module->module~mus_bc_species_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_program_module mus_program_module module~mus_program_module->module~mus_scheme_module module~mus_program_module->module~mus_bc_general_module module~mus_program_module->module~mus_control_module module~mus_dynloadbal_module mus_dynLoadBal_module module~mus_program_module->module~mus_dynloadbal_module module~mus_tools_module mus_tools_module module~mus_program_module->module~mus_tools_module module~mus_debug_module->module~mus_bc_general_module module~mus_hvs_config_module mus_hvs_config_module module~mus_hvs_config_module->module~mus_scheme_module module~mus_config_module mus_config_module module~mus_hvs_config_module->module~mus_config_module module~mus_dynloadbal_module->module~mus_scheme_module module~mus_dynloadbal_module->module~mus_bc_general_module module~mus_dynloadbal_module->module~mus_tools_module module~mus_tools_module->module~mus_scheme_module program~mus_harvesting mus_harvesting program~mus_harvesting->module~mus_scheme_module program~mus_harvesting->module~mus_hvs_config_module module~mus_config_module->module~mus_scheme_module module~mus_config_module->module~mus_tools_module module~mus_aux_module mus_aux_module module~mus_aux_module->module~mus_tools_module module~mus_tracking_module mus_tracking_module module~mus_tracking_module->module~mus_tools_module module~mus_construction_module mus_construction_module module~mus_construction_module->module~mus_debug_module module~mus_hvs_aux_module mus_hvs_aux_module module~mus_hvs_aux_module->module~mus_tools_module module~mus_interpolate_verify_module mus_interpolate_verify_module module~mus_interpolate_verify_module->module~mus_config_module program~musubi musubi program~musubi->module~mus_control_module program~musubi->module~mus_program_module program~musubi->module~mus_config_module

Contents


Functions

public function momentumFromMacroLSE(moleFraction, first_Moments, nFields, phi, resi_coeff, omega_fac, paramBInv) result(momentum)

derive untransformed pdf velocity of species by solving system of equations of nSpecies

Arguments

TypeIntentOptionalAttributesName
real(kind=rk), intent(in) :: moleFraction(nFields)

molefraction of all species

real(kind=rk), intent(in) :: first_Moments(3,nFields)

momentum from transformed pdf of all species

integer, intent(in) :: nFields

number of species

real(kind=rk), intent(in) :: phi(nFields)

molecular weight ratio of all species

real(kind=rk), intent(in) :: resi_coeff(nFields,nFields)

resistivity coefficients

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

relaxation parameter, omega_diff*0.5_rk

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

free parameter B

Return Value real(kind=rk)(3,nFields)

return actual momentum

public function momentumFromMacroLSE_WTDF(moleFraction, first_Moments, nFields, inv_thermodyn_fac, phi, resi_coeff, omega_fac, paramBInv) result(momentum)

derive untransformed pdf velocity of species by solving system of equations of nSpecies

Arguments

TypeIntentOptionalAttributesName
real(kind=rk), intent(in) :: moleFraction(nFields)

molefraction of all species

real(kind=rk), intent(in) :: first_Moments(3,nFields)

momentum from transformed pdf of all species

integer, intent(in) :: nFields

number of species

real(kind=rk), intent(in) :: inv_thermodyn_fac(nFields,nFields)

inverse of thermodynamic factor

real(kind=rk), intent(in) :: phi(nFields)

molecular weight ratio of all species

real(kind=rk), intent(in) :: resi_coeff(nFields,nFields)

resistivity coefficients

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

relaxation parameter, omega_diff*0.5_rk

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

free parameter B

Return Value real(kind=rk)(3,nFields)

return actual momentum

private pure function equilVelFromMacro(iField, moleFraction, velocity, nFields, paramBInv, phi, resi_coeff) result(eqVel)

Equlibrium velocity from macro

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: iField

current field

real(kind=rk), intent(in) :: moleFraction(nFields)

mole fraction of all species

real(kind=rk), intent(in) :: velocity(3,nFields)

velocity of all species

integer, intent(in) :: nFields

number of species

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

free parameter B

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

molecular weight ratio of iField

real(kind=rk), intent(in) :: resi_coeff(nFields)

resistivity coefficients of iField

Return Value real(kind=rk)(3)

return equilibrium velocity

private pure function equilVelFromMacroWTDF(iField, mass_dens, moleFraction, velocity, nFields, inv_thermodyn_fac, paramBInv, phi, resi_coeff) result(eqVel)

Equlibrium velocity from macro with thermodynamic factor

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: iField

current field

real(kind=rk), intent(in) :: mass_dens(nFields)

mass density of all species

real(kind=rk), intent(in) :: moleFraction(nFields)

mole fraction of all species

real(kind=rk), intent(in) :: velocity(3,nFields)

velocity of all species

integer, intent(in) :: nFields

number of species

real(kind=rk), intent(in) :: inv_thermodyn_fac(nFields,nFields)

inverse of thermodynamic factor

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

free parameter B

real(kind=rk), intent(in) :: phi(nFields)

molecular weight ratio

real(kind=rk), intent(in) :: resi_coeff(nFields,nFields)

resistivity coefficients

Return Value real(kind=rk)(3)

return equilibrium velocity

private pure function equilFromMacro(iField, mass_dens, moleFraction, velocity, layout, nFields, phi, paramBInv, resi_coeff, theta_eq) result(fEq)

derive equilibrium from macro

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: iField

current field

real(kind=rk), intent(in) :: mass_dens(nFields)

mass density of all species

real(kind=rk), intent(in) :: moleFraction(nFields)

molefraction of all species

real(kind=rk), intent(in) :: velocity(3,nFields)

velocity of all species

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

scheme layout contains stencil definition and lattice weight

integer, intent(in) :: nFields

number of species

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

molecular weight ratio of iField

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

free parameter B

real(kind=rk), intent(in) :: resi_coeff(nFields)

resistivity coefficients

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

parameter to tune mixture velocity in equilibrium quadratic term

Return Value real(kind=rk)(layout%fStencil%QQ)

return equilibrium

private pure function equilFromMacroWTDF(iField, mass_dens, moleFraction, velocity, inv_thermodyn_fac, layout, nFields, phi, paramBInv, resi_coeff, theta_eq) result(fEq)

derive equilibrium from macro

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: iField

current field

real(kind=rk), intent(in) :: mass_dens(nFields)

mass density of all species

real(kind=rk), intent(in) :: moleFraction(nFields)

molefraction of all species

real(kind=rk), intent(in) :: velocity(3,nFields)

velocity of all species

real(kind=rk), intent(in) :: inv_thermodyn_fac(nFields,nFields)

inverse of thermodynamic factor

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

scheme layout contains stencil definition and lattice weight

integer, intent(in) :: nFields

number of species

real(kind=rk), intent(in) :: phi(nFields)

molecular weight ratio of iField

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

free parameter B

real(kind=rk), intent(in) :: resi_coeff(nFields,nFields)

resistivity coefficients

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

parameter to tune mixture velocity in equilibrium quadratic term

Return Value real(kind=rk)(layout%fStencil%QQ)

return equilibrium


Subroutines

public subroutine mus_append_derVar_MSLiquid(varSys, solverData, schemeHeader, stencil, nFields, fldLabel, derVarName)

subroutine to add derive variables for multispecies-liquid (schemekind = 'multispecies_liquid') to the varsys.

Read more…

Arguments

TypeIntentOptionalAttributesName
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

integer, intent(in) :: nFields

number of fields

character(len=*), intent(in) :: fldLabel(:)

array of field label prefix. Size=nFields

type(grw_labelarray_type), intent(inout) :: derVarName

array of derive physical variables

public subroutine mus_append_derMixVar_MS(varSys, solverData, nFields, fldLabel, derVarName)

Append mixture variables for multicomponent models

Arguments

TypeIntentOptionalAttributesName
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

integer, intent(in) :: nFields

number of fields

character(len=*), intent(in) :: fldLabel(:)

array of field label prefix. Size=nFields

type(grw_labelarray_type), intent(in) :: derVarName

array of derive physical variable

public recursive subroutine deriveMoleDensityMS(fun, varSys, elempos, time, tree, nElems, nDofs, res)

Calculate the number density of a given element for single species from the density stored in auxField array. Mixture number density is computed by summing species number density using tem_evalAdd_forElement Number density = density/molecular weight mixture number density = sum(number_density)

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.

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

public recursive subroutine derivePressureMS(fun, varSys, elempos, time, tree, nElems, nDofs, res)

Calculate species pressure both for gas and liquid model In case of gas mixture, it is partial pressure where as in liquid mixture this is not valid. However, it is used to compute mixture pressure and then the kinematic_pressure from the mixture pressure. Formula to calculate pressure: here, - species density, \ - species molecular weight ratio, \

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.

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

public recursive subroutine deriveVelocityMS(fun, varSys, elempos, time, tree, nElems, nDofs, res)

Calculate the velocity of a given element for single species. from the momentum and density stored in auxField array for liquid mixture. auxField was updated with momentum of untransformed PDF which was computed by solving LSE in compute kernel.

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.

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

public recursive subroutine deriveMoleFracMS(fun, varSys, elempos, time, tree, nElems, nDofs, res)

mole fraction from density stored in auxField

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.

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

public recursive subroutine deriveMassFracMS(fun, varSys, elempos, time, tree, nElems, nDofs, res)

mass fraction from density stored in auxField

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.

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

public recursive subroutine deriveMoleFluxMS(fun, varSys, elempos, time, tree, nElems, nDofs, res)

Compute mole flux from momentum stored in auxField. mole flux = numDens_i*velocity_i = momentum / molWeight

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.

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

public recursive subroutine deriveMoleDensityMS_fromIndex(fun, varSys, time, iLevel, idx, idxLen, nVals, res)

Calculate mole density from species concentration for getValOfIndex

Read more…

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.

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: nVals

integer, intent(in), optional :: idxLen(:)

With idx as start index in contiguous memory, idxLength defines length of each contiguous memory Size: 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

public recursive subroutine deriveVelocityMS_fromIndex(fun, varSys, time, iLevel, idx, idxLen, nVals, res)

Calculate velocity from species density and momentum in auxField for getValOfIndex

Read more…

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.

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: nVals

integer, intent(in), optional :: idxLen(:)

With idx as start index in contiguous memory, idxLength defines length of each contiguous memory Size: 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

public recursive subroutine deriveMoleFluxMS_fromIndex(fun, varSys, time, iLevel, idx, idxLen, nVals, res)

Calculate mole flux from species momentum for getValOfIndex

Read more…

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.

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: nVals

integer, intent(in), optional :: idxLen(:)

With idx as start index in contiguous memory, idxLength defines length of each contiguous memory Size: 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

public subroutine applySrc_electricMSLiquid_2ndOrd(fun, inState, outState, neigh, auxField, nPdfSize, iLevel, varSys, time, phyConvFac, derVarPos)

Update state with source variable "electric_field" with 2nd order force integration. Refer to Appendix in PhD Thesis of K. Masilamani "Coupled Simulation Framework to Simulate Electrodialysis Process for Seawater Desalination"

Read more…

Arguments

TypeIntentOptionalAttributesName
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

public subroutine applySrc_electricMSLiquid_1stOrd(fun, inState, outState, neigh, auxField, nPdfSize, iLevel, varSys, time, phyConvFac, derVarPos)

Update state with source variable "electric_field" Simuilar to derive routine but it updates the state whereas derive is used for tracking

Read more…

Arguments

TypeIntentOptionalAttributesName
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

public subroutine applySrc_electricMSLiquid_2ndOrd_WTDF(fun, inState, outState, neigh, auxField, nPdfSize, iLevel, varSys, time, phyConvFac, derVarPos)

Update state with source variable "electric_field" with 2nd order integration of force term in LBE with thermodynamic factor Refer to Appendix in PhD Thesis of K. Masilamani "Coupled Simulation Framework to Simulate Electrodialysis Process for Seawater Desalination"

Read more…

Arguments

TypeIntentOptionalAttributesName
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

public subroutine applySrc_electricMSLiquid_1stOrd_WTDF(fun, inState, outState, neigh, auxField, nPdfSize, iLevel, varSys, time, phyConvFac, derVarPos)

Update state with source variable "electric_field" with thermodynamic factor. Simuilar to derive routine but it updates the state whereas derive is used for tracking

Read more…

Arguments

TypeIntentOptionalAttributesName
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

public subroutine applySrc_forceMSLiquid_2ndOrd(fun, inState, outState, neigh, auxField, nPdfSize, iLevel, varSys, time, phyConvFac, derVarPos)

Update state with source variable "force" with 2nd order integration of force in lattice Boltzmann equation. Simuilar to derive routine but it updates the state whereas derive is used for tracking Refer to Appendix in PhD Thesis of K. Masilamani "Coupled Simulation Framework to Simulate Electrodialysis Process for Seawater Desalination"

Read more…

Arguments

TypeIntentOptionalAttributesName
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

public subroutine applySrc_forceMSLiquid_1stOrd(fun, inState, outState, neigh, auxField, nPdfSize, iLevel, varSys, time, phyConvFac, derVarPos)

Update state with source variable "force" with 1st order integration of force in lattice Boltzmann equation. Simuilar to derive routine but it updates the state whereas derive is used for tracking Refer to Appendix in PhD Thesis of K. Masilamani "Coupled Simulation Framework to Simulate Electrodialysis Process for Seawater Desalination"

Read more…

Arguments

TypeIntentOptionalAttributesName
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

public subroutine applySrc_forceMSLiquid_2ndOrd_WTDF(fun, inState, outState, neigh, auxField, nPdfSize, iLevel, varSys, time, phyConvFac, derVarPos)

Update state with source variable "force" with 2nd order integration of force in lattice Boltzmann equation with thermodynamic factor. Simuilar to derive routine but it updates the state whereas derive is used for tracking Refer to Appendix in PhD Thesis of K. Masilamani "Coupled Simulation Framework to Simulate Electrodialysis Process for Seawater Desalination"

Read more…

Arguments

TypeIntentOptionalAttributesName
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

public subroutine applySrc_forceMSLiquid_1stOrd_WTDF(fun, inState, outState, neigh, auxField, nPdfSize, iLevel, varSys, time, phyConvFac, derVarPos)

Update state with source variable "force" with thermodynamic factor Simuilar to derive routine but it updates the state whereas derive is used for tracking Refer to Appendix in PhD Thesis of K. Masilamani "Coupled Simulation Framework to Simulate Electrodialysis Process for Seawater Desalination"

Read more…

Arguments

TypeIntentOptionalAttributesName
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

public subroutine deriveEquilMSLiquid_FromMacro(density, velocity, iField, nElems, varSys, layout, res)

This routine computes equilbrium from density and velocity This must comply with mus_variable_module%derive_FromMacro

Read more…

Arguments

TypeIntentOptionalAttributesName
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

public subroutine deriveVelMSLiquid_FromState(state, iField, nElems, varSys, layout, res)

This routine computes velocity from state array

Read more…

Arguments

TypeIntentOptionalAttributesName
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

public subroutine deriveMomMSLiquid_FromState(state, iField, nElems, varSys, layout, res)

This routine computes momentum from state array

Read more…

Arguments

TypeIntentOptionalAttributesName
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

public subroutine deriveVelocitiesMSLiquid_FromState(state, iField, nElems, varSys, layout, res)

This routine computes velocities of all species from state array

Read more…

Arguments

TypeIntentOptionalAttributesName
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

public subroutine deriveMomentaMSLiquid_FromState(state, iField, nElems, varSys, layout, res)

This routine computes momentum of all species from state array

Read more…

Arguments

TypeIntentOptionalAttributesName
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

public subroutine deriveEqMSLiquid_FromState(state, iField, nElems, varSys, layout, res)

This routine computes equilibrium from state array

Read more…

Arguments

TypeIntentOptionalAttributesName
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

public subroutine deriveAuxMSLiquid_fromState(derVarPos, state, iField, nElems, nSize, iLevel, stencil, varSys, auxField)

This routine computes auxField 'density and velocity' of given field from state array. velocity of original PDF is computed in this routine by solving LSE.

Read more…

Arguments

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

public subroutine deriveAuxMSLiquid_fromState_WTDF(derVarPos, state, iField, nElems, nSize, iLevel, stencil, varSys, auxField)

This routine computes auxField 'density and velocity' of given field from state array with thermodynamic factot. velocity of original PDF is computed in this routine by solving LSE.

Read more…

Arguments

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

public subroutine deriveEquilMSLiquid_fromAux(derVarPos, auxField, iField, nElems, varSys, layout, fEq)

This routine computes equilbrium from auxField

Read more…

Arguments

TypeIntentOptionalAttributesName
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

private subroutine mus_append_derLiquidMixVar(varSys, solverData, nFields, fldLabel, derVarName)

Append mixture variables for multicomponent liquid models

Arguments

TypeIntentOptionalAttributesName
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

integer, intent(in) :: nFields

number of fields

character(len=*), intent(in) :: fldLabel(:)

array of field label prefix. Size=nFields

type(grw_labelarray_type), intent(in) :: derVarName

array of derive physical variable

private recursive subroutine deriveChargeDensity(fun, varSys, elempos, time, tree, nElems, nDofs, res)

Calculate charge density of a given element for mixture. Charge density is mixture quantity to it returns same value for all species charge_density = Faraday * \sum_i z_i*density_i/molecularWeight_i

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.

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

private recursive subroutine deriveCurrentDensity(fun, varSys, elempos, time, tree, nElems, nDofs, res)

Current density is computed from species momentum stored in auxField array. Current density, J = charge_density*velocity = \rho_e * u = \sum_k z_k F p_k / M_k where p_k is the species momentum

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.

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

private recursive subroutine deriveKinePressMSLiquid(fun, varSys, elempos, time, tree, nElems, nDofs, res)

Calculate mixture kinematic pressure. This routine requires initial total mole density which is defined in mixture table. Formula to compute kinematic pressure here, - species density, \ - species molecular weight ratio, \ - reference mixture number density,\ - reference density. In tracking,

Read more…

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.

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

private recursive subroutine deriveEquilVelMSLiquid(fun, varSys, elempos, time, tree, nElems, nDofs, res)

Equilibrium velocity from density and momentum in auxField.

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.

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

private recursive subroutine deriveEquilVelWTDF_MSLiquid(fun, varSys, elempos, time, tree, nElems, nDofs, res)

Equilibrium velocity from density and momentum in auxField with thermodynamic factor

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.

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

private recursive subroutine deriveEquilMSLiquid(fun, varSys, elempos, time, tree, nElems, nDofs, res)

Equilibrium from density and momentum stored in auxField

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.

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

private recursive subroutine deriveEquilWTDF_MSLiquid(fun, varSys, elempos, time, tree, nElems, nDofs, res)

Equilibrium from density and momentum in auxField with thermodynamic factor

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.

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

private recursive subroutine deriveMixVelMS(fun, varSys, elempos, time, tree, nElems, nDofs, res)

Calculate mixture velocity of a given element from the momentum and density stored in auxField array for liquid mixture. auxField was updated with momentum of untransformed PDF which was computed by solving LSE in compute kernel.

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.

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

private recursive subroutine deriveChargeDensity_fromIndex(fun, varSys, time, iLevel, idx, idxLen, nVals, res)

Calculate charge density from species concentration

Read more…

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.

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: nVals

integer, intent(in), optional :: idxLen(:)

With idx as start index in contiguous memory, idxLength defines length of each contiguous memory Size: 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

private recursive subroutine deriveCurrentDensity_fromIndex(fun, varSys, time, iLevel, idx, idxLen, nVals, res)

Calculate current density from species momentum

Read more…

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.

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: nVals

integer, intent(in), optional :: idxLen(:)

With idx as start index in contiguous memory, idxLength defines length of each contiguous memory Size: 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

private recursive subroutine deriveMixVelMS_fromIndex(fun, varSys, time, iLevel, idx, idxLen, nVals, res)

Calculate mixture velocity from density from species momentum

Read more…

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.

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: nVals

integer, intent(in), optional :: idxLen(:)

With idx as start index in contiguous memory, idxLength defines length of each contiguous memory Size: 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