#include <PhysIBC.H>
Virtual base class through which a user specifies the initial and boundary conditions for a hyperbolic system of PDEs.
Public Member Functions | |
PhysIBC () | |
Constructor. | |
virtual | ~PhysIBC () |
Destructor. | |
virtual void | define (const ProblemDomain &a_domain, const Real &a_dx) |
Define the object. | |
virtual PhysIBC * | new_physIBC ()=0 |
Factory method - this object is its own factory. | |
virtual void | initialize (LevelData< FArrayBox > &a_U)=0 |
Set up initial conditions. | |
virtual void | primBC (FArrayBox &a_WGdnv, const FArrayBox &a_Wextrap, const FArrayBox &a_W, const int &a_dir, const Side::LoHiSide &a_side, const Real &a_time)=0 |
Set boundary primitive values. | |
virtual void | setBdrySlopes (FArrayBox &a_dW, const FArrayBox &a_W, const int &a_dir, const Real &a_time)=0 |
Set boundary slopes. | |
virtual void | artViscBC (FArrayBox &a_F, const FArrayBox &a_U, const FArrayBox &a_divVel, const int &a_dir, const Real &a_time)=0 |
Adjust boundary fluxes to account for artificial viscosity. | |
virtual void | getBoundaryFaces (Box &a_boundaryBox, const Box &a_dataFaceBox, const int &a_dir, const Side::LoHiSide &a_side) |
This function is called by primBC() to get boundary faces of a Box. | |
Protected Attributes | |
bool | m_isDefined |
ProblemDomain | m_domain |
Real | m_dx |
Private Member Functions | |
void | operator= (const PhysIBC &) |
PhysIBC (const PhysIBC &) |
PhysIBC::PhysIBC | ( | ) |
Constructor.
virtual PhysIBC::~PhysIBC | ( | ) | [virtual] |
Destructor.
PhysIBC::PhysIBC | ( | const PhysIBC & | ) | [private] |
virtual void PhysIBC::define | ( | const ProblemDomain & | a_domain, | |
const Real & | a_dx | |||
) | [virtual] |
Define the object.
a_domain | problem domain index space |
a_dx | grid spacing |
virtual PhysIBC* PhysIBC::new_physIBC | ( | ) | [pure virtual] |
Factory method - this object is its own factory.
Return a pointer to a new PhysIBC object with m_isDefined = false (i.e., its define() must be called before it is used).
Implemented in AdvectTestIBC, ExplosionIBC, RampIBC, and WaveIBC.
Set up initial conditions.
a_U | conserved variables |
Implemented in AdvectTestIBC, ExplosionIBC, RampIBC, and WaveIBC.
virtual void PhysIBC::primBC | ( | FArrayBox & | a_WGdnv, | |
const FArrayBox & | a_Wextrap, | |||
const FArrayBox & | a_W, | |||
const int & | a_dir, | |||
const Side::LoHiSide & | a_side, | |||
const Real & | a_time | |||
) | [pure virtual] |
Set boundary primitive values.
a_WGdnv | primitive variables at face centers; this routine replaces values along boundary faces of domain |
a_Wextrap | extrapolated primitive variables to a_side of cells in direction a_dir (cell-centered data) |
a_W | primitive variables at start of time step (cell-centered data) |
a_dir | normal direction of the domain where boundary condition fluxes needed |
a_side | side of the domain where boundary condition fluxes needed |
a_time | physical time of the problem, for time-varying boundary conditions |
Implemented in AdvectTestIBC, ExplosionIBC, RampIBC, and WaveIBC.
virtual void PhysIBC::setBdrySlopes | ( | FArrayBox & | a_dW, | |
const FArrayBox & | a_W, | |||
const int & | a_dir, | |||
const Real & | a_time | |||
) | [pure virtual] |
Set boundary slopes.
The boundary slopes in a_dW are already set to one-sided difference approximations. If this function doesn't change them, they will be used for the slopes at the boundaries.
a_dW | face-centered differences of primitive variables |
a_W | primitive variables at start of time step (cell-centered data) |
a_dir | normal direction of faces |
a_time | physical time of the problem, for time-varying boundary conditions |
Implemented in AdvectTestIBC, ExplosionIBC, RampIBC, and WaveIBC.
virtual void PhysIBC::artViscBC | ( | FArrayBox & | a_F, | |
const FArrayBox & | a_U, | |||
const FArrayBox & | a_divVel, | |||
const int & | a_dir, | |||
const Real & | a_time | |||
) | [pure virtual] |
Adjust boundary fluxes to account for artificial viscosity.
a_F | face-centered flux, to be adjusted on boundary |
a_U | cell-centered conserved variables |
a_divVel | face-centered divergence of cell-centered velocity |
a_dir | normal direction of faces |
a_time | physical time of the problem, for time-varying boundary conditions |
Implemented in AdvectTestIBC, ExplosionIBC, RampIBC, and WaveIBC.
virtual void PhysIBC::getBoundaryFaces | ( | Box & | a_boundaryBox, | |
const Box & | a_dataFaceBox, | |||
const int & | a_dir, | |||
const Side::LoHiSide & | a_side | |||
) | [virtual] |
void PhysIBC::operator= | ( | const PhysIBC & | ) | [private] |
bool PhysIBC::m_isDefined [protected] |
ProblemDomain PhysIBC::m_domain [protected] |
Real PhysIBC::m_dx [protected] |