Chombo + EB  3.2
Public Member Functions | Public Attributes | Private Attributes | List of all members
DirichletPoissonDomainBC Class Reference

#include <DirichletPoissonDomainBC.H>

Inheritance diagram for DirichletPoissonDomainBC:
Inheritance graph
[legend]

Public Member Functions

 DirichletPoissonDomainBC ()
 
virtual ~DirichletPoissonDomainBC ()
 
virtual void setValue (Real a_value)
 
virtual void setFunction (RefCountedPtr< BaseBCValue > a_func)
 
virtual void setData (LevelData< EBCellFAB > *a_data)
 
virtual void setEBOrder (int a_ebOrder)
 
virtual void getFaceVel (Real &a_faceFlux, const FaceIndex &a_face, const EBFluxFAB &a_vel, const RealVect &a_probLo, const RealVect &a_dx, const int &a_idir, const int &a_icomp, const Real &a_time, const Side::LoHiSide &a_side)
 
virtual void getFaceFlux (BaseFab< Real > &a_faceFlux, const BaseFab< Real > &a_phi, const RealVect &a_probLo, const RealVect &a_dx, const int &a_idir, const Side::LoHiSide &a_side, const DataIndex &a_dit, const Real &a_time, const bool &a_useHomogeneous)
 
void getHigherOrderFaceFlux (BaseFab< Real > &a_faceFlux, const BaseFab< Real > &a_phi, const RealVect &a_probLo, const RealVect &a_dx, const int &a_idir, const Side::LoHiSide &a_side, const DataIndex &a_dit, const Real &a_time, const bool &a_useHomogeneous)
 
virtual void getFaceFlux (Real &a_faceFlux, const VolIndex &a_vof, const int &a_comp, const EBCellFAB &a_phi, const RealVect &a_probLo, const RealVect &a_dx, const int &a_idir, const Side::LoHiSide &a_side, const DataIndex &a_dit, const Real &a_time, const bool &a_useHomogeneous)
 
void getInhomFaceFlux (Real &a_faceFlux, const VolIndex &a_vof, const int &a_comp, const EBCellFAB &a_phi, const RealVect &a_probLo, const RealVect &a_dx, const int &a_idir, const Side::LoHiSide &a_side, const DataIndex &a_dit, const Real &a_time)
 
bool isDirichletDom (const VolIndex &a_ivof, const VolIndex &a_jvof, const EBCellFAB &a_phi) const
 
void getHigherOrderFaceFlux (Real &a_faceFlux, const VolIndex &a_vof, const int &a_comp, const EBCellFAB &a_phi, const RealVect &a_probLo, const RealVect &a_dx, const int &a_idir, const Side::LoHiSide &a_side, const DataIndex &a_dit, const Real &a_time, const bool &a_useHomogeneous)
 
void getHigherOrderFaceFlux (Real &a_faceFlux, const FaceIndex &a_face, const int &a_comp, const EBCellFAB &a_phi, const RealVect &a_probLo, const RealVect &a_dx, const int &a_idir, const Side::LoHiSide &a_side, const DataIndex &a_dit, const Real &a_time, const bool &a_useAreaFrac, const RealVect &a_centroid, const bool &a_useHomogeneous)
 
void getHigherOrderInhomFaceFlux (Real &a_faceFlux, const VolIndex &a_vof, const int &a_comp, const EBCellFAB &a_phi, const RealVect &a_probLo, const RealVect &a_dx, const int &a_idir, const Side::LoHiSide &a_side, const DataIndex &a_dit, const Real &a_time)
 
void getHigherOrderInhomFaceFlux (Real &a_faceFlux, const FaceIndex &a_face, const int &a_comp, const EBCellFAB &a_phi, const RealVect &a_probLo, const RealVect &a_dx, const int &a_idir, const Side::LoHiSide &a_side, const DataIndex &a_dit, const Real &a_time, const bool &a_useAreaFrac, const RealVect &a_centroid)
 
virtual void getFaceGradPhi (Real &a_faceFlux, const FaceIndex &a_face, const int &a_comp, const EBCellFAB &a_phi, const RealVect &a_probLo, const RealVect &a_dx, const int &a_idir, const Side::LoHiSide &a_side, const DataIndex &a_dit, const Real &a_time, const bool &a_useAreaFrac, const RealVect &a_centroid, const bool &a_useHomogeneous)
 
void getInhomFaceGradPhi (Real &a_faceFlux, const FaceIndex &a_face, const int &a_comp, const EBCellFAB &a_phi, const RealVect &a_probLo, const RealVect &a_dx, const int &a_idir, const Side::LoHiSide &a_side, const DataIndex &a_dit, const Real &a_time, const bool &a_useAreaFrac, const RealVect &a_centroid)
 
virtual void getFluxStencil (VoFStencil &a_stencil, const VolIndex &a_vof, const int &a_comp, const RealVect &a_dx, const int &a_idir, const Side::LoHiSide &a_side, const EBISBox &a_ebisBox)
 
virtual void getFluxStencil (VoFStencil &a_stencil, const FaceIndex &a_face, const int &a_comp, const RealVect &a_dx, const int &a_idir, const Side::LoHiSide &a_side, const EBISBox &a_ebisBox)
 
void getFirstOrderFluxStencil (VoFStencil &a_stencil, const FaceIndex &a_face, const int &a_comp, const RealVect &a_dx, const int &a_idir, const Side::LoHiSide &a_side, const EBISBox &a_ebisBox)
 
void getSecondOrderFluxStencil (VoFStencil &a_stencil, const FaceIndex &a_face, const int &a_comp, const RealVect &a_dx, const int &a_idir, const Side::LoHiSide &a_side, const EBISBox &a_ebisBox)
 
- Public Member Functions inherited from BaseDomainBC
 BaseDomainBC ()
 
virtual ~BaseDomainBC ()
 
virtual void enforceFaceVel (LevelData< EBFluxFAB > &a_velocity, const DisjointBoxLayout &a_grids, const EBISLayout &a_ebisl, const ProblemDomain &a_domain, const RealVect &a_dx, const Real &a_time, const RealVect &a_origin)
 
virtual void enforceFaceVel (LevelData< EBFluxFAB > &a_velocity, const DisjointBoxLayout &a_grids, const EBISLayout &a_ebisl, const ProblemDomain &a_domain, const RealVect &a_dx, const Real &a_time, const RealVect &a_origin, const int &a_comp)
 
bool dataBased () const
 

Public Attributes

bool m_isDefined
 

Private Attributes

bool m_onlyHomogeneous
 
bool m_isFunctional
 
Real m_value
 
RefCountedPtr< BaseBCValuem_func
 
LevelData< EBCellFAB > * m_data
 
bool m_dataBased
 
int m_ebOrder
 

Additional Inherited Members

- Protected Attributes inherited from BaseDomainBC
LevelData< EBCellFAB > * m_data
 
bool m_dataBased
 

Constructor & Destructor Documentation

◆ DirichletPoissonDomainBC()

DirichletPoissonDomainBC::DirichletPoissonDomainBC ( )

◆ ~DirichletPoissonDomainBC()

virtual DirichletPoissonDomainBC::~DirichletPoissonDomainBC ( )
virtual

Member Function Documentation

◆ setValue()

virtual void DirichletPoissonDomainBC::setValue ( Real  a_value)
virtual

◆ setFunction()

virtual void DirichletPoissonDomainBC::setFunction ( RefCountedPtr< BaseBCValue a_func)
virtual

◆ setData()

virtual void DirichletPoissonDomainBC::setData ( LevelData< EBCellFAB > *  a_data)
inlinevirtual

◆ setEBOrder()

virtual void DirichletPoissonDomainBC::setEBOrder ( int  a_ebOrder)
virtual

use this for order of domain boundary

Referenced by setData(), and DirichletPoissonDomainBCFactory::setData().

◆ getFaceVel()

virtual void DirichletPoissonDomainBC::getFaceVel ( Real a_faceFlux,
const FaceIndex a_face,
const EBFluxFAB a_vel,
const RealVect a_probLo,
const RealVect a_dx,
const int &  a_idir,
const int &  a_icomp,
const Real a_time,
const Side::LoHiSide a_side 
)
virtual

This is used by the projections to get velocity at domain faces where eb intersects. Sets velocity to a dirichlet value.

Reimplemented from BaseDomainBC.

Referenced by setData().

◆ getFaceFlux() [1/2]

virtual void DirichletPoissonDomainBC::getFaceFlux ( BaseFab< Real > &  a_faceFlux,
const BaseFab< Real > &  a_phi,
const RealVect a_probLo,
const RealVect a_dx,
const int &  a_idir,
const Side::LoHiSide a_side,
const DataIndex a_dit,
const Real a_time,
const bool &  a_useHomogeneous 
)
virtual

Implements BaseDomainBC.

Referenced by setData().

◆ getHigherOrderFaceFlux() [1/3]

void DirichletPoissonDomainBC::getHigherOrderFaceFlux ( BaseFab< Real > &  a_faceFlux,
const BaseFab< Real > &  a_phi,
const RealVect a_probLo,
const RealVect a_dx,
const int &  a_idir,
const Side::LoHiSide a_side,
const DataIndex a_dit,
const Real a_time,
const bool &  a_useHomogeneous 
)

Referenced by isDirichletDom(), and setData().

◆ getFaceFlux() [2/2]

virtual void DirichletPoissonDomainBC::getFaceFlux ( Real a_faceFlux,
const VolIndex a_vof,
const int &  a_comp,
const EBCellFAB a_phi,
const RealVect a_probLo,
const RealVect a_dx,
const int &  a_idir,
const Side::LoHiSide a_side,
const DataIndex a_dit,
const Real a_time,
const bool &  a_useHomogeneous 
)
virtual

Elliptic solver flux.

Implements BaseDomainBC.

◆ getInhomFaceFlux()

void DirichletPoissonDomainBC::getInhomFaceFlux ( Real a_faceFlux,
const VolIndex a_vof,
const int &  a_comp,
const EBCellFAB a_phi,
const RealVect a_probLo,
const RealVect a_dx,
const int &  a_idir,
const Side::LoHiSide a_side,
const DataIndex a_dit,
const Real a_time 
)
virtual

Elliptic solver flux.

Reimplemented from BaseDomainBC.

Referenced by setData().

◆ isDirichletDom()

bool DirichletPoissonDomainBC::isDirichletDom ( const VolIndex a_ivof,
const VolIndex a_jvof,
const EBCellFAB a_phi 
) const
inlinevirtual

A query of whether a_jvof is Dirichlet Domain boundary to a_ivof. a_jvof is the ghost vof; a_ivof is the valid computational vof. If the code runs into here it's got to be Dirichlet BC

Reimplemented from BaseDomainBC.

References getFaceGradPhi(), getFirstOrderFluxStencil(), getFluxStencil(), getHigherOrderFaceFlux(), getHigherOrderInhomFaceFlux(), getInhomFaceGradPhi(), and getSecondOrderFluxStencil().

◆ getHigherOrderFaceFlux() [2/3]

void DirichletPoissonDomainBC::getHigherOrderFaceFlux ( Real a_faceFlux,
const VolIndex a_vof,
const int &  a_comp,
const EBCellFAB a_phi,
const RealVect a_probLo,
const RealVect a_dx,
const int &  a_idir,
const Side::LoHiSide a_side,
const DataIndex a_dit,
const Real a_time,
const bool &  a_useHomogeneous 
)

This is called by InflowOutflowHelmholtzDomainBC::getFaceFlux, which is called by EBAMRPoissonOp::applyOp when EB x domain. Used for higher-order velocity boundary conditions. This routine iterates over the possible multiple faces at a domain face and calls getHigherOrderFaceFlux(...) below for the individual face extrapolation

◆ getHigherOrderFaceFlux() [3/3]

void DirichletPoissonDomainBC::getHigherOrderFaceFlux ( Real a_faceFlux,
const FaceIndex a_face,
const int &  a_comp,
const EBCellFAB a_phi,
const RealVect a_probLo,
const RealVect a_dx,
const int &  a_idir,
const Side::LoHiSide a_side,
const DataIndex a_dit,
const Real a_time,
const bool &  a_useAreaFrac,
const RealVect a_centroid,
const bool &  a_useHomogeneous 
)

This is called by DirichletPoissonDomain::getHigherOrderFaceflux which is called by InflowOutflowHelmholtzDomainBC::getFaceFlux. This is used by the projections to get extrapolated grad(phi) at domain faces for cell-centered gradient. Called by getFaceFlux.

◆ getHigherOrderInhomFaceFlux() [1/2]

void DirichletPoissonDomainBC::getHigherOrderInhomFaceFlux ( Real a_faceFlux,
const VolIndex a_vof,
const int &  a_comp,
const EBCellFAB a_phi,
const RealVect a_probLo,
const RealVect a_dx,
const int &  a_idir,
const Side::LoHiSide a_side,
const DataIndex a_dit,
const Real a_time 
)

This is called by InflowOutflowHelmholtzDomainBC::getFaceFlux, which is called by EBAMRPoissonOp::applyOp when EB x domain. Used for higher-order velocity boundary conditions. This routine iterates over the possible multiple faces at a domain face and calls getHigherOrderFaceFlux(...) below for the individual face extrapolation

Referenced by isDirichletDom().

◆ getHigherOrderInhomFaceFlux() [2/2]

void DirichletPoissonDomainBC::getHigherOrderInhomFaceFlux ( Real a_faceFlux,
const FaceIndex a_face,
const int &  a_comp,
const EBCellFAB a_phi,
const RealVect a_probLo,
const RealVect a_dx,
const int &  a_idir,
const Side::LoHiSide a_side,
const DataIndex a_dit,
const Real a_time,
const bool &  a_useAreaFrac,
const RealVect a_centroid 
)

This is called by DirichletPoissonDomain::getHigherOrderFaceflux which is called by InflowOutflowHelmholtzDomainBC::getFaceFlux. This is used by the projections to get extrapolated grad(phi) at domain faces for cell-centered gradient. Called by getFaceFlux.

◆ getFaceGradPhi()

virtual void DirichletPoissonDomainBC::getFaceGradPhi ( Real a_faceFlux,
const FaceIndex a_face,
const int &  a_comp,
const EBCellFAB a_phi,
const RealVect a_probLo,
const RealVect a_dx,
const int &  a_idir,
const Side::LoHiSide a_side,
const DataIndex a_dit,
const Real a_time,
const bool &  a_useAreaFrac,
const RealVect a_centroid,
const bool &  a_useHomogeneous 
)
virtual

This is used by the projections to get grad(phi) at domain faces (usually outflow). Called by InflowOutflowPoissonDomainBC::getFaceFlux.

Implements BaseDomainBC.

Referenced by isDirichletDom().

◆ getInhomFaceGradPhi()

void DirichletPoissonDomainBC::getInhomFaceGradPhi ( Real a_faceFlux,
const FaceIndex a_face,
const int &  a_comp,
const EBCellFAB a_phi,
const RealVect a_probLo,
const RealVect a_dx,
const int &  a_idir,
const Side::LoHiSide a_side,
const DataIndex a_dit,
const Real a_time,
const bool &  a_useAreaFrac,
const RealVect a_centroid 
)

This is used by the projections to get grad(phi) at domain faces (usually outflow). Called by InflowOutflowPoissonDomainBC::getFaceFlux.

Referenced by isDirichletDom().

◆ getFluxStencil() [1/2]

virtual void DirichletPoissonDomainBC::getFluxStencil ( VoFStencil a_stencil,
const VolIndex a_vof,
const int &  a_comp,
const RealVect a_dx,
const int &  a_idir,
const Side::LoHiSide a_side,
const EBISBox a_ebisBox 
)
virtual

Reimplemented from BaseDomainBC.

Referenced by isDirichletDom().

◆ getFluxStencil() [2/2]

virtual void DirichletPoissonDomainBC::getFluxStencil ( VoFStencil a_stencil,
const FaceIndex a_face,
const int &  a_comp,
const RealVect a_dx,
const int &  a_idir,
const Side::LoHiSide a_side,
const EBISBox a_ebisBox 
)
virtual

Reimplemented from BaseDomainBC.

◆ getFirstOrderFluxStencil()

void DirichletPoissonDomainBC::getFirstOrderFluxStencil ( VoFStencil a_stencil,
const FaceIndex a_face,
const int &  a_comp,
const RealVect a_dx,
const int &  a_idir,
const Side::LoHiSide a_side,
const EBISBox a_ebisBox 
)

Referenced by isDirichletDom().

◆ getSecondOrderFluxStencil()

void DirichletPoissonDomainBC::getSecondOrderFluxStencil ( VoFStencil a_stencil,
const FaceIndex a_face,
const int &  a_comp,
const RealVect a_dx,
const int &  a_idir,
const Side::LoHiSide a_side,
const EBISBox a_ebisBox 
)

Referenced by isDirichletDom().

Member Data Documentation

◆ m_isDefined

bool DirichletPoissonDomainBC::m_isDefined

◆ m_onlyHomogeneous

bool DirichletPoissonDomainBC::m_onlyHomogeneous
private

◆ m_isFunctional

bool DirichletPoissonDomainBC::m_isFunctional
private

◆ m_value

Real DirichletPoissonDomainBC::m_value
private

◆ m_func

RefCountedPtr<BaseBCValue> DirichletPoissonDomainBC::m_func
private

◆ m_data

LevelData<EBCellFAB>* DirichletPoissonDomainBC::m_data
private

◆ m_dataBased

bool DirichletPoissonDomainBC::m_dataBased
private

◆ m_ebOrder

int DirichletPoissonDomainBC::m_ebOrder
private

The documentation for this class was generated from the following file: