AMR Class Reference

#include <AMR.H>

List of all members.


Detailed Description

Framework for Berger-Oliger timestepping for AMR.

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:

  1. Call define() to define the stuff that does not change throughout the run (maxlevel, refinement ratios, domain, and operator).
  2. Modify any parameters you like (blocking factor, max grid size, etc.) using parameter-setting functions.
  3. Call any one of the three setup functions (setupForRestart(), setupForNewAMRRun(), or setupForFixedHierarchyRun()) so AMR can set up all its internal data structures.
  4. Call run() to run the calculation.
  5. Call conclude() to output (to stdout) how many cells were updated and so forth.

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< Realm_dt_new
Vector< Realm_dt_cur
Real m_maxDtGrow
Real m_time_eps
RefCountedPtr< MeshRefinem_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< Schedulerm_scheduler

Constructor & Destructor Documentation

AMR::AMR (  ) 

Default constructor. Use must subsequently call a define() function and a setup function.

virtual AMR::~AMR (  )  [virtual]

Destructor.


Member Function Documentation

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:

  • a_max_level (not modified): the maximum level allowed, where the base level is zero. There will be a total of a_max_level+1 levels, since level zero and level a_max_level will both exist.
  • a_ref_ratios (not modified): refinement ratios. There must be at least a_max_level+1 elements, or an error will result. Element zero is the base level.
  • a_prob_domain (not modified): problem domain on the base level.
  • a_amrlevelFact (not modified): pointer to a physics class factory object. The object it points to is used to construct the collection of AMRLevel objects in this AMR as objects of the physics class type. It can be destructed after this define() returns.

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:

  • a_max_level (not modified): the maximum level allowed, where the base level is zero. There will be a total of a_max_level+1 levels, since level zero and level a_max_level will both exist.
  • a_ref_ratios (not modified): refinement ratios. There must be at least a_max_level+1 elements, or an error will result. Element zero is the base level.
  • a_prob_domain (not modified): problem domain on the base level.
  • a_amrlevelFact (not modified): pointer to a physics class factory object. The object it points to is used to construct the collection of AMRLevel objects in this AMR as objects of the physics class type. It can be destructed after this define() returns.

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.

Vector<AMRLevel*> AMR::getAMRLevels (  ) 

Returns a vector of all the AMR levels

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]

virtual void AMR::makeBaseLevelMesh ( Vector< Box > &  a_grids  )  const [protected, virtual]

void AMR::setDefaultValues (  )  [protected]


Member Data Documentation

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]

int AMR::m_max_grid_size [protected]

int AMR::m_max_base_grid_size [protected]

Real AMR::m_fixedDt [protected]

bool AMR::m_checkForSteadyState [protected]

bool AMR::m_isDefined [protected]

bool AMR::m_isSetUp [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]

bool AMR::m_use_meshrefine [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<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]


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

Generated on Fri Apr 5 04:24:51 2019 for Chombo + EB by  doxygen 1.5.5