#include <AMRLevel.H>
This is an abstract base class for data at the same level of refinement within a hierarchy of levels. The concrete class derived from AMRLevel is called a physics class. The domain of a level is a disjoint union of rectangles in a logically rectangular index space. Data is defined within this domain. There is also a problem domain, which may be larger, within which data can, in theory, be interpolated from some coarser level.
AMRLevel is intimately entangled with the AMR class. The AMR contains a collection of AMRLevel objects which represent a hierarchy of levels of refinement. The class AMR is responsible for calling the correct member functions of AMRLevel. The user is responsible for implementing the physics class, and might never call any AMRLevel functions described here.
Public Member Functions | |
AMRLevel () | |
virtual | ~AMRLevel () |
virtual void | define (AMRLevel *a_coarser_level_ptr, const Box &a_problem_domain, int a_level, int a_ref_ratio) |
virtual void | define (AMRLevel *a_coarser_level_ptr, const ProblemDomain &a_problem_domain, int a_level, int a_ref_ratio) |
virtual Real | advance ()=0 |
virtual bool | convergedToSteadyState () |
virtual void | postTimeStep ()=0 |
virtual void | tagCells (IntVectSet &a_tags)=0 |
virtual void | tagCellsInit (IntVectSet &a_tags)=0 |
virtual void | preRegrid (int a_base_level, const Vector< Vector< Box > > &a_new_grids) |
virtual void | regrid (const Vector< Box > &a_new_grids)=0 |
virtual void | postRegrid (int a_base_level) |
virtual void | initialGrid (const Vector< Box > &a_new_grids)=0 |
virtual void | postInitialGrid (const bool a_restart) |
virtual void | initialData ()=0 |
virtual void | postInitialize ()=0 |
virtual void | conclude (int a_step) const |
I/O functions | |
virtual void | writeCheckpointHeader (HDF5Handle &a_handle) const =0 |
virtual void | writeCheckpointLevel (HDF5Handle &a_handle) const =0 |
virtual void | readCheckpointHeader (HDF5Handle &a_handle)=0 |
virtual void | readCheckpointLevel (HDF5Handle &a_handle)=0 |
virtual void | writePlotHeader (HDF5Handle &a_handle) const =0 |
virtual void | writePlotLevel (HDF5Handle &a_handle) const =0 |
virtual void | writeCustomPlotFile (const std::string &a_prefix, int a_step) const |
Parameter-setting functions | |
virtual void | finerLevelPtr (AMRLevel *a_finer_level_ptr) |
virtual void | dt (Real a_dt) |
virtual void | time (Real a_time) |
virtual void | initialDtMultiplier (Real a_initial_dt_multiplier) |
Access functions | |
virtual Real | dt () const |
virtual Real | time () const |
virtual Real | initialDtMultiplier () const |
virtual const ProblemDomain & | problemDomain () const |
virtual Vector< Box > | boxes () const |
bool | isDefined () const |
bool | hasCoarserLevel () const |
bool | hasFinerLevel () const |
virtual int | level () const |
virtual int | refRatio () const |
virtual Real | computeDt ()=0 |
virtual Real | computeInitialDt ()=0 |
Vector< AMRLevel * > | getAMRLevelHierarchy () |
Retrieve an array of all of the AMRLevel objects in the entire hierarchy. | |
Static Public Member Functions | |
static int | verbosity () |
static void | verbosity (int a_verbosity) |
Protected Attributes | |
ProblemDomain | m_problem_domain |
Vector< Box > | m_level_grids |
int | m_level |
int | m_ref_ratio |
Real | m_initial_dt_multiplier |
Real | m_dt |
Real | m_time |
AMRLevel * | m_coarser_level_ptr |
AMRLevel * | m_finer_level_ptr |
bool | m_isDefined |
Static Protected Attributes | |
static int | s_verbosity |
AMRLevel::AMRLevel | ( | ) |
Default constructor.
virtual AMRLevel::~AMRLevel | ( | ) | [virtual] |
Destructor.
virtual void AMRLevel::define | ( | AMRLevel * | a_coarser_level_ptr, | |
const Box & | a_problem_domain, | |||
int | a_level, | |||
int | a_ref_ratio | |||
) | [virtual] |
Defines this AMRLevel.
Reimplemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
virtual void AMRLevel::define | ( | AMRLevel * | a_coarser_level_ptr, | |
const ProblemDomain & | a_problem_domain, | |||
int | a_level, | |||
int | a_ref_ratio | |||
) | [virtual] |
Defines this AMRLevel.
Reimplemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
virtual Real AMRLevel::advance | ( | ) | [pure virtual] |
Advances this level by one time step. Returns an estimate of the new time step.
This is a pure virtual function and MUST be defined in the derived class.
Implemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
virtual bool AMRLevel::convergedToSteadyState | ( | ) | [inline, virtual] |
Return true if the solution has converged to a steady state for this level. Default version always returns false.
virtual void AMRLevel::postTimeStep | ( | ) | [pure virtual] |
Things to do after advancing this level by one time step.
This is a pure virtual function and MUST be defined in the derived class.
Implemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
virtual void AMRLevel::tagCells | ( | IntVectSet & | a_tags | ) | [pure virtual] |
Creates tagged cells for dynamic mesh refinement.
This is a pure virtual function and MUST be defined in the derived class.
Implemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
virtual void AMRLevel::tagCellsInit | ( | IntVectSet & | a_tags | ) | [pure virtual] |
Creates tagged cells for mesh refinement at initialization.
This is a pure virtual function and MUST be defined in the derived class.
Implemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
virtual void AMRLevel::preRegrid | ( | int | a_base_level, | |
const Vector< Vector< Box > > & | a_new_grids | |||
) | [virtual] |
Performs any pre-regridding operations which are necessary.
This is not a pure virtual function to preserve compatibility with earlier versions of AMRLevel. The AMRLevel::preRegrid() instantiation is a no-op.
Redefines this level to have the specified domain a_new_grids.
This is a pure virtual function and MUST be defined in the derived class.
Implemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
virtual void AMRLevel::postRegrid | ( | int | a_base_level | ) | [virtual] |
Performs any post-regridding operations which are necessary.
This is not a pure virtual function to preserve compatibility with earlier versions of AMRLevel. The AMRLevel::postRegrid() instantiation is a no-op.
Initializes this level to have the specified domain a_new_grids.
This is a pure virtual function and MUST be defined in the derived class.
Implemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
virtual void AMRLevel::postInitialGrid | ( | const bool | a_restart | ) | [virtual] |
Performs operations required after the grid has been defined but before data initialization. This will also be called after readCheckpointLevel during a restart procedure with argument a_restart set to true.
Levels are accessed from finest to coarsest. The AMRLevel::postInitialGrid() instantiation is a no-op.
virtual void AMRLevel::initialData | ( | ) | [pure virtual] |
Initializes data.
This is a pure virtual function and MUST be defined in the derived class.
Implemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
virtual void AMRLevel::postInitialize | ( | ) | [pure virtual] |
Things to do after initialization.
This is a pure virtual function and MUST be defined in the derived class.
Implemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
virtual void AMRLevel::conclude | ( | int | a_step | ) | const [virtual] |
Override this method to have an AMRLevel subclass perform some operation upon the conclusion of a simulation. This is called when AMR::conclude() is called. The final step is passed to the method.
a_step | The last step in the simulation. |
virtual void AMRLevel::writeCheckpointHeader | ( | HDF5Handle & | a_handle | ) | const [pure virtual] |
Writes checkpoint header.
This is a pure virtual function and MUST be defined in the derived class.
Implemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
virtual void AMRLevel::writeCheckpointLevel | ( | HDF5Handle & | a_handle | ) | const [pure virtual] |
Write checkpoint data for this level.
This is a pure virtual function and MUST be defined in the derived class.
Implemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
virtual void AMRLevel::readCheckpointHeader | ( | HDF5Handle & | a_handle | ) | [pure virtual] |
Reads checkpoint header.
This is a pure virtual function and MUST be defined in the derived class.
Implemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
virtual void AMRLevel::readCheckpointLevel | ( | HDF5Handle & | a_handle | ) | [pure virtual] |
Reads checkpoint data for this level.
This is a pure virtual function and MUST be defined in the derived class.
Implemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
virtual void AMRLevel::writePlotHeader | ( | HDF5Handle & | a_handle | ) | const [pure virtual] |
Writes plot header.
This is a pure virtual function and MUST be defined in the derived class.
Implemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
virtual void AMRLevel::writePlotLevel | ( | HDF5Handle & | a_handle | ) | const [pure virtual] |
Write plot file for this level.
This is a pure virtual function and MUST be defined in the derived class.
Implemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
virtual void AMRLevel::writeCustomPlotFile | ( | const std::string & | a_prefix, | |
int | a_step | |||
) | const [virtual] |
This allows one to write a plot file in a non-HDF5 format. It is called only at refinement level 0, so AMR data will have to be handled by the implementer.
a_prefix | A prefix for the custom plot file name. | |
a_step | The current time step. |
virtual void AMRLevel::finerLevelPtr | ( | AMRLevel * | a_finer_level_ptr | ) | [virtual] |
Sets the pointer-to-finer-level member to a_finer_level_ptr.
virtual void AMRLevel::dt | ( | Real | a_dt | ) | [virtual] |
Sets the time step to a_dt.
virtual void AMRLevel::time | ( | Real | a_time | ) | [virtual] |
Sets the time to a_time.
virtual void AMRLevel::initialDtMultiplier | ( | Real | a_initial_dt_multiplier | ) | [virtual] |
Sets the initial dt multiplier to a_initial_dt_multiplier.
virtual Real AMRLevel::dt | ( | ) | const [virtual] |
Returns the current value of the time step.
virtual Real AMRLevel::time | ( | ) | const [virtual] |
Returns the current value of the time on this level.
virtual Real AMRLevel::initialDtMultiplier | ( | ) | const [virtual] |
Returns the initial dt multiplier.
virtual const ProblemDomain& AMRLevel::problemDomain | ( | ) | const [virtual] |
Returns the problem domain of this level.
bool AMRLevel::isDefined | ( | ) | const |
Returns true if any AMRLevel::define function has been called, false otherwise.
bool AMRLevel::hasCoarserLevel | ( | ) | const |
Returns true if a coarser level exists, is defined, and has a grid.
bool AMRLevel::hasFinerLevel | ( | ) | const |
Returns true if a finer level exists, is defined, and has a grid.
virtual int AMRLevel::level | ( | ) | const [virtual] |
Returns the index of this level
virtual int AMRLevel::refRatio | ( | ) | const [virtual] |
Returns the refinement ratio between this level and the next finer level.
virtual Real AMRLevel::computeDt | ( | ) | [pure virtual] |
Returns maximum stable time step for this level.
This is a pure virtual function and MUST be defined in the derived class.
Implemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
virtual Real AMRLevel::computeInitialDt | ( | ) | [pure virtual] |
Returns maximum stable time step for this level with initial data.
This is a pure virtual function and MUST be defined in the derived class.
Implemented in AMRLevelAdvectDiffuse, AMRLevelPolytropicGas, and EBAMRGodunov.
Retrieve an array of all of the AMRLevel objects in the entire hierarchy.
static int AMRLevel::verbosity | ( | ) | [static] |
Returns current verbosity level. Minimum verbosity is 0, for which nothing is printed.
static void AMRLevel::verbosity | ( | int | a_verbosity | ) | [static] |
Sets verbosity level to a_verbosity. Minimum verbosity is 0, for which nothing is printed.
int AMRLevel::s_verbosity [static, protected] |
ProblemDomain AMRLevel::m_problem_domain [protected] |
Vector<Box> AMRLevel::m_level_grids [protected] |
int AMRLevel::m_level [protected] |
int AMRLevel::m_ref_ratio [protected] |
Real AMRLevel::m_initial_dt_multiplier [protected] |
Real AMRLevel::m_dt [protected] |
Real AMRLevel::m_time [protected] |
AMRLevel* AMRLevel::m_coarser_level_ptr [protected] |
AMRLevel* AMRLevel::m_finer_level_ptr [protected] |
bool AMRLevel::m_isDefined [protected] |
Reimplemented in AMRLevelAdvectDiffuse, and EBAMRGodunov.