potential_nonEqExpol Subroutine

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

Linkwise Dirichlet potential non-equilibrium boundary condition for curved and straight walls. For straight wall, physical boundary overlaps with boundary node i.e. qVal=0.0.

The pdf is decomposed into equilibrium (eq) and non-equilibrium (neq) part: f = f_eq(x_b,t) + f_neq(x_f,t)


boundary_condition = {
  { label = 'inner',
    kind = 'potential_noneq_expol',
    potential = pot_inner,

For straight boundaries, qVal=1.0: Luo, K., Wu, J., Yi, H., & Tan, H. (2016). Lattice Boltzmann model for Coulomb-driven flows in dielectric liquids dielectric liquids. Physical Review E, 23309(93), 1–11. http://doi.org/10.1103/PhysRevE.93.023309

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~~potential_noneqexpol~~CallsGraph proc~potential_noneqexpol potential_nonEqExpol posinneighbuf posinneighbuf proc~potential_noneqexpol->posinneighbuf neighbufferpost neighbufferpost proc~potential_noneqexpol->neighbufferpost posinbcelems posinbcelems proc~potential_noneqexpol->posinbcelems posinbuffer posinbuffer proc~potential_noneqexpol->posinbuffer



integer, private :: iDir
real(kind=rk), private :: feq_b
real(kind=rk), private :: feq_ff
real(kind=rk), private :: pot_f
real(kind=rk), private :: pot_ff
real(kind=rk), private :: pot_b
real(kind=rk), private :: inv_pot
real(kind=rk), private :: pdf_f(layout%fStencil%QQ)
real(kind=rk), private :: pdf_ff(layout%fStencil%QQ)
real(kind=rk), private :: pot_w(globBC%nElems(iLevel))
integer, private :: bcPot_pos
integer, private :: iLink
integer, private :: QQ
integer, private :: QQN