#include <NodeBC.H>
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.
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 FaceNodeBC * | new_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) |
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 |
FaceNodeBC::FaceNodeBC | ( | ) | [inline] |
Default constructor, sets interval to (-1:-1).
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::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.
virtual FaceNodeBC::~FaceNodeBC | ( | ) | [inline, virtual] |
Destructor.
FaceNodeBC::FaceNodeBC | ( | const FaceNodeBC & | ) | [inline, private] |
virtual FaceNodeBC* FaceNodeBC::new_boxBC | ( | ) | const [protected, pure virtual] |
Virtual constructor workaround. Need this in derived class.
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).
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.
virtual void FaceNodeBC::applyInhomogeneousBCs | ( | FArrayBox & | a_state, | |
const ProblemDomain & | a_domain, | |||
Real | a_dx | |||
) | const [protected, virtual] |
Apply inhomogeneous boundary conditions on this face.
a_state | NODE-centered data to be modified by boundary condition |
a_domain | CELL-centered physical domain |
a_dx | mesh spacing |
virtual void FaceNodeBC::applyInhomogeneousBCs | ( | FArrayBox & | a_state, | |
const Box & | a_domain, | |||
Real | a_dx | |||
) | const [protected, virtual] |
Apply inhomogeneous boundary conditions on this face.
a_state | NODE-centered data to be modified by boundary condition |
a_domain | CELL-centered physical domain |
a_dx | mesh spacing |
virtual void FaceNodeBC::applyHomogeneousBCs | ( | FArrayBox & | a_state, | |
const ProblemDomain & | domain, | |||
Real | a_dx | |||
) | const [protected, virtual] |
Apply homogeneous boundary conditions on this face.
a_state | NODE-centered data to be modified by boundary condition |
domain | CELL-centered physical domain |
a_dx | mesh spacing |
virtual void FaceNodeBC::applyHomogeneousBCs | ( | FArrayBox & | a_state, | |
const Box & | domain, | |||
Real | a_dx | |||
) | const [protected, virtual] |
Apply homogeneous boundary conditions on this face.
a_state | NODE-centered data to be modified by boundary condition |
domain | CELL-centered physical domain |
a_dx | mesh spacing |
virtual void FaceNodeBC::applyEitherBCs | ( | FArrayBox & | a_state, | |
const ProblemDomain & | domain, | |||
Real | a_dx, | |||
bool | a_homogeneous | |||
) | const [protected, virtual] |
Apply boundary conditions on this face.
a_state | NODE-centered data to be modified by boundary condition |
domain | CELL-centered physical domain |
a_dx | mesh spacing |
a_homogeneous | flag for homogeneous boundary condition |
virtual void FaceNodeBC::applyEitherBCs | ( | FArrayBox & | a_state, | |
const Box & | domain, | |||
Real | a_dx, | |||
bool | a_homogeneous | |||
) | const [protected, virtual] |
Apply boundary conditions on this face.
a_state | NODE-centered data to be modified by boundary condition |
domain | CELL-centered physical domain |
a_dx | mesh spacing |
a_homogeneous | flag for homogeneous boundary condition |
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 [protected, virtual] |
Apply boundary condition A*dphi/dx + B*phi = C, with the coefficients having been set in fillBCValues().
a_bcbox | NODEs on this boundary face |
a_state | NODE-centered data to be modified by boundary condition |
a_neumfac | coefficients of dphi/dx |
a_dircfac | coefficients of phi |
a_inhmval | constant coefficients |
a_dx | mesh spacing |
virtual void FaceNodeBC::fillBCValues | ( | FArrayBox & | a_neumfac, | |
FArrayBox & | a_dircfac, | |||
FArrayBox & | a_inhmval, | |||
Real | a_dx, | |||
const ProblemDomain & | domain | |||
) | const [protected, pure 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.
a_neumfac | coefficients of dphi/dx |
a_dircfac | coefficients of phi |
a_inhmval | constant coefficients |
a_dx | mesh spacing |
domain | CELL-centered physical domain |
virtual void FaceNodeBC::fillBCValues | ( | FArrayBox & | a_neumfac, | |
FArrayBox & | a_dircfac, | |||
FArrayBox & | a_inhmval, | |||
Real | a_dx, | |||
const Box & | domain | |||
) | const [protected, pure 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.
a_neumfac | coefficients of dphi/dx |
a_dircfac | coefficients of phi |
a_inhmval | constant coefficients |
a_dx | mesh spacing |
domain | CELL-centered physical domain |
virtual void FaceNodeBC::operator= | ( | const FaceNodeBC & | ) | [inline, private, virtual] |
friend class DomainNodeBC [friend] |
Side::LoHiSide FaceNodeBC::m_side [protected] |
low or high face
int FaceNodeBC::m_direction [protected] |
dimension of face
Interval FaceNodeBC::m_components [protected] |
components of data