IBAMR  IBAMR version 0.19.
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator Class Referenceabstract

Class INSVCStaggeredNonConservativeHierarchyIntegrator provides a staggered-grid solver for the incompressible Navier-Stokes equations on an AMR grid hierarchy, with variable coefficients. More...

#include <ibamr/INSVCStaggeredNonConservativeHierarchyIntegrator.h>

Inheritance diagram for IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator:
Inheritance graph
[legend]

Public Types

using ResetFluidPropertiesFcnPtr = void(*)(int property_idx, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > property_var, SAMRAI::tbox::Pointer< IBTK::HierarchyMathOps > hier_math_ops, int cycle_num, double time, double current_time, double new_time, void *ctx)
 Function to reset fluid density or viscosity if they are maintained by this integrator. More...
 
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

 INSVCStaggeredNonConservativeHierarchyIntegrator (std::string object_name, SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > input_db, bool register_for_restart=true)
 
 ~INSVCStaggeredNonConservativeHierarchyIntegrator ()=default
 
void initializeHierarchyIntegrator (SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > > gridding_alg) override
 
void initializePatchHierarchy (SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > > gridding_alg) override
 
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 removeNullSpace (const SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > &sol_vec)
 
void registerMassDensityBoundaryConditions (SAMRAI::solv::RobinBcCoefStrategy< NDIM > *rho_bc_coef) override
 
void setTransportedMassDensityVariable (SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > rho_adv_diff_var, unsigned int adv_diff_idx=0)
 
SAMRAI::tbox::Pointer< ConvectiveOperatorgetConvectiveOperator () override
 
SAMRAI::tbox::Pointer< IBTK::PoissonSolvergetVelocitySubdomainSolver () override
 
SAMRAI::tbox::Pointer< IBTK::PoissonSolvergetPressureSubdomainSolver () override
 
void setStokesSolver (SAMRAI::tbox::Pointer< StaggeredStokesSolver > stokes_solver)
 
SAMRAI::tbox::Pointer< StaggeredStokesSolvergetStokesSolver ()
 
void setStokesSolverNeedsInit ()
 
void registerMassDensityVariable (SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > rho_var)
 
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > getMassDensityVariable () const
 
void registerViscosityVariable (SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > mu_var)
 
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > getViscosityVariable () const
 
void setDensityVCInterpolationType (const IBTK::VCInterpType vc_interp_type)
 
void setViscosityVCInterpolationType (const IBTK::VCInterpType vc_interp_type)
 
void registerResetFluidDensityFcn (ResetFluidPropertiesFcnPtr callback, void *ctx)
 Register function to reset fluid density. More...
 
void registerResetFluidViscosityFcn (ResetFluidPropertiesFcnPtr callback, void *ctx)
 Register function to reset fluid viscosity. More...
 
virtual void registerBrinkmanPenalizationStrategy (SAMRAI::tbox::Pointer< IBAMR::BrinkmanPenalizationStrategy > brinkman_force)
 Register BrinkmanPenalizationStrategy objects to add Brinkman penalization term in the momentum equation. More...
 
void registerMassDensityInitialConditions (SAMRAI::tbox::Pointer< IBTK::CartGridFunction > rho_init_fcn)
 Supply initial conditions for the density field, if maintained by the fluid integrator. More...
 
void registerViscosityInitialConditions (SAMRAI::tbox::Pointer< IBTK::CartGridFunction > mu_init_fcn)
 Supply initial conditions for the viscosity field, if maintained by the fluid integrator. More...
 
void registerViscosityBoundaryConditions (SAMRAI::solv::RobinBcCoefStrategy< NDIM > *mu_bc_coef)
 
void setTransportedViscosityVariable (SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > mu_adv_diff_var, unsigned int adv_diff_idx=0)
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > getTransportedViscosityVariable () const
 Get the transported viscosity variable that is being manintained by an advection-diffusion integrator. More...
 
int getLinearOperatorRhoPatchDataIndex () const
 Get the side-centered density patch data index, which will always be the newest one used in the linear operator i.e. rho_sc in rho_sc*u^{n+1} term. More...
 
bool rhoIsConstant () const
 Get whether or not density is constant. More...
 
bool muIsConstant () const
 Get whether or not viscosity is constant. More...
 
int getLinearOperatorMuPatchDataIndex () const
 Get the cell-centered viscosity patch data index, which will always be the newest one used in the linear operator. More...
 
int getInterpolatedLinearOperatorMuPatchDataIndex () const
 Get the interpolated viscosity patch data index, which will always be the newest one used in the linear operator. More...
 
SAMRAI::tbox::Array< doublegetScalingFactor () const
 Get the scaling factor used for A, p and u_rhs. More...
 
SAMRAI::solv::RobinBcCoefStrategy< NDIM > * getViscosityBoundaryConditions () const
 Get the viscosity boundary conditions. More...
 
const std::vector< SAMRAI::tbox::Pointer< IBAMR::BrinkmanPenalizationStrategy > > & getBrinkmanPenalizationStrategy () const
 Get the Brinkman penalization objects registered with this class. More...
 
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > getOldVelocityVariable () const
 Get "old" velocity variable. More...
 
void setViscousTimeSteppingType (TimeSteppingType viscous_time_stepping_type)
 
TimeSteppingType getViscousTimeSteppingType () const
 
void setConvectiveTimeSteppingType (TimeSteppingType convective_time_stepping_type)
 
TimeSteppingType getConvectiveTimeSteppingType () const
 
void setInitialConvectiveTimeSteppingType (TimeSteppingType init_convective_time_stepping_type) const
 
TimeSteppingType getInitialConvectiveTimeSteppingType () const
 
void registerAdvDiffHierarchyIntegrator (SAMRAI::tbox::Pointer< AdvDiffHierarchyIntegrator > adv_diff_hier_integrator)
 
void setStokesSpecifications (StokesSpecifications problem_coefs)
 
const StokesSpecificationsgetStokesSpecifications () const
 
void registerPhysicalBoundaryConditions (const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &bc_coefs)
 
virtual const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > & getVelocityBoundaryConditions () const
 
virtual SAMRAI::solv::RobinBcCoefStrategy< NDIM > * getPressureBoundaryConditions () const
 
void registerVelocityInitialConditions (SAMRAI::tbox::Pointer< IBTK::CartGridFunction > U_init)
 
void registerPressureInitialConditions (SAMRAI::tbox::Pointer< IBTK::CartGridFunction > P_init)
 
void registerBodyForceFunction (SAMRAI::tbox::Pointer< IBTK::CartGridFunction > F_fcn)
 
void registerFluidSourceFunction (SAMRAI::tbox::Pointer< IBTK::CartGridFunction > Q_fcn)
 
void registerVelocityDivergenceFunction (SAMRAI::tbox::Pointer< IBTK::CartGridFunction > Q_fcn)
 
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
 
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > getVelocityDivergenceVariable () const
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > getAdvectionVelocityVariable () const
 
std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > getIntermediateVelocityBoundaryConditions () const
 
SAMRAI::solv::RobinBcCoefStrategy< NDIM > * getProjectionBoundaryConditions () const
 
void setConvectiveOperatorType (const std::string &op_type)
 Set the convective operator type to be used by the solver. More...
 
const std::string & getConvectiveOperatorType () const
 Get the convective operator type used by the solver. More...
 
void setConvectiveDifferencingType (ConvectiveDifferencingType difference_form)
 Set the convective differencing form to be used by the solver. More...
 
ConvectiveDifferencingType getConvectiveDifferencingType () const
 Get the convective differencing form used by the solver. More...
 
void setCreepingFlow (bool creeping_flow)
 Set whether the integrator solves the time-dependent (creeping) Stokes equations. Otherwise, the integrator solves the time-dependent Navier-Stokes equations. More...
 
bool getCreepingFlow () const
 Get whether the integrator solves the time-dependent (creeping) Stokes equations. Otherwise, the integrator solves the time-dependent Navier-Stokes equations. More...
 
void setConvectiveOperator (SAMRAI::tbox::Pointer< ConvectiveOperator > convective_op)
 
void setConvectiveOperatorNeedsInit ()
 
void setVelocitySubdomainSolver (SAMRAI::tbox::Pointer< IBTK::PoissonSolver > velocity_solver)
 
void setVelocitySubdomainSolverNeedsInit ()
 
void setPressureSubdomainSolver (SAMRAI::tbox::Pointer< IBTK::PoissonSolver > pressure_solver)
 
void setPressureSubdomainSolverNeedsInit ()
 
int getNumberOfCycles () const override
 
virtual double getCurrentCFLNumber () const
 
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
 
virtual void registerLoadBalancer (SAMRAI::tbox::Pointer< SAMRAI::mesh::LoadBalancer< NDIM > > load_balancer)
 
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 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::VariableContextgetContext (VariableContextType ctx_type) const
 
SAMRAI::tbox::Pointer< SAMRAI::hier::VariableContextgetCurrentContext () const
 
SAMRAI::tbox::Pointer< SAMRAI::hier::VariableContextgetNewContext () const
 
SAMRAI::tbox::Pointer< SAMRAI::hier::VariableContextgetScratchContext () const
 
SAMRAI::tbox::Pointer< SAMRAI::hier::VariableContextgetPlotContext () 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 &current_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)
 

Protected Member Functions

void integrateHierarchySpecialized (double current_time, double new_time, int cycle_num=0) override
 
void initializeLevelDataSpecialized (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, bool allocate_data) override
 
void resetHierarchyConfigurationSpecialized (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int coarsest_level, int finest_level) override
 
void applyGradientDetectorSpecialized (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
 
void setupPlotDataSpecialized () override
 
void regridProjection (const bool initial_time) override
 
double getStableTimestep (SAMRAI::tbox::Pointer< SAMRAI::hier::Patch< NDIM > > patch) const override
 
double getStableTimestep (SAMRAI::tbox::Pointer< SAMRAI::hier::PatchLevel< NDIM > > level) const
 
void regridHierarchyBeginSpecialized () override
 
void regridHierarchyEndSpecialized () override
 
void initializeCompositeHierarchyDataSpecialized (double init_data_time, bool initial_time) override
 
void copySideToFace (const int U_fc_idx, const int U_sc_idx, SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy)
 
virtual void updateCurrentCFLNumber (const int data_idx, const double dt)
 
double getMaximumVorticityMagnitude (const int Omega_idx)
 
void tagCellsByVorticityMagnitude (const int level_number, const int Omega_idx, const int tag_idx)
 
double getMaximumTimeStepSizeSpecialized () override
 
void putToDatabaseSpecialized (SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > db) override
 
virtual double getMinimumTimeStepSizeSpecialized ()
 
virtual void synchronizeHierarchyDataSpecialized (VariableContextType ctx_type)
 
virtual void resetTimeDependentHierarchyDataSpecialized (double new_time)
 
virtual void resetIntegratorToPreadvanceStateSpecialized ()
 
virtual bool atRegridPointSpecialized () const
 
virtual void addWorkloadEstimate (SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, const int workload_data_idx)
 
virtual void executePreprocessIntegrateHierarchyCallbackFcns (double current_time, double new_time, int num_cycles)
 
virtual void executeIntegrateHierarchyCallbackFcns (double current_time, double new_time, int cycle_num)
 
virtual void executePostprocessIntegrateHierarchyCallbackFcns (double current_time, double new_time, bool skip_synchronize_new_state_data, int num_cycles)
 
virtual void executeApplyGradientDetectorCallbackFcns (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)
 
virtual void executeRegridHierarchyCallbackFcns (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, double data_time, bool initial_time)
 
void registerGhostfillRefineAlgorithm (const std::string &name, SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineAlgorithm< NDIM > > ghostfill_alg, std::unique_ptr< SAMRAI::xfer::RefinePatchStrategy< NDIM > > ghostfill_patch_strategy=nullptr)
 
void registerProlongRefineAlgorithm (const std::string &name, SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineAlgorithm< NDIM > > prolong_alg, std::unique_ptr< SAMRAI::xfer::RefinePatchStrategy< NDIM > > prolong_patch_strategy=nullptr)
 
void registerCoarsenAlgorithm (const std::string &name, SAMRAI::tbox::Pointer< SAMRAI::xfer::CoarsenAlgorithm< NDIM > > coarsen_alg, std::unique_ptr< SAMRAI::xfer::CoarsenPatchStrategy< NDIM > > coarsen_patch_strategy=nullptr)
 
SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineAlgorithm< NDIM > > getGhostfillRefineAlgorithm (const std::string &name) const
 
SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineAlgorithm< NDIM > > getProlongRefineAlgorithm (const std::string &name) const
 
SAMRAI::tbox::Pointer< SAMRAI::xfer::CoarsenAlgorithm< NDIM > > getCoarsenAlgorithm (const std::string &name) const
 
const std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineSchedule< NDIM > > > & getGhostfillRefineSchedules (const std::string &name) const
 
const std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineSchedule< NDIM > > > & getProlongRefineSchedules (const std::string &name) const
 
const std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::CoarsenSchedule< NDIM > > > & getCoarsenSchedules (const std::string &name) const
 
void registerChildHierarchyIntegrator (HierarchyIntegrator *child_integrator)
 
void registerParentHierarchyIntegrator (HierarchyIntegrator *parent_integrator)
 
SAMRAI::tbox::Pointer< HierarchyMathOps > buildHierarchyMathOps (SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy)
 
void setupTagBuffer (SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > > gridding_alg)
 
bool regriddingHierarchy () const
 
bool atRegridTimeStep () const
 

Protected Attributes

double d_div_U_norm_1_pre = 0.0
 
double d_div_U_norm_2_pre = 0.0
 
double d_div_U_norm_oo_pre = 0.0
 
double d_div_U_norm_1_post = 0.0
 
double d_div_U_norm_2_post = 0.0
 
double d_div_U_norm_oo_post = 0.0
 
bool d_do_regrid_projection = false
 
SAMRAI::tbox::Pointer< SAMRAI::math::HierarchyCellDataOpsReal< NDIM, double > > d_hier_cc_data_ops
 
SAMRAI::tbox::Pointer< SAMRAI::math::HierarchyFaceDataOpsReal< NDIM, double > > d_hier_fc_data_ops
 
SAMRAI::tbox::Pointer< SAMRAI::math::HierarchySideDataOpsReal< NDIM, double > > d_hier_sc_data_ops
 
SAMRAI::tbox::Pointer< SAMRAI::math::HierarchyNodeDataOpsReal< NDIM, double > > d_hier_nc_data_ops
 
SAMRAI::tbox::Pointer< SAMRAI::math::HierarchyEdgeDataOpsReal< NDIM, double > > d_hier_ec_data_ops
 
SAMRAI::tbox::Pointer< StaggeredStokesPhysicalBoundaryHelperd_bc_helper
 
SAMRAI::tbox::Pointer< IBTK::SideDataSynchronizationd_side_synch_op
 
SAMRAI::tbox::Pointer< IBTK::HierarchyGhostCellInterpolationd_rho_bdry_bc_fill_op
 
SAMRAI::tbox::Pointer< IBTK::HierarchyGhostCellInterpolationd_mu_bdry_bc_fill_op
 
double d_rho_scale = 1.0
 
double d_mu_scale = 1.0
 
bool d_output_rho = false
 
bool d_output_mu = false
 
int d_coarsest_reset_ln
 
int d_finest_reset_ln
 
SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > d_U_scratch_vec
 
SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > d_U_rhs_vec
 
SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > d_U_adv_vec
 
SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > d_N_vec
 
SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > d_P_scratch_vec
 
SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > d_P_rhs_vec
 
SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > d_sol_vec
 
SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > d_rhs_vec
 
std::vector< SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > > d_nul_vecs
 
std::vector< SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > > d_U_nul_vecs
 
bool d_vectors_need_init
 
bool d_explicitly_remove_nullspace = false
 
std::string d_stokes_solver_type = StaggeredStokesSolverManager::UNDEFINED
 
std::string d_stokes_precond_type = StaggeredStokesSolverManager::UNDEFINED
 
SAMRAI::tbox::Pointer< SAMRAI::tbox::Databased_stokes_solver_db
 
SAMRAI::tbox::Pointer< SAMRAI::tbox::Databased_stokes_precond_db
 
SAMRAI::tbox::Pointer< StaggeredStokesSolverd_stokes_solver
 
bool d_stokes_solver_needs_init
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > d_U_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > d_U_old_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > d_U_cc_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > d_P_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > d_F_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > d_F_cc_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > d_N_old_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > d_Omega_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > d_Div_U_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > d_U_regrid_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > d_U_src_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > d_indicator_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > d_F_div_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > d_Q_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > d_EE_var
 
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > d_rho_var
 
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > d_mu_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > d_pressure_D_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > d_pressure_rhs_D_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > d_velocity_D_cc_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > d_velocity_C_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > d_velocity_L_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > d_velocity_rhs_C_var
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > d_N_full_var
 
std::string d_N_coarsen_type = "CONSERVATIVE_COARSEN"
 
std::string d_N_refine_type = "CONSERVATIVE_LINEAR_REFINE"
 
std::string d_mu_coarsen_type = "CONSERVATIVE_COARSEN"
 
std::string d_mu_refine_type = "CONSERVATIVE_LINEAR_REFINE"
 
std::string d_mu_bdry_extrap_type = "CONSTANT"
 
std::string d_rho_coarsen_type = "CONSERVATIVE_COARSEN"
 
std::string d_rho_refine_type = "CONSERVATIVE_LINEAR_REFINE"
 
std::string d_rho_bdry_extrap_type = "CONSTANT"
 
std::vector< ResetFluidPropertiesFcnPtrd_reset_rho_fcns
 
std::vector< ResetFluidPropertiesFcnPtrd_reset_mu_fcns
 
std::vector< void * > d_reset_rho_fcns_ctx
 
std::vector< void * > d_reset_mu_fcns_ctx
 
std::vector< SAMRAI::tbox::Pointer< IBAMR::BrinkmanPenalizationStrategy > > d_brinkman_force
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > d_temp_sc_var
 
int d_temp_sc_idx
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > d_temp_cc_var
 
int d_temp_cc_idx
 
int d_U_current_idx
 
int d_U_new_idx
 
int d_U_scratch_idx
 
int d_U_old_current_idx
 
int d_U_old_new_idx
 
int d_U_old_scratch_idx
 
int d_P_current_idx
 
int d_P_new_idx
 
int d_P_scratch_idx
 
int d_F_current_idx
 
int d_F_new_idx
 
int d_F_scratch_idx
 
int d_Q_current_idx
 
int d_Q_new_idx
 
int d_Q_scratch_idx
 
int d_N_old_current_idx
 
int d_N_old_new_idx
 
int d_N_old_scratch_idx
 
int d_mu_current_idx
 
int d_mu_new_idx
 
int d_mu_scratch_idx
 
int d_U_cc_idx
 
int d_F_cc_idx
 
int d_Omega_idx
 
int d_Div_U_idx
 
int d_EE_idx
 
int d_U_regrid_idx
 
int d_U_src_idx
 
int d_indicator_idx
 
int d_F_div_idx
 
int d_velocity_C_idx
 
int d_velocity_L_idx
 
int d_velocity_D_idx
 
int d_velocity_D_cc_idx
 
int d_pressure_D_idx
 
int d_velocity_rhs_C_idx
 
int d_velocity_rhs_D_idx
 
int d_pressure_rhs_D_idx
 
int d_mu_interp_idx
 
int d_N_full_idx
 
int d_mu_linear_op_idx
 
int d_mu_interp_linear_op_idx
 
int d_rho_linear_op_idx
 
bool d_rho_is_const = false
 
bool d_mu_is_const = false
 
IBTK::VCInterpType d_rho_vc_interp_type
 
IBTK::VCInterpType d_mu_vc_interp_type
 
SAMRAI::tbox::Array< doubled_A_scale
 
int d_precond_reinit_interval = 1
 
SAMRAI::tbox::Pointer< IBTK::CartGridFunctiond_rho_init_fcn
 
SAMRAI::tbox::Pointer< IBTK::CartGridFunctiond_mu_init_fcn
 
SAMRAI::solv::RobinBcCoefStrategy< NDIM > * d_mu_bc_coef = nullptr
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > d_mu_adv_diff_var
 
unsigned int d_mu_adv_diff_idx = 0
 
bool d_integrator_is_initialized = false
 
TimeSteppingType d_viscous_time_stepping_type = TRAPEZOIDAL_RULE
 
TimeSteppingType d_convective_time_stepping_type = ADAMS_BASHFORTH
 
TimeSteppingType d_init_convective_time_stepping_type = MIDPOINT_RULE
 
StokesSpecifications d_problem_coefs
 
std::vector< SAMRAI::tbox::Pointer< AdvDiffHierarchyIntegrator > > d_adv_diff_hier_integrators
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > d_U_adv_diff_var
 
double d_cfl_current = std::numeric_limits<double>::quiet_NaN()
 
double d_cfl_max = 1.0
 
bool d_using_vorticity_tagging = false
 
SAMRAI::tbox::Array< doubled_Omega_rel_thresh
 
SAMRAI::tbox::Array< doubled_Omega_abs_thresh
 
bool d_normalize_pressure = false
 
bool d_normalize_velocity = false
 
bool d_creeping_flow = false
 
double d_regrid_max_div_growth_factor = 1.1
 
double d_U_scale = 1.0
 
double d_P_scale = 1.0
 
double d_F_scale = 1.0
 
double d_Q_scale = 1.0
 
double d_Omega_scale = 1.0
 
double d_Div_U_scale = 1.0
 
double d_EE_scale = 1.0
 
bool d_output_U = true
 
bool d_output_P = true
 
bool d_output_F = false
 
bool d_output_Q = false
 
bool d_output_Omega = true
 
bool d_output_Div_U = true
 
bool d_output_EE = false
 
std::string d_U_coarsen_type = "CONSERVATIVE_COARSEN"
 
std::string d_U_refine_type = "CONSERVATIVE_LINEAR_REFINE"
 
std::string d_P_coarsen_type = "CONSERVATIVE_COARSEN"
 
std::string d_P_refine_type = "LINEAR_REFINE"
 
std::string d_F_coarsen_type = "CONSERVATIVE_COARSEN"
 
std::string d_F_refine_type = "CONSERVATIVE_LINEAR_REFINE"
 
std::string d_Q_coarsen_type = "CONSERVATIVE_COARSEN"
 
std::string d_Q_refine_type = "CONSTANT_REFINE"
 
SAMRAI::tbox::Pointer< IBTK::CartGridFunctiond_U_init
 
SAMRAI::tbox::Pointer< IBTK::CartGridFunctiond_P_init
 
SAMRAI::solv::LocationIndexRobinBcCoefs< NDIM > d_default_bc_coefs
 
std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > d_bc_coefs
 
std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > d_U_bc_coefs
 
std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > d_U_star_bc_coefs
 
TractionBcType d_traction_bc_type = TRACTION
 
SAMRAI::solv::RobinBcCoefStrategy< NDIM > * d_P_bc_coef
 
std::unique_ptr< SAMRAI::solv::RobinBcCoefStrategy< NDIM > > d_Phi_bc_coef
 
SAMRAI::tbox::Pointer< IBTK::CartGridFunctiond_F_fcn
 
SAMRAI::tbox::Pointer< IBTK::CartGridFunctiond_Q_fcn
 
SAMRAI::tbox::Pointer< IBTK::HierarchyGhostCellInterpolationd_U_bdry_bc_fill_op
 
SAMRAI::tbox::Pointer< IBTK::HierarchyGhostCellInterpolationd_P_bdry_bc_fill_op
 
SAMRAI::tbox::Pointer< IBTK::HierarchyGhostCellInterpolationd_Q_bdry_bc_fill_op
 
SAMRAI::tbox::Pointer< IBTK::HierarchyGhostCellInterpolationd_no_fill_op
 
bool d_use_div_sink_drag_term = false
 
std::string d_convective_op_type = "DEFAULT"
 
ConvectiveDifferencingType d_convective_difference_form = ADVECTIVE
 
SAMRAI::tbox::Pointer< SAMRAI::tbox::Databased_convective_op_input_db
 
SAMRAI::tbox::Pointer< ConvectiveOperatord_convective_op
 
bool d_convective_op_needs_init
 
std::string d_velocity_solver_type
 
std::string d_velocity_precond_type
 
std::string d_velocity_sub_precond_type
 
SAMRAI::tbox::Pointer< SAMRAI::tbox::Databased_velocity_solver_db
 
SAMRAI::tbox::Pointer< SAMRAI::tbox::Databased_velocity_precond_db
 
SAMRAI::tbox::Pointer< SAMRAI::tbox::Databased_velocity_sub_precond_db
 
SAMRAI::tbox::Pointer< IBTK::PoissonSolverd_velocity_solver
 
bool d_velocity_solver_needs_init
 
std::string d_pressure_solver_type
 
std::string d_pressure_precond_type
 
std::string d_pressure_sub_precond_type
 
SAMRAI::tbox::Pointer< SAMRAI::tbox::Databased_pressure_solver_db
 
SAMRAI::tbox::Pointer< SAMRAI::tbox::Databased_pressure_precond_db
 
SAMRAI::tbox::Pointer< SAMRAI::tbox::Databased_pressure_sub_precond_db
 
SAMRAI::tbox::Pointer< IBTK::PoissonSolverd_pressure_solver
 
bool d_pressure_solver_needs_init
 
std::string d_regrid_projection_solver_type
 
std::string d_regrid_projection_precond_type
 
std::string d_regrid_projection_sub_precond_type
 
SAMRAI::tbox::Pointer< SAMRAI::tbox::Databased_regrid_projection_solver_db
 
SAMRAI::tbox::Pointer< SAMRAI::tbox::Databased_regrid_projection_precond_db
 
SAMRAI::tbox::Pointer< SAMRAI::tbox::Databased_regrid_projection_sub_precond_db
 
std::string d_object_name
 
bool d_registered_for_restart = false
 
SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > d_hierarchy
 
SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > > d_gridding_alg
 
SAMRAI::tbox::Pointer< SAMRAI::mesh::LoadBalancer< NDIM > > d_load_balancer
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > d_workload_var
 
int d_workload_idx = IBTK::invalid_index
 
bool d_hierarchy_is_initialized = false
 
bool d_may_need_to_reset_hierarchy_configuration = false
 
HierarchyIntegratord_parent_integrator = nullptr
 
std::set< HierarchyIntegrator * > d_child_integrators
 
SAMRAI::tbox::Pointer< SAMRAI::appu::VisItDataWriter< NDIM > > d_visit_writer
 
double d_integrator_time = std::numeric_limits<double>::quiet_NaN()
 
double d_start_time = 0.0
 
double d_end_time = std::numeric_limits<double>::max()
 
double d_dt_init = std::numeric_limits<double>::max()
 
double d_dt_min = 0.0
 
double d_dt_max = std::numeric_limits<double>::max()
 
double d_dt_growth_factor = 2.0
 
int d_integrator_step = 0
 
int d_max_integrator_steps = std::numeric_limits<int>::max()
 
std::deque< doubled_dt_previous
 
int d_num_cycles = 1
 
int d_current_num_cycles = -1
 
int d_current_cycle_num = -1
 
double d_current_dt = std::numeric_limits<double>::quiet_NaN()
 
int d_regrid_interval = 1
 
RegridMode d_regrid_mode = STANDARD
 
bool d_enable_logging = false
 
bool d_enable_logging_solver_iterations = false
 
std::string d_bdry_extrap_type = "LINEAR"
 
SAMRAI::tbox::Array< intd_tag_buffer = { 0 }
 
SAMRAI::tbox::Pointer< HierarchyMathOps > d_hier_math_ops
 
bool d_manage_hier_math_ops = true
 
std::list< SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > > d_state_variables
 
std::list< SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > > d_scratch_variables
 
std::list< SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > > d_copy_scratch_to_current_fast
 
std::list< SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > > d_copy_scratch_to_current_slow
 
SAMRAI::hier::ComponentSelector d_current_data
 
SAMRAI::hier::ComponentSelector d_new_data
 
SAMRAI::hier::ComponentSelector d_scratch_data
 
SAMRAI::hier::ComponentSelector d_plot_data
 
std::map< SAMRAI::hier::Variable< NDIM > *, SAMRAI::tbox::Pointer< CartGridFunction > > d_state_var_init_fcns
 
SAMRAI::tbox::Pointer< SAMRAI::hier::VariableContextd_current_context
 
SAMRAI::tbox::Pointer< SAMRAI::hier::VariableContextd_new_context
 
SAMRAI::tbox::Pointer< SAMRAI::hier::VariableContextd_scratch_context
 
SAMRAI::tbox::Pointer< SAMRAI::hier::VariableContextd_plot_context
 
SAMRAI::hier::ComponentSelector d_fill_after_regrid_bc_idxs
 
SAMRAI::xfer::RefineAlgorithm< NDIM > d_fill_after_regrid_prolong_alg
 
std::unique_ptr< SAMRAI::xfer::RefinePatchStrategy< NDIM > > d_fill_after_regrid_phys_bdry_bc_op
 
std::vector< PreprocessIntegrateHierarchyCallbackFcnPtrd_preprocess_integrate_hierarchy_callbacks
 
std::vector< void * > d_preprocess_integrate_hierarchy_callback_ctxs
 
std::vector< IntegrateHierarchyCallbackFcnPtrd_integrate_hierarchy_callbacks
 
std::vector< void * > d_integrate_hierarchy_callback_ctxs
 
std::vector< PostprocessIntegrateHierarchyCallbackFcnPtrd_postprocess_integrate_hierarchy_callbacks
 
std::vector< void * > d_postprocess_integrate_hierarchy_callback_ctxs
 
std::vector< ApplyGradientDetectorCallbackFcnPtrd_apply_gradient_detector_callbacks
 
std::vector< void * > d_apply_gradient_detector_callback_ctxs
 
std::vector< RegridHierarchyCallbackFcnPtrd_regrid_hierarchy_callbacks
 
std::vector< void * > d_regrid_hierarchy_callback_ctxs
 

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

 INSVCStaggeredNonConservativeHierarchyIntegrator ()=delete
 Default constructor. More...
 
 INSVCStaggeredNonConservativeHierarchyIntegrator (const INSVCStaggeredNonConservativeHierarchyIntegrator &from)=delete
 Copy constructor. More...
 
INSVCStaggeredNonConservativeHierarchyIntegratoroperator= (const INSVCStaggeredNonConservativeHierarchyIntegrator &that)=delete
 Assignment operator. More...
 
TimeSteppingType getConvectiveTimeSteppingType (int cycle_num)
 
void updateOperatorsAndSolvers (double current_time, double new_time)
 
void 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)
 
void 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)
 
void preprocessOperatorsAndSolvers (double current_time, double new_time)
 
void getFromInput (SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > db, bool is_from_restart)
 
void getFromRestart ()
 

Private Attributes

SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > d_rho_interp_var
 
int d_rho_current_idx
 
int d_rho_new_idx
 
int d_rho_scratch_idx
 
int d_rho_interp_idx
 
SAMRAI::solv::RobinBcCoefStrategy< NDIM > * d_rho_bc_coef = nullptr
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > d_rho_adv_diff_var
 
unsigned int d_rho_adv_diff_idx = 0
 
bool d_regridding_hierarchy = false
 
bool d_at_regrid_time_step = false
 
RefineAlgorithmMap d_ghostfill_algs
 
RefinePatchStrategyMap d_ghostfill_strategies
 
RefineScheduleMap d_ghostfill_scheds
 
RefineAlgorithmMap d_prolong_algs
 
RefinePatchStrategyMap d_prolong_strategies
 
RefineScheduleMap d_prolong_scheds
 
CoarsenAlgorithmMap d_coarsen_algs
 
CoarsenPatchStrategyMap d_coarsen_strategies
 
CoarsenScheduleMap d_coarsen_scheds
 

Detailed Description

This class always uses a non-conservative discretization of the form of the momentum equation \(\rho(\frac{\partial u}{\partial t} + N(u)) = -\nabla p + \nabla \cdot \mu (\nabla u) + (\nabla u)^T )\) where \( N(u) = u \cdot \nabla u \) for convective_difference_form = ADVECTIVE and \( N(u) = \nabla \cdot (u u) \) for convective_difference_form = CONSERVATIVE.

In other words, this class will NEVER treat the left-hand side of the momentum equation in conservative form i.e. \frac{\partial \rho u}{\partial t} + \nabla \cdot (\rho u u)

In this class, both the density and viscosity are required to be cell centered quantities, which are then interpolated onto the required degrees of freedom (side-centers for rho and node(edge)-centers for mu in 2D(3D))

Note that this class is suitable for low density ratio flows. At high density ratios, the non-conservative form can lead to instabilities, and INSVCStaggeredConservativeHierarchyIntegrator should be used instead.

Member Typedef Documentation

◆ ResetFluidPropertiesFcnPtr

using IBAMR::INSVCStaggeredHierarchyIntegrator::ResetFluidPropertiesFcnPtr = void (*)(int property_idx, SAMRAI::tbox::Pointer<SAMRAI::hier::Variable<NDIM> > property_var, SAMRAI::tbox::Pointer<IBTK::HierarchyMathOps> hier_math_ops, int cycle_num, double time, double current_time, double new_time, void* ctx)
inherited

◆ PreprocessIntegrateHierarchyCallbackFcnPtr

using IBTK::HierarchyIntegrator::PreprocessIntegrateHierarchyCallbackFcnPtr = void (*)(double current_time, double new_time, int num_cycles, void* ctx)
inherited

Callback function specification to enable further specialization of preprocessIntegrateHierarchy().

◆ IntegrateHierarchyCallbackFcnPtr

using IBTK::HierarchyIntegrator::IntegrateHierarchyCallbackFcnPtr = void (*)(double current_time, double new_time, int cycle_num, void* ctx)
inherited

Callback function specification to enable further specialization of integrateHierarchy().

◆ PostprocessIntegrateHierarchyCallbackFcnPtr

using IBTK::HierarchyIntegrator::PostprocessIntegrateHierarchyCallbackFcnPtr = void (*)(double current_time, double new_time, bool skip_synchronize_new_state_data, int num_cycles, void* ctx)
inherited

Callback function specification to enable further specialization of postprocessIntegrateHierarchy().

◆ ApplyGradientDetectorCallbackFcnPtr

using IBTK::HierarchyIntegrator::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)
inherited

Callback function specification to enable further specialization of applyGradientDetector().

◆ RegridHierarchyCallbackFcnPtr

using IBTK::HierarchyIntegrator::RegridHierarchyCallbackFcnPtr = void (*)(SAMRAI::tbox::Pointer<SAMRAI::hier::BasePatchHierarchy<NDIM> > hierarchy, double data_time, bool initial_time, void* ctx)
inherited

Callback function specification to enable further specialization of regridHierarchy().

◆ RefineAlgorithmMap

◆ RefinePatchStrategyMap

using IBTK::HierarchyIntegrator::RefinePatchStrategyMap = std::map<std::string, std::unique_ptr<SAMRAI::xfer::RefinePatchStrategy<NDIM> > >
privateinherited

◆ RefineScheduleMap

using IBTK::HierarchyIntegrator::RefineScheduleMap = std::map<std::string, std::vector<SAMRAI::tbox::Pointer<SAMRAI::xfer::RefineSchedule<NDIM> > > >
privateinherited

◆ CoarsenAlgorithmMap

◆ CoarsenPatchStrategyMap

using IBTK::HierarchyIntegrator::CoarsenPatchStrategyMap = std::map<std::string, std::unique_ptr<SAMRAI::xfer::CoarsenPatchStrategy<NDIM> > >
privateinherited

◆ CoarsenScheduleMap

using IBTK::HierarchyIntegrator::CoarsenScheduleMap = std::map<std::string, std::vector<SAMRAI::tbox::Pointer<SAMRAI::xfer::CoarsenSchedule<NDIM> > > >
privateinherited

Constructor & Destructor Documentation

◆ INSVCStaggeredNonConservativeHierarchyIntegrator() [1/3]

IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::INSVCStaggeredNonConservativeHierarchyIntegrator ( std::string  object_name,
SAMRAI::tbox::Pointer< SAMRAI::tbox::Database input_db,
bool  register_for_restart = true 
)

The constructor for class INSVCStaggeredNonConservativeHierarchyIntegrator sets some default values, reads in configuration information from input and restart databases, and registers the integrator object with the restart manager when requested.

◆ ~INSVCStaggeredNonConservativeHierarchyIntegrator()

IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::~INSVCStaggeredNonConservativeHierarchyIntegrator ( )
default

The destructor for class INSVCStaggeredNonConservativeHierarchyIntegrator unregisters the integrator object with the restart manager when the object is so registered.

◆ INSVCStaggeredNonConservativeHierarchyIntegrator() [2/3]

IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::INSVCStaggeredNonConservativeHierarchyIntegrator ( )
privatedelete
Note
This constructor is not implemented and should not be used.

◆ INSVCStaggeredNonConservativeHierarchyIntegrator() [3/3]

IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::INSVCStaggeredNonConservativeHierarchyIntegrator ( const INSVCStaggeredNonConservativeHierarchyIntegrator from)
privatedelete
Note
This constructor is not implemented and should not be used.
Parameters
fromThe value to copy to this object.

Member Function Documentation

◆ initializeHierarchyIntegrator()

void IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::initializeHierarchyIntegrator ( SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > >  hierarchy,
SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > >  gridding_alg 
)
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().

Reimplemented from IBAMR::INSVCStaggeredHierarchyIntegrator.

◆ initializePatchHierarchy()

void IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::initializePatchHierarchy ( SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > >  hierarchy,
SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > >  gridding_alg 
)
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 IBAMR::INSVCStaggeredHierarchyIntegrator.

◆ preprocessIntegrateHierarchy()

void IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::preprocessIntegrateHierarchy ( double  current_time,
double  new_time,
int  num_cycles = 1 
)
overridevirtual

Prepare to advance the data from current_time to new_time.

Reimplemented from IBAMR::INSVCStaggeredHierarchyIntegrator.

◆ postprocessIntegrateHierarchy()

void IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::postprocessIntegrateHierarchy ( double  current_time,
double  new_time,
bool  skip_synchronize_new_state_data,
int  num_cycles = 1 
)
overridevirtual

Clean up data following call(s) to integrateHierarchy().

Reimplemented from IBAMR::INSVCStaggeredHierarchyIntegrator.

◆ removeNullSpace()

void IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::removeNullSpace ( const SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > &  sol_vec)

Explicitly remove nullspace components from a solution vector.

◆ registerMassDensityBoundaryConditions()

void IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::registerMassDensityBoundaryConditions ( SAMRAI::solv::RobinBcCoefStrategy< NDIM > *  rho_bc_coef)
overridevirtual

◆ setTransportedMassDensityVariable()

void IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::setTransportedMassDensityVariable ( SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  rho_adv_diff_var,
unsigned int  adv_diff_idx = 0 
)

◆ integrateHierarchySpecialized()

void IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::integrateHierarchySpecialized ( double  current_time,
double  new_time,
int  cycle_num = 0 
)
overrideprotectedvirtual

Synchronously advance each level in the hierarchy over the given time increment.

Implements IBTK::HierarchyIntegrator.

◆ initializeLevelDataSpecialized()

void IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::initializeLevelDataSpecialized ( 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,
bool  allocate_data 
)
overrideprotectedvirtual

Initialize data on a new level after it is inserted into an AMR patch hierarchy by the gridding algorithm.

Reimplemented from IBAMR::INSVCStaggeredHierarchyIntegrator.

◆ resetHierarchyConfigurationSpecialized()

void IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::resetHierarchyConfigurationSpecialized ( SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > >  hierarchy,
int  coarsest_level,
int  finest_level 
)
overrideprotectedvirtual

Reset cached hierarchy dependent data.

Reimplemented from IBAMR::INSVCStaggeredHierarchyIntegrator.

◆ applyGradientDetectorSpecialized()

void IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::applyGradientDetectorSpecialized ( 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 
)
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 IBAMR::INSVCStaggeredHierarchyIntegrator.

◆ setupPlotDataSpecialized()

void IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::setupPlotDataSpecialized ( )
overrideprotectedvirtual

Prepare variables for plotting.

Reimplemented from IBAMR::INSVCStaggeredHierarchyIntegrator.

◆ regridProjection()

void IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::regridProjection ( const bool  initial_time)
overrideprotectedvirtual

Project the velocity field following a regridding operation.

Implements IBAMR::INSHierarchyIntegrator.

◆ operator=()

INSVCStaggeredNonConservativeHierarchyIntegrator& IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::operator= ( const INSVCStaggeredNonConservativeHierarchyIntegrator that)
privatedelete
Note
This operator is not implemented and should not be used.
Parameters
thatThe value to assign to this object.
Returns
A reference to this object.

◆ getConvectiveTimeSteppingType() [1/2]

TimeSteppingType IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::getConvectiveTimeSteppingType ( int  cycle_num)
private

Determine the convective time stepping type for the current time step and cycle number.

◆ updateOperatorsAndSolvers()

void IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::updateOperatorsAndSolvers ( double  current_time,
double  new_time 
)
private

Update the operators and solvers to account for changes due to time-dependent coefficients

◆ setupSolverVectors()

void IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::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 
)
private

Setup solution and RHS vectors using state data maintained by the integrator.

◆ resetSolverVectors()

void IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::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 
)
private

Copy the solution data into the state data maintained by the integrator.

◆ getConvectiveOperator()

SAMRAI::tbox::Pointer<ConvectiveOperator> IBAMR::INSVCStaggeredHierarchyIntegrator::getConvectiveOperator ( )
overridevirtualinherited

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.

◆ getVelocitySubdomainSolver()

SAMRAI::tbox::Pointer<IBTK::PoissonSolver> IBAMR::INSVCStaggeredHierarchyIntegrator::getVelocitySubdomainSolver ( )
overridevirtualinherited

Get the subdomain solver for the velocity subsystem. Such solvers can be useful in constructing block preconditioners.

Implements IBAMR::INSHierarchyIntegrator.

◆ getPressureSubdomainSolver()

SAMRAI::tbox::Pointer<IBTK::PoissonSolver> IBAMR::INSVCStaggeredHierarchyIntegrator::getPressureSubdomainSolver ( )
overridevirtualinherited

Get the subdomain solver for the pressure subsystem. Such solvers can be useful in constructing block preconditioners.

Implements IBAMR::INSHierarchyIntegrator.

◆ setStokesSolver()

void IBAMR::INSVCStaggeredHierarchyIntegrator::setStokesSolver ( SAMRAI::tbox::Pointer< StaggeredStokesSolver stokes_solver)
inherited

Register a solver for the time-dependent incompressible Stokes equations.

◆ getStokesSolver()

SAMRAI::tbox::Pointer<StaggeredStokesSolver> IBAMR::INSVCStaggeredHierarchyIntegrator::getStokesSolver ( )
inherited

Get the solver for the time-dependent incompressible Stokes equations used by this solver class.

◆ setStokesSolverNeedsInit()

void IBAMR::INSVCStaggeredHierarchyIntegrator::setStokesSolverNeedsInit ( )
inherited

Indicate that the Stokes solver should be (re-)initialized before the next time step.

◆ registerMassDensityVariable()

void IBAMR::INSVCStaggeredHierarchyIntegrator::registerMassDensityVariable ( SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > >  rho_var)
inherited

Register a variable mass density variable with the hierarchy integrator.

◆ getMassDensityVariable()

SAMRAI::tbox::Pointer<SAMRAI::hier::Variable<NDIM> > IBAMR::INSVCStaggeredHierarchyIntegrator::getMassDensityVariable ( ) const
inherited

Get the mass density variable registered with the hierarchy integrator.

◆ registerViscosityVariable()

void IBAMR::INSVCStaggeredHierarchyIntegrator::registerViscosityVariable ( SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > >  mu_var)
inherited

Register a variable viscosity variable with the hierarchy integrator.

◆ getViscosityVariable()

SAMRAI::tbox::Pointer<SAMRAI::hier::Variable<NDIM> > IBAMR::INSVCStaggeredHierarchyIntegrator::getViscosityVariable ( ) const
inherited

Get the viscosity variable registered with the hierarchy integrator.

◆ setDensityVCInterpolationType()

void IBAMR::INSVCStaggeredHierarchyIntegrator::setDensityVCInterpolationType ( const IBTK::VCInterpType  vc_interp_type)
inherited

Set the interpolation type used for material properties rho

◆ setViscosityVCInterpolationType()

void IBAMR::INSVCStaggeredHierarchyIntegrator::setViscosityVCInterpolationType ( const IBTK::VCInterpType  vc_interp_type)
inherited

Set the interpolation type used for material properties mu

◆ registerResetFluidDensityFcn()

void IBAMR::INSVCStaggeredHierarchyIntegrator::registerResetFluidDensityFcn ( ResetFluidPropertiesFcnPtr  callback,
void *  ctx 
)
inherited

◆ registerResetFluidViscosityFcn()

void IBAMR::INSVCStaggeredHierarchyIntegrator::registerResetFluidViscosityFcn ( ResetFluidPropertiesFcnPtr  callback,
void *  ctx 
)
inherited

◆ registerBrinkmanPenalizationStrategy()

virtual void IBAMR::INSVCStaggeredHierarchyIntegrator::registerBrinkmanPenalizationStrategy ( SAMRAI::tbox::Pointer< IBAMR::BrinkmanPenalizationStrategy brinkman_force)
virtualinherited

◆ registerMassDensityInitialConditions()

void IBAMR::INSVCStaggeredHierarchyIntegrator::registerMassDensityInitialConditions ( SAMRAI::tbox::Pointer< IBTK::CartGridFunction rho_init_fcn)
inherited

◆ registerViscosityInitialConditions()

void IBAMR::INSVCStaggeredHierarchyIntegrator::registerViscosityInitialConditions ( SAMRAI::tbox::Pointer< IBTK::CartGridFunction mu_init_fcn)
inherited

◆ registerViscosityBoundaryConditions()

void IBAMR::INSVCStaggeredHierarchyIntegrator::registerViscosityBoundaryConditions ( SAMRAI::solv::RobinBcCoefStrategy< NDIM > *  mu_bc_coef)
inherited

◆ setTransportedViscosityVariable()

void IBAMR::INSVCStaggeredHierarchyIntegrator::setTransportedViscosityVariable ( SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  mu_adv_diff_var,
unsigned int  adv_diff_idx = 0 
)
inherited

◆ getTransportedViscosityVariable()

SAMRAI::tbox::Pointer<SAMRAI::pdat::CellVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::getTransportedViscosityVariable ( ) const
inherited

◆ getLinearOperatorRhoPatchDataIndex()

int IBAMR::INSVCStaggeredHierarchyIntegrator::getLinearOperatorRhoPatchDataIndex ( ) const
inlineinherited
Note
These patch data will not be deallocated at the end of the time step, so they can be used for various applications

◆ rhoIsConstant()

bool IBAMR::INSVCStaggeredHierarchyIntegrator::rhoIsConstant ( ) const
inlineinherited

◆ muIsConstant()

bool IBAMR::INSVCStaggeredHierarchyIntegrator::muIsConstant ( ) const
inlineinherited

◆ getLinearOperatorMuPatchDataIndex()

int IBAMR::INSVCStaggeredHierarchyIntegrator::getLinearOperatorMuPatchDataIndex ( ) const
inlineinherited
Note
These patch data will not be deallocated at the end of the time step, so they can be used for various applications

◆ getInterpolatedLinearOperatorMuPatchDataIndex()

int IBAMR::INSVCStaggeredHierarchyIntegrator::getInterpolatedLinearOperatorMuPatchDataIndex ( ) const
inlineinherited
Note
These patch data will not be deallocated at the end of the time step, so they can be used for various applications

◆ getScalingFactor()

SAMRAI::tbox::Array<double> IBAMR::INSVCStaggeredHierarchyIntegrator::getScalingFactor ( ) const
inlineinherited

◆ getViscosityBoundaryConditions()

SAMRAI::solv::RobinBcCoefStrategy<NDIM>* IBAMR::INSVCStaggeredHierarchyIntegrator::getViscosityBoundaryConditions ( ) const
inlineinherited

◆ getBrinkmanPenalizationStrategy()

const std::vector<SAMRAI::tbox::Pointer<IBAMR::BrinkmanPenalizationStrategy> >& IBAMR::INSVCStaggeredHierarchyIntegrator::getBrinkmanPenalizationStrategy ( ) const
inlineinherited

◆ getOldVelocityVariable()

SAMRAI::tbox::Pointer<SAMRAI::hier::Variable<NDIM> > IBAMR::INSVCStaggeredHierarchyIntegrator::getOldVelocityVariable ( ) const
inlineinherited

◆ getStableTimestep() [1/2]

double IBAMR::INSVCStaggeredHierarchyIntegrator::getStableTimestep ( SAMRAI::tbox::Pointer< SAMRAI::hier::Patch< NDIM > >  patch) const
overrideprotectedvirtualinherited

Determine the largest stable timestep on an individual patch.

Implements IBAMR::INSHierarchyIntegrator.

◆ getStableTimestep() [2/2]

double IBAMR::INSHierarchyIntegrator::getStableTimestep ( SAMRAI::tbox::Pointer< SAMRAI::hier::PatchLevel< NDIM > >  level) const
protectedinherited

Determine the largest stable timestep on an individual patch level.

◆ regridHierarchyBeginSpecialized()

void IBAMR::INSVCStaggeredHierarchyIntegrator::regridHierarchyBeginSpecialized ( )
overrideprotectedvirtualinherited

Prepare the current hierarchy for regridding. Here we calculate the divergence.

Reimplemented from IBTK::HierarchyIntegrator.

◆ regridHierarchyEndSpecialized()

void IBAMR::INSVCStaggeredHierarchyIntegrator::regridHierarchyEndSpecialized ( )
overrideprotectedvirtualinherited

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 then project the velocity field onto a divergence-free set of grid functions.

Reimplemented from IBTK::HierarchyIntegrator.

◆ initializeCompositeHierarchyDataSpecialized()

void IBAMR::INSVCStaggeredHierarchyIntegrator::initializeCompositeHierarchyDataSpecialized ( double  init_data_time,
bool  initial_time 
)
overrideprotectedvirtualinherited

Perform data initialization after the entire hierarchy has been constructed.

Note
If \( \nabla \cdot \mathbf{u} = Q \) is specified, then at the initial time the velocity projection step is omitted in this routine. This is because \( Q \) generally involves derivatives of transported variables, which are not known at the initial time. More concretely, imagine we are simulating a phase change or combustion process. The volume change effect \( \nabla \cdot \mathbf{u} \) that is captured by \( Q \) would be computed through gradients of temperature or species concentration. These gradients are not known at the initial time. These volume change causing processes gradually evolve during the simulation, which builds up \( Q \) over time. The best thing to do at \( t = 0 \), is not do anything. This tantamounts to assuming \( Q = 0 \) initially, which would almost certainly be the case in these types of simulations. For example, one would not simulate a combustion process starting from a point where some stuff has already been combusted. If that were the case, then it is already known what species have been generated/consumed at an arbitrary time $t$. In other words, the whole solution is known for the problem.

Reimplemented from IBTK::HierarchyIntegrator.

◆ copySideToFace()

void IBAMR::INSVCStaggeredHierarchyIntegrator::copySideToFace ( const int  U_fc_idx,
const int  U_sc_idx,
SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > >  hierarchy 
)
protectedinherited

Copy data from a side-centered variable to a face-centered variable.

◆ preprocessOperatorsAndSolvers()

void IBAMR::INSVCStaggeredHierarchyIntegrator::preprocessOperatorsAndSolvers ( double  current_time,
double  new_time 
)
privateinherited

Preprocess the operators and solvers used by the hierarchy integrator.

◆ setViscousTimeSteppingType()

void IBAMR::INSHierarchyIntegrator::setViscousTimeSteppingType ( TimeSteppingType  viscous_time_stepping_type)
inherited

Set the type of viscous time integration scheme being employed by the incompressible flow solver.

Different implementations may support different time stepping schemes.

◆ getViscousTimeSteppingType()

TimeSteppingType IBAMR::INSHierarchyIntegrator::getViscousTimeSteppingType ( ) const
inherited

Get the type of viscous time integration scheme being employed by the incompressible flow solver.

Different implementations may support different time stepping schemes.

◆ setConvectiveTimeSteppingType()

void IBAMR::INSHierarchyIntegrator::setConvectiveTimeSteppingType ( TimeSteppingType  convective_time_stepping_type)
inherited

Set the type of convective time integration scheme being employed by the incompressible flow solver.

Different implementations may support different time stepping schemes.

◆ getConvectiveTimeSteppingType() [2/2]

TimeSteppingType IBAMR::INSHierarchyIntegrator::getConvectiveTimeSteppingType ( ) const
inherited

Get the type of convective time integration scheme being employed by the incompressible flow solver.

Different implementations may support different time stepping schemes.

◆ setInitialConvectiveTimeSteppingType()

void IBAMR::INSHierarchyIntegrator::setInitialConvectiveTimeSteppingType ( TimeSteppingType  init_convective_time_stepping_type) const
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.

Note
This is used only when the basic convective time stepping scheme uses a multi-step method such as Adams-Bashforth.

◆ getInitialConvectiveTimeSteppingType()

TimeSteppingType IBAMR::INSHierarchyIntegrator::getInitialConvectiveTimeSteppingType ( ) const
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.

Note
This is used only when the basic convective time stepping scheme uses a multi-step method such as Adams-Bashforth.

◆ registerAdvDiffHierarchyIntegrator()

void IBAMR::INSHierarchyIntegrator::registerAdvDiffHierarchyIntegrator ( SAMRAI::tbox::Pointer< AdvDiffHierarchyIntegrator adv_diff_hier_integrator)
inherited

Register an advection-diffusion solver with this incompressible Navier-Stokes solver.

◆ setStokesSpecifications()

void IBAMR::INSHierarchyIntegrator::setStokesSpecifications ( StokesSpecifications  problem_coefs)
inherited

Set the problem coefficients used by the solver.

◆ getStokesSpecifications()

const StokesSpecifications* IBAMR::INSHierarchyIntegrator::getStokesSpecifications ( ) const
inherited

Get a const pointer to the problem coefficients object used by the solver.

◆ registerPhysicalBoundaryConditions()

void IBAMR::INSHierarchyIntegrator::registerPhysicalBoundaryConditions ( const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &  bc_coefs)
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.

Note
Periodic boundaries take presidence over physical boundaries. The type of boundary can be adjusted through the CartesianGeometry database in the input file, specifically with the flag periodic_dimension.
Current implementations of physical boundary conditions require that at any physical location the values of \( a\) and \( b \) stasify that either \( a = 1 \) or \(b = 1\) as well as \(a + b = 1\). An error will occur if this does not happen.
See also
IBTK::muParserRobinBcCoefs

◆ getVelocityBoundaryConditions()

virtual const std::vector<SAMRAI::solv::RobinBcCoefStrategy<NDIM>*>& IBAMR::INSHierarchyIntegrator::getVelocityBoundaryConditions ( ) const
virtualinherited

Get a vector of pointers to the velocity boundary condition specification objects.

Note
Implementations may return a vector of nullptr pointers.

◆ getPressureBoundaryConditions()

virtual SAMRAI::solv::RobinBcCoefStrategy<NDIM>* IBAMR::INSHierarchyIntegrator::getPressureBoundaryConditions ( ) const
virtualinherited

Get a pointer to the pressure boundary condition specification object.

Note
Implementations may return a nullptr pointer.

◆ registerVelocityInitialConditions()

void IBAMR::INSHierarchyIntegrator::registerVelocityInitialConditions ( SAMRAI::tbox::Pointer< IBTK::CartGridFunction U_init)
inherited

Supply initial conditions for the velocity field.

◆ registerPressureInitialConditions()

void IBAMR::INSHierarchyIntegrator::registerPressureInitialConditions ( SAMRAI::tbox::Pointer< IBTK::CartGridFunction P_init)
inherited

Supply initial conditions for the pressure.

Note
Initial conditions are not required for the pressure, but when available, they can speed the convergence of the solver during the initial time step.

◆ registerBodyForceFunction()

void IBAMR::INSHierarchyIntegrator::registerBodyForceFunction ( SAMRAI::tbox::Pointer< IBTK::CartGridFunction F_fcn)
inherited

Supply a body force.

◆ registerFluidSourceFunction()

void IBAMR::INSHierarchyIntegrator::registerFluidSourceFunction ( SAMRAI::tbox::Pointer< IBTK::CartGridFunction Q_fcn)
inherited

Supply a fluid source/sink distribution.

Deprecated:
Use registerVelocityDivergenceFunction() instead.

◆ registerVelocityDivergenceFunction()

void IBAMR::INSHierarchyIntegrator::registerVelocityDivergenceFunction ( SAMRAI::tbox::Pointer< IBTK::CartGridFunction Q_fcn)
inherited

Supply a CartGridFunction that specifies \( \nabla \cdot \mathbf{u} \).

Note
If
Parameters
Q_fcnis not specified, then \( \nabla \cdot \mathbf{u} = 0 \) is imposed.

◆ getVelocityVariable()

SAMRAI::tbox::Pointer<SAMRAI::hier::Variable<NDIM> > IBAMR::INSHierarchyIntegrator::getVelocityVariable ( ) const
inherited

Return a pointer to the fluid velocity variable.

◆ getPressureVariable()

SAMRAI::tbox::Pointer<SAMRAI::hier::Variable<NDIM> > IBAMR::INSHierarchyIntegrator::getPressureVariable ( ) const
inherited

Return a pointer to the fluid pressure state variable.

◆ getBodyForceVariable()

SAMRAI::tbox::Pointer<SAMRAI::hier::Variable<NDIM> > IBAMR::INSHierarchyIntegrator::getBodyForceVariable ( ) const
inherited

Return a pointer to the body force variable.

◆ getFluidSourceVariable()

SAMRAI::tbox::Pointer<SAMRAI::hier::Variable<NDIM> > IBAMR::INSHierarchyIntegrator::getFluidSourceVariable ( ) const
inherited

Return a pointer to the source strength variable.

Deprecated:
Use getVelocityDivergenceVariable() instead.

◆ getVelocityDivergenceVariable()

SAMRAI::tbox::Pointer<SAMRAI::hier::Variable<NDIM> > IBAMR::INSHierarchyIntegrator::getVelocityDivergenceVariable ( ) const
inherited

Return a pointer to the variable that specifies the divergence of the velocity.

◆ getAdvectionVelocityVariable()

SAMRAI::tbox::Pointer<SAMRAI::pdat::FaceVariable<NDIM, double> > IBAMR::INSHierarchyIntegrator::getAdvectionVelocityVariable ( ) const
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.

◆ getIntermediateVelocityBoundaryConditions()

std::vector<SAMRAI::solv::RobinBcCoefStrategy<NDIM>*> IBAMR::INSHierarchyIntegrator::getIntermediateVelocityBoundaryConditions ( ) const
inherited

Get a vector of pointers to the intermediate velocity boundary condition specification objects.

◆ getProjectionBoundaryConditions()

SAMRAI::solv::RobinBcCoefStrategy<NDIM>* IBAMR::INSHierarchyIntegrator::getProjectionBoundaryConditions ( ) const
inherited

Get a pointer to the projection Poisson problem boundary condition specification object.

◆ setConvectiveOperatorType()

void IBAMR::INSHierarchyIntegrator::setConvectiveOperatorType ( const std::string &  op_type)
inherited

◆ getConvectiveOperatorType()

const std::string& IBAMR::INSHierarchyIntegrator::getConvectiveOperatorType ( ) const
inherited

◆ setConvectiveDifferencingType()

void IBAMR::INSHierarchyIntegrator::setConvectiveDifferencingType ( ConvectiveDifferencingType  difference_form)
inherited

◆ getConvectiveDifferencingType()

ConvectiveDifferencingType IBAMR::INSHierarchyIntegrator::getConvectiveDifferencingType ( ) const
inherited

◆ setCreepingFlow()

void IBAMR::INSHierarchyIntegrator::setCreepingFlow ( bool  creeping_flow)
inherited

◆ getCreepingFlow()

bool IBAMR::INSHierarchyIntegrator::getCreepingFlow ( ) const
inherited

◆ setConvectiveOperator()

void IBAMR::INSHierarchyIntegrator::setConvectiveOperator ( SAMRAI::tbox::Pointer< ConvectiveOperator convective_op)
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.

◆ setConvectiveOperatorNeedsInit()

void IBAMR::INSHierarchyIntegrator::setConvectiveOperatorNeedsInit ( )
inherited

Indicate that the convective operator should be (re-)initialized before the next time step.

◆ setVelocitySubdomainSolver()

void IBAMR::INSHierarchyIntegrator::setVelocitySubdomainSolver ( SAMRAI::tbox::Pointer< IBTK::PoissonSolver velocity_solver)
inherited

Register a solver for the velocity subsystem.

◆ setVelocitySubdomainSolverNeedsInit()

void IBAMR::INSHierarchyIntegrator::setVelocitySubdomainSolverNeedsInit ( )
inherited

Indicate that the velocity subdomain solver should be (re-)initialized before the next time step.

◆ setPressureSubdomainSolver()

void IBAMR::INSHierarchyIntegrator::setPressureSubdomainSolver ( SAMRAI::tbox::Pointer< IBTK::PoissonSolver pressure_solver)
inherited

Register a solver for the pressure subsystem.

◆ setPressureSubdomainSolverNeedsInit()

void IBAMR::INSHierarchyIntegrator::setPressureSubdomainSolverNeedsInit ( )
inherited

Indicate that the velocity subdomain solver should be (re-)initialized before the next time step.

◆ getNumberOfCycles()

int IBAMR::INSHierarchyIntegrator::getNumberOfCycles ( ) const
overridevirtualinherited

Returns the number of cycles to perform for the present time step.

Reimplemented from IBTK::HierarchyIntegrator.

Reimplemented in IBAMR::INSVCStaggeredConservativeHierarchyIntegrator.

◆ getCurrentCFLNumber()

virtual double IBAMR::INSHierarchyIntegrator::getCurrentCFLNumber ( ) const
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.

◆ updateCurrentCFLNumber()

virtual void IBAMR::INSHierarchyIntegrator::updateCurrentCFLNumber ( const int  data_idx,
const double  dt 
)
protectedvirtualinherited

Update the current CFL number (i.e., at the end of a timestep).

Note
this method can handle both cell-centered and side-centered velocities.

◆ getMaximumVorticityMagnitude()

double IBAMR::INSHierarchyIntegrator::getMaximumVorticityMagnitude ( const int  Omega_idx)
protectedinherited

Compute the maximum vorticity magnitude at any given point.

Note
This function does not read ghost data from Omega_idx.

◆ tagCellsByVorticityMagnitude()

void IBAMR::INSHierarchyIntegrator::tagCellsByVorticityMagnitude ( const int  level_number,
const int  Omega_idx,
const int  tag_idx 
)
protectedinherited

Tag cells based on the vorticity magnitude.

Note
This function is typically called by applyGradientDetectorSpecialized() in inheriting classes.

◆ getMaximumTimeStepSizeSpecialized()

double IBAMR::INSHierarchyIntegrator::getMaximumTimeStepSizeSpecialized ( )
overrideprotectedvirtualinherited

Return the maximum stable time step size.

Reimplemented from IBTK::HierarchyIntegrator.

◆ putToDatabaseSpecialized()

void IBAMR::INSHierarchyIntegrator::putToDatabaseSpecialized ( SAMRAI::tbox::Pointer< SAMRAI::tbox::Database db)
overrideprotectedvirtualinherited

Write out specialized object state to the given database.

Reimplemented from IBTK::HierarchyIntegrator.

Reimplemented in IBAMR::INSStaggeredHierarchyIntegrator.

◆ getFromInput()

void IBAMR::INSHierarchyIntegrator::getFromInput ( SAMRAI::tbox::Pointer< SAMRAI::tbox::Database db,
bool  is_from_restart 
)
privateinherited

Read input values from a given database.

◆ getFromRestart()

void IBAMR::INSHierarchyIntegrator::getFromRestart ( )
privateinherited

Read object state from the restart file and initialize class data members.

◆ getName()

const std::string& IBTK::HierarchyIntegrator::getName ( ) const
inherited

Return the name of the hierarchy integrator object.

◆ advanceHierarchy()

virtual void IBTK::HierarchyIntegrator::advanceHierarchy ( double  dt)
virtualinherited

Integrate data on all patches on all levels of the patch hierarchy over the specified time increment.

◆ getMinimumTimeStepSize()

double IBTK::HierarchyIntegrator::getMinimumTimeStepSize ( )
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().

◆ getMaximumTimeStepSize()

double IBTK::HierarchyIntegrator::getMaximumTimeStepSize ( )
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().

◆ synchronizeHierarchyData()

void IBTK::HierarchyIntegrator::synchronizeHierarchyData ( VariableContextType  ctx_type)
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().

◆ resetTimeDependentHierarchyData()

void IBTK::HierarchyIntegrator::resetTimeDependentHierarchyData ( double  new_time)
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().

◆ resetIntegratorToPreadvanceState()

void IBTK::HierarchyIntegrator::resetIntegratorToPreadvanceState ( )
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().

◆ regridHierarchy()

virtual void IBTK::HierarchyIntegrator::regridHierarchy ( )
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:

  1. initializeCompositeHierarchyData
  2. synchronizeHierarchyData
Warning
This class assumes, but does not enforce, that this method is only called on the parent integrator. A future release of IBAMR will enforce this assumption.

◆ atRegridPoint()

bool IBTK::HierarchyIntegrator::atRegridPoint ( ) const
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().

◆ getIntegratorTime()

double IBTK::HierarchyIntegrator::getIntegratorTime ( ) const
inherited

Return the current integration time.

◆ getStartTime()

double IBTK::HierarchyIntegrator::getStartTime ( ) const
inherited

Return the initial integration time.

◆ getEndTime()

double IBTK::HierarchyIntegrator::getEndTime ( ) const
inherited

Return the final integration time.

◆ getIntegratorStep()

int IBTK::HierarchyIntegrator::getIntegratorStep ( ) const
inherited

Return the number of time steps taken by the integrator.

◆ getMaxIntegratorSteps()

int IBTK::HierarchyIntegrator::getMaxIntegratorSteps ( ) const
inherited

Return the maximum number of time steps allowed by the integrator.

◆ stepsRemaining()

bool IBTK::HierarchyIntegrator::stepsRemaining ( ) const
inherited

Return true if any time steps remain, false otherwise.

◆ updateWorkloadEstimates()

void IBTK::HierarchyIntegrator::updateWorkloadEstimates ( )
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:

Pointer<VisItDataWriter<NDIM> > visit_data_writer = app_initializer->getVisItDataWriter();
if (uses_visit)
{
time_integrator->registerVisItDataWriter(visit_data_writer);
// This is only valid if a load balancer has previously been attached
// to the time integrator or, should it exist, its parent integrator;
// otherwise no workload estimates are computed
visit_data_writer->registerPlotQuantity("workload", "SCALAR",
time_integrator->getWorkloadDataIndex());
}
Note
This function computes workloads by setting the estimated work value on all cells to 1 and then calling addWorkloadEstimate on the current object and on each child hierarchy integrator.
The workload estimate itself is stored in the variable with index HierarchyIntegrator::d_workload_idx.

@seealso HierarchyIntegrator::getWorkloadDataIndex()

◆ getPatchHierarchy()

SAMRAI::tbox::Pointer<SAMRAI::hier::PatchHierarchy<NDIM> > IBTK::HierarchyIntegrator::getPatchHierarchy ( ) const
inherited

Return a pointer to the patch hierarchy managed by the integrator.

◆ getGriddingAlgorithm()

SAMRAI::tbox::Pointer<SAMRAI::mesh::GriddingAlgorithm<NDIM> > IBTK::HierarchyIntegrator::getGriddingAlgorithm ( ) const
inherited

Return a pointer to the gridding algorithm object managed by the integrator.

◆ registerLoadBalancer()

virtual void IBTK::HierarchyIntegrator::registerLoadBalancer ( SAMRAI::tbox::Pointer< SAMRAI::mesh::LoadBalancer< NDIM > >  load_balancer)
virtualinherited

Register a load balancer for non-uniform load balancing.

Note
inheriting classes may reimplement this method in such a way that 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.
If it does not already exist, calling this function will also register a cell variable for containing workload estimates (and subsequently register that variable with the load balancer): The variable index is 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.

◆ getWorkloadDataIndex()

int IBTK::HierarchyIntegrator::getWorkloadDataIndex ( ) const
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.

Note
this is only implemented since this information is not readily available from the variable database and there is no other way to access this variable. The main use of this variable is for optionally adding the workload estimates to the VisIt data writer.

◆ registerVisItDataWriter()

void IBTK::HierarchyIntegrator::registerVisItDataWriter ( SAMRAI::tbox::Pointer< SAMRAI::appu::VisItDataWriter< NDIM > >  visit_writer)
inherited

Register a VisIt data writer so the integrator can output data files that may be postprocessed with the VisIt visualization tool.

◆ getVisItDataWriter()

SAMRAI::tbox::Pointer<SAMRAI::appu::VisItDataWriter<NDIM> > IBTK::HierarchyIntegrator::getVisItDataWriter ( ) const
inherited

Get a pointer to the VisIt data writer registered with the solver.

◆ setupPlotData()

void IBTK::HierarchyIntegrator::setupPlotData ( )
inherited

Prepare variables for plotting.

Subclasses can control the method used to setup plot data by overriding the protected virtual member function setupPlotData().

Note
Subclasses are allowed to require that this function be called immediately before writing visualization data.

◆ getCurrentCycleNumber()

virtual int IBTK::HierarchyIntegrator::getCurrentCycleNumber ( ) const
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.

◆ getCurrentTimeStepSize()

virtual double IBTK::HierarchyIntegrator::getCurrentTimeStepSize ( ) const
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.

◆ integrateHierarchy()

void IBTK::HierarchyIntegrator::integrateHierarchy ( double  current_time,
double  new_time,
int  cycle_num = 0 
)
inherited

Advance data from current_time to new_time. The current implementation calls doIntegrateHierarchy() followed by executeIntegrateHierarchyCallbackFcns().

◆ skipCycle()

void IBTK::HierarchyIntegrator::skipCycle ( double  current_time,
double  new_time,
int  cycle_num = 0 
)
inherited

Method to skip a cycle of the time integration scheme (e.g. for cases in which time integration is handled by another class).

◆ registerPreprocessIntegrateHierarchyCallback()

void IBTK::HierarchyIntegrator::registerPreprocessIntegrateHierarchyCallback ( PreprocessIntegrateHierarchyCallbackFcnPtr  callback,
void *  ctx = nullptr 
)
inherited

Register a callback function to enable further specialization of preprocessIntegrateHierarchy().

◆ registerIntegrateHierarchyCallback()

void IBTK::HierarchyIntegrator::registerIntegrateHierarchyCallback ( IntegrateHierarchyCallbackFcnPtr  callback,
void *  ctx = nullptr 
)
inherited

Register a callback function to enable further specialization of integrateHierarchy().

◆ registerPostprocessIntegrateHierarchyCallback()

void IBTK::HierarchyIntegrator::registerPostprocessIntegrateHierarchyCallback ( PostprocessIntegrateHierarchyCallbackFcnPtr  callback,
void *  ctx = nullptr 
)
inherited

Register a callback function to enable further specialization of postprocessIntegrateHierarchy().

◆ registerApplyGradientDetectorCallback()

void IBTK::HierarchyIntegrator::registerApplyGradientDetectorCallback ( ApplyGradientDetectorCallbackFcnPtr  callback,
void *  ctx = nullptr 
)
inherited

Register a callback function to enable further specialization of applyGradientDetector().

◆ registerRegridHierarchyCallback()

void IBTK::HierarchyIntegrator::registerRegridHierarchyCallback ( RegridHierarchyCallbackFcnPtr  ,
void *  ctx = nullptr 
)
inherited

Register a callback function to enable further specialization of regridHierarchy().

Note
This function will be called after all data owned by the hierarchy is initialized and set, but before the data is synchronized. If data owned by the integrator is used in this function, it should be synchronized prior to use by an appropriate coarsening operation.

◆ initializeCompositeHierarchyData()

void IBTK::HierarchyIntegrator::initializeCompositeHierarchyData ( double  init_data_time,
bool  initial_time 
)
inherited

Perform data initialization after the entire hierarchy has been constructed.

◆ initializeLevelData() [1/2]

void IBTK::HierarchyIntegrator::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::PointerSAMRAI::hier::BasePatchLevel< NDIM > >(nullptr),
bool  allocate_data = true 
)
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.

Note
Subclasses should not override the implementation of this function provided by class HierarchyIntegrator. Instead, they should override the protected virtual member function initializeLevelDataSpecialized().
See also
SAMRAI::mesh::StandardTagAndInitStrategy::initializeLevelData

◆ initializeLevelData() [2/2]

virtual void SAMRAI::mesh::StandardTagAndInitStrategy< 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 
)
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.

◆ resetHierarchyConfiguration() [1/2]

void IBTK::HierarchyIntegrator::resetHierarchyConfiguration ( SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > >  hierarchy,
int  coarsest_level,
int  finest_level 
)
overrideinherited

Reset cached hierarchy dependent data.

Note
Subclasses should not override the implementation of this function provided by class HierarchyIntegrator. Instead, they should override the protected virtual member function resetHierarchyConfigurationSpecialized().
See also
SAMRAI::mesh::StandardTagAndInitStrategy::resetHierarchyConfiguration

◆ resetHierarchyConfiguration() [2/2]

virtual void SAMRAI::mesh::StandardTagAndInitStrategy< DIM >::resetHierarchyConfiguration ( const tbox::Pointer< hier::BasePatchHierarchy< DIM > >  hierarchy,
const int  coarsest_level,
const int  finest_level 
)
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.

◆ applyGradientDetector() [1/2]

void IBTK::HierarchyIntegrator::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 
)
overrideinherited

Set integer tags to "one" in cells where refinement of the given level should occur according to user-supplied feature detection criteria.

Note
Subclasses should not override the implementation of this function provided by class HierarchyIntegrator. Instead, they should override the protected virtual member function applyGradientDetectorSpecialized().
See also
SAMRAI::mesh::StandardTagAndInitStrategy::applyGradientDetector

◆ applyGradientDetector() [2/2]

virtual void SAMRAI::mesh::StandardTagAndInitStrategy< DIM >::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 
)
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.

◆ getContext()

SAMRAI::tbox::Pointer<SAMRAI::hier::VariableContext> IBTK::HierarchyIntegrator::getContext ( VariableContextType  ctx_type) const
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.

◆ getCurrentContext()

SAMRAI::tbox::Pointer<SAMRAI::hier::VariableContext> IBTK::HierarchyIntegrator::getCurrentContext ( ) const
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.

◆ getNewContext()

SAMRAI::tbox::Pointer<SAMRAI::hier::VariableContext> IBTK::HierarchyIntegrator::getNewContext ( ) const
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.

◆ getScratchContext()

SAMRAI::tbox::Pointer<SAMRAI::hier::VariableContext> IBTK::HierarchyIntegrator::getScratchContext ( ) const
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.

◆ getPlotContext()

SAMRAI::tbox::Pointer<SAMRAI::hier::VariableContext> IBTK::HierarchyIntegrator::getPlotContext ( ) const
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().

◆ isAllocatedPatchData()

bool IBTK::HierarchyIntegrator::isAllocatedPatchData ( int  data_idx,
int  coarsest_ln = invalid_level_number,
int  finest_ln = invalid_level_number 
) const
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.

◆ allocatePatchData()

void IBTK::HierarchyIntegrator::allocatePatchData ( int  data_idx,
double  data_time,
int  coarsest_ln = invalid_level_number,
int  finest_ln = invalid_level_number 
) const
inherited

Allocate a patch data index over the specified range of patch level numbers.

◆ deallocatePatchData()

void IBTK::HierarchyIntegrator::deallocatePatchData ( int  data_idx,
int  coarsest_ln = invalid_level_number,
int  finest_ln = invalid_level_number 
) const
inherited

Deallocate a patch data index over the specified range of patch level numbers.

◆ getHierarchyMathOps()

SAMRAI::tbox::Pointer<HierarchyMathOps> IBTK::HierarchyIntegrator::getHierarchyMathOps ( ) const
inherited

Routines to access utility classeses managed by the integrator.

◆ registerVariable() [1/2]

void IBTK::HierarchyIntegrator::registerVariable ( int current_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 
)
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.

◆ registerVariable() [2/2]

void IBTK::HierarchyIntegrator::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::PointerSAMRAI::hier::VariableContext >(nullptr),
const bool  register_for_restart = true 
)
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.

◆ putToDatabase()

void IBTK::HierarchyIntegrator::putToDatabase ( SAMRAI::tbox::Pointer< SAMRAI::tbox::Database db)
overridevirtualinherited

Implementations of functions declared in the SAMRAI::tbox::Serializable abstract base class.

Write out object state to the given database.

Note
Subclasses should not override the implementation of this function provided by class HierarchyIntegrator. Instead, they should override the protected virtual member function putToDatabaseSpecialized().

Implements SAMRAI::tbox::Serializable.

◆ getMinimumTimeStepSizeSpecialized()

virtual double IBTK::HierarchyIntegrator::getMinimumTimeStepSizeSpecialized ( )
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.

◆ synchronizeHierarchyDataSpecialized()

virtual void IBTK::HierarchyIntegrator::synchronizeHierarchyDataSpecialized ( VariableContextType  ctx_type)
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().

◆ resetTimeDependentHierarchyDataSpecialized()

virtual void IBTK::HierarchyIntegrator::resetTimeDependentHierarchyDataSpecialized ( double  new_time)
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.

◆ resetIntegratorToPreadvanceStateSpecialized()

virtual void IBTK::HierarchyIntegrator::resetIntegratorToPreadvanceStateSpecialized ( )
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.

◆ atRegridPointSpecialized()

virtual bool IBTK::HierarchyIntegrator::atRegridPointSpecialized ( ) const
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.

◆ addWorkloadEstimate()

virtual void IBTK::HierarchyIntegrator::addWorkloadEstimate ( SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > >  hierarchy,
const int  workload_data_idx 
)
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.

Note
The default version of this function, i.e., HierarchyIntegrator::addWorkloadEstimate(), does nothing.

Reimplemented in IBAMR::IBHierarchyIntegrator.

◆ executePreprocessIntegrateHierarchyCallbackFcns()

virtual void IBTK::HierarchyIntegrator::executePreprocessIntegrateHierarchyCallbackFcns ( double  current_time,
double  new_time,
int  num_cycles 
)
protectedvirtualinherited

Execute any user-specified preprocessIntegrateHierarchy callback functions.

◆ executeIntegrateHierarchyCallbackFcns()

virtual void IBTK::HierarchyIntegrator::executeIntegrateHierarchyCallbackFcns ( double  current_time,
double  new_time,
int  cycle_num 
)
protectedvirtualinherited

Execute any user-specified integrateHierarchy callback functions.

◆ executePostprocessIntegrateHierarchyCallbackFcns()

virtual void IBTK::HierarchyIntegrator::executePostprocessIntegrateHierarchyCallbackFcns ( double  current_time,
double  new_time,
bool  skip_synchronize_new_state_data,
int  num_cycles 
)
protectedvirtualinherited

Execute any user-specified postprocessIntegrateHierarchy callback functions.

◆ executeApplyGradientDetectorCallbackFcns()

virtual void IBTK::HierarchyIntegrator::executeApplyGradientDetectorCallbackFcns ( 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 
)
protectedvirtualinherited

Execute any user-specified applyGradientDetector callback functions.

◆ executeRegridHierarchyCallbackFcns()

virtual void IBTK::HierarchyIntegrator::executeRegridHierarchyCallbackFcns ( SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > >  hierarchy,
double  data_time,
bool  initial_time 
)
protectedvirtualinherited

Execute any user-specified regridHierarchy callback functions.

◆ registerGhostfillRefineAlgorithm()

void IBTK::HierarchyIntegrator::registerGhostfillRefineAlgorithm ( const std::string &  name,
SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineAlgorithm< NDIM > >  ghostfill_alg,
std::unique_ptr< SAMRAI::xfer::RefinePatchStrategy< NDIM > >  ghostfill_patch_strategy = nullptr 
)
protectedinherited

Register a ghost cell-filling refine algorithm.

◆ registerProlongRefineAlgorithm()

void IBTK::HierarchyIntegrator::registerProlongRefineAlgorithm ( const std::string &  name,
SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineAlgorithm< NDIM > >  prolong_alg,
std::unique_ptr< SAMRAI::xfer::RefinePatchStrategy< NDIM > >  prolong_patch_strategy = nullptr 
)
protectedinherited

Register a data-prolonging refine algorithm.

◆ registerCoarsenAlgorithm()

void IBTK::HierarchyIntegrator::registerCoarsenAlgorithm ( const std::string &  name,
SAMRAI::tbox::Pointer< SAMRAI::xfer::CoarsenAlgorithm< NDIM > >  coarsen_alg,
std::unique_ptr< SAMRAI::xfer::CoarsenPatchStrategy< NDIM > >  coarsen_patch_strategy = nullptr 
)
protectedinherited

Register a coarsen algorithm.

◆ getGhostfillRefineAlgorithm()

SAMRAI::tbox::Pointer<SAMRAI::xfer::RefineAlgorithm<NDIM> > IBTK::HierarchyIntegrator::getGhostfillRefineAlgorithm ( const std::string &  name) const
protectedinherited

Get ghost cell-filling refine algorithm.

◆ getProlongRefineAlgorithm()

SAMRAI::tbox::Pointer<SAMRAI::xfer::RefineAlgorithm<NDIM> > IBTK::HierarchyIntegrator::getProlongRefineAlgorithm ( const std::string &  name) const
protectedinherited

Get data-prolonging refine algorithm.

◆ getCoarsenAlgorithm()

SAMRAI::tbox::Pointer<SAMRAI::xfer::CoarsenAlgorithm<NDIM> > IBTK::HierarchyIntegrator::getCoarsenAlgorithm ( const std::string &  name) const
protectedinherited

Get coarsen algorithm.

◆ getGhostfillRefineSchedules()

const std::vector<SAMRAI::tbox::Pointer<SAMRAI::xfer::RefineSchedule<NDIM> > >& IBTK::HierarchyIntegrator::getGhostfillRefineSchedules ( const std::string &  name) const
protectedinherited

Get ghost cell-filling refine schedules.

◆ getProlongRefineSchedules()

const std::vector<SAMRAI::tbox::Pointer<SAMRAI::xfer::RefineSchedule<NDIM> > >& IBTK::HierarchyIntegrator::getProlongRefineSchedules ( const std::string &  name) const
protectedinherited

Get data-prolonging refine schedules.

Note
These schedules are allocated only for level numbers >= 1.

◆ getCoarsenSchedules()

const std::vector<SAMRAI::tbox::Pointer<SAMRAI::xfer::CoarsenSchedule<NDIM> > >& IBTK::HierarchyIntegrator::getCoarsenSchedules ( const std::string &  name) const
protectedinherited

Get coarsen schedules.

Note
These schedules are allocated only for level numbers >= 1.

◆ registerChildHierarchyIntegrator()

void IBTK::HierarchyIntegrator::registerChildHierarchyIntegrator ( HierarchyIntegrator child_integrator)
protectedinherited

Register a "child" integrator object with this integrator object.

Note
Multiple child integrator objects may be registered with a single parent integrator object.

◆ registerParentHierarchyIntegrator()

void IBTK::HierarchyIntegrator::registerParentHierarchyIntegrator ( HierarchyIntegrator parent_integrator)
protectedinherited

Register a "parent" integrator object with this integrator object.

Note
Only a single parent integrator object may be registered with a particular child integrator object.

◆ buildHierarchyMathOps()

SAMRAI::tbox::Pointer<HierarchyMathOps> IBTK::HierarchyIntegrator::buildHierarchyMathOps ( SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > >  hierarchy)
protectedinherited

Build the HierarchyMathOps object.

◆ setupTagBuffer()

void IBTK::HierarchyIntegrator::setupTagBuffer ( SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > >  gridding_alg)
protectedinherited

Setup the tag buffer.

◆ regriddingHierarchy()

bool IBTK::HierarchyIntegrator::regriddingHierarchy ( ) const
inlineprotectedinherited

Returns true when we are regridding the patch hierarchy.

◆ atRegridTimeStep()

bool IBTK::HierarchyIntegrator::atRegridTimeStep ( ) const
inlineprotectedinherited

Returns true when we are executing a time step in which a regridding operation was performed.

◆ getLevelDt()

virtual double SAMRAI::mesh::StandardTagAndInitStrategy< DIM >::getLevelDt ( const tbox::Pointer< hier::BasePatchLevel< DIM > >  level,
const double  dt_time,
const bool  initial_time 
)
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.

◆ advanceLevel()

virtual double SAMRAI::mesh::StandardTagAndInitStrategy< DIM >::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 
)
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:

  • first_step = true.
  • last_step = true.
  • regrid_advance = true.

In the second case, the values of the boolean flags are:

  • first_step (when regridding during time integration sequence) = true when the level is not coarsest level to synchronize immediately before the regridding process; else, false. (when generating initial hierarchy construction) = true, even though there may be multiple advance steps.
  • last_step = true when the advance is the last in the Richardson extrapolation step sequence; else false.
  • regrid_advance = true.

◆ resetTimeDependentData()

virtual void SAMRAI::mesh::StandardTagAndInitStrategy< DIM >::resetTimeDependentData ( const tbox::Pointer< hier::BasePatchLevel< DIM > >  level,
const double  new_time,
const bool  can_be_refined 
)
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.

◆ resetDataToPreadvanceState()

virtual void SAMRAI::mesh::StandardTagAndInitStrategy< DIM >::resetDataToPreadvanceState ( const tbox::Pointer< hier::BasePatchLevel< DIM > >  level)
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.

◆ applyRichardsonExtrapolation()

virtual void SAMRAI::mesh::StandardTagAndInitStrategy< DIM >::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 
)
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.

◆ coarsenDataForRichardsonExtrapolation()

virtual void SAMRAI::mesh::StandardTagAndInitStrategy< DIM >::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 
)
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.

Member Data Documentation

◆ d_rho_interp_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::SideVariable<NDIM, double> > IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::d_rho_interp_var
private

Interpolated density variable required for non-conservative discretization

◆ d_rho_current_idx

int IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::d_rho_current_idx
private

◆ d_rho_new_idx

int IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::d_rho_new_idx
private

◆ d_rho_scratch_idx

int IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::d_rho_scratch_idx
private

◆ d_rho_interp_idx

int IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::d_rho_interp_idx
private

◆ d_rho_bc_coef

SAMRAI::solv::RobinBcCoefStrategy<NDIM>* IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::d_rho_bc_coef = nullptr
private

◆ d_rho_adv_diff_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::CellVariable<NDIM, double> > IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::d_rho_adv_diff_var
private

◆ d_rho_adv_diff_idx

unsigned int IBAMR::INSVCStaggeredNonConservativeHierarchyIntegrator::d_rho_adv_diff_idx = 0
private

◆ d_div_U_norm_1_pre

double IBAMR::INSVCStaggeredHierarchyIntegrator::d_div_U_norm_1_pre = 0.0
protectedinherited

L1 norm of the discrete divergence of the fluid velocity before regridding.

◆ d_div_U_norm_2_pre

double IBAMR::INSVCStaggeredHierarchyIntegrator::d_div_U_norm_2_pre = 0.0
protectedinherited

L2 norm of the discrete divergence of the fluid velocity before regridding.

◆ d_div_U_norm_oo_pre

double IBAMR::INSVCStaggeredHierarchyIntegrator::d_div_U_norm_oo_pre = 0.0
protectedinherited

L-infinity norm of the discrete divergence of the fluid velocity before regridding.

◆ d_div_U_norm_1_post

double IBAMR::INSVCStaggeredHierarchyIntegrator::d_div_U_norm_1_post = 0.0
protectedinherited

L1 norm of the discrete divergence of the fluid velocity after regridding.

◆ d_div_U_norm_2_post

double IBAMR::INSVCStaggeredHierarchyIntegrator::d_div_U_norm_2_post = 0.0
protectedinherited

L2 norm of the discrete divergence of the fluid velocity after regridding.

◆ d_div_U_norm_oo_post

double IBAMR::INSVCStaggeredHierarchyIntegrator::d_div_U_norm_oo_post = 0.0
protectedinherited

L-infinity norm of the discrete divergence of the fluid velocity after regridding.

◆ d_do_regrid_projection

bool IBAMR::INSVCStaggeredHierarchyIntegrator::d_do_regrid_projection = false
protectedinherited

Whether we need to perform a regrid projection when (re-)initializing composite hierarchy data.

◆ d_hier_cc_data_ops

SAMRAI::tbox::Pointer<SAMRAI::math::HierarchyCellDataOpsReal<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_hier_cc_data_ops
protectedinherited

Hierarchy operations objects.

◆ d_hier_fc_data_ops

SAMRAI::tbox::Pointer<SAMRAI::math::HierarchyFaceDataOpsReal<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_hier_fc_data_ops
protectedinherited

◆ d_hier_sc_data_ops

SAMRAI::tbox::Pointer<SAMRAI::math::HierarchySideDataOpsReal<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_hier_sc_data_ops
protectedinherited

◆ d_hier_nc_data_ops

SAMRAI::tbox::Pointer<SAMRAI::math::HierarchyNodeDataOpsReal<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_hier_nc_data_ops
protectedinherited

◆ d_hier_ec_data_ops

SAMRAI::tbox::Pointer<SAMRAI::math::HierarchyEdgeDataOpsReal<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_hier_ec_data_ops
protectedinherited

◆ d_bc_helper

SAMRAI::tbox::Pointer<StaggeredStokesPhysicalBoundaryHelper> IBAMR::INSVCStaggeredHierarchyIntegrator::d_bc_helper
protectedinherited

◆ d_side_synch_op

SAMRAI::tbox::Pointer<IBTK::SideDataSynchronization> IBAMR::INSVCStaggeredHierarchyIntegrator::d_side_synch_op
protectedinherited

◆ d_rho_bdry_bc_fill_op

SAMRAI::tbox::Pointer<IBTK::HierarchyGhostCellInterpolation> IBAMR::INSVCStaggeredHierarchyIntegrator::d_rho_bdry_bc_fill_op
protectedinherited

◆ d_mu_bdry_bc_fill_op

SAMRAI::tbox::Pointer<IBTK::HierarchyGhostCellInterpolation> IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_bdry_bc_fill_op
protectedinherited

◆ d_rho_scale

double IBAMR::INSVCStaggeredHierarchyIntegrator::d_rho_scale = 1.0
protectedinherited

Double precision values are (optional) factors used to rescale the density and viscosity for plotting.

Boolean values indicates whether to output various quantities for visualization.

◆ d_mu_scale

double IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_scale = 1.0
protectedinherited

◆ d_output_rho

bool IBAMR::INSVCStaggeredHierarchyIntegrator::d_output_rho = false
protectedinherited

◆ d_output_mu

bool IBAMR::INSVCStaggeredHierarchyIntegrator::d_output_mu = false
protectedinherited

◆ d_coarsest_reset_ln

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_coarsest_reset_ln
protectedinherited

◆ d_finest_reset_ln

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_finest_reset_ln
protectedinherited

◆ d_U_scratch_vec

SAMRAI::tbox::Pointer<SAMRAI::solv::SAMRAIVectorReal<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_scratch_vec
protectedinherited

◆ d_U_rhs_vec

SAMRAI::tbox::Pointer<SAMRAI::solv::SAMRAIVectorReal<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_rhs_vec
protectedinherited

◆ d_U_adv_vec

SAMRAI::tbox::Pointer<SAMRAI::solv::SAMRAIVectorReal<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_adv_vec
protectedinherited

◆ d_N_vec

SAMRAI::tbox::Pointer<SAMRAI::solv::SAMRAIVectorReal<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_N_vec
protectedinherited

◆ d_P_scratch_vec

SAMRAI::tbox::Pointer<SAMRAI::solv::SAMRAIVectorReal<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_P_scratch_vec
protectedinherited

◆ d_P_rhs_vec

SAMRAI::tbox::Pointer<SAMRAI::solv::SAMRAIVectorReal<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_P_rhs_vec
protectedinherited

◆ d_sol_vec

SAMRAI::tbox::Pointer<SAMRAI::solv::SAMRAIVectorReal<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_sol_vec
protectedinherited

◆ d_rhs_vec

SAMRAI::tbox::Pointer<SAMRAI::solv::SAMRAIVectorReal<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_rhs_vec
protectedinherited

◆ d_nul_vecs

std::vector<SAMRAI::tbox::Pointer<SAMRAI::solv::SAMRAIVectorReal<NDIM, double> > > IBAMR::INSVCStaggeredHierarchyIntegrator::d_nul_vecs
protectedinherited

◆ d_U_nul_vecs

std::vector<SAMRAI::tbox::Pointer<SAMRAI::solv::SAMRAIVectorReal<NDIM, double> > > IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_nul_vecs
protectedinherited

◆ d_vectors_need_init

bool IBAMR::INSVCStaggeredHierarchyIntegrator::d_vectors_need_init
protectedinherited

◆ d_explicitly_remove_nullspace

bool IBAMR::INSVCStaggeredHierarchyIntegrator::d_explicitly_remove_nullspace = false
protectedinherited

◆ d_stokes_solver_type

std::string IBAMR::INSVCStaggeredHierarchyIntegrator::d_stokes_solver_type = StaggeredStokesSolverManager::UNDEFINED
protectedinherited

◆ d_stokes_precond_type

std::string IBAMR::INSVCStaggeredHierarchyIntegrator::d_stokes_precond_type = StaggeredStokesSolverManager::UNDEFINED
protectedinherited

◆ d_stokes_solver_db

SAMRAI::tbox::Pointer<SAMRAI::tbox::Database> IBAMR::INSVCStaggeredHierarchyIntegrator::d_stokes_solver_db
protectedinherited

◆ d_stokes_precond_db

SAMRAI::tbox::Pointer<SAMRAI::tbox::Database> IBAMR::INSVCStaggeredHierarchyIntegrator::d_stokes_precond_db
protectedinherited

◆ d_stokes_solver

SAMRAI::tbox::Pointer<StaggeredStokesSolver> IBAMR::INSVCStaggeredHierarchyIntegrator::d_stokes_solver
protectedinherited

◆ d_stokes_solver_needs_init

bool IBAMR::INSVCStaggeredHierarchyIntegrator::d_stokes_solver_needs_init
protectedinherited

◆ d_U_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::SideVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_var
protectedinherited

Fluid solver variables.

◆ d_U_old_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::SideVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_old_var
protectedinherited

◆ d_U_cc_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::CellVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_cc_var
protectedinherited

◆ d_P_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::CellVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_P_var
protectedinherited

◆ d_F_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::SideVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_F_var
protectedinherited

◆ d_F_cc_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::CellVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_F_cc_var
protectedinherited

◆ d_N_old_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::SideVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_N_old_var
protectedinherited

◆ d_Omega_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::CellVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_Omega_var
protectedinherited

◆ d_Div_U_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::CellVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_Div_U_var
protectedinherited

◆ d_U_regrid_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::SideVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_regrid_var
protectedinherited

◆ d_U_src_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::SideVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_src_var
protectedinherited

◆ d_indicator_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::SideVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_indicator_var
protectedinherited

◆ d_F_div_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::SideVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_F_div_var
protectedinherited

◆ d_Q_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::CellVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_Q_var
protectedinherited

◆ d_EE_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::CellVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_EE_var
protectedinherited

◆ d_rho_var

SAMRAI::tbox::Pointer<SAMRAI::hier::Variable<NDIM> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_rho_var
protectedinherited

◆ d_mu_var

SAMRAI::tbox::Pointer<SAMRAI::hier::Variable<NDIM> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_var
protectedinherited

◆ d_pressure_D_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::SideVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_pressure_D_var
protectedinherited

◆ d_pressure_rhs_D_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::SideVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_pressure_rhs_D_var
protectedinherited

◆ d_velocity_D_cc_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::CellVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_velocity_D_cc_var
protectedinherited

◆ d_velocity_C_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::SideVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_velocity_C_var
protectedinherited

◆ d_velocity_L_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::SideVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_velocity_L_var
protectedinherited

◆ d_velocity_rhs_C_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::SideVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_velocity_rhs_C_var
protectedinherited

◆ d_N_full_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::SideVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_N_full_var
protectedinherited

◆ d_N_coarsen_type

std::string IBAMR::INSVCStaggeredHierarchyIntegrator::d_N_coarsen_type = "CONSERVATIVE_COARSEN"
protectedinherited

◆ d_N_refine_type

std::string IBAMR::INSVCStaggeredHierarchyIntegrator::d_N_refine_type = "CONSERVATIVE_LINEAR_REFINE"
protectedinherited

◆ d_mu_coarsen_type

std::string IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_coarsen_type = "CONSERVATIVE_COARSEN"
protectedinherited

◆ d_mu_refine_type

std::string IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_refine_type = "CONSERVATIVE_LINEAR_REFINE"
protectedinherited

◆ d_mu_bdry_extrap_type

std::string IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_bdry_extrap_type = "CONSTANT"
protectedinherited

◆ d_rho_coarsen_type

std::string IBAMR::INSVCStaggeredHierarchyIntegrator::d_rho_coarsen_type = "CONSERVATIVE_COARSEN"
protectedinherited

◆ d_rho_refine_type

std::string IBAMR::INSVCStaggeredHierarchyIntegrator::d_rho_refine_type = "CONSERVATIVE_LINEAR_REFINE"
protectedinherited

◆ d_rho_bdry_extrap_type

std::string IBAMR::INSVCStaggeredHierarchyIntegrator::d_rho_bdry_extrap_type = "CONSTANT"
protectedinherited

◆ d_reset_rho_fcns

std::vector<ResetFluidPropertiesFcnPtr> IBAMR::INSVCStaggeredHierarchyIntegrator::d_reset_rho_fcns
protectedinherited

Interpolated material property variables.

Functions resetting rho and mu if they are maintained by this integrator.

◆ d_reset_mu_fcns

std::vector<ResetFluidPropertiesFcnPtr> IBAMR::INSVCStaggeredHierarchyIntegrator::d_reset_mu_fcns
protectedinherited

◆ d_reset_rho_fcns_ctx

std::vector<void*> IBAMR::INSVCStaggeredHierarchyIntegrator::d_reset_rho_fcns_ctx
protectedinherited

◆ d_reset_mu_fcns_ctx

std::vector<void*> IBAMR::INSVCStaggeredHierarchyIntegrator::d_reset_mu_fcns_ctx
protectedinherited

◆ d_brinkman_force

std::vector<SAMRAI::tbox::Pointer<IBAMR::BrinkmanPenalizationStrategy> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_brinkman_force
protectedinherited

Brinkman force strategy objects registered with this integrator.

◆ d_temp_sc_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::SideVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_temp_sc_var
protectedinherited

Temporary storage variables that contain intermediate quantities

◆ d_temp_sc_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_temp_sc_idx
protectedinherited

◆ d_temp_cc_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::CellVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_temp_cc_var
protectedinherited

◆ d_temp_cc_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_temp_cc_idx
protectedinherited

◆ d_U_current_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_current_idx
protectedinherited

◆ d_U_new_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_new_idx
protectedinherited

◆ d_U_scratch_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_scratch_idx
protectedinherited

◆ d_U_old_current_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_old_current_idx
protectedinherited

◆ d_U_old_new_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_old_new_idx
protectedinherited

◆ d_U_old_scratch_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_old_scratch_idx
protectedinherited

◆ d_P_current_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_P_current_idx
protectedinherited

◆ d_P_new_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_P_new_idx
protectedinherited

◆ d_P_scratch_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_P_scratch_idx
protectedinherited

◆ d_F_current_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_F_current_idx
protectedinherited

◆ d_F_new_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_F_new_idx
protectedinherited

◆ d_F_scratch_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_F_scratch_idx
protectedinherited

◆ d_Q_current_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_Q_current_idx
protectedinherited

◆ d_Q_new_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_Q_new_idx
protectedinherited

◆ d_Q_scratch_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_Q_scratch_idx
protectedinherited

◆ d_N_old_current_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_N_old_current_idx
protectedinherited

◆ d_N_old_new_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_N_old_new_idx
protectedinherited

◆ d_N_old_scratch_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_N_old_scratch_idx
protectedinherited

◆ d_mu_current_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_current_idx
protectedinherited

◆ d_mu_new_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_new_idx
protectedinherited

◆ d_mu_scratch_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_scratch_idx
protectedinherited

◆ d_U_cc_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_cc_idx
protectedinherited

◆ d_F_cc_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_F_cc_idx
protectedinherited

◆ d_Omega_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_Omega_idx
protectedinherited

◆ d_Div_U_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_Div_U_idx
protectedinherited

◆ d_EE_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_EE_idx
protectedinherited

◆ d_U_regrid_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_regrid_idx
protectedinherited

◆ d_U_src_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_U_src_idx
protectedinherited

◆ d_indicator_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_indicator_idx
protectedinherited

◆ d_F_div_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_F_div_idx
protectedinherited

◆ d_velocity_C_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_velocity_C_idx
protectedinherited

◆ d_velocity_L_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_velocity_L_idx
protectedinherited

◆ d_velocity_D_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_velocity_D_idx
protectedinherited

◆ d_velocity_D_cc_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_velocity_D_cc_idx
protectedinherited

◆ d_pressure_D_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_pressure_D_idx
protectedinherited

◆ d_velocity_rhs_C_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_velocity_rhs_C_idx
protectedinherited

◆ d_velocity_rhs_D_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_velocity_rhs_D_idx
protectedinherited

◆ d_pressure_rhs_D_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_pressure_rhs_D_idx
protectedinherited

◆ d_mu_interp_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_interp_idx
protectedinherited

◆ d_N_full_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_N_full_idx
protectedinherited

◆ d_mu_linear_op_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_linear_op_idx
protectedinherited

◆ d_mu_interp_linear_op_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_interp_linear_op_idx
protectedinherited

◆ d_rho_linear_op_idx

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_rho_linear_op_idx
protectedinherited

◆ d_rho_is_const

bool IBAMR::INSVCStaggeredHierarchyIntegrator::d_rho_is_const = false
protectedinherited

◆ d_mu_is_const

bool IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_is_const = false
protectedinherited

◆ d_rho_vc_interp_type

IBTK::VCInterpType IBAMR::INSVCStaggeredHierarchyIntegrator::d_rho_vc_interp_type
protectedinherited

◆ d_mu_vc_interp_type

IBTK::VCInterpType IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_vc_interp_type
protectedinherited

◆ d_A_scale

SAMRAI::tbox::Array<double> IBAMR::INSVCStaggeredHierarchyIntegrator::d_A_scale
protectedinherited

◆ d_precond_reinit_interval

int IBAMR::INSVCStaggeredHierarchyIntegrator::d_precond_reinit_interval = 1
protectedinherited

◆ d_rho_init_fcn

SAMRAI::tbox::Pointer<IBTK::CartGridFunction> IBAMR::INSVCStaggeredHierarchyIntegrator::d_rho_init_fcn
protectedinherited

◆ d_mu_init_fcn

SAMRAI::tbox::Pointer<IBTK::CartGridFunction> IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_init_fcn
protectedinherited

◆ d_mu_bc_coef

SAMRAI::solv::RobinBcCoefStrategy<NDIM>* IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_bc_coef = nullptr
protectedinherited

◆ d_mu_adv_diff_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::CellVariable<NDIM, double> > IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_adv_diff_var
protectedinherited

◆ d_mu_adv_diff_idx

unsigned int IBAMR::INSVCStaggeredHierarchyIntegrator::d_mu_adv_diff_idx = 0
protectedinherited

◆ d_integrator_is_initialized

bool IBAMR::INSHierarchyIntegrator::d_integrator_is_initialized = false
protectedinherited

◆ d_viscous_time_stepping_type

TimeSteppingType IBAMR::INSHierarchyIntegrator::d_viscous_time_stepping_type = TRAPEZOIDAL_RULE
protectedinherited

Enum indicating the time integration employed for the implicit discretization of the viscous terms.

◆ d_convective_time_stepping_type

TimeSteppingType IBAMR::INSHierarchyIntegrator::d_convective_time_stepping_type = ADAMS_BASHFORTH
protectedinherited

Enum indicating the time integration employed for the explicit discretization of the convective terms.

◆ d_init_convective_time_stepping_type

TimeSteppingType IBAMR::INSHierarchyIntegrator::d_init_convective_time_stepping_type = MIDPOINT_RULE
protectedinherited

Enum indicating the time integration employed for the explicit discretization of the convective terms during the initial time step.

◆ d_problem_coefs

StokesSpecifications IBAMR::INSHierarchyIntegrator::d_problem_coefs
protectedinherited

Problem coeficients.

◆ d_adv_diff_hier_integrators

std::vector<SAMRAI::tbox::Pointer<AdvDiffHierarchyIntegrator> > IBAMR::INSHierarchyIntegrator::d_adv_diff_hier_integrators
protectedinherited

◆ d_U_adv_diff_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::FaceVariable<NDIM, double> > IBAMR::INSHierarchyIntegrator::d_U_adv_diff_var
protectedinherited

◆ d_cfl_current

double IBAMR::INSHierarchyIntegrator::d_cfl_current = std::numeric_limits<double>::quiet_NaN()
protectedinherited

Current CFL number.

◆ d_cfl_max

double IBAMR::INSHierarchyIntegrator::d_cfl_max = 1.0
protectedinherited

The maximum CFL number.

◆ d_using_vorticity_tagging

bool IBAMR::INSHierarchyIntegrator::d_using_vorticity_tagging = false
protectedinherited

Cell tagging criteria based on the relative and absolute magnitudes of the local vorticity.

◆ d_Omega_rel_thresh

SAMRAI::tbox::Array<double> IBAMR::INSHierarchyIntegrator::d_Omega_rel_thresh
protectedinherited

◆ d_Omega_abs_thresh

SAMRAI::tbox::Array<double> IBAMR::INSHierarchyIntegrator::d_Omega_abs_thresh
protectedinherited

◆ d_normalize_pressure

bool IBAMR::INSHierarchyIntegrator::d_normalize_pressure = false
protectedinherited

This boolean value determines whether the pressure is normalized to have zero mean (i.e., discrete integral) at the end of each timestep.

◆ d_normalize_velocity

bool IBAMR::INSHierarchyIntegrator::d_normalize_velocity = false
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).

◆ d_creeping_flow

bool IBAMR::INSHierarchyIntegrator::d_creeping_flow = false
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.)

◆ d_regrid_max_div_growth_factor

double IBAMR::INSHierarchyIntegrator::d_regrid_max_div_growth_factor = 1.1
protectedinherited

Threshold that determines whether the velocity field needs to be reprojected following adaptive regridding.

◆ d_U_scale

double IBAMR::INSHierarchyIntegrator::d_U_scale = 1.0
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.

◆ d_P_scale

double IBAMR::INSHierarchyIntegrator::d_P_scale = 1.0
protectedinherited

◆ d_F_scale

double IBAMR::INSHierarchyIntegrator::d_F_scale = 1.0
protectedinherited

◆ d_Q_scale

double IBAMR::INSHierarchyIntegrator::d_Q_scale = 1.0
protectedinherited

◆ d_Omega_scale

double IBAMR::INSHierarchyIntegrator::d_Omega_scale = 1.0
protectedinherited

◆ d_Div_U_scale

double IBAMR::INSHierarchyIntegrator::d_Div_U_scale = 1.0
protectedinherited

◆ d_EE_scale

double IBAMR::INSHierarchyIntegrator::d_EE_scale = 1.0
protectedinherited

◆ d_output_U

bool IBAMR::INSHierarchyIntegrator::d_output_U = true
protectedinherited

◆ d_output_P

bool IBAMR::INSHierarchyIntegrator::d_output_P = true
protectedinherited

◆ d_output_F

bool IBAMR::INSHierarchyIntegrator::d_output_F = false
protectedinherited

◆ d_output_Q

bool IBAMR::INSHierarchyIntegrator::d_output_Q = false
protectedinherited

◆ d_output_Omega

bool IBAMR::INSHierarchyIntegrator::d_output_Omega = true
protectedinherited

◆ d_output_Div_U

bool IBAMR::INSHierarchyIntegrator::d_output_Div_U = true
protectedinherited

◆ d_output_EE

bool IBAMR::INSHierarchyIntegrator::d_output_EE = false
protectedinherited

◆ d_U_coarsen_type

std::string IBAMR::INSHierarchyIntegrator::d_U_coarsen_type = "CONSERVATIVE_COARSEN"
protectedinherited

◆ d_U_refine_type

std::string IBAMR::INSHierarchyIntegrator::d_U_refine_type = "CONSERVATIVE_LINEAR_REFINE"
protectedinherited

◆ d_P_coarsen_type

std::string IBAMR::INSHierarchyIntegrator::d_P_coarsen_type = "CONSERVATIVE_COARSEN"
protectedinherited

◆ d_P_refine_type

std::string IBAMR::INSHierarchyIntegrator::d_P_refine_type = "LINEAR_REFINE"
protectedinherited

◆ d_F_coarsen_type

std::string IBAMR::INSHierarchyIntegrator::d_F_coarsen_type = "CONSERVATIVE_COARSEN"
protectedinherited

◆ d_F_refine_type

std::string IBAMR::INSHierarchyIntegrator::d_F_refine_type = "CONSERVATIVE_LINEAR_REFINE"
protectedinherited

◆ d_Q_coarsen_type

std::string IBAMR::INSHierarchyIntegrator::d_Q_coarsen_type = "CONSERVATIVE_COARSEN"
protectedinherited

◆ d_Q_refine_type

std::string IBAMR::INSHierarchyIntegrator::d_Q_refine_type = "CONSTANT_REFINE"
protectedinherited

◆ d_U_init

SAMRAI::tbox::Pointer<IBTK::CartGridFunction> IBAMR::INSHierarchyIntegrator::d_U_init
protectedinherited

Objects to set initial conditions, boundary conditions, body forces, and fluid source/sink distributions.

◆ d_P_init

SAMRAI::tbox::Pointer<IBTK::CartGridFunction> IBAMR::INSHierarchyIntegrator::d_P_init
protectedinherited

◆ d_default_bc_coefs

SAMRAI::solv::LocationIndexRobinBcCoefs<NDIM> IBAMR::INSHierarchyIntegrator::d_default_bc_coefs
protectedinherited

◆ d_bc_coefs

std::vector<SAMRAI::solv::RobinBcCoefStrategy<NDIM>*> IBAMR::INSHierarchyIntegrator::d_bc_coefs
protectedinherited

◆ d_U_bc_coefs

std::vector<SAMRAI::solv::RobinBcCoefStrategy<NDIM>*> IBAMR::INSHierarchyIntegrator::d_U_bc_coefs
protectedinherited

◆ d_U_star_bc_coefs

std::vector<SAMRAI::solv::RobinBcCoefStrategy<NDIM>*> IBAMR::INSHierarchyIntegrator::d_U_star_bc_coefs
protectedinherited

◆ d_traction_bc_type

TractionBcType IBAMR::INSHierarchyIntegrator::d_traction_bc_type = TRACTION
protectedinherited

◆ d_P_bc_coef

SAMRAI::solv::RobinBcCoefStrategy<NDIM>* IBAMR::INSHierarchyIntegrator::d_P_bc_coef
protectedinherited

◆ d_Phi_bc_coef

std::unique_ptr<SAMRAI::solv::RobinBcCoefStrategy<NDIM> > IBAMR::INSHierarchyIntegrator::d_Phi_bc_coef
protectedinherited

◆ d_F_fcn

SAMRAI::tbox::Pointer<IBTK::CartGridFunction> IBAMR::INSHierarchyIntegrator::d_F_fcn
protectedinherited

◆ d_Q_fcn

SAMRAI::tbox::Pointer<IBTK::CartGridFunction> IBAMR::INSHierarchyIntegrator::d_Q_fcn
protectedinherited

◆ d_U_bdry_bc_fill_op

SAMRAI::tbox::Pointer<IBTK::HierarchyGhostCellInterpolation> IBAMR::INSHierarchyIntegrator::d_U_bdry_bc_fill_op
protectedinherited

◆ d_P_bdry_bc_fill_op

SAMRAI::tbox::Pointer<IBTK::HierarchyGhostCellInterpolation> IBAMR::INSHierarchyIntegrator::d_P_bdry_bc_fill_op
protectedinherited

◆ d_Q_bdry_bc_fill_op

SAMRAI::tbox::Pointer<IBTK::HierarchyGhostCellInterpolation> IBAMR::INSHierarchyIntegrator::d_Q_bdry_bc_fill_op
protectedinherited

◆ d_no_fill_op

SAMRAI::tbox::Pointer<IBTK::HierarchyGhostCellInterpolation> IBAMR::INSHierarchyIntegrator::d_no_fill_op
protectedinherited

◆ d_use_div_sink_drag_term

bool IBAMR::INSHierarchyIntegrator::d_use_div_sink_drag_term = false
protectedinherited

◆ d_convective_op_type

std::string IBAMR::INSHierarchyIntegrator::d_convective_op_type = "DEFAULT"
protectedinherited

◆ d_convective_difference_form

ConvectiveDifferencingType IBAMR::INSHierarchyIntegrator::d_convective_difference_form = ADVECTIVE
protectedinherited

◆ d_convective_op_input_db

SAMRAI::tbox::Pointer<SAMRAI::tbox::Database> IBAMR::INSHierarchyIntegrator::d_convective_op_input_db
protectedinherited

◆ d_convective_op

SAMRAI::tbox::Pointer<ConvectiveOperator> IBAMR::INSHierarchyIntegrator::d_convective_op
protectedinherited

◆ d_convective_op_needs_init

bool IBAMR::INSHierarchyIntegrator::d_convective_op_needs_init
protectedinherited

◆ d_velocity_solver_type

std::string IBAMR::INSHierarchyIntegrator::d_velocity_solver_type
protectedinherited

◆ d_velocity_precond_type

std::string IBAMR::INSHierarchyIntegrator::d_velocity_precond_type
protectedinherited

◆ d_velocity_sub_precond_type

std::string IBAMR::INSHierarchyIntegrator::d_velocity_sub_precond_type
protectedinherited

◆ d_velocity_solver_db

SAMRAI::tbox::Pointer<SAMRAI::tbox::Database> IBAMR::INSHierarchyIntegrator::d_velocity_solver_db
protectedinherited

◆ d_velocity_precond_db

SAMRAI::tbox::Pointer<SAMRAI::tbox::Database> IBAMR::INSHierarchyIntegrator::d_velocity_precond_db
protectedinherited

◆ d_velocity_sub_precond_db

SAMRAI::tbox::Pointer<SAMRAI::tbox::Database> IBAMR::INSHierarchyIntegrator::d_velocity_sub_precond_db
protectedinherited

◆ d_velocity_solver

SAMRAI::tbox::Pointer<IBTK::PoissonSolver> IBAMR::INSHierarchyIntegrator::d_velocity_solver
protectedinherited

◆ d_velocity_solver_needs_init

bool IBAMR::INSHierarchyIntegrator::d_velocity_solver_needs_init
protectedinherited

◆ d_pressure_solver_type

std::string IBAMR::INSHierarchyIntegrator::d_pressure_solver_type
protectedinherited

◆ d_pressure_precond_type

std::string IBAMR::INSHierarchyIntegrator::d_pressure_precond_type
protectedinherited

◆ d_pressure_sub_precond_type

std::string IBAMR::INSHierarchyIntegrator::d_pressure_sub_precond_type
protectedinherited

◆ d_pressure_solver_db

SAMRAI::tbox::Pointer<SAMRAI::tbox::Database> IBAMR::INSHierarchyIntegrator::d_pressure_solver_db
protectedinherited

◆ d_pressure_precond_db

SAMRAI::tbox::Pointer<SAMRAI::tbox::Database> IBAMR::INSHierarchyIntegrator::d_pressure_precond_db
protectedinherited

◆ d_pressure_sub_precond_db

SAMRAI::tbox::Pointer<SAMRAI::tbox::Database> IBAMR::INSHierarchyIntegrator::d_pressure_sub_precond_db
protectedinherited

◆ d_pressure_solver

SAMRAI::tbox::Pointer<IBTK::PoissonSolver> IBAMR::INSHierarchyIntegrator::d_pressure_solver
protectedinherited

◆ d_pressure_solver_needs_init

bool IBAMR::INSHierarchyIntegrator::d_pressure_solver_needs_init
protectedinherited

◆ d_regrid_projection_solver_type

std::string IBAMR::INSHierarchyIntegrator::d_regrid_projection_solver_type
protectedinherited

◆ d_regrid_projection_precond_type

std::string IBAMR::INSHierarchyIntegrator::d_regrid_projection_precond_type
protectedinherited

◆ d_regrid_projection_sub_precond_type

std::string IBAMR::INSHierarchyIntegrator::d_regrid_projection_sub_precond_type
protectedinherited

◆ d_regrid_projection_solver_db

SAMRAI::tbox::Pointer<SAMRAI::tbox::Database> IBAMR::INSHierarchyIntegrator::d_regrid_projection_solver_db
protectedinherited

◆ d_regrid_projection_precond_db

SAMRAI::tbox::Pointer<SAMRAI::tbox::Database> IBAMR::INSHierarchyIntegrator::d_regrid_projection_precond_db
protectedinherited

◆ d_regrid_projection_sub_precond_db

SAMRAI::tbox::Pointer<SAMRAI::tbox::Database> IBAMR::INSHierarchyIntegrator::d_regrid_projection_sub_precond_db
protectedinherited

◆ d_object_name

std::string IBTK::HierarchyIntegrator::d_object_name
protectedinherited

◆ d_registered_for_restart

bool IBTK::HierarchyIntegrator::d_registered_for_restart = false
protectedinherited

◆ d_hierarchy

SAMRAI::tbox::Pointer<SAMRAI::hier::PatchHierarchy<NDIM> > IBTK::HierarchyIntegrator::d_hierarchy
protectedinherited

◆ d_gridding_alg

SAMRAI::tbox::Pointer<SAMRAI::mesh::GriddingAlgorithm<NDIM> > IBTK::HierarchyIntegrator::d_gridding_alg
protectedinherited

◆ d_load_balancer

SAMRAI::tbox::Pointer<SAMRAI::mesh::LoadBalancer<NDIM> > IBTK::HierarchyIntegrator::d_load_balancer
protectedinherited

◆ d_workload_var

SAMRAI::tbox::Pointer<SAMRAI::pdat::CellVariable<NDIM, double> > IBTK::HierarchyIntegrator::d_workload_var
protectedinherited

◆ d_workload_idx

int IBTK::HierarchyIntegrator::d_workload_idx = IBTK::invalid_index
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.

◆ d_hierarchy_is_initialized

bool IBTK::HierarchyIntegrator::d_hierarchy_is_initialized = false
protectedinherited

◆ d_may_need_to_reset_hierarchy_configuration

bool IBTK::HierarchyIntegrator::d_may_need_to_reset_hierarchy_configuration = false
protectedinherited

◆ d_parent_integrator

HierarchyIntegrator* IBTK::HierarchyIntegrator::d_parent_integrator = nullptr
protectedinherited

◆ d_child_integrators

std::set<HierarchyIntegrator*> IBTK::HierarchyIntegrator::d_child_integrators
protectedinherited

◆ d_visit_writer

SAMRAI::tbox::Pointer<SAMRAI::appu::VisItDataWriter<NDIM> > IBTK::HierarchyIntegrator::d_visit_writer
protectedinherited

◆ d_integrator_time

double IBTK::HierarchyIntegrator::d_integrator_time = std::numeric_limits<double>::quiet_NaN()
protectedinherited

◆ d_start_time

double IBTK::HierarchyIntegrator::d_start_time = 0.0
protectedinherited

◆ d_end_time

double IBTK::HierarchyIntegrator::d_end_time = std::numeric_limits<double>::max()
protectedinherited

◆ d_dt_init

double IBTK::HierarchyIntegrator::d_dt_init = std::numeric_limits<double>::max()
protectedinherited

◆ d_dt_min

double IBTK::HierarchyIntegrator::d_dt_min = 0.0
protectedinherited

◆ d_dt_max

double IBTK::HierarchyIntegrator::d_dt_max = std::numeric_limits<double>::max()
protectedinherited

◆ d_dt_growth_factor

double IBTK::HierarchyIntegrator::d_dt_growth_factor = 2.0
protectedinherited

◆ d_integrator_step

int IBTK::HierarchyIntegrator::d_integrator_step = 0
protectedinherited

◆ d_max_integrator_steps

int IBTK::HierarchyIntegrator::d_max_integrator_steps = std::numeric_limits<int>::max()
protectedinherited

◆ d_dt_previous

std::deque<double> IBTK::HierarchyIntegrator::d_dt_previous
protectedinherited

◆ d_num_cycles

int IBTK::HierarchyIntegrator::d_num_cycles = 1
protectedinherited

◆ d_current_num_cycles

int IBTK::HierarchyIntegrator::d_current_num_cycles = -1
protectedinherited

◆ d_current_cycle_num

int IBTK::HierarchyIntegrator::d_current_cycle_num = -1
protectedinherited

◆ d_current_dt

double IBTK::HierarchyIntegrator::d_current_dt = std::numeric_limits<double>::quiet_NaN()
protectedinherited

◆ d_regrid_interval

int IBTK::HierarchyIntegrator::d_regrid_interval = 1
protectedinherited

◆ d_regrid_mode

RegridMode IBTK::HierarchyIntegrator::d_regrid_mode = STANDARD
protectedinherited

◆ d_enable_logging

bool IBTK::HierarchyIntegrator::d_enable_logging = false
protectedinherited

◆ d_enable_logging_solver_iterations

bool IBTK::HierarchyIntegrator::d_enable_logging_solver_iterations = false
protectedinherited

◆ d_bdry_extrap_type

std::string IBTK::HierarchyIntegrator::d_bdry_extrap_type = "LINEAR"
protectedinherited

◆ d_tag_buffer

SAMRAI::tbox::Array<int> IBTK::HierarchyIntegrator::d_tag_buffer = { 0 }
protectedinherited

◆ d_hier_math_ops

SAMRAI::tbox::Pointer<HierarchyMathOps> IBTK::HierarchyIntegrator::d_hier_math_ops
protectedinherited

◆ d_manage_hier_math_ops

bool IBTK::HierarchyIntegrator::d_manage_hier_math_ops = true
protectedinherited

◆ d_state_variables

std::list<SAMRAI::tbox::Pointer<SAMRAI::hier::Variable<NDIM> > > IBTK::HierarchyIntegrator::d_state_variables
protectedinherited

◆ d_scratch_variables

std::list<SAMRAI::tbox::Pointer<SAMRAI::hier::Variable<NDIM> > > IBTK::HierarchyIntegrator::d_scratch_variables
protectedinherited

◆ d_copy_scratch_to_current_fast

std::list<SAMRAI::tbox::Pointer<SAMRAI::hier::Variable<NDIM> > > IBTK::HierarchyIntegrator::d_copy_scratch_to_current_fast
protectedinherited

◆ d_copy_scratch_to_current_slow

std::list<SAMRAI::tbox::Pointer<SAMRAI::hier::Variable<NDIM> > > IBTK::HierarchyIntegrator::d_copy_scratch_to_current_slow
protectedinherited

◆ d_current_data

SAMRAI::hier::ComponentSelector IBTK::HierarchyIntegrator::d_current_data
protectedinherited

◆ d_new_data

SAMRAI::hier::ComponentSelector IBTK::HierarchyIntegrator::d_new_data
protectedinherited

◆ d_scratch_data

SAMRAI::hier::ComponentSelector IBTK::HierarchyIntegrator::d_scratch_data
protectedinherited

◆ d_plot_data

SAMRAI::hier::ComponentSelector IBTK::HierarchyIntegrator::d_plot_data
protectedinherited

◆ d_state_var_init_fcns

std::map<SAMRAI::hier::Variable<NDIM>*, SAMRAI::tbox::Pointer<CartGridFunction> > IBTK::HierarchyIntegrator::d_state_var_init_fcns
protectedinherited

◆ d_current_context

SAMRAI::tbox::Pointer<SAMRAI::hier::VariableContext> IBTK::HierarchyIntegrator::d_current_context
protectedinherited

Variable contexts.

◆ d_new_context

SAMRAI::tbox::Pointer<SAMRAI::hier::VariableContext> IBTK::HierarchyIntegrator::d_new_context
protectedinherited

◆ d_scratch_context

SAMRAI::tbox::Pointer<SAMRAI::hier::VariableContext> IBTK::HierarchyIntegrator::d_scratch_context
protectedinherited

◆ d_plot_context

SAMRAI::tbox::Pointer<SAMRAI::hier::VariableContext> IBTK::HierarchyIntegrator::d_plot_context
protectedinherited

◆ SYNCH_CURRENT_DATA_ALG

const std::string IBTK::HierarchyIntegrator::SYNCH_CURRENT_DATA_ALG
staticprotectedinherited

Names of special coarsen algorithms/schedules.

◆ SYNCH_NEW_DATA_ALG

const std::string IBTK::HierarchyIntegrator::SYNCH_NEW_DATA_ALG
staticprotectedinherited

◆ d_fill_after_regrid_bc_idxs

SAMRAI::hier::ComponentSelector IBTK::HierarchyIntegrator::d_fill_after_regrid_bc_idxs
protectedinherited

Regridding-related communications algorithms and other data structures.

◆ d_fill_after_regrid_prolong_alg

SAMRAI::xfer::RefineAlgorithm<NDIM> IBTK::HierarchyIntegrator::d_fill_after_regrid_prolong_alg
protectedinherited

◆ d_fill_after_regrid_phys_bdry_bc_op

std::unique_ptr<SAMRAI::xfer::RefinePatchStrategy<NDIM> > IBTK::HierarchyIntegrator::d_fill_after_regrid_phys_bdry_bc_op
protectedinherited

◆ d_preprocess_integrate_hierarchy_callbacks

std::vector<PreprocessIntegrateHierarchyCallbackFcnPtr> IBTK::HierarchyIntegrator::d_preprocess_integrate_hierarchy_callbacks
protectedinherited

Callback functions and callback function contexts.

◆ d_preprocess_integrate_hierarchy_callback_ctxs

std::vector<void*> IBTK::HierarchyIntegrator::d_preprocess_integrate_hierarchy_callback_ctxs
protectedinherited

◆ d_integrate_hierarchy_callbacks

std::vector<IntegrateHierarchyCallbackFcnPtr> IBTK::HierarchyIntegrator::d_integrate_hierarchy_callbacks
protectedinherited

◆ d_integrate_hierarchy_callback_ctxs

std::vector<void*> IBTK::HierarchyIntegrator::d_integrate_hierarchy_callback_ctxs
protectedinherited

◆ d_postprocess_integrate_hierarchy_callbacks

std::vector<PostprocessIntegrateHierarchyCallbackFcnPtr> IBTK::HierarchyIntegrator::d_postprocess_integrate_hierarchy_callbacks
protectedinherited

◆ d_postprocess_integrate_hierarchy_callback_ctxs

std::vector<void*> IBTK::HierarchyIntegrator::d_postprocess_integrate_hierarchy_callback_ctxs
protectedinherited

◆ d_apply_gradient_detector_callbacks

std::vector<ApplyGradientDetectorCallbackFcnPtr> IBTK::HierarchyIntegrator::d_apply_gradient_detector_callbacks
protectedinherited

◆ d_apply_gradient_detector_callback_ctxs

std::vector<void*> IBTK::HierarchyIntegrator::d_apply_gradient_detector_callback_ctxs
protectedinherited

◆ d_regrid_hierarchy_callbacks

std::vector<RegridHierarchyCallbackFcnPtr> IBTK::HierarchyIntegrator::d_regrid_hierarchy_callbacks
protectedinherited

◆ d_regrid_hierarchy_callback_ctxs

std::vector<void*> IBTK::HierarchyIntegrator::d_regrid_hierarchy_callback_ctxs
protectedinherited

◆ d_regridding_hierarchy

bool IBTK::HierarchyIntegrator::d_regridding_hierarchy = false
privateinherited

◆ d_at_regrid_time_step

bool IBTK::HierarchyIntegrator::d_at_regrid_time_step = false
privateinherited

◆ d_ghostfill_algs

RefineAlgorithmMap IBTK::HierarchyIntegrator::d_ghostfill_algs
privateinherited

◆ d_ghostfill_strategies

RefinePatchStrategyMap IBTK::HierarchyIntegrator::d_ghostfill_strategies
privateinherited

◆ d_ghostfill_scheds

RefineScheduleMap IBTK::HierarchyIntegrator::d_ghostfill_scheds
privateinherited

◆ d_prolong_algs

RefineAlgorithmMap IBTK::HierarchyIntegrator::d_prolong_algs
privateinherited

◆ d_prolong_strategies

RefinePatchStrategyMap IBTK::HierarchyIntegrator::d_prolong_strategies
privateinherited

◆ d_prolong_scheds

RefineScheduleMap IBTK::HierarchyIntegrator::d_prolong_scheds
privateinherited

◆ d_coarsen_algs

CoarsenAlgorithmMap IBTK::HierarchyIntegrator::d_coarsen_algs
privateinherited

◆ d_coarsen_strategies

CoarsenPatchStrategyMap IBTK::HierarchyIntegrator::d_coarsen_strategies
privateinherited

◆ d_coarsen_scheds

CoarsenScheduleMap IBTK::HierarchyIntegrator::d_coarsen_scheds
privateinherited

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