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 AMRLevels. 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)
1.5. Modify any parameters you like (blocking factor and so forth using access functions.
2. Call any one of the three setup functions so AMR can set up all its internal data structures.
3. Call run to run the calculation.
4. Call conclude to output (to stdout) how many cells were updated and so forth.
a_prob_domain (not modified): problem domain on the base level.
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_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_amrlevel_ptr (not modified): pointer to a physics class factory object. The object it points to is used to construct the collection of AMRLevels in this AMR as objects of the physics class type. It can be destructed after this define() returns.
a_prob_domain (not modified): problem domain on the base level.
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_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_amrlevel_ptr (not modified): pointer to a physics class factory object. The object it points to is used to construct the collection of AMRLevels in this AMR as objects of the physics class type. It can be destructed after this define() returns.
This sets the hierarchy and sets regrid_intervals to -1 (turns off regridding). If you want to keep regridding on, reset regridIntervals after this call;
-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.
-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 software is copyright (C) by the Lawrence Berkeley National Laboratory. Permission is granted to reproduce this software for non-commercial purposes provided that this notice is left intact.
It is acknowledged that the U.S. Government has rights to this software under Contract DE-AC03-765F00098 between the U.S. Department of Energy and the University of California.
This software is provided as a professional and academic contribution for joint exchange. Thus it is experimental, is provided ``as is'', with no warranties of any kind whatsoever, no support, no promise of updates, or printed documentation. By using this software, you acknowledge that the Lawrence Berkeley National Laboratory and Regents of the University of California shall have no liability with respect to the infringement of other copyrights by any part of this software.