#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
1.5.5