|
IBAMR
IBAMR version 0.19.
|
Class INSStaggeredHierarchyIntegrator provides a staggered-grid solver for the incompressible Navier-Stokes equations on an AMR grid hierarchy.
#include <ibamr/INSStaggeredHierarchyIntegrator.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) |
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 | |
| INSStaggeredHierarchyIntegrator ()=delete | |
| Default constructor. More... | |
| INSStaggeredHierarchyIntegrator (const INSStaggeredHierarchyIntegrator &from)=delete | |
| Copy constructor. More... | |
| INSStaggeredHierarchyIntegrator & | operator= (const INSStaggeredHierarchyIntegrator &that)=delete |
| Assignment operator. More... | |
| void | getFromRestart () |
| void | computeDivSourceTerm (int F_idx, int Q_idx, int U_idx) |
| void | reinitializeOperatorsAndSolvers (double current_time, double new_time) |
| TimeSteppingType | getConvectiveTimeSteppingType (int cycle_num) |
| double | getTimeStepSizeRatio () const |
| void | applyDivergencePreservingProlongation (int U_idx, int level_number, SAMRAI::tbox::Pointer< SAMRAI::hier::PatchLevel< NDIM > > level, SAMRAI::tbox::Pointer< SAMRAI::hier::PatchLevel< NDIM > > old_level, SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, double init_data_time) const |
| 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::INSStaggeredHierarchyIntegrator::INSStaggeredHierarchyIntegrator | ( | std::string | object_name, |
| SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > | input_db, | ||
| bool | register_for_restart = true |
||
| ) |
The constructor for class INSStaggeredHierarchyIntegrator sets some default values, reads in configuration information from input and restart databases, and registers the integrator object with the restart manager when requested.
| IBAMR::INSStaggeredHierarchyIntegrator::~INSStaggeredHierarchyIntegrator | ( | ) |
The destructor for class INSStaggeredHierarchyIntegrator unregisters the integrator object with the restart manager when the object is so registered.
|
privatedelete |
|
privatedelete |
| from | The value to copy to this object. |
|
overridevirtual |
Get the convective operator being used by this solver class.
If the time integrator is configured to solve the time-dependent (creeping) Stokes equations, then the returned pointer will be nullptr.
If the convective operator has not already been constructed, and if the time integrator is not configured to solve the time-dependent (creeping) Stokes equations, then this function will initialize the default type of convective operator, which may be set in the class input database.
Implements IBAMR::INSHierarchyIntegrator.
|
overridevirtual |
Get the subdomain solver for the velocity subsystem. Such solvers can be useful in constructing block preconditioners.
Implements IBAMR::INSHierarchyIntegrator.
|
overridevirtual |
Get the subdomain solver for the pressure subsystem. Such solvers can be useful in constructing block preconditioners.
Implements IBAMR::INSHierarchyIntegrator.
| void IBAMR::INSStaggeredHierarchyIntegrator::setStokesSolver | ( | SAMRAI::tbox::Pointer< StaggeredStokesSolver > | stokes_solver | ) |
Register a solver for the time-dependent incompressible Stokes equations.
| SAMRAI::tbox::Pointer<StaggeredStokesSolver> IBAMR::INSStaggeredHierarchyIntegrator::getStokesSolver | ( | ) |
Get the solver for the time-dependent incompressible Stokes equations used by this solver class.
| void IBAMR::INSStaggeredHierarchyIntegrator::setStokesSolverNeedsInit | ( | ) |
Indicate that the Stokes solver should be (re-)initialized before the next time step.
|
overridevirtual |
Initialize the variables, basic communications algorithms, solvers, and other data structures used by this time integrator object.
This method is called automatically by initializePatchHierarchy() prior to the construction of the patch hierarchy. It is also possible for users to make an explicit call to initializeHierarchyIntegrator() prior to calling initializePatchHierarchy().
Implements IBTK::HierarchyIntegrator.
|
overridevirtual |
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.
|
overridevirtual |
Prepare to advance the data from current_time to new_time.
Reimplemented from IBTK::HierarchyIntegrator.
|
overridevirtual |
Clean up data following call(s) to integrateHierarchy().
Reimplemented from IBAMR::INSHierarchyIntegrator.
| void IBAMR::INSStaggeredHierarchyIntegrator::setupSolverVectors | ( | const SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > & | sol_vec, |
| const SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > & | rhs_vec, | ||
| double | current_time, | ||
| double | new_time, | ||
| int | cycle_num | ||
| ) |
Setup solution and RHS vectors using state data maintained by the integrator.
| void IBAMR::INSStaggeredHierarchyIntegrator::resetSolverVectors | ( | const SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > & | sol_vec, |
| const SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > & | rhs_vec, | ||
| double | current_time, | ||
| double | new_time, | ||
| int | cycle_num | ||
| ) |
Reset solution and RHS vectors using state data maintained by the integrator, and copy the solution data into the state data maintained by the integrator.
| void IBAMR::INSStaggeredHierarchyIntegrator::removeNullSpace | ( | const SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > & | sol_vec | ) |
Explicitly remove nullspace components from a solution vector.
|
overrideprotectedvirtual |
Synchronously advance each level in the hierarchy over the given time increment.
Implements IBTK::HierarchyIntegrator.
|
overrideprotectedvirtual |
Determine the largest stable timestep on an individual patch.
Implements IBAMR::INSHierarchyIntegrator.
|
overrideprotectedvirtual |
Write out specialized object state to the given database.
Reimplemented from IBAMR::INSHierarchyIntegrator.
|
overrideprotectedvirtual |
Prepare the current hierarchy for regridding. Here we calculate the divergence.
Reimplemented from IBTK::HierarchyIntegrator.
|
overrideprotectedvirtual |
Update the current hierarchy data after regridding. Here we recalculate the divergence and, if it has grown by a factor more than d_regrid_max_div_growth_factor, we indicate that a regrid projection is needed to (re)initialize the composite hierarchy data.
Reimplemented from IBTK::HierarchyIntegrator.
|
overrideprotectedvirtual |
Perform data initialization after the entire hierarchy has been constructed.
Reimplemented from IBTK::HierarchyIntegrator.
|
overrideprotectedvirtual |
Initialize data on a new level after it is inserted into an AMR patch hierarchy by the gridding algorithm.
Reimplemented from IBTK::HierarchyIntegrator.
|
overrideprotectedvirtual |
Reset cached hierarchy dependent data.
Reimplemented from IBTK::HierarchyIntegrator.
|
overrideprotectedvirtual |
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.
|
overrideprotectedvirtual |
Prepare variables for plotting.
Reimplemented from IBTK::HierarchyIntegrator.
|
overrideprotectedvirtual |
Project the velocity field following a regridding operation.
Implements IBAMR::INSHierarchyIntegrator.
|
privatedelete |
| that | The value to assign to this object. |
|
private |
Read object state from the restart file and initialize class data members.
|
private |
Compute the appropriate source term that must be added to the momentum equation when the fluid contains internal sources and sinks.
|
private |
Reinitialize the operators and solvers used by the hierarchy integrator.
|
private |
Determine the convective time stepping type for the current time step and cycle number.
|
private |
Determine the time step size ratio.
|
private |
Apply divergence-preserving (and curl-preserving) prolongation to the specified staggered-grid velocity field.
|
inherited |
Set the type of viscous time integration scheme being employed by the incompressible flow solver.
Different implementations may support different time stepping schemes.
|
inherited |
Get the type of viscous time integration scheme being employed by the incompressible flow solver.
Different implementations may support different time stepping schemes.
|
inherited |
Set the type of convective time integration scheme being employed by the incompressible flow solver.
Different implementations may support different time stepping schemes.
|
inherited |
Get the type of convective time integration scheme being employed by the incompressible flow solver.
Different implementations may support different time stepping schemes.
|
inherited |
Set the type of convective time integration scheme being employed by the incompressible flow solver during the initial time step.
Different implementations may support different time stepping schemes.
|
inherited |
Get the type of convective time integration scheme being employed by the incompressible flow solver during the initial time step.
Different implementations may support different time stepping schemes.
|
inherited |
Register an advection-diffusion solver with this incompressible Navier-Stokes solver.
|
inherited |
Set the problem coefficients used by the solver.
|
inherited |
Get a const pointer to the problem coefficients object used by the solver.
|
inherited |
Supply a physical boundary conditions specificaion for the velocity field. Boundary conditions take the form of \( a\mathbf{u} + b\tau\cdot\mathbf{n} = \mathbf{g}\) where \(\tau = -p\mathbf{I} + \frac{\mu}{2}\left(\nabla\mathbf{u} + \nabla\mathbf{u}^T\right)\) is the Newtonian fluid stress and \(\mu\) is the fluid viscosity.
CartesianGeometry database in the input file, specifically with the flag periodic_dimension.
|
virtualinherited |
Get a vector of pointers to the velocity boundary condition specification objects.
|
virtualinherited |
Get a pointer to the pressure boundary condition specification object.
|
inherited |
Supply initial conditions for the velocity field.
|
inherited |
Supply initial conditions for the pressure.
|
inherited |
Supply a body force.
|
inherited |
Supply a fluid source/sink distribution.
|
inherited |
Supply a CartGridFunction that specifies \( \nabla \cdot \mathbf{u} \).
| Q_fcn | is not specified, then \( \nabla \cdot \mathbf{u} = 0 \) is imposed. |
|
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 variable that specifies the divergence of the velocity.
|
inherited |
Return a pointer to a fluid velocity variable that can be used to advect quantities registered with an advection-diffusion solver.
Data are allocated for this variable using the current context. Patch data for this variable are allocated only when an advection-diffusion solver is registered with the Navier-Stokes solver.
|
inherited |
Get a vector of pointers to the intermediate velocity boundary condition specification objects.
|
inherited |
Get a pointer to the projection Poisson problem boundary condition specification object.
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
Register an operator to compute the convective acceleration term u*grad u.
If the supplied operator is nullptr, then the integrator will solve the time-dependent (creeping) Stokes equations instead of the Navier-Stokes equations.
|
inherited |
Indicate that the convective operator should be (re-)initialized before the next time step.
|
inherited |
Register a solver for the velocity subsystem.
|
inherited |
Indicate that the velocity subdomain solver should be (re-)initialized before the next time step.
|
inherited |
Register a solver for the pressure subsystem.
|
inherited |
Indicate that the velocity subdomain solver should be (re-)initialized before the next time step.
|
overridevirtualinherited |
Returns the number of cycles to perform for the present time step.
Reimplemented from IBTK::HierarchyIntegrator.
Reimplemented in IBAMR::INSVCStaggeredConservativeHierarchyIntegrator.
|
virtualinherited |
Return the current CFL number (i.e., the CFL number computed from the current velocity field). This is typically computed at the end of each time step.
|
protectedvirtualinherited |
Update the current CFL number (i.e., at the end of a timestep).
|
protectedinherited |
Compute the maximum vorticity magnitude at any given point.
Omega_idx.
|
protectedinherited |
Tag cells based on the vorticity magnitude.
|
overrideprotectedvirtualinherited |
Return the maximum stable time step size.
Reimplemented from IBTK::HierarchyIntegrator.
|
protectedinherited |
Determine the largest stable timestep on an individual patch level.
|
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.
|
virtualinherited |
Register a load balancer for non-uniform load balancing.
load_balancer is registered with another object; e.g., IBHierarchyIntegrator passes load_balancer to its IBStrategy object. It will still usually be necessary to call HierarchyIntegrator::registerLoadBalancer at the beginning top of such overloaded functions.d_workload_idx. All inheriting classes assume that this is the cell variable associated with workload estimates and will write their own data into these arrays. Reimplemented in IBAMR::IBHierarchyIntegrator.
|
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 |
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 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 provide implementation-specific function to determine whether regridding should occur at the current time step.
A default implementation is provided that indicates that the hierarchy should be regridded at a fixed integer interval of time steps unless a parent integrator has been registered with this integrator. If a parent integrator has been registered with this integrator, atRegridPointSpecialized() returns false, in order to allow the parent integrator to control the timing of regridding.
Reimplemented in IBAMR::IBHierarchyIntegrator.
|
protectedvirtualinherited |
Virtual method to provide implementation-specific workload estimate calculations. This method will be called on each registered child integrator. The intent of this function is that any HierarchyIntegrator object that manages data whose work varies from SAMRAI cell to SAMRAI cell will represent its additional workload by summing estimates into the workload_data_idx variable.
Reimplemented in IBAMR::IBHierarchyIntegrator.
|
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.
|
protected |
L1 norm of the discrete divergence of the fluid velocity before regridding.
|
protected |
L2 norm of the discrete divergence of the fluid velocity before regridding.
|
protected |
L-infinity norm of the discrete divergence of the fluid velocity before regridding.
|
protected |
L1 norm of the discrete divergence of the fluid velocity after regridding.
|
protected |
L2 norm of the discrete divergence of the fluid velocity after regridding.
|
protected |
L-infinity norm of the discrete divergence of the fluid velocity after regridding.
|
protected |
Whether we need to perform a regrid projection when (re-)initializing composite hierarchy data.
|
private |
Hierarchy operations objects.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Fluid solver variables.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Variables for graphical output.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Vector of all such plot-only data indices.
|
private |
|
private |
|
private |
|
private |
|
protectedinherited |
|
protectedinherited |
Enum indicating the time integration employed for the implicit discretization of the viscous terms.
|
protectedinherited |
Enum indicating the time integration employed for the explicit discretization of the convective terms.
|
protectedinherited |
Enum indicating the time integration employed for the explicit discretization of the convective terms during the initial time step.
|
protectedinherited |
Problem coeficients.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
Current CFL number.
|
protectedinherited |
The maximum CFL number.
|
protectedinherited |
Cell tagging criteria based on the relative and absolute magnitudes of the local vorticity.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
This boolean value determines whether the pressure is normalized to have zero mean (i.e., discrete integral) at the end of each timestep.
|
protectedinherited |
This boolean value determines whether the velocity is normalized to have zero mean (i.e., discrete integral) at the end of each timestep.
This parameter only affects the case in which rho=0 (i.e. the steady Stokes equations).
|
protectedinherited |
This boolean value determines whether the convective acceleration term is included in the momentum equation. (If it is not, this solver effectively solves the so-called creeping Stokes equations.)
|
protectedinherited |
Threshold that determines whether the velocity field needs to be reprojected following adaptive regridding.
|
protectedinherited |
Double precision values are (optional) factors used to rescale the velocity, pressure, and force for plotting.
Boolean values indicates whether to output various quantities for visualization.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
Objects to set initial conditions, boundary conditions, body forces, and fluid source/sink distributions.
|
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 |
|
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