velocity_bounceback_incomp Subroutine

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

Inlet Velocity Bounce Back boundary condition with qvalues

This is taken from the paper: [1] S. Izquierdo and N. Fueyo, "Characteristic non-reflecting boundary conditions for open boundaries in lattice Boltzmann methods," Physical Review E, vol. 78, no. 46707, 2008 The incoming densities are reconstructed from the already reflected densities, enforcing the given velocity me\%ubb\%velocity. [2] M. Junk and Z. Yang. One-point boundary condition for the lattice Boltzmann method, Physical Review E, vol 72, issue 8, year 2005.

This boundary condition has error of 1st order pressure and 2nd order velocity only if wall is located exactly at q=1/2 else the accuracy of both pressure and velocity reduce by order 1.

Usage


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

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


Contents


Variables

TypeVisibilityAttributesNameInitial
integer, private :: iLink
integer, private :: iDir
real(kind=rk), private :: fOut
real(kind=rk), private :: eqPlus
real(kind=rk), private :: inv_vel
real(kind=rk), private :: vel_b(me%links(iLevel)%nVals*3)
integer, private :: bcVel_pos
integer, private :: offset