Chombo + EB  3.0
Protected Attributes | Private Member Functions | Friends | List of all members
FaceNodeBC Class Referenceabstract

A class to encapsulate the operations of boundary conditions on a face. More...

#include <NodeBC.H>

Protected Member Functions

Functions to apply boundary conditions
virtual void applyInhomogeneousBCs (FArrayBox &a_state, const ProblemDomain &a_domain, Real a_dx) const
 
virtual void applyInhomogeneousBCs (FArrayBox &a_state, const Box &a_domain, Real a_dx) const
 
virtual void applyHomogeneousBCs (FArrayBox &a_state, const ProblemDomain &domain, Real a_dx) const
 
virtual void applyHomogeneousBCs (FArrayBox &a_state, const Box &domain, Real a_dx) const
 
virtual void applyEitherBCs (FArrayBox &a_state, const ProblemDomain &domain, Real a_dx, bool a_homogeneous) const
 
virtual void applyEitherBCs (FArrayBox &a_state, const Box &domain, Real a_dx, bool a_homogeneous) const
 
virtual void applyBCs (const Box &a_bcbox, FArrayBox &a_state, const FArrayBox &a_neumfac, const FArrayBox &a_dircfac, const FArrayBox &a_inhmval, Real a_dx) const
 
Functions to fill in boundary-condition coefficients
virtual void fillBCValues (FArrayBox &a_neumfac, FArrayBox &a_dircfac, FArrayBox &a_inhmval, Real a_dx, const ProblemDomain &domain) const =0
 
virtual void fillBCValues (FArrayBox &a_neumfac, FArrayBox &a_dircfac, FArrayBox &a_inhmval, Real a_dx, const Box &domain) const =0
 

Protected Attributes

Side::LoHiSide m_side
 
int m_direction
 
Interval m_components
 

Private Member Functions

 FaceNodeBC (const FaceNodeBC &)
 
virtual void operator= (const FaceNodeBC &)
 

Friends

class DomainNodeBC
 

Constructors, destructor and defines

 FaceNodeBC ()
 
 FaceNodeBC (int a_dir, Side::LoHiSide a_sd)
 
 FaceNodeBC (int a_dir, Side::LoHiSide a_sd, const Interval &a_comps)
 
virtual ~FaceNodeBC ()
 
virtual FaceNodeBCnew_boxBC () const =0
 
void define (int a_dir, Side::LoHiSide a_sd)
 
void define (int a_dir, Side::LoHiSide a_sd, const Interval &a_comps)
 

Detailed Description

A class to encapsulate the operations of boundary conditions on a face.

FaceNodeBC is a class to encapsulate the operations of boundary conditions at a face.

If the solution is phi and the face normal direction is x, the boundary conditions usually used can be expressed as
A*dphi/dx + B*phi = C.
The derived class provides a function to fill A and B and C.

These functions are meant to be called by DomainNodeBC only.

Constructor & Destructor Documentation

◆ FaceNodeBC() [1/4]

FaceNodeBC::FaceNodeBC ( )
inline

Default constructor, sets interval to (-1:-1).

◆ FaceNodeBC() [2/4]

FaceNodeBC::FaceNodeBC ( int  a_dir,
Side::LoHiSide  a_sd 
)

Constructor for face on side a_sd in direction a_idir. This constructor sets the components interval to be (0:0).

◆ FaceNodeBC() [3/4]

FaceNodeBC::FaceNodeBC ( int  a_dir,
Side::LoHiSide  a_sd,
const Interval a_comps 
)

Constructor for face on side a_sd in direction a_idir, for data components a_comps.

◆ ~FaceNodeBC()

virtual FaceNodeBC::~FaceNodeBC ( )
inlinevirtual

◆ FaceNodeBC() [4/4]

FaceNodeBC::FaceNodeBC ( const FaceNodeBC )
inlineprivate

Member Function Documentation

◆ new_boxBC()

virtual FaceNodeBC* FaceNodeBC::new_boxBC ( ) const
protectedpure virtual

Virtual constructor workaround. Need this in derived class.

Referenced by ~FaceNodeBC().

◆ define() [1/2]

void FaceNodeBC::define ( int  a_dir,
Side::LoHiSide  a_sd 
)
protected

Defines face on side a_sd in direction a_idir. Sets the components interval to be (0:0).

Referenced by ~FaceNodeBC().

◆ define() [2/2]

void FaceNodeBC::define ( int  a_dir,
Side::LoHiSide  a_sd,
const Interval a_comps 
)
protected

Defines face on side a_sd in direction a_idir, for data components a_comps.

◆ applyInhomogeneousBCs() [1/2]

virtual void FaceNodeBC::applyInhomogeneousBCs ( FArrayBox a_state,
const ProblemDomain a_domain,
Real  a_dx 
) const
protectedvirtual

Apply inhomogeneous boundary conditions on this face.

Parameters
a_stateNODE-centered data to be modified by boundary condition
a_domainCELL-centered physical domain
a_dxmesh spacing

Referenced by ~FaceNodeBC().

◆ applyInhomogeneousBCs() [2/2]

virtual void FaceNodeBC::applyInhomogeneousBCs ( FArrayBox a_state,
const Box a_domain,
Real  a_dx 
) const
protectedvirtual

Apply inhomogeneous boundary conditions on this face.

Parameters
a_stateNODE-centered data to be modified by boundary condition
a_domainCELL-centered physical domain
a_dxmesh spacing

◆ applyHomogeneousBCs() [1/2]

virtual void FaceNodeBC::applyHomogeneousBCs ( FArrayBox a_state,
const ProblemDomain domain,
Real  a_dx 
) const
protectedvirtual

Apply homogeneous boundary conditions on this face.

Parameters
a_stateNODE-centered data to be modified by boundary condition
domainCELL-centered physical domain
a_dxmesh spacing

Referenced by ~FaceNodeBC().

◆ applyHomogeneousBCs() [2/2]

virtual void FaceNodeBC::applyHomogeneousBCs ( FArrayBox a_state,
const Box domain,
Real  a_dx 
) const
protectedvirtual

Apply homogeneous boundary conditions on this face.

Parameters
a_stateNODE-centered data to be modified by boundary condition
domainCELL-centered physical domain
a_dxmesh spacing

◆ applyEitherBCs() [1/2]

virtual void FaceNodeBC::applyEitherBCs ( FArrayBox a_state,
const ProblemDomain domain,
Real  a_dx,
bool  a_homogeneous 
) const
protectedvirtual

Apply boundary conditions on this face.

Parameters
a_stateNODE-centered data to be modified by boundary condition
domainCELL-centered physical domain
a_dxmesh spacing
a_homogeneousflag for homogeneous boundary condition

Referenced by ~FaceNodeBC().

◆ applyEitherBCs() [2/2]

virtual void FaceNodeBC::applyEitherBCs ( FArrayBox a_state,
const Box domain,
Real  a_dx,
bool  a_homogeneous 
) const
protectedvirtual

Apply boundary conditions on this face.

Parameters
a_stateNODE-centered data to be modified by boundary condition
domainCELL-centered physical domain
a_dxmesh spacing
a_homogeneousflag for homogeneous boundary condition

◆ applyBCs()

virtual void FaceNodeBC::applyBCs ( const Box a_bcbox,
FArrayBox a_state,
const FArrayBox a_neumfac,
const FArrayBox a_dircfac,
const FArrayBox a_inhmval,
Real  a_dx 
) const
protectedvirtual

Apply boundary condition A*dphi/dx + B*phi = C, with the coefficients having been set in fillBCValues().

Parameters
a_bcboxNODEs on this boundary face
a_stateNODE-centered data to be modified by boundary condition
a_neumfaccoefficients of dphi/dx
a_dircfaccoefficients of phi
a_inhmvalconstant coefficients
a_dxmesh spacing

Referenced by ~FaceNodeBC().

◆ fillBCValues() [1/2]

virtual void FaceNodeBC::fillBCValues ( FArrayBox a_neumfac,
FArrayBox a_dircfac,
FArrayBox a_inhmval,
Real  a_dx,
const ProblemDomain domain 
) const
protectedpure virtual

Set A and B and C in the boundary condition A*dphi/dx + B*phi = C.
The FArrayBoxes are all based on the NODEs of this face.

Need this function in derived class.

Parameters
a_neumfaccoefficients of dphi/dx
a_dircfaccoefficients of phi
a_inhmvalconstant coefficients
a_dxmesh spacing
domainCELL-centered physical domain

Referenced by ~FaceNodeBC().

◆ fillBCValues() [2/2]

virtual void FaceNodeBC::fillBCValues ( FArrayBox a_neumfac,
FArrayBox a_dircfac,
FArrayBox a_inhmval,
Real  a_dx,
const Box domain 
) const
protectedpure virtual

Set A and B and C in the boundary condition A*dphi/dx + B*phi = C.
The FArrayBoxes are all based on the NODEs of this face.

Need this function in derived class.

Parameters
a_neumfaccoefficients of dphi/dx
a_dircfaccoefficients of phi
a_inhmvalconstant coefficients
a_dxmesh spacing
domainCELL-centered physical domain

◆ operator=()

virtual void FaceNodeBC::operator= ( const FaceNodeBC )
inlineprivatevirtual

Friends And Related Function Documentation

◆ DomainNodeBC

friend class DomainNodeBC
friend

Member Data Documentation

◆ m_side

Side::LoHiSide FaceNodeBC::m_side
protected

low or high face

◆ m_direction

int FaceNodeBC::m_direction
protected

dimension of face

◆ m_components

Interval FaceNodeBC::m_components
protected

components of data


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