mus_flow_module Module

Flow-related routines such as initialization of the flow field and parameters

*********** !


Uses

Used by

  • module~~mus_flow_module~~UsedByGraph module~mus_flow_module mus_flow_module program~mus_harvesting mus_harvesting program~mus_harvesting->module~mus_flow_module module~mus_program_module mus_program_module module~mus_program_module->module~mus_flow_module module~mus_dynloadbal_module mus_dynLoadBal_module module~mus_program_module->module~mus_dynloadbal_module module~mus_dynloadbal_module->module~mus_flow_module program~musubi musubi program~musubi->module~mus_program_module

Contents


Subroutines

public subroutine mus_init_flow(scheme, tree, general, physics, scaling, levelPointer)

Initialize flow field depends on read restart or initial condition

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type), intent(inout) :: scheme

Scheme type

type(treelmesh_type), intent(in) :: tree

tree

type(tem_general_type), intent(inout) :: general
type(mus_physics_type), intent(in) :: physics
character(len=*), intent(in) :: scaling
integer, intent(in) :: levelPointer(:)

global info type

public recursive subroutine fillHelperElementsFineToCoarse(scheme, general, physics, iLevel, maxLevel)

Recursively fill all the helper elements (i.e. ghost, halo) with valid information from the fluid elements.

Read more…

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type), intent(inout) :: scheme

containers for the scheme contains interpolation type

type(tem_general_type), intent(in) :: general

global parameters

type(mus_physics_type), intent(in) :: physics
integer, intent(in) :: iLevel

Level counter variable

integer, intent(in) :: maxLevel

global flow quantity properties

public recursive subroutine fillHelperElementsCoarseToFine(scheme, general, physics, iLevel, minLevel, maxLevel)

Recursively fill all the helper elements (i.e. ghost, halo) with valid information from the fluid elements.

Read more…

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type), intent(inout) :: scheme

containers for the scheme contains interpolation type

type(tem_general_type), intent(in) :: general

global parameters

type(mus_physics_type), intent(in) :: physics
integer, intent(in) :: iLevel

Level counter variable

integer, intent(in) :: minLevel

level range

integer, intent(in) :: maxLevel

level range

public subroutine mus_initAuxField(auxField, state, nElems, nSize, nFields, stencil, varSys, derVarPos, iLevel)

This routine initialize auxField variable from initial PDF values using local IDX access for fluid elements

Arguments

TypeIntentOptionalAttributesName
real(kind=rk), intent(out) :: auxField(:)

auxilary field array

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

state array

integer, intent(in) :: nElems

number of elements to compute auxField

integer, intent(in) :: nSize

number of elements in state array

integer, intent(in) :: nFields

number of fields

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

stencil header

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

variable system

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

contains auxField position of all fields in varSys

integer, intent(in) :: iLevel

current level

private subroutine init_advRel(scheme)

Choose the relaxation model

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type) :: scheme

scheme type

private subroutine mus_init_byIC(scheme, tree, fac, scaling)

Initialize flow field by calling corresponding routine according to scheme kind.

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type), intent(inout) :: scheme

Scheme type

type(treelmesh_type), intent(in) :: tree

tree

type(mus_convertFac_type), intent(in) :: fac(tree%global%minLevel:tree%global%maxLevel)

Global parameters

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

private subroutine mus_init_pdf(me, tree, fac, scaling, field, iField, state, nElems, nSize, iLevel)

Initialize the flow from pressure, velocity and strain rate.\n First equilibirium pdf (fEq) is calculated from pressure and velocity. Then non-equilibirium (fnEq) is calculated from strain rate. At last set the pdf of each element by sum up these two parts (fEq+fnEq).

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type), intent(in) :: me

Scheme type

type(treelmesh_type), intent(in) :: tree

tree type

type(mus_convertFac_type), intent(in) :: fac

Global parameters

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

scaling

type(mus_field_type), intent(inout) :: field

Field type

integer, intent(in) :: iField

Field index

real(kind=rk), intent(inout) :: state(:)

PDF

integer, intent(in) :: nElems

Number of local elements

integer, intent(in) :: nSize

number of elements as size

integer, intent(in) :: iLevel

Level index

private subroutine mus_init_passiveScalar(me, tree, fac, scaling, field, iField, state, nElems, nSize, iLevel)

Initialize passive scalar from pressure and velocity.\n Equilibirium pdf (fEq) is calculated from pressure and velocity.

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type), intent(in) :: me

Scheme type

type(treelmesh_type), intent(in) :: tree

tree type

type(mus_convertFac_type), intent(in) :: fac

Global parameters

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

scaling

type(mus_field_type), intent(inout) :: field

Field type

integer, intent(in) :: iField

Field index

real(kind=rk), intent(inout) :: state(:)

PDF

integer, intent(in) :: nElems

Number of local elements

integer, intent(in) :: nSize

number of elements as size

integer, intent(in) :: iLevel

Level index

private subroutine mus_init_poisson(me, tree, fac, scaling, field, state, nElems, nSize, iLevel)

Initialize poisson lbm from potential Equilibirium pdf (fEq) is calculated from potential.

Read more…

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type), intent(in) :: me

Scheme type

type(treelmesh_type), intent(in) :: tree

tree type

type(mus_convertFac_type), intent(in) :: fac

Global parameters

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

scaling

type(mus_field_type), intent(inout) :: field

Field type

real(kind=rk), intent(inout) :: state(:)

PDF

integer, intent(in) :: nElems

Number of local elements

integer, intent(in) :: nSize

number of elements as size

integer, intent(in) :: iLevel

Level index

private subroutine mus_init_nernst_planck(me, tree, fac, field, iField, state, nElems, nSize, iLevel, nernstPlanck)

Initialize nernst planck from and .\n Equilibirium pdf (fEq) is calculated from and .

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type), intent(in) :: me

Scheme type

type(treelmesh_type), intent(in) :: tree

tree type

type(mus_convertFac_type), intent(in) :: fac

Global parameters

type(mus_field_type), intent(inout) :: field

Field type

integer, intent(in) :: iField

Field index

real(kind=rk), intent(inout) :: state(:)

PDF

integer, intent(in) :: nElems

Number of local elements

integer, intent(in) :: nSize

number of elements as size

integer, intent(in) :: iLevel

Level index

type(mus_nernstPlanck_type), intent(in) :: nernstPlanck

Contins solvent information

private subroutine mus_init_MSLiquid(me, tree, fac, state, field, mixture, nElems, nSize, iLevel)

Initialize the flow from calculated quantitites like density, velocity etc. for multispecies lbm

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type), intent(inout) :: me
type(treelmesh_type), intent(in) :: tree
type(mus_convertFac_type), intent(in) :: fac
real(kind=rk), intent(inout) :: state(:)

PDF

type(mus_field_type), intent(inout) :: field(:)
type(mus_mixture_type), intent(inout) :: mixture
integer, intent(in) :: nElems
integer, intent(in) :: nSize
integer, intent(in) :: iLevel

private subroutine mus_init_MSGas(me, tree, fac, state, field, nElems, nSize, iLevel)

Initialize the flow from calculated quantitites like density, velocity etc. for multispecies lbm

Read more…

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type), intent(inout) :: me
type(treelmesh_type), intent(in) :: tree
type(mus_convertFac_type), intent(in) :: fac
real(kind=rk), intent(inout) :: state(:)

PDF

type(mus_field_type), intent(inout) :: field(:)
integer, intent(in) :: nElems
integer, intent(in) :: nSize
integer, intent(in) :: iLevel

private subroutine mus_init_isotherm_acEq(me, tree, fac, field, iField, state, nElems, nSize, iLevel)

Initialize the isothermal acEq flow from density and velocity\n equilibrium pdf (fEq) is calculated from density and velocity

Arguments

TypeIntentOptionalAttributesName
type(mus_scheme_type), intent(inout) :: me

Scheme type

type(treelmesh_type), intent(in) :: tree

tree type

type(mus_convertFac_type), intent(in) :: fac

Global parameters

type(mus_field_type), intent(inout) :: field

Field type

integer, intent(in) :: iField

Field index

real(kind=rk), intent(inout) :: state(:)

PDF

integer, intent(in) :: nElems

Number of local elements

integer, intent(in) :: nSize

number of elements as size

integer, intent(in) :: iLevel

Level index