LevelGodunov Class Reference

#include <LevelGodunov.H>

Collaboration diagram for LevelGodunov:

Collaboration graph
[legend]

List of all members.


Detailed Description

Level Godunov - really a hyperbolic level integrator.

Public Member Functions

 LevelGodunov ()
 Default constructor.
 ~LevelGodunov ()
 Destructor.
void define (const DisjointBoxLayout &a_thisDisjointBoxLayout, const DisjointBoxLayout &a_coarserDisjointBoxLayout, const ProblemDomain &a_domain, const int &a_refineCoarse, const Real &a_dx, const GodunovPhysics *const a_godunovFactory, const int &a_normalPredOrder, const bool &a_useFourthOrderSlopes, const bool &a_usePrimLimiting, const bool &a_useCharLimiting, const bool &a_useFlattening, const bool &a_useArtificialViscosity, const Real &a_artificialViscosity, const bool &a_hasCoarser, const bool &a_hasFiner)
 Actual constructor.
Real step (LevelData< FArrayBox > &a_U, LevelData< FArrayBox > a_flux[CH_SPACEDIM], LevelFluxRegister &a_finerFluxRegister, LevelFluxRegister &a_coarserFluxRegister, const LevelData< FArrayBox > &a_S, const LevelData< FArrayBox > &a_UCoarseOld, const Real &a_TCoarseOld, const LevelData< FArrayBox > &a_UCoarseNew, const Real &a_TCoarseNew, const Real &a_time, const Real &a_dt)
 Take one timestep for this grid level.
void computeWHalf (LayoutData< FluxBox > &a_WHalf, LevelData< FArrayBox > &a_U, const LevelData< FArrayBox > &a_S, const LevelData< FArrayBox > &a_UCoarseOld, const Real &a_TCoarseOld, const LevelData< FArrayBox > &a_UCoarseNew, const Real &a_TCoarseNew, const Real &a_time, const Real &a_dt)
 To be added...
Real computeUpdate (LevelData< FArrayBox > &a_dU, LevelFluxRegister &a_finerFluxRegister, LevelFluxRegister &a_coarserFluxRegister, const LevelData< FArrayBox > &a_U, const LayoutData< FluxBox > &a_WHalf, const Real &a_time, const Real &a_dt)
 To be added...
Real getMaxWaveSpeed (const LevelData< FArrayBox > &a_U)
 Get maximum wave speed.
GodunovPhysicsgetGodunovPhysicsPtr ()
 get the godunovPhysics pointer from the PatchGodunov member
const GodunovPhysicsgetGodunovPhysicsPtrConst () const
void highOrderLimiter (bool a_highOrderLimiter)

Protected Attributes

DisjointBoxLayout m_grids
PatchGodunov m_patchGodunov
int m_numGhost
Copier m_exchangeCopier
LevelData< FArrayBoxm_U
PiecewiseLinearFillPatch m_patcher
Real m_dx
ProblemDomain m_domain
int m_refineCoarse
int m_numCons
int m_numFluxes
bool m_hasCoarser
bool m_hasFiner
int m_normalPredOrder
bool m_useFourthOrderSlopes
bool m_usePrimLimiting
bool m_useCharLimiting
bool m_useFlattening
bool m_useArtificialViscosity
Real m_artificialViscosity
bool m_isDefined

Private Member Functions

void operator= (const LevelGodunov &a_input)
 LevelGodunov (const LevelGodunov &a_input)

Constructor & Destructor Documentation

LevelGodunov::LevelGodunov (  ) 

Default constructor.

Object requires define() to be called before all other functions.

LevelGodunov::~LevelGodunov (  ) 

Destructor.

Destroys all objects created by define(). Passed in data references of define() are left alone.

LevelGodunov::LevelGodunov ( const LevelGodunov a_input  )  [inline, private]

References MayDay::Error().


Member Function Documentation

void LevelGodunov::define ( const DisjointBoxLayout a_thisDisjointBoxLayout,
const DisjointBoxLayout a_coarserDisjointBoxLayout,
const ProblemDomain a_domain,
const int &  a_refineCoarse,
const Real a_dx,
const GodunovPhysics *const   a_godunovFactory,
const int &  a_normalPredOrder,
const bool &  a_useFourthOrderSlopes,
const bool &  a_usePrimLimiting,
const bool &  a_useCharLimiting,
const bool &  a_useFlattening,
const bool &  a_useArtificialViscosity,
const Real a_artificialViscosity,
const bool &  a_hasCoarser,
const bool &  a_hasFiner 
)

Actual constructor.

Inside the routine, we cast away const-ness on the data members for the assignment. The arguments passed in are maintained const (coding standards). a_refine is the refinement ratio between this level and the next coarser level. For the coarsest level, an empty DisjointBoxLayout is passed in for coarserDisjointBoxLayout.

Real LevelGodunov::step ( LevelData< FArrayBox > &  a_U,
LevelData< FArrayBox a_flux[CH_SPACEDIM],
LevelFluxRegister a_finerFluxRegister,
LevelFluxRegister a_coarserFluxRegister,
const LevelData< FArrayBox > &  a_S,
const LevelData< FArrayBox > &  a_UCoarseOld,
const Real a_TCoarseOld,
const LevelData< FArrayBox > &  a_UCoarseNew,
const Real a_TCoarseNew,
const Real a_time,
const Real a_dt 
)

Take one timestep for this grid level.

For the coarsest level, UcoarseOld and UCoarseNew are empty LevelData<FArrayBox> objects. Also, either UCoarseOld or UCoarseNew might be empty to indicate that t(nf) = t(nc) the one grid is at the current time and interpolation is not required for boundary condition generation. U must be defined on the same DisjointBoxLayouts as were used in define(). a_flux is is used more generally to pass face-centered data in and out of the function. Coarse flux register is flux register with the next coarser level. Fine flux register is the flux register with the next finer level. To the finer level FR, this level is the coarse level. To the coarser level FR, this level is the fine level. If source terms do not exist, "a_S" should be null constructed and not defined (i.e. its define() should not be called).

void LevelGodunov::computeWHalf ( LayoutData< FluxBox > &  a_WHalf,
LevelData< FArrayBox > &  a_U,
const LevelData< FArrayBox > &  a_S,
const LevelData< FArrayBox > &  a_UCoarseOld,
const Real a_TCoarseOld,
const LevelData< FArrayBox > &  a_UCoarseNew,
const Real a_TCoarseNew,
const Real a_time,
const Real a_dt 
)

To be added...

Real LevelGodunov::computeUpdate ( LevelData< FArrayBox > &  a_dU,
LevelFluxRegister a_finerFluxRegister,
LevelFluxRegister a_coarserFluxRegister,
const LevelData< FArrayBox > &  a_U,
const LayoutData< FluxBox > &  a_WHalf,
const Real a_time,
const Real a_dt 
)

To be added...

Real LevelGodunov::getMaxWaveSpeed ( const LevelData< FArrayBox > &  a_U  ) 

Get maximum wave speed.

GodunovPhysics* LevelGodunov::getGodunovPhysicsPtr (  ) 

get the godunovPhysics pointer from the PatchGodunov member

Returns the pointer to the GodunovPhysics object which is used in the PatchGodunov class.

const GodunovPhysics* LevelGodunov::getGodunovPhysicsPtrConst (  )  const

void LevelGodunov::highOrderLimiter ( bool  a_highOrderLimiter  ) 

void LevelGodunov::operator= ( const LevelGodunov a_input  )  [inline, private]

References MayDay::Error().


Member Data Documentation

int LevelGodunov::m_numGhost [protected]

Real LevelGodunov::m_dx [protected]

int LevelGodunov::m_numCons [protected]

int LevelGodunov::m_numFluxes [protected]

bool LevelGodunov::m_hasCoarser [protected]

bool LevelGodunov::m_hasFiner [protected]

bool LevelGodunov::m_isDefined [protected]


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

Generated on Tue Apr 14 14:23:42 2009 for Chombo + EB by  doxygen 1.5.5