velocity_bfl Subroutine

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

Inlet Velocity BFL rule boundary condition

This is taken from the paper: "One-point boundary condition for the lattice Boltzmann method", by M. Junk and Z. Yang published in Physical Review E 72 (2005) and leads to the chapter 'B. BFL rule'. This boundary condition shall be an improvement of the already existing velocity bounce back condition. It introduces a term called . This one represents the particle distribution:

This boundary condition has error of 1st order velocity and less 1st order pressure tested for wall is located exactly at q=1/2.

Like for velocity_bounceback_qval we compute the values at the boundary points.

Main differences to velocity_bounceback: - implemented "link-wise", only incoming links at the boundary are updated for each time step - uses q-Values in pre-processing (see mus_bc_header_module) - computes state values at the boundary nodes instead of barycentre position - can be an improvement of the bounce back rule for q-values ~= 0.5

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



integer, private :: iLink
integer, private :: iDir
integer, private :: QQ
integer, private :: posInBuffer
real(kind=rk), private :: weight
real(kind=rk), private :: fIn
real(kind=rk), private :: fOut
real(kind=rk), private :: fNgh
real(kind=rk), private :: eqPlus
real(kind=rk), private :: rho
real(kind=rk), private :: cIn
real(kind=rk), private :: cOut
real(kind=rk), private :: cNgh
real(kind=rk), private :: cVel
real(kind=rk), private :: vel_b(me%links(iLevel)%nVals*3)
real(kind=rk), private :: inv_vel
integer, private :: bcVel_pos
integer, private :: offset