#include <AMR.H>
This class is a framework for Berger-Oliger timestepping for adaptive mesh refinement of time-dependent problems. It is applicable to both hyperbolic and parabolic problems. It represents a hierarchy of levels of refinement as a collection of AMRLevel objects.
The usage pattern is this:
Public Member Functions | |
AMR () | |
virtual | ~AMR () |
void | define (int a_max_level, const Vector< int > &a_ref_ratios, const Box &a_prob_domain, const AMRLevelFactory *const a_amrLevelFact) |
void | define (int a_max_level, const Vector< int > &a_ref_ratios, const ProblemDomain &a_prob_domain, const AMRLevelFactory *const a_amrLevelFact) |
void | setupForRestart (HDF5Handle &a_handle) |
void | setupForNewAMRRun () |
void | setupForFixedHierarchyRun (const Vector< Vector< Box > > &a_amr_grids, int a_proper_nest=1) |
void | run (Real a_max_time, int a_max_step) |
void | conclude () const |
Parameter-setting functions | |
void | checkpointPrefix (const std::string &a_checkpointfile_prefix) |
void | plotInterval (int a_plot_interval) |
Tells AMR to write plot files after every a_plot_interval steps. | |
void | checkForSteadyState (bool a_steadyState) |
Tells AMR to check each level for steady state and stop if we get there. | |
void | plotPeriod (Real a_plot_period) |
Tells AMR to write plot files after every a_plot_period time units. | |
void | schedule (RefCountedPtr< Scheduler > a_scheduler) |
Sets up a schedule for periodically-called functions. | |
void | checkpointInterval (int a_checkpoint_interval) |
void | maxGridSize (int a_max_grid_size) |
void | maxBaseGridSize (int a_max_base_grid_size) |
void | dtToleranceFactor (Real a_dt_tolerance_factor) |
void | setMeshRefine (RefCountedPtr< MeshRefine > a_mesh_refine_ptr) |
void | fillRatio (Real a_fillRat) |
void | blockFactor (int a_blockFactor) |
void | gridBufferSize (int a_grid_buffer_size) |
void | verbosity (int a_verbosity) |
void | regridIntervals (const Vector< int > &a_regridIntervals) |
void | maxDtGrow (Real a_dtGrowFactor) |
void | timeEps (Real a_timeEps) |
void | fixedDt (Real a_dt) |
void | initialTime (Real a_initialTime) |
void | useSubcyclingInTime (bool a_useSubcycling) |
void | plotPrefix (const std::string &a_plotfile_prefix) |
Access functions | |
bool | isDefined () const |
bool | isSetUp () const |
int | maxGridSize () const |
int | maxBaseGridSize () const |
int | verbosity () const |
Real | maxDtGrow () const |
Real | timeEps () const |
Real | fixedDt () const |
Vector< AMRLevel * > | getAMRLevels () |
Real | getCurrentTime () const |
Static Public Attributes | |
static int | s_step |
Protected Member Functions | |
int | timeStep (int a_level, int a_stepsLeft, bool a_coarseTimeBoundary) |
void | clearMemory () |
void | regrid (int a_base_level) |
void | initialGrid () |
void | writePlotFile () const |
void | writeCheckpointFile () const |
void | assignDt () |
bool | needToRegrid (int a_level, int a_numStepsLeft) const |
virtual void | makeBaseLevelMesh (Vector< Box > &a_grids) const |
void | setDefaultValues () |
Protected Attributes | |
bool | m_useSubcycling |
int | m_blockFactor |
Real | m_fillRatio |
int | m_max_level |
int | m_finest_level_old |
int | m_finest_level |
int | m_checkpoint_interval |
int | m_plot_interval |
Real | m_plot_period |
Real | m_next_plot_time |
int | m_max_grid_size |
int | m_max_base_grid_size |
Real | m_dt_tolerance_factor |
Real | m_fixedDt |
bool | m_checkForSteadyState |
bool | m_isDefined |
bool | m_isSetUp |
Vector< AMRLevel * > | m_amrlevels |
Vector< int > | m_ref_ratios |
Vector< int > | m_reduction_factor |
Vector< int > | m_regrid_intervals |
Real | m_dt_base |
Vector< Real > | m_dt_new |
Vector< Real > | m_dt_cur |
Real | m_maxDtGrow |
Real | m_time_eps |
RefCountedPtr< MeshRefine > | m_mesh_refine_ptr |
bool | m_use_meshrefine |
Vector< Vector< Box > > | m_amr_grids |
int | m_cur_step |
int | m_restart_step |
int | m_lastcheck_step |
Real | m_cur_time |
Vector< int > | m_steps_since_regrid |
Vector< long long > | m_cell_updates |
std::string | m_plotfile_prefix |
std::string | m_checkpointfile_prefix |
int | m_verbosity |
RefCountedPtr< Scheduler > | m_scheduler |
AMR::AMR | ( | ) |
Default constructor. Use must subsequently call a define() function and a setup function.
virtual AMR::~AMR | ( | ) | [virtual] |
Destructor.
void AMR::define | ( | int | a_max_level, | |
const Vector< int > & | a_ref_ratios, | |||
const Box & | a_prob_domain, | |||
const AMRLevelFactory *const | a_amrLevelFact | |||
) |
Defines this object. User must call a setup function before running.
Arguments:
void AMR::define | ( | int | a_max_level, | |
const Vector< int > & | a_ref_ratios, | |||
const ProblemDomain & | a_prob_domain, | |||
const AMRLevelFactory *const | a_amrLevelFact | |||
) |
Defines this object. User must call a setup function before running.
Arguments:
void AMR::setupForRestart | ( | HDF5Handle & | a_handle | ) |
Sets up this object from checkpointed data. User must have previously called define().
Need to call this function or setupForNewAMRRun() or setupforFixedHierarchyRun() before you run.
void AMR::setupForNewAMRRun | ( | ) |
Sets up this object for cold start. User must have previously called define().
Need to call this function or setupForRestart() or setupforFixedHierarchyRun() before you run.
void AMR::setupForFixedHierarchyRun | ( | const Vector< Vector< Box > > & | a_amr_grids, | |
int | a_proper_nest = 1 | |||
) |
This function sets the hierarchy and sets m_regrid_intervals to -1 (turns off regridding). If you want to keep regridding on, call regridIntervals() after this call.
void AMR::run | ( | Real | a_max_time, | |
int | a_max_step | |||
) |
Runs the calculation. User must have previously called both the define() function and a setup function.
void AMR::conclude | ( | ) | const |
You should call this last. It writes the last checkpoint file and tells you how many cells you updated and all that.
void AMR::checkpointPrefix | ( | const std::string & | a_checkpointfile_prefix | ) |
Sets the checkpoint file prefix.
Should be called after define() and before setup.
void AMR::plotInterval | ( | int | a_plot_interval | ) |
Tells AMR to write plot files after every a_plot_interval steps.
void AMR::checkForSteadyState | ( | bool | a_steadyState | ) |
Tells AMR to check each level for steady state and stop if we get there.
void AMR::plotPeriod | ( | Real | a_plot_period | ) |
Tells AMR to write plot files after every a_plot_period time units.
void AMR::schedule | ( | RefCountedPtr< Scheduler > | a_scheduler | ) |
Sets up a schedule for periodically-called functions.
void AMR::checkpointInterval | ( | int | a_checkpoint_interval | ) |
Sets the interval to write checkpoint files, in terms of the base level time step.
void AMR::maxGridSize | ( | int | a_max_grid_size | ) |
Set the maximum grid size. Should be called after define() and before setup.
void AMR::maxBaseGridSize | ( | int | a_max_base_grid_size | ) |
Set the maximum grid size for level 0 grids.
Defaults to m_max_grid_size, so should be called after maxGridSize() and before setup.
void AMR::dtToleranceFactor | ( | Real | a_dt_tolerance_factor | ) |
Set the factor by which the current dt must exceed the new (max) dt for time subcycling to occur (i.e., reduction of the current dt by powers of 2).
void AMR::setMeshRefine | ( | RefCountedPtr< MeshRefine > | a_mesh_refine_ptr | ) |
Set the MeshRefine instance. Should be called before define() if you want a_mesh_refine_ptr defined.
void AMR::fillRatio | ( | Real | a_fillRat | ) |
Set the fill ratio for MeshRefine. Should be called after define() and before setup.
void AMR::blockFactor | ( | int | a_blockFactor | ) |
Set the blocking factor for MeshRefine. Should be called after define() and before setup.
void AMR::gridBufferSize | ( | int | a_grid_buffer_size | ) |
Set the buffering for MeshRefine. Should be called after define() and before setup.
void AMR::verbosity | ( | int | a_verbosity | ) |
Sets verbosity level to a_verbosity.
-inf to 0: print nothing.
1: prints a message every coarse time step.
2: also prints a message when regridding and writing files.
3: also prints function trace, and some more inf during file I/O.
4 to inf: also prints list of boxes and processor maps during regrid.
This should be OK to call any time after define and before run.
void AMR::regridIntervals | ( | const Vector< int > & | a_regridIntervals | ) |
Sets the regridding intervals. This should be OK to call any time after define() and before run.
void AMR::maxDtGrow | ( | Real | a_dtGrowFactor | ) |
Set maximum factor by which a timestep can grow.
void AMR::timeEps | ( | Real | a_timeEps | ) |
Set amount by which two times may differ and still be considered equal (used to determine whether we've reached stop time yet) In practice, this is multiplied by the current base-level timestep, so we consider ourselves finished if (stopTime - time) < timeEps*dt0
void AMR::fixedDt | ( | Real | a_dt | ) |
Set a fixed timestep. This must be called before calling setupForFixedHierarchyRun(), setupForNewAMRRun(), or setupForRestart(). Note also that fixedDt is not currently saved in checkpoint files
void AMR::initialTime | ( | Real | a_initialTime | ) |
Sets the initial time before starting compututation; this must be called before calling setupForFixedHierarchyRun() or setupForNewAMRRun(). Note that this will be over-ridden by m_checkpointfile if restarting using setupForRestart().
void AMR::useSubcyclingInTime | ( | bool | a_useSubcycling | ) |
Turn subcycling in time off or on. Default is true (use cycling).
void AMR::plotPrefix | ( | const std::string & | a_plotfile_prefix | ) |
Sets the plot file prefix.
Should be called after define() and before setup.
bool AMR::isDefined | ( | ) | const |
Has a define() function been called? Lots of these functions will assert fail if not.
bool AMR::isSetUp | ( | ) | const |
Has a setup function been called? If not, you can't call run().
int AMR::maxGridSize | ( | ) | const |
Returns the maximum grid size.
int AMR::maxBaseGridSize | ( | ) | const |
Returns the maximum grid size for level 0 grids.
int AMR::verbosity | ( | ) | const |
Returns current verbosity level.
-inf to 0: print nothing.
1: prints a message every coarse time step.
2: also prints a message when regridding and writing files.
3: also prints function trace, and some more inf during file I/O.
4 to inf: also prints list of boxes and processor maps during regrid.
Real AMR::maxDtGrow | ( | ) | const |
Returns current maximum factor by which a timestep can grow.
Real AMR::timeEps | ( | ) | const |
Returns amount by which two times may differ and still be considered equal (used to determine whether we've reached stop time yet)
Real AMR::fixedDt | ( | ) | const |
Returns the fixed timestep.
Real AMR::getCurrentTime | ( | ) | const |
Returns the current time
int AMR::timeStep | ( | int | a_level, | |
int | a_stepsLeft, | |||
bool | a_coarseTimeBoundary | |||
) | [protected] |
void AMR::clearMemory | ( | ) | [protected] |
void AMR::regrid | ( | int | a_base_level | ) | [protected] |
void AMR::initialGrid | ( | ) | [protected] |
void AMR::writePlotFile | ( | ) | const [protected] |
void AMR::writeCheckpointFile | ( | ) | const [protected] |
void AMR::assignDt | ( | ) | [protected] |
bool AMR::needToRegrid | ( | int | a_level, | |
int | a_numStepsLeft | |||
) | const [protected] |
void AMR::setDefaultValues | ( | ) | [protected] |
int AMR::s_step [static] |
bool AMR::m_useSubcycling [protected] |
int AMR::m_blockFactor [protected] |
Real AMR::m_fillRatio [protected] |
int AMR::m_max_level [protected] |
int AMR::m_finest_level_old [protected] |
int AMR::m_finest_level [protected] |
int AMR::m_checkpoint_interval [protected] |
int AMR::m_plot_interval [protected] |
Real AMR::m_plot_period [protected] |
Real AMR::m_next_plot_time [protected] |
int AMR::m_max_grid_size [protected] |
int AMR::m_max_base_grid_size [protected] |
Real AMR::m_dt_tolerance_factor [protected] |
Real AMR::m_fixedDt [protected] |
bool AMR::m_checkForSteadyState [protected] |
bool AMR::m_isDefined [protected] |
bool AMR::m_isSetUp [protected] |
Vector<AMRLevel*> AMR::m_amrlevels [protected] |
Vector<int> AMR::m_ref_ratios [protected] |
Vector<int> AMR::m_reduction_factor [protected] |
Vector<int> AMR::m_regrid_intervals [protected] |
Real AMR::m_dt_base [protected] |
Vector<Real> AMR::m_dt_new [protected] |
Vector<Real> AMR::m_dt_cur [protected] |
Real AMR::m_maxDtGrow [protected] |
Real AMR::m_time_eps [protected] |
RefCountedPtr<MeshRefine> AMR::m_mesh_refine_ptr [protected] |
bool AMR::m_use_meshrefine [protected] |
Vector<Vector<Box> > AMR::m_amr_grids [protected] |
int AMR::m_cur_step [protected] |
int AMR::m_restart_step [protected] |
int AMR::m_lastcheck_step [protected] |
Real AMR::m_cur_time [protected] |
Vector<int> AMR::m_steps_since_regrid [protected] |
Vector<long long> AMR::m_cell_updates [protected] |
std::string AMR::m_plotfile_prefix [protected] |
std::string AMR::m_checkpointfile_prefix [protected] |
int AMR::m_verbosity [protected] |
RefCountedPtr<Scheduler> AMR::m_scheduler [protected] |