IBAMR  IBAMR version 0.19.
Public Member Functions | Private Member Functions | Private Attributes | List of all members
SAMRAI::mesh::StandardTagAndInitialize< DIM > Class Template Reference

#include <StandardTagAndInitialize.h>

Inheritance diagram for SAMRAI::mesh::StandardTagAndInitialize< DIM >:
Inheritance graph
[legend]

Public Member Functions

 StandardTagAndInitialize (const std::string &object_name, StandardTagAndInitStrategy< DIM > *tag_strategy, tbox::Pointer< tbox::Database > input_db=tbox::Pointer< tbox::Database >(NULL))
 
virtual ~StandardTagAndInitialize ()
 
bool usesTimeIntegration () const
 
int getErrorCoarsenRatio () const
 
void checkCoarsenRatios (const tbox::Array< hier::IntVector< DIM > > &ratio_to_coarser)
 
void initializeLevelData (const tbox::Pointer< hier::BasePatchHierarchy< DIM > > hierarchy, const int level_number, const double init_data_time, const bool can_be_refined, const bool initial_time, const tbox::Pointer< hier::BasePatchLevel< DIM > > old_level=tbox::Pointer< hier::BasePatchLevel< DIM > >(NULL), const bool allocate_data=true)
 
void resetHierarchyConfiguration (const tbox::Pointer< hier::BasePatchHierarchy< DIM > > hierarchy, const int coarsest_level, const int finest_level)
 
void preprocessErrorEstimation (const tbox::Pointer< hier::BasePatchHierarchy< DIM > > hierarchy, const int level_number, const double regrid_time, const double regrid_start_time, const bool initial_time)
 
void tagCellsForRefinement (const tbox::Pointer< hier::BasePatchHierarchy< DIM > > level, const int level_number, const double regrid_time, const int tag_index, const bool initial_time, const bool coarsest_sync_level, const bool can_be_refined, const double regrid_start_time=0)
 
bool coarsestLevelBoxesOK (const hier::BoxArray< DIM > &boxes) const
 
bool refineUserBoxInputOnly () const
 
void turnOnGradientDetector ()
 
void turnOffGradientDetector ()
 
void turnOnRichardsonExtrapolation ()
 
void turnOffRichardsonExtrapolation ()
 
void turnOnRefineBoxes ()
 
void turnOffRefineBoxes ()
 
void getFromInput (tbox::Pointer< tbox::Database > db)
 
bool getUserSuppliedRefineBoxes (hier::BoxArray< DIM > &refine_boxes, const int level_number, const double time)
 
void resetRefineBoxes (const hier::BoxArray< DIM > &refine_boxes, const int level_number)
 
void getFromInput (const std::string &object_name, tbox::Pointer< tbox::Database > db)
 

Private Member Functions

void preprocessRichardsonExtrapolation (const tbox::Pointer< hier::PatchHierarchy< DIM > > hierarchy, const int level_number, const double regrid_time, const double regrid_start_time, const bool initial_time)
 
void tagCellsUsingRichardsonExtrapolation (const tbox::Pointer< hier::PatchHierarchy< DIM > > hierarchy, const int level_number, const double regrid_time, const double regrid_start_time, const int tag_index, const bool initial_time, const bool coarsest_sync_level, const bool can_be_refined)
 

Private Attributes

std::string d_object_name
 
bool d_use_refine_boxes
 
bool d_use_gradient_detector
 
bool d_use_richardson_extrapolation
 
StandardTagAndInitStrategy< DIM > * d_tag_strategy
 
int d_error_coarsen_ratio
 
tbox::Array< tbox::Pointer< hier::PatchLevel< DIM > > > d_rich_extrap_coarsened_levels
 
tbox::Array< tbox::Array< hier::BoxArray< DIM > > > d_refine_boxes
 
tbox::Array< tbox::Array< int > > d_refine_boxes_cycles
 
tbox::Array< tbox::Array< double > > d_refine_boxes_times
 
tbox::Array< boold_refine_boxes_use_times
 
tbox::Array< intd_refine_boxes_cycle_counter
 
tbox::Array< boold_refine_boxes_reset
 
tbox::Array< hier::BoxArray< DIM > > d_reset_refine_boxes
 
tbox::Array< intd_refine_boxes_old_seq_num
 

Detailed Description

template<int DIM>
class SAMRAI::mesh::StandardTagAndInitialize< DIM >

Class StandardTagAndInitialize<DIM> defines an implementation for level initialization and cell tagging routines needed by the GriddingAlgorithm<DIM> class. This class is derived from the abstract base class TagAndInitializeStrategy<DIM>. It invokes problem-specific level initialization routines after AMR patch hierarchy levels change and routines for tagging cells for refinement using one (or more) of the following methods:

It is possible to use combinations of these three methods (e.g., use gradient detection, Richardson extrapolation, and static refine boxes at the same time). The order in which they are executed is fixed ( Richardson extrapolation first, gradient detection second, and refine boxes third). An input entry for this class is optional. If none is provided, the class will by default not use any criteria
to tag cells for refinement.

Required input keys and data types: NONE

Optional input keys, data types, and defaults:

*
*    tagging_method = "GRADIENT_DETECTOR", "REFINE_BOXES"
*    <refine boxes input> (@see mesh::TagAndInitializeStrategy)
*    
* 

This class supplies the routines for tagging cells and invoking problem-specific level initialization routines after AMR patch hierarchy levels change. A number of problem-specific operations are performed in the StandardTagAndInitStrategy<DIM> data member, for which methods are specified in a derived subclass.

See also
mesh::TagAndInitializeStrategy
mesh::GriddingAlgorithm
mesh::StandardTagAndInitStrategy

Constructor & Destructor Documentation

◆ StandardTagAndInitialize()

template<int DIM>
SAMRAI::mesh::StandardTagAndInitialize< DIM >::StandardTagAndInitialize ( const std::string &  object_name,
StandardTagAndInitStrategy< DIM > *  tag_strategy,
tbox::Pointer< tbox::Database input_db = tbox::Pointertbox::Database >(NULL) 
)

Constructor for StandardTagAndInitialize<DIM> which may read inputs from the provided input_db. If no input database is provided, the class interprets that no tagging is desired so no cell-tagging will be performed.

◆ ~StandardTagAndInitialize()

template<int DIM>
virtual SAMRAI::mesh::StandardTagAndInitialize< DIM >::~StandardTagAndInitialize ( )
virtual

Virtual destructor for StandardTagAndInitialize<DIM>.

Member Function Documentation

◆ usesTimeIntegration()

template<int DIM>
bool SAMRAI::mesh::StandardTagAndInitialize< DIM >::usesTimeIntegration ( ) const
virtual

Specifies whether the chosen method advances the solution data in the regridding process (Richardson extrapolation does, the others will not).

Implements SAMRAI::mesh::TagAndInitializeStrategy< DIM >.

◆ getErrorCoarsenRatio()

template<int DIM>
int SAMRAI::mesh::StandardTagAndInitialize< DIM >::getErrorCoarsenRatio ( ) const
virtual

Return coarsen ratio used for applying cell tagging. An error coarsen ratio other than 2 or 3 will throw an error.

Implements SAMRAI::mesh::TagAndInitializeStrategy< DIM >.

◆ checkCoarsenRatios()

template<int DIM>
void SAMRAI::mesh::StandardTagAndInitialize< DIM >::checkCoarsenRatios ( const tbox::Array< hier::IntVector< DIM > > &  ratio_to_coarser)
virtual

Some restrictions may be placed on the coarsen ratio used for cell tagging. Check these here.

Implements SAMRAI::mesh::TagAndInitializeStrategy< DIM >.

◆ initializeLevelData()

template<int DIM>
void SAMRAI::mesh::StandardTagAndInitialize< DIM >::initializeLevelData ( const tbox::Pointer< hier::BasePatchHierarchy< DIM > >  hierarchy,
const int  level_number,
const double  init_data_time,
const bool  can_be_refined,
const bool  initial_time,
const tbox::Pointer< hier::BasePatchLevel< DIM > >  old_level = tbox::Pointerhier::BasePatchLevel< DIM > >(NULL),
const bool  allocate_data = true 
)
virtual

Pass the request to initialize the data on a new level in the hierarchy to the StandardTagAndInitStrategy<DIM> data member. Required arguments specify the grid hierarchy, level number being initialized, simulation time at which the data is initialized, whether the level can be refined, and whether it is the initial time. Optional arguments include an old level, from which data may be used to initialize this level, and a flag that indicates whether data on the initialized level must first be allocated. For more information on the operations that must be performed, see the TagAndInitializeStrategy<DIM>::initializeLevelData() method.

Implements SAMRAI::mesh::TagAndInitializeStrategy< DIM >.

◆ resetHierarchyConfiguration()

template<int DIM>
void SAMRAI::mesh::StandardTagAndInitialize< DIM >::resetHierarchyConfiguration ( const tbox::Pointer< hier::BasePatchHierarchy< DIM > >  hierarchy,
const int  coarsest_level,
const int  finest_level 
)
virtual

Pass the request to reset information that depends on the hierarchy configuration to the StandardTagAndInitStrategy<DIM> data member.
For more information on the operations that must be performed, see the TagAndInitializeStrategy<DIM>::resetHierarchyConfiguration() method.

Implements SAMRAI::mesh::TagAndInitializeStrategy< DIM >.

◆ preprocessErrorEstimation()

template<int DIM>
void SAMRAI::mesh::StandardTagAndInitialize< DIM >::preprocessErrorEstimation ( const tbox::Pointer< hier::BasePatchHierarchy< DIM > >  hierarchy,
const int  level_number,
const double  regrid_time,
const double  regrid_start_time,
const bool  initial_time 
)
virtual

Certain cases may require pre-processing of error estimation data before tagging cells, which is handled by this method. For more information on the operations that must be performed, see the TagAndInitializeStrategy<DIM>::preprocessErrorEstimation() method

Implements SAMRAI::mesh::TagAndInitializeStrategy< DIM >.

◆ tagCellsForRefinement()

template<int DIM>
void SAMRAI::mesh::StandardTagAndInitialize< DIM >::tagCellsForRefinement ( const tbox::Pointer< hier::BasePatchHierarchy< DIM > >  level,
const int  level_number,
const double  regrid_time,
const int  tag_index,
const bool  initial_time,
const bool  coarsest_sync_level,
const bool  can_be_refined,
const double  regrid_start_time = 0 
)
virtual

Pass the request to set tags on the given level where refinement of that level should occur. Gradient detection, Richardson extrapolation, and tagging on static refine boxes is performed here.

For more information on the operations that must be performed, see the TagAndInitializeStrategy<DIM>::tagCellsForRefinement() routine.

Implements SAMRAI::mesh::TagAndInitializeStrategy< DIM >.

◆ coarsestLevelBoxesOK()

template<int DIM>
bool SAMRAI::mesh::StandardTagAndInitialize< DIM >::coarsestLevelBoxesOK ( const hier::BoxArray< DIM > &  boxes) const
virtual

Return true if boxes for coarsest hierarchy level are not appropriate for gridding strategy. Otherwise, return false. If false is returned, it is useful to provide a detailed explanatory message describing the problems with the boxes.

Implements SAMRAI::mesh::TagAndInitializeStrategy< DIM >.

◆ refineUserBoxInputOnly()

template<int DIM>
bool SAMRAI::mesh::StandardTagAndInitialize< DIM >::refineUserBoxInputOnly ( ) const
virtual

Return whether refinement is being performed using ONLY user-supplied refine boxes. If any method is used that invokes tagging, this will return false.

Implements SAMRAI::mesh::TagAndInitializeStrategy< DIM >.

◆ turnOnGradientDetector()

template<int DIM>
void SAMRAI::mesh::StandardTagAndInitialize< DIM >::turnOnGradientDetector ( )

Turn on gradient detector to tag cells for refinement.

◆ turnOffGradientDetector()

template<int DIM>
void SAMRAI::mesh::StandardTagAndInitialize< DIM >::turnOffGradientDetector ( )

Turn off gradient detector.

◆ turnOnRichardsonExtrapolation()

template<int DIM>
void SAMRAI::mesh::StandardTagAndInitialize< DIM >::turnOnRichardsonExtrapolation ( )

Turn on Richardson extrapolation to tag cells for refinement.

◆ turnOffRichardsonExtrapolation()

template<int DIM>
void SAMRAI::mesh::StandardTagAndInitialize< DIM >::turnOffRichardsonExtrapolation ( )

Turn off Richardson extrapolation.

◆ turnOnRefineBoxes()

template<int DIM>
void SAMRAI::mesh::StandardTagAndInitialize< DIM >::turnOnRefineBoxes ( )

Turn on static refine box regions where refinement should occur.

◆ turnOffRefineBoxes()

template<int DIM>
void SAMRAI::mesh::StandardTagAndInitialize< DIM >::turnOffRefineBoxes ( )

Turn off static refine box regions.

◆ getFromInput() [1/2]

template<int DIM>
void SAMRAI::mesh::StandardTagAndInitialize< DIM >::getFromInput ( tbox::Pointer< tbox::Database db)

Read input values, indicated above, from given database.

When assertion checking is active, the database pointer must be non-null.

◆ preprocessRichardsonExtrapolation()

template<int DIM>
void SAMRAI::mesh::StandardTagAndInitialize< DIM >::preprocessRichardsonExtrapolation ( const tbox::Pointer< hier::PatchHierarchy< DIM > >  hierarchy,
const int  level_number,
const double  regrid_time,
const double  regrid_start_time,
const bool  initial_time 
)
private

◆ tagCellsUsingRichardsonExtrapolation()

template<int DIM>
void SAMRAI::mesh::StandardTagAndInitialize< DIM >::tagCellsUsingRichardsonExtrapolation ( const tbox::Pointer< hier::PatchHierarchy< DIM > >  hierarchy,
const int  level_number,
const double  regrid_time,
const double  regrid_start_time,
const int  tag_index,
const bool  initial_time,
const bool  coarsest_sync_level,
const bool  can_be_refined 
)
private

◆ getUserSuppliedRefineBoxes()

template<int DIM>
bool SAMRAI::mesh::TagAndInitializeStrategy< DIM >::getUserSuppliedRefineBoxes ( hier::BoxArray< DIM > &  refine_boxes,
const int  level_number,
const double  time 
)
inherited

Return user supplied set of refine boxes for specified level number and time. The boolean return value specifies whether the boxes have been reset from the last time this method was called. If they have been reset, it returns true. If they are unchanged, it returns false.

◆ resetRefineBoxes()

template<int DIM>
void SAMRAI::mesh::TagAndInitializeStrategy< DIM >::resetRefineBoxes ( const hier::BoxArray< DIM > &  refine_boxes,
const int  level_number 
)
inherited

Reset the static refine boxes for the specified level number in the hierarchy. The level number must be greater than or equal to zero.

◆ getFromInput() [2/2]

template<int DIM>
void SAMRAI::mesh::TagAndInitializeStrategy< DIM >::getFromInput ( const std::string &  object_name,
tbox::Pointer< tbox::Database db 
)
inherited

Read user supplied refine boxes from the provided database. The database must be non-null, or an unrecoverable exception will be thrown.

Member Data Documentation

◆ d_object_name

template<int DIM>
std::string SAMRAI::mesh::StandardTagAndInitialize< DIM >::d_object_name
private

◆ d_use_refine_boxes

template<int DIM>
bool SAMRAI::mesh::StandardTagAndInitialize< DIM >::d_use_refine_boxes
private

◆ d_use_gradient_detector

template<int DIM>
bool SAMRAI::mesh::StandardTagAndInitialize< DIM >::d_use_gradient_detector
private

◆ d_use_richardson_extrapolation

template<int DIM>
bool SAMRAI::mesh::StandardTagAndInitialize< DIM >::d_use_richardson_extrapolation
private

◆ d_tag_strategy

template<int DIM>
StandardTagAndInitStrategy<DIM>* SAMRAI::mesh::StandardTagAndInitialize< DIM >::d_tag_strategy
private

◆ d_error_coarsen_ratio

template<int DIM>
int SAMRAI::mesh::StandardTagAndInitialize< DIM >::d_error_coarsen_ratio
private

◆ d_rich_extrap_coarsened_levels

template<int DIM>
tbox::Array< tbox::Pointer< hier::PatchLevel<DIM> > > SAMRAI::mesh::StandardTagAndInitialize< DIM >::d_rich_extrap_coarsened_levels
private

◆ d_refine_boxes

template<int DIM>
tbox::Array<tbox::Array< hier::BoxArray<DIM> > > SAMRAI::mesh::TagAndInitializeStrategy< DIM >::d_refine_boxes
privateinherited

◆ d_refine_boxes_cycles

template<int DIM>
tbox::Array<tbox::Array<int> > SAMRAI::mesh::TagAndInitializeStrategy< DIM >::d_refine_boxes_cycles
privateinherited

◆ d_refine_boxes_times

template<int DIM>
tbox::Array<tbox::Array<double> > SAMRAI::mesh::TagAndInitializeStrategy< DIM >::d_refine_boxes_times
privateinherited

◆ d_refine_boxes_use_times

template<int DIM>
tbox::Array<bool> SAMRAI::mesh::TagAndInitializeStrategy< DIM >::d_refine_boxes_use_times
privateinherited

◆ d_refine_boxes_cycle_counter

template<int DIM>
tbox::Array<int> SAMRAI::mesh::TagAndInitializeStrategy< DIM >::d_refine_boxes_cycle_counter
privateinherited

◆ d_refine_boxes_reset

template<int DIM>
tbox::Array<bool> SAMRAI::mesh::TagAndInitializeStrategy< DIM >::d_refine_boxes_reset
privateinherited

◆ d_reset_refine_boxes

template<int DIM>
tbox::Array< hier::BoxArray<DIM> > SAMRAI::mesh::TagAndInitializeStrategy< DIM >::d_reset_refine_boxes
privateinherited

◆ d_refine_boxes_old_seq_num

template<int DIM>
tbox::Array<int> SAMRAI::mesh::TagAndInitializeStrategy< DIM >::d_refine_boxes_old_seq_num
privateinherited

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