PatchGodunov Class Reference

#include <PatchGodunov.H>

Collaboration diagram for PatchGodunov:

Collaboration graph
[legend]

List of all members.


Detailed Description

The base class PatchGodunov provides an implementation of a second-order, unsplit Godunov method acting on a single grid/patch. PatchGodunov provides an interface to the level integrator, LevelGodunov, which manages the entire level and flux corrections (via flux registers) to the coarser and finer levels.

Public Member Functions

 PatchGodunov ()
 Constructor.
virtual ~PatchGodunov ()
 Destructor.
virtual void define (const ProblemDomain &a_domain, const Real &a_dx, const GodunovPhysics *const a_gdnvPhysicsPtr, 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)
 Define the object.
virtual void setCurrentTime (const Real &a_currentTime)
 Set the current time before calling updateState, computeWHalf, computeUpdate.
virtual void setCurrentBox (const Box &a_currentBox)
 Set the current box before calling updateState, computeWHalf, computeUpdate.
virtual void updateState (FArrayBox &a_U, FluxBox &a_F, Real &a_maxWaveSpeed, const FArrayBox &a_S, const Real &a_dt, const Box &a_box)
 Update the conserved variables and return the fluxes used to do this.
virtual void updateState (FArrayBox &a_U, FluxBox &a_F, FluxBox &a_wHalf, Real &a_maxWaveSpeed, const FArrayBox &a_S, const Real &a_dt, const Box &a_box)
virtual void computeWHalf (FluxBox &a_WHalf, const FArrayBox &a_U, const FArrayBox &a_S, const Real &a_dt, const Box &a_box)
 Compute the time-centered values of the primitive variables on cell faces.
virtual void computeUpdate (FArrayBox &a_dU, FluxBox &a_F, const FArrayBox &a_U, const FluxBox &a_WHalf, const Real &a_dt, const Box &a_box)
 Compute the increment in the conserved variables from face variables.
void computeFluxes (FluxBox &a_F, const FluxBox &a_WHalf, const Box &a_box)
 Compute fluxes from primitive variables on faces.
void CTUNormalPred (FArrayBox &a_WMinus, FArrayBox &a_WPlus, const Real &a_dt, const Real &a_dx, const FArrayBox &a_W, const FArrayBox &a_flat, const int &a_dir, const Box &a_box)
 CTU normal predictor.
void PLMNormalPred (FArrayBox &a_WMinus, FArrayBox &a_WPlus, const Real &a_dt, const Real &a_dx, const FArrayBox &a_W, const FArrayBox &a_flat, const int &a_dir, const Box &a_box)
 PLM normal predictor.
void PPMNormalPred (FArrayBox &a_WMinus, FArrayBox &a_WPlus, const Real &a_dt, const Real &a_dx, const FArrayBox &a_W, const FArrayBox &a_flat, const int &a_dir, const Box &a_box)
 PPM normal predictor.
GodunovPhysicsgetGodunovPhysicsPtr ()
 Accessor to get at the GodunovPhysics object.
virtual bool isDefined () const
 Is the object completely defined.
void highOrderLimiter (bool a_highOrderLimiter)
 Set whether to use high-order limiter.

Protected Attributes

ProblemDomain m_domain
Real m_dx
GodunovPhysicsm_gdnvPhysics
GodunovUtilities m_util
int m_normalPredOrder
bool m_useFourthOrderSlopes
bool m_usePrimLimiting
bool m_useCharLimiting
bool m_useFlattening
bool m_useArtificialViscosity
Real m_artificialViscosity
Real m_currentTime
bool m_isCurrentTimeSet
Box m_currentBox
bool m_isCurrentBoxSet
bool m_isDefined
bool m_highOrderLimiter

Private Member Functions

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

Constructor & Destructor Documentation

PatchGodunov::PatchGodunov (  ) 

Constructor.

virtual PatchGodunov::~PatchGodunov (  )  [virtual]

Destructor.

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

References MayDay::Error().


Member Function Documentation

virtual void PatchGodunov::define ( const ProblemDomain a_domain,
const Real a_dx,
const GodunovPhysics *const   a_gdnvPhysicsPtr,
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 
) [virtual]

Define the object.

virtual void PatchGodunov::setCurrentTime ( const Real a_currentTime  )  [virtual]

Set the current time before calling updateState, computeWHalf, computeUpdate.

virtual void PatchGodunov::setCurrentBox ( const Box a_currentBox  )  [virtual]

Set the current box before calling updateState, computeWHalf, computeUpdate.

virtual void PatchGodunov::updateState ( FArrayBox a_U,
FluxBox a_F,
Real a_maxWaveSpeed,
const FArrayBox a_S,
const Real a_dt,
const Box a_box 
) [virtual]

Update the conserved variables and return the fluxes used to do this.

Update the conserved variables and return the final fluxes that were used for this. Compute the fluxes using a second-order, unsplit Godunov method based on the input conserved variables, a_U, and source terms, a_S. If there are no source terms then a_S should be null constructed. Also return the maximum wave speed.

virtual void PatchGodunov::updateState ( FArrayBox a_U,
FluxBox a_F,
FluxBox a_wHalf,
Real a_maxWaveSpeed,
const FArrayBox a_S,
const Real a_dt,
const Box a_box 
) [virtual]

virtual void PatchGodunov::computeWHalf ( FluxBox a_WHalf,
const FArrayBox a_U,
const FArrayBox a_S,
const Real a_dt,
const Box a_box 
) [virtual]

Compute the time-centered values of the primitive variables on cell faces.

This API is used in cases where some operation over the whole level must be performed on the face-centered variables prior to the final difference update. Examples include incompressible flow and MHD, in which it is necessary to compute the projection of a face-centered vector field on its divergence-free part. To complete the differencing, it is necessary to call the member function computeUpdate.

virtual void PatchGodunov::computeUpdate ( FArrayBox a_dU,
FluxBox a_F,
const FArrayBox a_U,
const FluxBox a_WHalf,
const Real a_dt,
const Box a_box 
) [virtual]

Compute the increment in the conserved variables from face variables.

Compute dU = dt*dUdt, the change in the conserved variables over the time step. The fluxes are returned are suitable for use in refluxing.

void PatchGodunov::computeFluxes ( FluxBox a_F,
const FluxBox a_WHalf,
const Box a_box 
)

Compute fluxes from primitive variables on faces.

void PatchGodunov::CTUNormalPred ( FArrayBox a_WMinus,
FArrayBox a_WPlus,
const Real a_dt,
const Real a_dx,
const FArrayBox a_W,
const FArrayBox a_flat,
const int &  a_dir,
const Box a_box 
)

CTU normal predictor.

Compute the increments in the characteristic amplitudes using CTU (for CTU, increments are zero)

void PatchGodunov::PLMNormalPred ( FArrayBox a_WMinus,
FArrayBox a_WPlus,
const Real a_dt,
const Real a_dx,
const FArrayBox a_W,
const FArrayBox a_flat,
const int &  a_dir,
const Box a_box 
)

PLM normal predictor.

Compute the increments in the characteristic amplitudes using PLM

void PatchGodunov::PPMNormalPred ( FArrayBox a_WMinus,
FArrayBox a_WPlus,
const Real a_dt,
const Real a_dx,
const FArrayBox a_W,
const FArrayBox a_flat,
const int &  a_dir,
const Box a_box 
)

PPM normal predictor.

Compute the increments in the characteristic amplitudes using PPM

GodunovPhysics* PatchGodunov::getGodunovPhysicsPtr (  ) 

Accessor to get at the GodunovPhysics object.

virtual bool PatchGodunov::isDefined (  )  const [virtual]

Is the object completely defined.

Return true if the object is completely defined.

void PatchGodunov::highOrderLimiter ( bool  a_highOrderLimiter  ) 

Set whether to use high-order limiter.

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

References MayDay::Error().


Member Data Documentation

Real PatchGodunov::m_dx [protected]

bool PatchGodunov::m_isDefined [protected]


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

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