|
IBAMR
IBAMR version 0.19.
|
Class IBInterpolantHierarchyIntegrator is an implementation of Brinkman penalization immersed boundary method.
#include <ibamr/IBInterpolantHierarchyIntegrator.h>

Public Types | |
| using | PreprocessIntegrateHierarchyCallbackFcnPtr = void(*)(double current_time, double new_time, int num_cycles, void *ctx) |
| using | IntegrateHierarchyCallbackFcnPtr = void(*)(double current_time, double new_time, int cycle_num, void *ctx) |
| using | PostprocessIntegrateHierarchyCallbackFcnPtr = void(*)(double current_time, double new_time, bool skip_synchronize_new_state_data, int num_cycles, void *ctx) |
| using | ApplyGradientDetectorCallbackFcnPtr = void(*)(SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int level_number, double error_data_time, int tag_index, bool initial_time, bool uses_richardson_extrapolation_too, void *ctx) |
| using | RegridHierarchyCallbackFcnPtr = void(*)(SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, double data_time, bool initial_time, void *ctx) |
Public Member Functions | |
| IBInterpolantHierarchyIntegrator (std::string object_name, SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > input_db, SAMRAI::tbox::Pointer< IBAMR::IBLevelSetMethod > ib_ls_method_ops, SAMRAI::tbox::Pointer< INSHierarchyIntegrator > ins_hier_integrator, bool register_for_restart=true) | |
| ~IBInterpolantHierarchyIntegrator ()=default | |
| void | preprocessIntegrateHierarchy (double current_time, double new_time, int num_cycles=1) override |
| void | postprocessIntegrateHierarchy (double current_time, double new_time, bool skip_synchronize_new_state_data, int num_cycles=1) override |
| void | initializeHierarchyIntegrator (SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > > gridding_alg) override |
| TimeSteppingType | getTimeSteppingType () const |
| SAMRAI::tbox::Pointer< IBStrategy > | getIBStrategy () const |
| void | registerBodyForceFunction (SAMRAI::tbox::Pointer< IBTK::CartGridFunction > F_fcn) |
| virtual void | registerLoadBalancer (SAMRAI::tbox::Pointer< SAMRAI::mesh::LoadBalancer< NDIM > > load_balancer) override |
| SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > | getVelocityVariable () const |
| SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > | getPressureVariable () const |
| SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > | getBodyForceVariable () const |
| SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > | getFluidSourceVariable () const |
| IBTK::RobinPhysBdryPatchStrategy * | getVelocityPhysBdryOp () const |
| void | initializePatchHierarchy (SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > > gridding_alg) override |
| const std::string & | getName () const |
| virtual void | advanceHierarchy (double dt) |
| double | getMinimumTimeStepSize () |
| double | getMaximumTimeStepSize () |
| void | synchronizeHierarchyData (VariableContextType ctx_type) |
| void | resetTimeDependentHierarchyData (double new_time) |
| void | resetIntegratorToPreadvanceState () |
| virtual void | regridHierarchy () |
| bool | atRegridPoint () const |
| double | getIntegratorTime () const |
| double | getStartTime () const |
| double | getEndTime () const |
| int | getIntegratorStep () const |
| int | getMaxIntegratorSteps () const |
| bool | stepsRemaining () const |
| void | updateWorkloadEstimates () |
| SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > | getPatchHierarchy () const |
| SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > > | getGriddingAlgorithm () const |
| int | getWorkloadDataIndex () const |
| void | registerVisItDataWriter (SAMRAI::tbox::Pointer< SAMRAI::appu::VisItDataWriter< NDIM > > visit_writer) |
| SAMRAI::tbox::Pointer< SAMRAI::appu::VisItDataWriter< NDIM > > | getVisItDataWriter () const |
| void | setupPlotData () |
| virtual int | getNumberOfCycles () const |
| virtual int | getCurrentCycleNumber () const |
| virtual double | getCurrentTimeStepSize () const |
| void | integrateHierarchy (double current_time, double new_time, int cycle_num=0) |
| void | skipCycle (double current_time, double new_time, int cycle_num=0) |
| void | registerPreprocessIntegrateHierarchyCallback (PreprocessIntegrateHierarchyCallbackFcnPtr callback, void *ctx=nullptr) |
| void | registerIntegrateHierarchyCallback (IntegrateHierarchyCallbackFcnPtr callback, void *ctx=nullptr) |
| void | registerPostprocessIntegrateHierarchyCallback (PostprocessIntegrateHierarchyCallbackFcnPtr callback, void *ctx=nullptr) |
| void | registerApplyGradientDetectorCallback (ApplyGradientDetectorCallbackFcnPtr callback, void *ctx=nullptr) |
| void | registerRegridHierarchyCallback (RegridHierarchyCallbackFcnPtr, void *ctx=nullptr) |
| void | initializeCompositeHierarchyData (double init_data_time, bool initial_time) |
| void | initializeLevelData (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int level_number, double init_data_time, bool can_be_refined, bool initial_time, SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchLevel< NDIM > > old_level=SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchLevel< NDIM > >(nullptr), bool allocate_data=true) override |
| virtual 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)=0 |
| void | resetHierarchyConfiguration (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int coarsest_level, int finest_level) override |
| virtual void | resetHierarchyConfiguration (const tbox::Pointer< hier::BasePatchHierarchy< DIM > > hierarchy, const int coarsest_level, const int finest_level)=0 |
| void | applyGradientDetector (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int level_number, double error_data_time, int tag_index, bool initial_time, bool uses_richardson_extrapolation_too) override |
| virtual void | applyGradientDetector (const tbox::Pointer< hier::BasePatchHierarchy< DIM > > hierarchy, const int level_number, const double error_data_time, const int tag_index, const bool initial_time, const bool uses_richardson_extrapolation_too) |
| SAMRAI::tbox::Pointer< SAMRAI::hier::VariableContext > | getContext (VariableContextType ctx_type) const |
| SAMRAI::tbox::Pointer< SAMRAI::hier::VariableContext > | getCurrentContext () const |
| SAMRAI::tbox::Pointer< SAMRAI::hier::VariableContext > | getNewContext () const |
| SAMRAI::tbox::Pointer< SAMRAI::hier::VariableContext > | getScratchContext () const |
| SAMRAI::tbox::Pointer< SAMRAI::hier::VariableContext > | getPlotContext () const |
| bool | isAllocatedPatchData (int data_idx, int coarsest_ln=invalid_level_number, int finest_ln=invalid_level_number) const |
| void | allocatePatchData (int data_idx, double data_time, int coarsest_ln=invalid_level_number, int finest_ln=invalid_level_number) const |
| void | deallocatePatchData (int data_idx, int coarsest_ln=invalid_level_number, int finest_ln=invalid_level_number) const |
| SAMRAI::tbox::Pointer< HierarchyMathOps > | getHierarchyMathOps () const |
| void | registerVariable (int ¤t_idx, int &new_idx, int &scratch_idx, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > variable, const SAMRAI::hier::IntVector< NDIM > &scratch_ghosts=SAMRAI::hier::IntVector< NDIM >(0), const std::string &coarsen_name="NO_COARSEN", const std::string &refine_name="NO_REFINE", SAMRAI::tbox::Pointer< CartGridFunction > init_fcn=nullptr, const bool register_for_restart=true) |
| void | registerVariable (int &idx, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > variable, const SAMRAI::hier::IntVector< NDIM > &ghosts=SAMRAI::hier::IntVector< NDIM >(0), SAMRAI::tbox::Pointer< SAMRAI::hier::VariableContext > ctx=SAMRAI::tbox::Pointer< SAMRAI::hier::VariableContext >(nullptr), const bool register_for_restart=true) |
| void | putToDatabase (SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > db) override |
| virtual double | getLevelDt (const tbox::Pointer< hier::BasePatchLevel< DIM > > level, const double dt_time, const bool initial_time) |
| virtual double | advanceLevel (const tbox::Pointer< hier::BasePatchLevel< DIM > > level, const tbox::Pointer< hier::BasePatchHierarchy< DIM > > hierarchy, const double current_time, const double new_time, const bool first_step, const bool last_step, const bool regrid_advance=false) |
| virtual void | resetTimeDependentData (const tbox::Pointer< hier::BasePatchLevel< DIM > > level, const double new_time, const bool can_be_refined) |
| virtual void | resetDataToPreadvanceState (const tbox::Pointer< hier::BasePatchLevel< DIM > > level) |
| virtual void | applyRichardsonExtrapolation (const tbox::Pointer< hier::PatchLevel< DIM > > level, const double error_data_time, const int tag_index, const double deltat, const int error_coarsen_ratio, const bool initial_time, const bool uses_gradient_detector_too) |
| virtual void | coarsenDataForRichardsonExtrapolation (const tbox::Pointer< hier::PatchHierarchy< DIM > > hierarchy, const int level_number, const tbox::Pointer< hier::PatchLevel< DIM > > coarser_level, const double coarsen_data_time, const bool before_advance) |
Static Protected Attributes | |
| static const std::string | SYNCH_CURRENT_DATA_ALG |
| static const std::string | SYNCH_NEW_DATA_ALG |
Private Types | |
| using | RefineAlgorithmMap = std::map< std::string, SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineAlgorithm< NDIM > > > |
| using | RefinePatchStrategyMap = std::map< std::string, std::unique_ptr< SAMRAI::xfer::RefinePatchStrategy< NDIM > > > |
| using | RefineScheduleMap = std::map< std::string, std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineSchedule< NDIM > > > > |
| using | CoarsenAlgorithmMap = std::map< std::string, SAMRAI::tbox::Pointer< SAMRAI::xfer::CoarsenAlgorithm< NDIM > > > |
| using | CoarsenPatchStrategyMap = std::map< std::string, std::unique_ptr< SAMRAI::xfer::CoarsenPatchStrategy< NDIM > > > |
| using | CoarsenScheduleMap = std::map< std::string, std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::CoarsenSchedule< NDIM > > > > |
Private Member Functions | |
| IBInterpolantHierarchyIntegrator ()=delete | |
| Default constructor. More... | |
| IBInterpolantHierarchyIntegrator (const IBInterpolantHierarchyIntegrator &from)=delete | |
| Copy constructor. More... | |
| IBInterpolantHierarchyIntegrator & | operator= (const IBInterpolantHierarchyIntegrator &that)=delete |
| Assignment operator. More... | |
| void | getFromRestart () |
| void | getFromInput (SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > db, bool is_from_restart) |
|
inherited |
Callback function specification to enable further specialization of preprocessIntegrateHierarchy().
|
inherited |
Callback function specification to enable further specialization of integrateHierarchy().
|
inherited |
Callback function specification to enable further specialization of postprocessIntegrateHierarchy().
|
inherited |
Callback function specification to enable further specialization of applyGradientDetector().
|
inherited |
Callback function specification to enable further specialization of regridHierarchy().
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
| IBAMR::IBInterpolantHierarchyIntegrator::IBInterpolantHierarchyIntegrator | ( | std::string | object_name, |
| SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > | input_db, | ||
| SAMRAI::tbox::Pointer< IBAMR::IBLevelSetMethod > | ib_ls_method_ops, | ||
| SAMRAI::tbox::Pointer< INSHierarchyIntegrator > | ins_hier_integrator, | ||
| bool | register_for_restart = true |
||
| ) |
The constructor for class IBInterpolantHierarchyIntegrator sets some default values and reads in configuration information from input and restart databases.
|
default |
Default destructor.
|
privatedelete |
|
privatedelete |
| from | The value to copy to this object. |
|
overridevirtual |
Prepare to advance the data from current_time to new_time.
Reimplemented from IBAMR::IBHierarchyIntegrator.
|
overridevirtual |
Clean up data following call(s) to integrateHierarchy().
Reimplemented from IBAMR::IBHierarchyIntegrator.
|
overridevirtual |
Initialize any variables, communications algorithms, solvers, or other data structures required by this time integrator object.
Reimplemented from IBAMR::IBHierarchyIntegrator.
|
overrideprotectedvirtual |
Synchronously advance each level in the hierarchy over the given time increment.
Implements IBTK::HierarchyIntegrator.
|
overrideprotectedvirtual |
Write out specialized object state to the given database.
Reimplemented from IBAMR::IBHierarchyIntegrator.
|
privatedelete |
| that | The value to assign to this object. |
|
private |
Read object state from the restart file and initialize class data members.
|
inherited |
Return the time stepping scheme.
|
inherited |
Return a pointer to the IBStrategy object registered with this integrator.
|
inherited |
Supply a body force (optional).
|
overridevirtualinherited |
Register a load balancer for non-uniform load balancing.
Reimplemented from IBTK::HierarchyIntegrator.
|
inherited |
Return a pointer to the fluid velocity variable.
|
inherited |
Return a pointer to the fluid pressure state variable.
|
inherited |
Return a pointer to the body force variable.
|
inherited |
Return a pointer to the source strength variable.
|
inherited |
Return a pointer to the velocity physical boundary conditions
|
overridevirtualinherited |
Initialize the AMR patch hierarchy and data defined on the hierarchy at the start of a computation. If the computation is begun from a restart file, the patch hierarchy and patch data are read from the hierarchy database. Otherwise, the patch hierarchy and patch data are initialized by the gridding algorithm associated with the integrator object.
The implementation of this function assumes that the hierarchy exists upon entry to the function, but that it contains no patch levels. On return from this function, the state of the integrator object will be such that it is possible to step through time via the advanceHierarchy() function.
Reimplemented from IBTK::HierarchyIntegrator.
|
protectedvirtualinherited |
Compute the values of the fluid sources which may be provided by d_ib_method_ops.
|
overrideprotectedvirtualinherited |
Perform necessary data movement, workload estimation, and logging prior to regridding.
Reimplemented from IBTK::HierarchyIntegrator.
|
overrideprotectedvirtualinherited |
Perform necessary data movement and logging after regridding.
Reimplemented from IBTK::HierarchyIntegrator.
|
overrideprotectedvirtualinherited |
Function to determine whether regridding should occur at the current time step.
Reimplemented from IBTK::HierarchyIntegrator.
|
overrideprotectedvirtualinherited |
Initialize data on a new level after it is inserted into an AMR patch hierarchy by the gridding algorithm.
Reimplemented from IBTK::HierarchyIntegrator.
|
overrideprotectedvirtualinherited |
Reset cached hierarchy dependent data.
Reimplemented from IBTK::HierarchyIntegrator.
|
overrideprotectedvirtualinherited |
Set integer tags to "one" in cells where refinement of the given level should occur according to the magnitude of the fluid vorticity.
Reimplemented from IBTK::HierarchyIntegrator.
|
overrideprotectedvirtualinherited |
Add the work contributions (excluding the background grid) for the current hierarchy into the variable with index workload_data_idx. The only direct workload contribution of this hierarchy manager is usually the work done by the IBStrategy object.
Reimplemented from IBTK::HierarchyIntegrator.
|
privateinherited |
Read input values from a given database.
|
inherited |
Return the name of the hierarchy integrator object.
|
virtualinherited |
Integrate data on all patches on all levels of the patch hierarchy over the specified time increment.
|
inherited |
Return the current value of the minimum time step size for the integrator object.
Subclasses can control the method used to determined the time step size by overriding the protected virtual member function getMinimumTimeStepSizeSpecialized().
|
inherited |
Return the current value of the maximum time step size for the integrator object.
Subclasses can control the method used to determined the time step size by overriding the protected virtual member function getMaximumTimeStepSizeSpecialized().
|
inherited |
Synchronize data defined on the grid hierarchy.
Subclasses can control the method used to synchronize data on the grid hierarchy by overriding the protected virtual member function synchronizeHierarchyDataSpecialized().
|
inherited |
Reset the current data to equal the new data, update the time level of the current data, and deallocate the scratch and new data.
Subclasses can control the method used to reset data on the grid hierarchy by overriding the protected virtual member function resetTimeDependentHierarchyDataSpecialized().
|
inherited |
Reset the hierarchy integrator to the state at the beginning of the current time step.
Subclasses can control the method used to reset data on the grid hierarchy by overriding the protected virtual member function resetTimeDependentHierarchyDataSpecialized().
|
virtualinherited |
Virtual method to regrid the patch hierarchy.
A default implementation is provided that calls GriddingAlgorithm::regidAllFinerLevels() to regrid the patch hierarchy. Subclasses can control the method used to regrid the patch hierarchy by overriding this public virtual member function.
Before regridding, this method calls regridHierarchyBeginSpecialized() on the current integrator and all child integrators.
After regridding and (optionally) checking the new grid volume, this method calls regridHierarchyEndSpecialized() on the current integrator and all child integrators. It then calls the following methods (and, therefore, the specialized methods on the current and all child integrators) in the following order:
|
inherited |
Return a boolean value that indicates whether regridding should occur at the current time step.
Subclasses can control the method used to trigger adaptive regridding by overriding the protected virtual member function atRegridPointSpecialized().
|
inherited |
Return the current integration time.
|
inherited |
Return the initial integration time.
|
inherited |
Return the final integration time.
|
inherited |
Return the number of time steps taken by the integrator.
|
inherited |
Return the maximum number of time steps allowed by the integrator.
|
inherited |
Return true if any time steps remain, false otherwise.
|
inherited |
Update workload estimates on each level of the patch hierarchy. Does nothing unless a load balancer has previously been attached via HierarchyIntegrator::register_load_balancer. This function is usually called immediately before regridding so that, should a load balancer be registered with the current class, that load balancer can distribute patches in a way that gives each processor a roughly equal amount of work (instead of simply an equal number of cells).
If you want to visualize the workload then you will have to ensure that workload estimates are recomputed after regridding (by default they are not). This is because workload estimates are only used when moving data between processors: they are computed immediately before the domain is repartitioned and, therefore, their patch data is always invalid at points where output is written. The easiest way to get around this is to enable logging (which will result in workload estimates being updated after regridding) or to manually call updateWorkloadEstimates at points where output is written. The former is more efficient since most applications regrid less frequently than they write visualization files.
Once the data is available, it can be attached to the visit data writer in the usual way. Here is one way to do set this up at the same time the visit data writer is registered:
@seealso HierarchyIntegrator::getWorkloadDataIndex()
|
inherited |
Return a pointer to the patch hierarchy managed by the integrator.
|
inherited |
Return a pointer to the gridding algorithm object managed by the integrator.
|
inherited |
Return the workload variable's patch data index. If the workload variable has not yet been set up by this object (or, should it exist, this object's parent hierarchy integrator) then IBTK::invalid_index is returned instead.
|
inherited |
Register a VisIt data writer so the integrator can output data files that may be postprocessed with the VisIt visualization tool.
|
inherited |
Get a pointer to the VisIt data writer registered with the solver.
|
inherited |
Prepare variables for plotting.
Subclasses can control the method used to setup plot data by overriding the protected virtual member function setupPlotData().
|
virtualinherited |
Routines to implement the time integration scheme.
Virtual method to return the number of cycles to perform for the present time step.
Reimplemented in IBAMR::INSHierarchyIntegrator, IBAMR::AdvDiffSemiImplicitHierarchyIntegrator, IBAMR::INSVCStaggeredConservativeHierarchyIntegrator, and IBAMR::IBImplicitStaggeredHierarchyIntegrator.
|
virtualinherited |
Virtual method to return the current cycle number within the present time step.
The default implementation returns a value of -1 when it is not advancing the hierarchy.
|
virtualinherited |
Virtual method to return the current time step size.
The default implementation returns the value numeric_limits<>::quiet_NaN() when it is not advancing the hierarchy.
|
inherited |
Advance data from current_time to new_time. The current implementation calls doIntegrateHierarchy() followed by executeIntegrateHierarchyCallbackFcns().
|
inherited |
Method to skip a cycle of the time integration scheme (e.g. for cases in which time integration is handled by another class).
|
inherited |
Register a callback function to enable further specialization of preprocessIntegrateHierarchy().
|
inherited |
Register a callback function to enable further specialization of integrateHierarchy().
|
inherited |
Register a callback function to enable further specialization of postprocessIntegrateHierarchy().
|
inherited |
Register a callback function to enable further specialization of applyGradientDetector().
|
inherited |
Register a callback function to enable further specialization of regridHierarchy().
|
inherited |
Perform data initialization after the entire hierarchy has been constructed.
|
overrideinherited |
Implementations of functions declared in the SAMRAI::mesh::StandardTagAndInitStrategy abstract base class.
Initialize data on a new level after it is inserted into an AMR patch hierarchy by the gridding algorithm.
|
pure virtualinherited |
Initialize data on a new level after it is inserted into an AMR patch hierarchy by the gridding algorithm. The level number indicates that of the new level.
Generally, when data is set, it is interpolated from coarser levels in the hierarchy. If the old level pointer in the argument list is non-null, then data is copied from the old level to the new level on regions of intersection between those levels before interpolation occurs. In this case, the level number must match that of the old level. The specific operations that occur when initializing level data are determined by the particular solution methods in use; i.e., in the subclass of this abstract base class.
The boolean argument initial_time indicates whether the level is being introduced for the first time (i.e., at initialization time), or after some regrid process during the calculation beyond the initial hierarchy construction. This information is provided since the initialization of the data may be different in each of those circumstances. The can_be_refined boolean argument indicates whether the level is the finest allowable level in the hierarchy.
|
overrideinherited |
Reset cached hierarchy dependent data.
|
pure virtualinherited |
After hierarchy levels have changed and data has been initialized on the new levels, this routine can be used to reset any information needed by the solution method that is particular to the hierarchy configuration. For example, the solution procedure may cache communication schedules to amortize the cost of data movement on the AMR patch hierarchy. This function will be called by the gridding algorithm after the initialization occurs so that the algorithm-specific subclass can reset such things. Also, if the solution method must make the solution consistent across multiple levels after the hierarchy is changed, this process may be invoked by this routine. Of course the details of these processes are determined by the particular solution methods in use.
The level number arguments indicate the coarsest and finest levels in the current hierarchy configuration that have changed. It should be assumed that all intermediate levels have changed as well.
|
overrideinherited |
Set integer tags to "one" in cells where refinement of the given level should occur according to user-supplied feature detection criteria.
|
virtualinherited |
Set integer tags to "one" in cells where refinement of the given level should occur according to some user-supplied gradient criteria. The double time argument is the regrid time. The integer "tag_index" argument is the patch descriptor index of the cell-centered integer tag array on each patch in the hierarchy. The boolean argument initial_time indicates whether the level is being subject to refinement at the initial simulation time. If it is false, then the error estimation process is being invoked at some later time after the AMR hierarchy was initially constructed. Typically, this information is passed to the user's patch tagging routines since the error estimator or gradient detector may be different in each case.
The boolean uses_richardson_extrapolation_too is true when Richardson extrapolation error estimation is used in addition to the gradient detector, and false otherwise. This argument helps the user to manage multiple regridding criteria.
This routine is only when gradient detector is being used. It is virtual with an empty implementation here (rather than pure virtual) so that users are not required to provide an implementation when the function is not needed.
|
inherited |
Routines to access to the variable contexts maintained by the integrator.
Return a pointer the variable context corresponding to the specified variable context type.
|
inherited |
Return a pointer to the "current" variable context used by integrator. Current data corresponds to state data at the beginning of a time step, or when a new level is initialized.
|
inherited |
Return a pointer to the "new" variable context used by integrator. New data corresponds to advanced state data at the end of a time step. The data is one time step later than the "current" data.
|
inherited |
Return a pointer to the "scratch" variable context used by integrator. Scratch data typically corresponds to storage that user-routines in the concrete GodunovAdvector object manipulate; in particular, scratch data contains ghost cells.
|
inherited |
Return a pointer to the "plot" variable context used by integrator. Plot data is only read from by the VisItDataWriter and is allocated by setupPlotData() and deallocated by regridHierarchyBegin().
|
inherited |
Check whether a patch data index corresponds to allocated data over the specified range of patch level numbers.
NOTE: This method will return "false" without error for invalid (i.e., negative) patch data indices.
|
inherited |
Allocate a patch data index over the specified range of patch level numbers.
|
inherited |
Deallocate a patch data index over the specified range of patch level numbers.
|
inherited |
Routines to access utility classeses managed by the integrator.
|
inherited |
Routines to register new variables with the integrator.
Register a state variable with the integrator. When a refine operator is specified, the data for the variable are automatically maintained as the patch hierarchy evolves.
All state variables are registered with three contexts: current, new, and scratch. The current context of a state variable is maintained from time step to time step and, if the necessary coarsen and refine operators are specified, as the patch hierarchy evolves.
|
inherited |
Register a variable with the integrator that may not be maintained from time step to time step.
By default, variables are registered with the scratch context, which is deallocated after each time step.
|
overridevirtualinherited |
Implementations of functions declared in the SAMRAI::tbox::Serializable abstract base class.
Write out object state to the given database.
Implements SAMRAI::tbox::Serializable.
|
protectedvirtualinherited |
Virtual method to compute an implementation-specific minimum stable time step size. Implementations should ensure that the returned time step is consistent across all processors.
A default implementation is provided that returns min(dt_max,dt_growth_factor*dt_current). The growth condition prevents excessive changes in the time step size as the computation progresses.
|
protectedvirtualinherited |
Virtual method to compute an implementation-specific maximum stable time step size. Implementations should ensure that the returned time step is consistent across all processors.
A default implementation is provided that returns min(dt_max,dt_growth_factor*dt_current). The growth condition prevents excessive changes in the time step size as the computation progresses.
Reimplemented in IBAMR::AdvDiffHierarchyIntegrator, IBAMR::INSHierarchyIntegrator, and IBAMR::AdvDiffPredictorCorrectorHierarchyIntegrator.
|
protectedvirtualinherited |
Virtual method to perform implementation-specific data synchronization.
A default implementation is provided that synchronizes state data registered with the HierarchyIntegrator object using the coarsen operations specified by calls to registerVariable().
|
protectedvirtualinherited |
Virtual method to perform implementation-specific data reset operations.
A default implementation is provided that first swaps the current and new PatchData pointers, and then deallocates the new and scratch data contexts.
Reimplemented in IBAMR::AdvDiffPredictorCorrectorHierarchyIntegrator.
|
protectedvirtualinherited |
Virtual method to perform implementation-specific data reset operations.
A default implementation is provided that deallocates the new and scratch data contexts when data associated with those contexts have been allocated.
Reimplemented in IBAMR::AdvDiffPredictorCorrectorHierarchyIntegrator.
|
protectedvirtualinherited |
Virtual method to perform implementation-specific visualization setup.
An empty default implementation is provided.
Reimplemented in IBAMR::INSVCStaggeredHierarchyIntegrator, IBAMR::INSStaggeredHierarchyIntegrator, IBAMR::INSCollocatedHierarchyIntegrator, IBAMR::INSVCStaggeredConservativeHierarchyIntegrator, and IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator.
|
protectedvirtualinherited |
Virtual method to perform implementation-specific data initialization after the entire hierarchy has been constructed.
An empty default implementation is provided.
Reimplemented in IBAMR::AdvDiffHierarchyIntegrator, IBAMR::INSVCStaggeredHierarchyIntegrator, IBAMR::INSStaggeredHierarchyIntegrator, and IBAMR::INSCollocatedHierarchyIntegrator.
|
protectedvirtualinherited |
Execute any user-specified preprocessIntegrateHierarchy callback functions.
|
protectedvirtualinherited |
Execute any user-specified integrateHierarchy callback functions.
|
protectedvirtualinherited |
Execute any user-specified postprocessIntegrateHierarchy callback functions.
|
protectedvirtualinherited |
Execute any user-specified applyGradientDetector callback functions.
|
protectedvirtualinherited |
Execute any user-specified regridHierarchy callback functions.
|
protectedinherited |
Register a ghost cell-filling refine algorithm.
|
protectedinherited |
Register a data-prolonging refine algorithm.
|
protectedinherited |
Register a coarsen algorithm.
|
protectedinherited |
Get ghost cell-filling refine algorithm.
|
protectedinherited |
Get data-prolonging refine algorithm.
|
protectedinherited |
Get coarsen algorithm.
|
protectedinherited |
Get ghost cell-filling refine schedules.
|
protectedinherited |
Get data-prolonging refine schedules.
|
protectedinherited |
Get coarsen schedules.
|
protectedinherited |
Register a "child" integrator object with this integrator object.
|
protectedinherited |
Register a "parent" integrator object with this integrator object.
|
protectedinherited |
Build the HierarchyMathOps object.
|
protectedinherited |
Setup the tag buffer.
|
inlineprotectedinherited |
Returns true when we are regridding the patch hierarchy.
|
inlineprotectedinherited |
Returns true when we are executing a time step in which a regridding operation was performed.
|
virtualinherited |
Determine time increment to advance data on level. The recompute_dt option specifies whether to compute the timestep using the current level data or to return the value stored by the time integrator. The default true setting means the timestep will be computed if no value is supplied.
This routine is only when Richardson extrapolation is being used. It is virtual with an empty implementation here (rather than pure virtual) so that users are not required to provide an implementation when the function is not needed.
|
virtualinherited |
Advance data on all patches on specified patch level from current time (current_time) to new time (new_time). This routine is called only during time-dependent regridding procedures, such as Richardson extrapolation. It is virtual with an empty implementation here (rather than pure virtual) so that users are not required to provide an implementation when the function is not needed. The boolean arguments are used to determine the state of the algorithm and the data when the advance routine is called. Note that this advance function is also used during normal time integration steps.
When this function is called, the level data required to begin the advance must be allocated and be defined appropriately. Typically, this is equivalent to what is needed to initialize a new level after regridding. Upon exiting this routine, both current and new data may exist on the level. This data is needed until level synchronization occurs, in general. Current and new data may be reset by calling the member function resetTimeDependentData().
This routine is called from two different points within the Richardson exptrapolation process: to advance a temporary level that is coarser than the hierarchy level on which error estimation is performed, and to advance the hierarchy level itself. In the first case, the values of the boolean flags are:
In the second case, the values of the boolean flags are:
|
virtualinherited |
Reset time-dependent data storage for the specified patch level.
This routine only applies when Richardson extrapolation is being used. It is virtual with an empty implementation here (rather than pure virtual) so that users are not required to provide an implementation when the function is not needed.
|
virtualinherited |
Reset data on the patch level by destroying all patch data other than that which is needed to initialize the solution on that level. In other words, this is the data needed to begin a time integration step on the level.
This routine is only when Richardson extrapolation is being used. It is virtual with an empty implementation here (rather than pure virtual) so that users are not required to provide an implementation when the function is not needed.
|
virtualinherited |
Set integer tags to "one" in cells where refinement of the given level should occur according to some user-supplied Richardson extrapolation criteria. The "error_data_time" argument is the regrid time. The "deltat" argument is the time increment to advance the solution on the level to be refined. Note that that level is finer than the level in the argument list, in general. The ratio between the argument level and the actual hierarchy level is given by the integer "coarsen ratio".
The integer "tag_index" argument is the patch descriptor index of the cell-centered integer tag array on each patch in the hierarchy.
The boolean argument initial_time indicates whether the level is being subject to refinement at the initial simulation time. If it is false, then the error estimation process is being invoked at some later time after the AMR hierarchy was initially constructed. Typically, this information is passed to the user's patch tagging routines since the application of the Richardson extrapolation process may be different in each case.
The boolean uses_gradient_detector_too is true when a gradient detector procedure is used in addition to Richardson extrapolation, and false otherwise. This argument helps the user to manage multiple regridding criteria.
This routine is only when Richardson extrapolation is being used. It is virtual with an empty implementation here (rather than pure virtual) so that users are not required to provide an implementation when the function is not needed.
|
virtualinherited |
Coarsen solution data from level to coarse_level for Richardson extrapolation. Note that this routine will be called twice during the Richardson extrapolation error estimation process, once to set data on the coarser level and once to coarsen data from after advancing the fine level. The init_coarse_level boolean argument indicates whether data is set on the coarse level by coarsening the "old" time level solution or by coarsening the "new" solution on the fine level (i.e., after it has been advanced).
This routine is only when Richardson extrapolation is being used. It is virtual with an empty implementation here (rather than pure virtual) so that users are not required to provide an implementation when the function is not needed.
|
private |
|
private |
|
protectedinherited |
|
protectedinherited |
Enum indicating the time integration employed for the IB equations.
|
protectedinherited |
Flag indicating whether to use an explicit predictor for the structure configuration in the time stepping scheme.
|
protectedinherited |
Flags to determine whether warnings or error messages should be emitted when time step size changes are encountered.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
The regrid CFL interval indicates the number of meshwidths a particle may move in any coordinate direction between invocations of the regridding process.
|
protectedinherited |
|
protectedinherited |
Estimation on the maximum fraction of fluid cells the structure has moved based on the maximum fluid velocity.
|
protectedinherited |
Estimation on the maximum fraction of fluid cells the structure has moved based on the infinity norm of the structure's displacement.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
Context containing all patch data indices relevant to IB operations.
|
protectedinherited |
ComponentSelector corresponding to d_ib_context. Also contains patch data indices for relevant cloned indices (which, as they are clones, cannot be placed in the Context).
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
The index of the workload estimate variable. If the current integrator is a child integrator then this variable index may not be set to the correct variable index since the parent is assumed to manage the variable, and the correct index is always provided when calling HierarchyIntegrator::addWorkloadEstimate() from parent integrators.
If necessary, this variable can be retrieved from the variable database under the name object_name + "::workload", where object_name is the name of the parent hierarchy integrator.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
Variable contexts.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
staticprotectedinherited |
Names of special coarsen algorithms/schedules.
|
staticprotectedinherited |
|
protectedinherited |
Regridding-related communications algorithms and other data structures.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
Callback functions and callback function contexts.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
1.8.17