IBAMR
An adaptive and distributed-memory parallel implementation of the immersed boundary (IB) method
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
IBAMR::INSHierarchyIntegrator Class Referenceabstract

Class INSHierarchyIntegrator provides an abstract interface for a time integrator for the incompressible Navier-Stokes equations on an AMR grid hierarchy, along with basic data management for variables defined on that hierarchy. More...

#include </home/runner/work/IBAMR/IBAMR/include/ibamr/INSHierarchyIntegrator.h>

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

Public Member Functions

 ~INSHierarchyIntegrator ()
 
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.
 
const std::stringgetConvectiveOperatorType () const
 Get the convective operator type used by the solver.
 
void setConvectiveDifferencingType (ConvectiveDifferencingType difference_form)
 Set the convective differencing form to be used by the solver.
 
ConvectiveDifferencingType getConvectiveDifferencingType () const
 Get the convective differencing form used by the solver.
 
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.
 
bool getCreepingFlow () const
 Get whether the integrator solves the time-dependent (creeping) Stokes equations. Otherwise, the integrator solves the time-dependent Navier-Stokes equations.
 
void setConvectiveOperator (SAMRAI::tbox::Pointer< ConvectiveOperator > convective_op)
 
virtual SAMRAI::tbox::Pointer< ConvectiveOperatorgetConvectiveOperator ()=0
 
void setConvectiveOperatorNeedsInit ()
 
void setVelocitySubdomainSolver (SAMRAI::tbox::Pointer< IBTK::PoissonSolver > velocity_solver)
 
virtual SAMRAI::tbox::Pointer< IBTK::PoissonSolvergetVelocitySubdomainSolver ()=0
 
void setVelocitySubdomainSolverNeedsInit ()
 
void setPressureSubdomainSolver (SAMRAI::tbox::Pointer< IBTK::PoissonSolver > pressure_solver)
 
virtual SAMRAI::tbox::Pointer< IBTK::PoissonSolvergetPressureSubdomainSolver ()=0
 
void setPressureSubdomainSolverNeedsInit ()
 
int getNumberOfCycles () const override
 
virtual void postprocessIntegrateHierarchy (double current_time, double new_time, bool skip_synchronize_new_state_data, int num_cycles=1) override
 
virtual double getCurrentCFLNumber () const
 
- Public Member Functions inherited from IBTK::HierarchyIntegrator
 HierarchyIntegrator (std::string object_name, SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > input_db, bool register_for_restart)
 
 ~HierarchyIntegrator ()
 
const std::stringgetName () const
 
virtual void initializeHierarchyIntegrator (SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > > gridding_alg)=0
 
virtual void initializePatchHierarchy (SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > > gridding_alg)
 
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
 
virtual void preprocessIntegrateHierarchy (double current_time, double new_time, int num_cycles=1)
 
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 > >(NULL), bool allocate_data=true) override
 
void resetHierarchyConfiguration (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int coarsest_level, int finest_level) override
 
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
 
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< HierarchyMathOpsgetHierarchyMathOps () 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=SAMRAI::tbox::Pointer< CartGridFunction >(NULL), 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 >(NULL), const bool register_for_restart=true)
 
void putToDatabase (SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > db) override
 
- Public Member Functions inherited from SAMRAI::mesh::StandardTagAndInitStrategy< NDIM >
virtual double getLevelDt (const tbox::Pointer< hier::BasePatchLevel< NDIM > > level, const double dt_time, const bool initial_time)
 
virtual double advanceLevel (const tbox::Pointer< hier::BasePatchLevel< NDIM > > level, const tbox::Pointer< hier::BasePatchHierarchy< NDIM > > 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< NDIM > > level, const double new_time, const bool can_be_refined)
 
virtual void resetDataToPreadvanceState (const tbox::Pointer< hier::BasePatchLevel< NDIM > > level)
 
virtual void applyRichardsonExtrapolation (const tbox::Pointer< hier::PatchLevel< NDIM > > 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< NDIM > > hierarchy, const int level_number, const tbox::Pointer< hier::PatchLevel< NDIM > > coarser_level, const double coarsen_data_time, const bool before_advance)
 

Protected Member Functions

 INSHierarchyIntegrator (std::string object_name, SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > input_db, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > U_var, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > P_var, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > F_var, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > Q_var, bool register_for_restart)
 
 INSHierarchyIntegrator (std::string object_name, SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > input_db, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > U_var, std::string U_default_coarsen_type, std::string U_default_refine_type, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > P_var, std::string P_default_coarsen_type, std::string P_default_refine_type, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > F_var, std::string F_default_coarsen_type, std::string F_default_refine_type, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > Q_var, std::string Q_default_coarsen_type, std::string Q_default_refine_type, bool register_for_restart)
 
virtual void regridProjection ()=0
 
virtual void updateCurrentCFLNumber (const int data_idx, const double dt)
 
double getMaximumTimeStepSizeSpecialized () override
 
double getStableTimestep (SAMRAI::tbox::Pointer< SAMRAI::hier::PatchLevel< NDIM > > level) const
 
virtual double getStableTimestep (SAMRAI::tbox::Pointer< SAMRAI::hier::Patch< NDIM > > patch) const =0
 
void putToDatabaseSpecialized (SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > db) override
 
- Protected Member Functions inherited from IBTK::HierarchyIntegrator
virtual void integrateHierarchySpecialized (double current_time, double new_time, int cycle_num=0)=0
 
virtual void regridHierarchyBeginSpecialized ()
 
virtual void regridHierarchyEndSpecialized ()
 
virtual double getMinimumTimeStepSizeSpecialized ()
 
virtual void synchronizeHierarchyDataSpecialized (VariableContextType ctx_type)
 
virtual void resetTimeDependentHierarchyDataSpecialized (double new_time)
 
virtual void resetIntegratorToPreadvanceStateSpecialized ()
 
virtual bool atRegridPointSpecialized () const
 
virtual void setupPlotDataSpecialized ()
 
virtual void initializeCompositeHierarchyDataSpecialized (double init_data_time, bool initial_time)
 
virtual 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)
 
virtual void resetHierarchyConfigurationSpecialized (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int coarsest_level, int finest_level)
 
virtual 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)
 
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< HierarchyMathOpsbuildHierarchyMathOps (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

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< double > d_Omega_rel_thresh
 
SAMRAI::tbox::Array< double > d_Omega_abs_thresh
 
double d_Omega_max = 0.0
 
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
 
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > d_U_var
 
std::string d_U_coarsen_type = "CONSERVATIVE_COARSEN"
 
std::string d_U_refine_type = "CONSERVATIVE_LINEAR_REFINE"
 
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > d_P_var
 
std::string d_P_coarsen_type = "CONSERVATIVE_COARSEN"
 
std::string d_P_refine_type = "LINEAR_REFINE"
 
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > d_F_var
 
std::string d_F_coarsen_type = "CONSERVATIVE_COARSEN"
 
std::string d_F_refine_type = "CONSERVATIVE_LINEAR_REFINE"
 
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > d_Q_var
 
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
 
int d_coarsest_reset_ln
 
int d_finest_reset_ln
 
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
 
- Protected Attributes inherited from IBTK::HierarchyIntegrator
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< double > d_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< int > d_tag_buffer = { 0 }
 
SAMRAI::tbox::Pointer< HierarchyMathOpsd_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
 

Additional Inherited Members

- Public Types inherited from IBTK::HierarchyIntegrator
using PreprocessIntegrateHierarchyCallbackFcnPtr = void(*)(double current_time, double new_time, int num_cycles, void *ctx)
 
using IntegrateHierarchyCallbackFcnPtr = void(*)(double current_time, double new_time, int cycle_num, void *ctx)
 
using PostprocessIntegrateHierarchyCallbackFcnPtr = void(*)(double current_time, double new_time, bool skip_synchronize_new_state_data, int num_cycles, void *ctx)
 
using ApplyGradientDetectorCallbackFcnPtr = void(*)(SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int level_number, double error_data_time, int tag_index, bool initial_time, bool uses_richardson_extrapolation_too, void *ctx)
 
using RegridHierarchyCallbackFcnPtr = void(*)(SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, double data_time, bool initial_time, void *ctx)
 
- Static Protected Attributes inherited from IBTK::HierarchyIntegrator
static const std::string SYNCH_CURRENT_DATA_ALG = "SYNCH_CURRENT_DATA"
 
static const std::string SYNCH_NEW_DATA_ALG = "SYNCH_NEW_DATA"
 

Detailed Description

Class INSHierarchyIntegrator provides an abstract interface for a time integrator for the incompressible Navier-Stokes equations on an AMR grid hierarchy, along with basic data management for variables defined on that hierarchy.

Constructor & Destructor Documentation

◆ ~INSHierarchyIntegrator()

IBAMR::INSHierarchyIntegrator::~INSHierarchyIntegrator ( )

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

◆ INSHierarchyIntegrator() [1/2]

IBAMR::INSHierarchyIntegrator::INSHierarchyIntegrator ( std::string  object_name,
SAMRAI::tbox::Pointer< SAMRAI::tbox::Database input_db,
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > >  U_var,
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > >  P_var,
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > >  F_var,
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > >  Q_var,
bool  register_for_restart 
)
protected

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

This constructor sets the default coarsen and refine operator types to:

  • "CONSERVATIVE_COARSEN" and "CONSERVATIVE_LINEAR_REFINE" for U
  • "CONSERVATIVE_COARSEN" and "LINEAR_REFINE" for P
  • "CONSERVATIVE_COARSEN" and "CONSERVATIVE_LINEAR_REFINE" for F
  • "CONSERVATIVE_COARSEN" and "CONSTANT_REFINE" for Q

The other constructor allows these default values to be overridden.

◆ INSHierarchyIntegrator() [2/2]

IBAMR::INSHierarchyIntegrator::INSHierarchyIntegrator ( std::string  object_name,
SAMRAI::tbox::Pointer< SAMRAI::tbox::Database input_db,
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > >  U_var,
std::string  U_default_coarsen_type,
std::string  U_default_refine_type,
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > >  P_var,
std::string  P_default_coarsen_type,
std::string  P_default_refine_type,
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > >  F_var,
std::string  F_default_coarsen_type,
std::string  F_default_refine_type,
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > >  Q_var,
std::string  Q_default_coarsen_type,
std::string  Q_default_refine_type,
bool  register_for_restart 
)
protected

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

Member Function Documentation

◆ getAdvectionVelocityVariable()

Pointer< FaceVariable< NDIM, double > > IBAMR::INSHierarchyIntegrator::getAdvectionVelocityVariable ( ) const

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.

◆ getBodyForceVariable()

Pointer< Variable< NDIM > > IBAMR::INSHierarchyIntegrator::getBodyForceVariable ( ) const

Return a pointer to the body force variable.

◆ getConvectiveOperator()

virtual SAMRAI::tbox::Pointer<ConvectiveOperator> IBAMR::INSHierarchyIntegrator::getConvectiveOperator ( )
pure virtual

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 NULL.

If the convective operator has not already been constructed, then this function will initialize a default convective operator.

Implemented in IBAMR::INSVCStaggeredHierarchyIntegrator, IBAMR::INSVCStaggeredConservativeHierarchyIntegrator, IBAMR::INSStaggeredHierarchyIntegrator, and IBAMR::INSCollocatedHierarchyIntegrator.

◆ getConvectiveTimeSteppingType()

TimeSteppingType IBAMR::INSHierarchyIntegrator::getConvectiveTimeSteppingType ( ) const

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

Different implementations may support different time stepping schemes.

◆ getCurrentCFLNumber()

double IBAMR::INSHierarchyIntegrator::getCurrentCFLNumber ( ) const
virtual

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.

◆ getFluidSourceVariable()

Pointer< Variable< NDIM > > IBAMR::INSHierarchyIntegrator::getFluidSourceVariable ( ) const

Return a pointer to the source strength variable.

Deprecated:
Use getVelocityDivergenceVariable() instead.

◆ getInitialConvectiveTimeSteppingType()

TimeSteppingType IBAMR::INSHierarchyIntegrator::getInitialConvectiveTimeSteppingType ( ) const

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.

◆ getIntermediateVelocityBoundaryConditions()

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

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

◆ getMaximumTimeStepSizeSpecialized()

double IBAMR::INSHierarchyIntegrator::getMaximumTimeStepSizeSpecialized ( )
overrideprotectedvirtual

Return the maximum stable time step size.

Reimplemented from IBTK::HierarchyIntegrator.

◆ getNumberOfCycles()

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

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

Reimplemented from IBTK::HierarchyIntegrator.

Reimplemented in IBAMR::INSVCStaggeredConservativeHierarchyIntegrator.

◆ getPressureBoundaryConditions()

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

Get a pointer to the pressure boundary condition specification object.

Note
Implementations may return a NULL pointer.

◆ getPressureSubdomainSolver()

virtual SAMRAI::tbox::Pointer<IBTK::PoissonSolver> IBAMR::INSHierarchyIntegrator::getPressureSubdomainSolver ( )
pure virtual

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

If the pressure subdomain solver has not already been constructed, then this function will initialize a default solver.

Implemented in IBAMR::INSVCStaggeredHierarchyIntegrator, IBAMR::INSStaggeredHierarchyIntegrator, and IBAMR::INSCollocatedHierarchyIntegrator.

◆ getPressureVariable()

Pointer< Variable< NDIM > > IBAMR::INSHierarchyIntegrator::getPressureVariable ( ) const

Return a pointer to the fluid pressure state variable.

◆ getProjectionBoundaryConditions()

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

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

◆ getStableTimestep() [1/2]

virtual double IBAMR::INSHierarchyIntegrator::getStableTimestep ( SAMRAI::tbox::Pointer< SAMRAI::hier::Patch< NDIM > >  patch) const
protectedpure virtual

Determine the largest stable timestep on an individual patch.

Implemented in IBAMR::INSVCStaggeredHierarchyIntegrator, IBAMR::INSStaggeredHierarchyIntegrator, and IBAMR::INSCollocatedHierarchyIntegrator.

◆ getStableTimestep() [2/2]

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

Determine the largest stable timestep on an individual patch level.

◆ getStokesSpecifications()

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

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

◆ getVelocityBoundaryConditions()

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

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

Note
Implementations may return a vector of NULL pointers.

◆ getVelocityDivergenceVariable()

Pointer< Variable< NDIM > > IBAMR::INSHierarchyIntegrator::getVelocityDivergenceVariable ( ) const

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

◆ getVelocitySubdomainSolver()

virtual SAMRAI::tbox::Pointer<IBTK::PoissonSolver> IBAMR::INSHierarchyIntegrator::getVelocitySubdomainSolver ( )
pure virtual

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

If the velocity subdomain solver has not already been constructed, then this function will initialize a default solver.

Implemented in IBAMR::INSVCStaggeredHierarchyIntegrator, IBAMR::INSStaggeredHierarchyIntegrator, and IBAMR::INSCollocatedHierarchyIntegrator.

◆ getVelocityVariable()

Pointer< Variable< NDIM > > IBAMR::INSHierarchyIntegrator::getVelocityVariable ( ) const

Return a pointer to the fluid velocity variable.

◆ getViscousTimeSteppingType()

TimeSteppingType IBAMR::INSHierarchyIntegrator::getViscousTimeSteppingType ( ) const

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

Different implementations may support different time stepping schemes.

◆ postprocessIntegrateHierarchy()

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

◆ putToDatabaseSpecialized()

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

Write out specialized object state to the given database.

Reimplemented from IBTK::HierarchyIntegrator.

Reimplemented in IBAMR::INSStaggeredHierarchyIntegrator.

◆ registerAdvDiffHierarchyIntegrator()

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

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

◆ registerBodyForceFunction()

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

Supply a body force.

◆ registerFluidSourceFunction()

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

Supply a fluid source/sink distribution.

Deprecated:
Use registerVelocityDivergenceFunction() instead.

◆ registerPhysicalBoundaryConditions()

void IBAMR::INSHierarchyIntegrator::registerPhysicalBoundaryConditions ( const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &  bc_coefs)

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

◆ registerPressureInitialConditions()

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

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.

◆ registerVelocityDivergenceFunction()

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

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

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

◆ registerVelocityInitialConditions()

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

Supply initial conditions for the velocity field.

◆ regridProjection()

virtual void IBAMR::INSHierarchyIntegrator::regridProjection ( )
protectedpure virtual

◆ setConvectiveOperator()

void IBAMR::INSHierarchyIntegrator::setConvectiveOperator ( SAMRAI::tbox::Pointer< ConvectiveOperator convective_op)

Register an operator to compute the convective acceleration term u*grad u.

If the supplied operator is NULL, then the integrator will solve the time-dependent (creeping) Stokes equations instead of the Navier-Stokes equations.

◆ setConvectiveOperatorNeedsInit()

void IBAMR::INSHierarchyIntegrator::setConvectiveOperatorNeedsInit ( )

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

◆ setConvectiveTimeSteppingType()

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

Set 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

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.

◆ setPressureSubdomainSolver()

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

Register a solver for the pressure subsystem.

◆ setPressureSubdomainSolverNeedsInit()

void IBAMR::INSHierarchyIntegrator::setPressureSubdomainSolverNeedsInit ( )

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

◆ setStokesSpecifications()

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

Set the problem coefficients used by the solver.

◆ setVelocitySubdomainSolver()

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

Register a solver for the velocity subsystem.

◆ setVelocitySubdomainSolverNeedsInit()

void IBAMR::INSHierarchyIntegrator::setVelocitySubdomainSolverNeedsInit ( )

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

◆ setViscousTimeSteppingType()

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

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

Different implementations may support different time stepping schemes.

◆ updateCurrentCFLNumber()

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

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.

Member Data Documentation

◆ d_cfl_current

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

Current CFL number.

◆ d_cfl_max

double IBAMR::INSHierarchyIntegrator::d_cfl_max = 1.0
protected

The maximum CFL number.

◆ d_coarsest_reset_ln

int IBAMR::INSHierarchyIntegrator::d_coarsest_reset_ln
protected

Hierarchy operators and solvers and related configuration data.

◆ d_convective_time_stepping_type

TimeSteppingType IBAMR::INSHierarchyIntegrator::d_convective_time_stepping_type = ADAMS_BASHFORTH
protected

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

◆ d_creeping_flow

bool IBAMR::INSHierarchyIntegrator::d_creeping_flow = false
protected

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_init_convective_time_stepping_type

TimeSteppingType IBAMR::INSHierarchyIntegrator::d_init_convective_time_stepping_type = MIDPOINT_RULE
protected

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

◆ d_normalize_pressure

bool IBAMR::INSHierarchyIntegrator::d_normalize_pressure = false
protected

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
protected

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_problem_coefs

StokesSpecifications IBAMR::INSHierarchyIntegrator::d_problem_coefs
protected

Problem coeficients.

◆ d_regrid_max_div_growth_factor

double IBAMR::INSHierarchyIntegrator::d_regrid_max_div_growth_factor = 1.1
protected

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

◆ d_U_init

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

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

◆ d_U_scale

double IBAMR::INSHierarchyIntegrator::d_U_scale = 1.0
protected

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_U_var

SAMRAI::tbox::Pointer<SAMRAI::hier::Variable<NDIM> > IBAMR::INSHierarchyIntegrator::d_U_var
protected

Fluid solver variables.

◆ d_using_vorticity_tagging

bool IBAMR::INSHierarchyIntegrator::d_using_vorticity_tagging = false
protected

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

◆ d_viscous_time_stepping_type

TimeSteppingType IBAMR::INSHierarchyIntegrator::d_viscous_time_stepping_type = TRAPEZOIDAL_RULE
protected

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


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