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); https://doi.org/10.1063/1.1471914
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 | |||
---|---|---|---|---|---|---|---|
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 | :: | |||||
integer, | private | :: | offset |