PatchGodunov Class Reference

#include <PatchGodunov.H>

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.
const ProblemDomainproblemDomain () const
 Get the problem domain for this object.
virtual bool isDefined () const
 Is the object completely defined.
void highOrderLimiter (bool a_highOrderLimiter)
 Set whether to use high-order limiter.
Real dx () const
 Returns the grid spacing at this level.
virtual void expressions (HDF5HeaderData &a_holder) const

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

Private Member Functions

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

Constructor & Destructor Documentation

PatchGodunov::PatchGodunov (  ) 

Constructor.

virtual PatchGodunov::~PatchGodunov (  )  [virtual]

Destructor.

PatchGodunov::PatchGodunov ( const PatchGodunov  )  [private]


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.

Parameters:
a_domain  problem domain
a_dx  grid spacing
a_gdnvPhysicsPtr  physics class
a_normalPredOrder  order of the normal predictorr: 0 for CTU, 1 for PLM, 2 for PPM
a_useFourthOrderSlopes  whether to use 4th-order slopes
a_usePrimLimiting  whether to apply slope limiting to primitive variables
a_useCharLimiting  whether to apply slope limiting to characteristic variables
a_useFlattening  whether to apply slope flattening
a_useArtificialViscosity  whether to apply artificial viscosity
a_artificialViscosity  artificial viscosity coefficient

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.

Parameters:
a_U  conserved variables, updated in this routine
a_F  fluxes from 2nd-order unsplit Godunov method, returned
a_maxWaveSpeed  maximum wave speed, returned
a_S  source terms, or null constructed if none
a_dt  time step
a_box  Box of a_U

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]

Parameters:
a_U  conserved variables, updated in this routine
a_F  fluxes from 2nd-order unsplit Godunov method, returned
a_wHalf  primitive variables extrapolated to cell faces and a half time step
a_maxWaveSpeed  maximum wave speed, returned
a_S  source terms, or null constructed if none
a_dt  time step
a_box  Box of a_U

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().

Parameters:
a_WHalf  primitive variables extrapolated to cell faces and a half time step
a_U  conserved variables at beginning of time step
a_S  source terms, or null constructed if none
a_dt  time step
a_box  Box of a_U

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*dU/dt, the change in the conserved variables over the time step. The fluxes are returned are suitable for use in refluxing.

Parameters:
a_dU  change in conserved variables over the time step
a_F  fluxes for refluxing
a_U  conserved variables at beginning of time step
a_WHalf  primitive variables extrapolated to cell faces and a half time step
a_dt  time step
a_box  Box of a_U

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.

const ProblemDomain& PatchGodunov::problemDomain (  )  const

Get the problem domain for this 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.

Real PatchGodunov::dx (  )  const

Returns the grid spacing at this level.

virtual void PatchGodunov::expressions ( HDF5HeaderData a_holder  )  const [inline, virtual]

void PatchGodunov::operator= ( const PatchGodunov  )  [private]


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 Fri Apr 5 04:25:15 2019 for Chombo + EB by  doxygen 1.5.5