Chombo + EB + MF
3.2
|
#include <MOLPhysics.H>
Public Member Functions | |
MOLPhysics () | |
Constructor. More... | |
virtual | ~MOLPhysics () |
Destructor. More... | |
PhysIBC * | getPhysIBC () const |
Get the initial and boundary condition object. More... | |
void | setPhysIBC (PhysIBC *a_bc) |
Set the initial and boundary condition object. More... | |
virtual void | define (const ProblemDomain &a_domain, const Real &a_dx) |
Define the object. More... | |
virtual void | setCurrentBox (const Box &a_currentBox) |
Set the current box (default implementation - do nothing) More... | |
virtual bool | fourthOrderArtificialViscosityIsDefined () const |
Returns true if 4th-order artificial viscosity is defined. More... | |
virtual void | setFourthOrderArtificialViscosityParameter (const Real &M0sq) |
Defines fourth-order artifical viscosity strong shock threshold. More... | |
virtual Real | getFourthOrderArtificialViscosityParameter () const |
Returns fourth-order artifical viscosity strong shock threshold. More... | |
virtual Real | getMaxWaveSpeed (const FArrayBox &a_U, const Box &a_box)=0 |
Compute the maximum wave speed. More... | |
virtual void | soundSpeed (FArrayBox &a_speed, const FArrayBox &a_U, const Box &a_box) |
Compute the maximum wave speed. More... | |
virtual MOLPhysics * | new_molPhysics () const =0 |
Object factory for this class. More... | |
virtual void | copyTo (MOLPhysics *a_mol) const |
Copy our values into one of us. More... | |
virtual int | numConserved () const =0 |
Number of conserved variables. More... | |
virtual Vector< string > | stateNames ()=0 |
Names of the conserved variables. More... | |
virtual int | numFluxes () const =0 |
Number of flux variables. More... | |
virtual void | getFlux (FArrayBox &a_flux, const FArrayBox &a_WHalf, const int &a_dir, const Box &a_box) |
Compute the fluxes from primitive variable values on a face. More... | |
virtual bool | isDefined () const |
Is the object completely defined. More... | |
virtual int | numPrimitives () const =0 |
Number of primitive variables. More... | |
virtual void | riemann (FArrayBox &a_WStar, const FArrayBox &a_WLeft, const FArrayBox &a_WRight, const FArrayBox &a_W, const Real &a_time, const int &a_dir, const Box &a_box)=0 |
Compute the solution to the Riemann problem. More... | |
virtual void | consToPrim (FArrayBox &a_W, const FArrayBox &a_U, const Box &a_box)=0 |
Compute primitive variables from conserved variables. More... | |
virtual Interval | velocityInterval () const =0 |
Interval within the primitive variables corresponding to the velocities. More... | |
virtual Interval | vectorFluxInterval () const |
Interval within the flux variables corresponding to vector flux. More... | |
virtual int | pressureIndex ()=0 |
Component index within the primitive variables of the pressure. More... | |
virtual Real | smallPressure ()=0 |
Used to limit the absolute value of a "pressure" difference. More... | |
virtual int | bulkModulusIndex ()=0 |
Component index within the primitive variables of the bulk modulus. More... | |
virtual int | densityIndex () |
Component index within the primitive variables of the density. More... | |
virtual void | artVisc (FArrayBox &a_F, const FArrayBox &a_U, const Real &a_artificialViscosity, const Real &a_currentTime, const int &a_dir, const Box &a_box) |
Compute the artificial viscosity contribution to the flux. More... | |
virtual void | expressions (HDF5HeaderData &a_holder) const |
Protected Attributes | |
bool | m_isDefined |
ProblemDomain | m_domain |
Real | m_dx |
MOLUtilities | m_util |
bool | m_useFourthOrderArtificialViscosity |
Real | m_M0sq |
PhysIBC * | m_bc |
bool | m_isBCSet |
Private Member Functions | |
MOLPhysics & | operator= (const MOLPhysics &a_input) |
MOLPhysics (const MOLPhysics &a_input) | |
The base class MOLPhysics provides the physics-dependent components for a higher-order method for a single patch: Riemann solver and transformations between conserved, primitive, and flux variables. This class is essentially pure virtual, i.e. all of its member functions are virtual, and the ones that have default implementations are ones which are optionally defined, i.e. the default definition is to send an error message. Physics-dependent versions of this class that are required in real applications are derived from this class by inheritance.
MOLPhysics::MOLPhysics | ( | ) |
Constructor.
|
virtual |
Destructor.
|
private |
PhysIBC* MOLPhysics::getPhysIBC | ( | ) | const |
Get the initial and boundary condition object.
void MOLPhysics::setPhysIBC | ( | PhysIBC * | a_bc | ) |
Set the initial and boundary condition object.
|
virtual |
Define the object.
|
virtual |
Set the current box (default implementation - do nothing)
|
virtual |
Returns true if 4th-order artificial viscosity is defined.
|
virtual |
Defines fourth-order artifical viscosity strong shock threshold.
|
virtual |
Returns fourth-order artifical viscosity strong shock threshold.
Compute the maximum wave speed.
|
virtual |
Compute the maximum wave speed.
|
pure virtual |
Object factory for this class.
|
virtual |
Copy our values into one of us.
|
pure virtual |
Number of conserved variables.
Return the number of conserved variables.
|
pure virtual |
Names of the conserved variables.
Return the names of the conserved variables.
|
pure virtual |
Number of flux variables.
Return the number of flux variables. This can be greater than the number of conserved variables if addition fluxes/face-centered quantities are computed.
|
virtual |
Compute the fluxes from primitive variable values on a face.
This has a default implementation which throws an error. The method is here so that the default implementation of "computeUpdate" can use it and the user can supply it. It has an implementation so if the user redefines "computeUpdate" they aren't force to implement "getFlux" - which is only used by the default implementation of "computeUpdate".
|
virtual |
Is the object completely defined.
Return true if the object is completely defined.
|
pure virtual |
Number of primitive variables.
Return the number of primitive variables. This may be greater than the number of conserved variables if derived/redundant quantities are also stored for convenience.
|
pure virtual |
Compute the solution to the Riemann problem.
Given input left and right states in a direction, a_dir, compute a Riemann problem and generate fluxes at the faces within a_box.
a_WStar | face-centered solution to Riemann problem |
a_WLeft | left state, on cells to left of each face |
a_WRight | right state, on cells to right of each face |
a_W | state on cells, used to set boundary conditions |
a_time | current time |
a_dir | direction of faces |
a_box | face-centered box on which to set a_WStar |
|
pure virtual |
Compute primitive variables from conserved variables.
|
pure virtual |
Interval within the primitive variables corresponding to the velocities.
Return the interval of component indices within the primitive variable of the velocities. Used for slope flattening (slope computation) and computing the divergence of the velocity (artificial viscosity).
|
virtual |
Interval within the flux variables corresponding to vector flux.
|
pure virtual |
Component index within the primitive variables of the pressure.
Return the component index withn the primitive variables for the pressure. Used for slope flattening (slope computation).
|
pure virtual |
Used to limit the absolute value of a "pressure" difference.
Return a value that is used by slope flattening to limit (away from zero) the absolute value of a slope in the pressureIndex() component (slope computation).
|
pure virtual |
Component index within the primitive variables of the bulk modulus.
Return the component index withn the primitive variables for the bulk modulus. Used for slope flattening (slope computation) used as a normalization to measure shock strength.
|
virtual |
Component index within the primitive variables of the density.
Return the component index within the primitive variables for the density. Used for fourth-order accurate artificial viscosity.
|
virtual |
Compute the artificial viscosity contribution to the flux.
Compute the artificial viscosity contribution to the flux. This has a default implementation but this can be overridded as needed.
a_box is the valid cell-centered box.
Increment a_F on all a_dir-faces of a_box using a_U on all cells of bx1inDomain = grow(a_box, 1) & m_domain.
|
inlinevirtual |
|
private |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |