Element-wise Dirichlet velocity non-equilibrium boundary condition for straight boundary to update all directions. 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.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
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) | ||||
integer, | private | :: | bcVel_pos | ||||
integer, | private | :: | |||||
integer, | private | :: | iElem | ||||
integer, | private | :: | elemPos |