velocity_nonEqExpol_curved Subroutine

public subroutine velocity_nonEqExpol_curved(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 curved using the subroutine "mus_set_nonEqExpol". For curved wall, values are extrapolated along element normal

Notation: b (fictious boundary) w (physical bolundary or surface) f (local element) ff (overnext fluidneighbor) Usage

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

This is described in the paper: Guo, Z.; Zheng, C. & Shi B. (2002). An extrapolation method for boundary conditions in lattice Boltzmann method. Physics of Fluids 14, 2007 (2002);

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.


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


proc~~velocity_noneqexpol_curved~~CallsGraph proc~velocity_noneqexpol_curved velocity_nonEqExpol_curved interface~getvelocity getVelocity proc~velocity_noneqexpol_curved->interface~getvelocity proc~getvelocity_forelemfromstate_noforce getVelocity_forElemFromState_noForce interface~getvelocity->proc~getvelocity_forelemfromstate_noforce proc~getvelocity_forpdfsubset getVelocity_forPdfSubset interface~getvelocity->proc~getvelocity_forpdfsubset



real(kind=rk), private :: c_w
real(kind=rk), private :: c_f
real(kind=rk), private :: c_ff
real(kind=rk), private :: c_neq_f
real(kind=rk), private :: c_neq_ff
integer, private :: iDir
integer, private :: posInBuffer
integer, private :: posInNeighBuf
real(kind=rk), private :: feq_b
real(kind=rk), private :: fneq_b
real(kind=rk), private :: rho_b
real(kind=rk), private :: vel_b(3)
real(kind=rk), private :: vel_w(me%links(iLevel)%nVals*3)
real(kind=rk), private :: feq_f
real(kind=rk), private :: fneq_f
real(kind=rk), private :: rho_f
real(kind=rk), private :: vel_f(3)
real(kind=rk), private :: feq_ff
real(kind=rk), private :: fneq_ff
real(kind=rk), private :: rho_ff
real(kind=rk), private :: vel_ff(3)
real(kind=rk), private :: inv_vel
real(kind=rk), private :: pdfTmp(layout%fStencil%QQ)
real(kind=rk), private :: pdf_ff(layout%fStencil%QQ)
integer, private :: bcVel_pos
integer, private :: iLink
integer, private :: QQ
integer, private :: offset