velocity_nonEqExpol Subroutine

public subroutine velocity_nonEqExpol(me, state, bcBuffer, globBC, levelDesc, tree, nSize, iLevel, sim_time, neigh, layout, fieldProp, varPos, nScalars, varSys, derVarPos, physics, iField, mixture)

Linkwise Dirichlet velocity non-equilibrium boundary condition for straight using the subroutine "mus_set_nonEqExpol". For straight wall, values are extrapolated along boundary normal instead of along the link and qVal =0.0 for straight wall.

Notation: b (fictious boundary) w (physical bolundary or surface) f (local element) ff (first neighbor fluid element)

Usage


boundary_condition = {
  { label = 'inlet',
    kind = 'velocity_nonEqExpol',
    velocity = 'inlet_vel,
  }
}
variable = {
  name = 'inlet_vel',
  ncomponents = 3,
  vartype = 'st_fun',
  st_fun = {0.06, 0.0, 0.0}
}

This is described in the paper: Non-equilibrium extrapolation method for velocity and pressure boundary conditions in the lattice Boltzmann method." Chinese Physics.

More informations concerning the nonEqExpol can be found in the corresponding subroutine.

This subroutine's interface must match the abstract interface definition boundaryRoutine in bc/mus_bc_header_module.f90 in order to be callable via fnct function pointer.

Arguments

TypeIntentOptionalAttributesName
class(boundary_type) :: me

global boundary type

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

Current state vector of iLevel

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

state values of boundary elements of all fields of iLevel

type(glob_boundary_type), intent(in) :: globBC

scheme global boundary type

type(tem_levelDesc_type), intent(in) :: levelDesc

iLevel descriptor

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

Treelm Mesh

integer, intent(in) :: nSize

size of state array ( in terms of elements )

integer, intent(in) :: iLevel

the level On which this boundary was invoked

type(tem_time_type), intent(in) :: sim_time

global time information

integer, intent(in) :: neigh(:)

connectivity array corresponding to state vector

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

stencil layout information

type(mus_field_prop_type), intent(in) :: fieldProp

fluid parameters and properties

integer, intent(in) :: varPos(:)

pointer to field variable in the state vector

integer, intent(in) :: nScalars

number of Scalars in the scheme var system

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

scheme variable system

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

position of derived quantities in varsys

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

scheme global boundary type

integer, intent(in) :: iField

current field

type(mus_mixture_type), intent(in) :: mixture

mixture info


Calls

proc~~velocity_noneqexpol~~CallsGraph proc~velocity_noneqexpol velocity_nonEqExpol posinneighbuf posinneighbuf proc~velocity_noneqexpol->posinneighbuf posinstate posinstate proc~velocity_noneqexpol->posinstate neighbufferpost neighbufferpost proc~velocity_noneqexpol->neighbufferpost omegakineval omegakineval proc~velocity_noneqexpol->omegakineval posinbcelems posinbcelems proc~velocity_noneqexpol->posinbcelems

Contents


Variables

TypeVisibilityAttributesNameInitial
integer, private :: iDir
real(kind=rk), private :: feq_b
real(kind=rk), private :: vel_b(3)
real(kind=rk), private :: vel_w(globBC%nElems(iLevel)*3)
real(kind=rk), private :: feq_ff
real(kind=rk), private :: rho_ff
real(kind=rk), private :: rhoInv
real(kind=rk), private :: vel_ff(3)
real(kind=rk), private :: inv_vel
real(kind=rk), private :: pdf_ff(layout%fStencil%QQ)
real(kind=rk), private :: nEqTerm
integer, private :: bcVel_pos
integer, private :: iLink
integer, private :: QQ
integer, private :: offset
real(kind=rk), private :: omegaKine