BrinkmanAdvDiffSemiImplicitHierarchyIntegrator (const std::string &object_name, SAMRAI::tbox::Pointer < SAMRAI::tbox::Database > input_db, bool register_for_restart=true)
~BrinkmanAdvDiffSemiImplicitHierarchyIntegrator ()=default
void initializeHierarchyIntegrator (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 registerBrinkmanAdvDiffBcHelper (SAMRAI::tbox::Pointer < IBAMR::BrinkmanAdvDiffBcHelper > brinkman_penalization)
Register BrinkmanAdvDiffBcHelper object to add Brinkman penalization terms to the advection-diffusion solver.
const SAMRAI::tbox::Pointer < IBAMR::BrinkmanAdvDiffBcHelper > & getBrinkmanPenalization () const
Get the BrinkmanAdvDiffBcHelper object registered with this class.
void setTransportQuantityTimeIndependent (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, bool Q_time_independent)
Indicate if are solving a time independent problem for the transport variable Q. Default option is false, which means Q is assumed to vary with time.
virtual void registerTransportedQuantity (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, const bool output_Q=true) override
AdvDiffSemiImplicitHierarchyIntegrator (const std::string &object_name, SAMRAI::tbox::Pointer < SAMRAI::tbox::Database > input_db, bool register_for_restart=true)
~AdvDiffSemiImplicitHierarchyIntegrator ()=default
void setDefaultConvectiveTimeSteppingType (TimeSteppingType default_convective_time_stepping_type)
TimeSteppingType getDefaultConvectiveTimeSteppingType () const
void setDefaultInitialConvectiveTimeSteppingType (TimeSteppingType default_init_convective_time_stepping_type)
TimeSteppingType getDefaultInitialConvectiveTimeSteppingType () const
void setDefaultConvectiveOperatorType (const std::string &op_type)
Set the default convective operator type to be used by the solver.
const std::string & getDefaultConvectiveOperatorType () const
Get the default convective operator type used by the solver.
void setDefaultConvectiveOperatorInputDatabase (SAMRAI::tbox::Pointer < SAMRAI::tbox::Database > input_db)
Set the default convective operator input database to be used by the solver.
SAMRAI::tbox::Pointer < SAMRAI::tbox::Database > getDefaultConvectiveOperatorInputDatabase () const
Get the default convective operator input database to be used by the solver.
void setConvectiveTimeSteppingType (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, TimeSteppingType convective_time_stepping_type)
TimeSteppingType getConvectiveTimeSteppingType (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var) const
void setInitialConvectiveTimeSteppingType (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, TimeSteppingType init_convective_time_stepping_type)
TimeSteppingType getInitialConvectiveTimeSteppingType (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var) const
void setConvectiveOperatorType (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, const std::string &op_type)
Set the convective operator type to be used by the solver for a particular transported quantity Q.
const std::string & getConvectiveOperatorType (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var) const
Get the convective operator type used by the solver for a particular transported quantity Q.
void setConvectiveOperatorInputDatabase (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, SAMRAI::tbox::Pointer < SAMRAI::tbox::Database > input_db)
Set the convective operator input database to be used by the solver for a particular transported quantity Q.
SAMRAI::tbox::Pointer < SAMRAI::tbox::Database > getConvectiveOperatorInputDatabase (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var) const
Get the convective operator boundary input database used by the solver for a particular transported quantity Q.
void setConvectiveOperator (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, SAMRAI::tbox::Pointer < ConvectiveOperator > convective_op)
virtual SAMRAI::tbox::Pointer < ConvectiveOperator > getConvectiveOperator (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var)
void setConvectiveOperatorsNeedInit ()
void setConvectiveOperatorNeedsInit (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var)
int getNumberOfCycles () const override
~AdvDiffHierarchyIntegrator ()
void setDefaultDiffusionTimeSteppingType (TimeSteppingType default_diffusion_time_stepping_type)
TimeSteppingType getDefaultDiffusionTimeSteppingType () const
void setDefaultConvectiveDifferencingType (ConvectiveDifferencingType default_convective_difference_form)
ConvectiveDifferencingType getDefaultConvectiveDifferencingType () const
virtual void registerAdvectionVelocity (SAMRAI::tbox::Pointer < SAMRAI::pdat::FaceVariable < NDIM, double > > u_var)
void setAdvectionVelocityIsDivergenceFree (SAMRAI::tbox::Pointer < SAMRAI::pdat::FaceVariable < NDIM, double > > u_var, bool is_div_free)
bool getAdvectionVelocityIsDivergenceFree (SAMRAI::tbox::Pointer < SAMRAI::pdat::FaceVariable < NDIM, double > > u_var) const
void setAdvectionVelocityFunction (SAMRAI::tbox::Pointer < SAMRAI::pdat::FaceVariable < NDIM, double > > u_var, SAMRAI::tbox::Pointer < IBTK::CartGridFunction > u_fcn)
SAMRAI::tbox::Pointer < IBTK::CartGridFunction > getAdvectionVelocityFunction (SAMRAI::tbox::Pointer < SAMRAI::pdat::FaceVariable < NDIM, double > > u_var) const
virtual void registerSourceTerm (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > F_var, const bool output_F=true)
void setSourceTermFunction (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > F_var, SAMRAI::tbox::Pointer < IBTK::CartGridFunction > F_fcn)
SAMRAI::tbox::Pointer < IBTK::CartGridFunction > getSourceTermFunction (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > F_var) const
void setAdvectionVelocity (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, SAMRAI::tbox::Pointer < SAMRAI::pdat::FaceVariable < NDIM, double > > u_var)
SAMRAI::tbox::Pointer < SAMRAI::pdat::FaceVariable < NDIM, double > > getAdvectionVelocity (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var) const
void setSourceTerm (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > F_var)
SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > getSourceTerm (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var) const
void setDiffusionTimeSteppingType (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, TimeSteppingType time_stepping_type)
TimeSteppingType getDiffusionTimeSteppingType (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var) const
void setConvectiveDifferencingType (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, ConvectiveDifferencingType difference_form)
ConvectiveDifferencingType getConvectiveDifferencingType (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var) const
void setDiffusionCoefficient (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, double kappa)
double getDiffusionCoefficient (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var) const
void registerDiffusionCoefficientVariable (SAMRAI::tbox::Pointer < SAMRAI::pdat::SideVariable < NDIM, double > > D_var)
void setDiffusionCoefficientFunction (SAMRAI::tbox::Pointer < SAMRAI::pdat::SideVariable < NDIM, double > > D_var, SAMRAI::tbox::Pointer < IBTK::CartGridFunction > D_fcn)
SAMRAI::tbox::Pointer < IBTK::CartGridFunction > getDiffusionCoefficientFunction (SAMRAI::tbox::Pointer < SAMRAI::pdat::SideVariable < NDIM, double > > D_var) const
void setDiffusionCoefficientVariable (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, SAMRAI::tbox::Pointer < SAMRAI::pdat::SideVariable < NDIM, double > > D_var)
SAMRAI::tbox::Pointer < SAMRAI::pdat::SideVariable < NDIM, double > > getDiffusionCoefficientVariable (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var) const
bool isDiffusionCoefficientVariable (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var) const
void setDampingCoefficient (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, double lambda)
double getDampingCoefficient (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var) const
void setInitialConditions (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, SAMRAI::tbox::Pointer < IBTK::CartGridFunction > Q_init)
SAMRAI::tbox::Pointer < IBTK::CartGridFunction > getInitialConditions (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var) const
void setPhysicalBcCoef (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, SAMRAI::solv::RobinBcCoefStrategy < NDIM > *Q_bc_coef)
void setPhysicalBcCoefs (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, const std::vector < SAMRAI::solv::RobinBcCoefStrategy < NDIM > * > &Q_bc_coef)
std::vector < SAMRAI::solv::RobinBcCoefStrategy < NDIM > * > getPhysicalBcCoefs (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var) const
void setHelmholtzSolver (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, SAMRAI::tbox::Pointer < IBTK::PoissonSolver > helmholtz_solver)
SAMRAI::tbox::Pointer < IBTK::PoissonSolver > getHelmholtzSolver (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var)
void setHelmholtzSolversNeedInit ()
void setHelmholtzSolverNeedsInit (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var)
void setHelmholtzRHSOperator (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, SAMRAI::tbox::Pointer < IBTK::LaplaceOperator > helmholtz_rhs_operator)
SAMRAI::tbox::Pointer < IBTK::LaplaceOperator > getHelmholtzRHSOperator (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var)
void setHelmholtzRHSOperatorsNeedInit ()
void setHelmholtzRHSOperatorNeedsInit (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var)
void registerResetFunction (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, ResetPropertiesFcnPtr callback, void *ctx)
Register a reset callback function for a specified variable.
void setResetPriority (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var, int priority)
Set a reset priority for a particular variable.
std::vector < ResetPropertiesFcnPtr > getResetFunctions (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var) const
Get the reset callback functions registered with this variable.
int getResetPriority (SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > Q_var) const
Get the reset priority for a particular variable.
HierarchyIntegrator (std::string object_name, SAMRAI::tbox::Pointer < SAMRAI::tbox::Database > input_db, bool register_for_restart)
~HierarchyIntegrator ()
const std::string & getName () const
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
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
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::VariableContext > getContext (VariableContextType ctx_type) const
SAMRAI::tbox::Pointer < SAMRAI::hier::VariableContext > getCurrentContext () const
SAMRAI::tbox::Pointer < SAMRAI::hier::VariableContext > getNewContext () const
SAMRAI::tbox::Pointer < SAMRAI::hier::VariableContext > getScratchContext () const
SAMRAI::tbox::Pointer < SAMRAI::hier::VariableContext > getPlotContext () const
bool isAllocatedPatchData (int data_idx, int coarsest_ln=invalid_level_number, int finest_ln=invalid_level_number) const
void allocatePatchData (int data_idx, double data_time, int coarsest_ln=invalid_level_number, int finest_ln=invalid_level_number) const
void deallocatePatchData (int data_idx, int coarsest_ln=invalid_level_number, int finest_ln=invalid_level_number) const
SAMRAI::tbox::Pointer < HierarchyMathOps > getHierarchyMathOps () const
void registerVariable (int ¤t_idx, int &new_idx, int &scratch_idx, SAMRAI::tbox::Pointer < SAMRAI::hier::Variable < NDIM > > variable, const SAMRAI::hier::IntVector < NDIM > &scratch_ghosts=SAMRAI::hier::IntVector < NDIM >(0), const std::string &coarsen_name="NO_COARSEN", const std::string &refine_name="NO_REFINE", SAMRAI::tbox::Pointer < CartGridFunction > init_fcn=nullptr, const bool register_for_restart=true)
void registerVariable (int &idx, SAMRAI::tbox::Pointer < SAMRAI::hier::Variable < NDIM > > variable, const SAMRAI::hier::IntVector < NDIM > &ghosts=SAMRAI::hier::IntVector < NDIM >(0), SAMRAI::tbox::Pointer < SAMRAI::hier::VariableContext > ctx=SAMRAI::tbox::Pointer < SAMRAI::hier::VariableContext >(nullptr), const bool register_for_restart=true)
void putToDatabase (SAMRAI::tbox::Pointer < SAMRAI::tbox::Database > db) override
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)
void integrateHierarchySpecialized (double current_time, double new_time, int cycle_num=0) override
void resetHierarchyConfigurationSpecialized (SAMRAI::tbox::Pointer < SAMRAI::hier::BasePatchHierarchy < NDIM > > hierarchy, int coarsest_level, int finest_level) override
void putToDatabaseSpecialized (SAMRAI::tbox::Pointer < SAMRAI::tbox::Database > db) override
AdvDiffHierarchyIntegrator (const std::string &object_name, SAMRAI::tbox::Pointer < SAMRAI::tbox::Database > input_db, bool register_for_restart)
double getMaximumTimeStepSizeSpecialized () override
void initializeCompositeHierarchyDataSpecialized (double init_data_time, bool initial_time) override
void registerVariables ()
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 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 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 < 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
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > > d_Q_Cb_map
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > > d_Q_Cb_rhs_map
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > > d_Q_Fb_map
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, SAMRAI::tbox::Pointer < SAMRAI::pdat::SideVariable < NDIM, double > > > d_Q_Db_map
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, SAMRAI::tbox::Pointer < SAMRAI::pdat::SideVariable < NDIM, double > > > d_Q_Db_rhs_map
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, bool > d_Q_time_independent
SAMRAI::tbox::Pointer < IBAMR::BrinkmanAdvDiffBcHelper > d_brinkman_penalization
TimeSteppingType d_default_convective_time_stepping_type
TimeSteppingType d_default_init_convective_time_stepping_type
std::string d_default_convective_op_type
SAMRAI::tbox::Pointer < SAMRAI::tbox::Database > d_default_convective_op_input_db
SAMRAI::tbox::Pointer < SAMRAI::math::HierarchyFaceDataOpsReal < NDIM, double > > d_hier_fc_data_ops
std::set < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > > d_N_var
std::set < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > > d_N_old_var
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > > d_Q_N_map
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > > d_Q_N_old_map
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, TimeSteppingType > d_Q_convective_time_stepping_type
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, TimeSteppingType > d_Q_init_convective_time_stepping_type
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, std::string > d_Q_convective_op_type
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, SAMRAI::tbox::Pointer < SAMRAI::tbox::Database > > d_Q_convective_op_input_db
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, SAMRAI::tbox::Pointer < ConvectiveOperator > > d_Q_convective_op
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, bool > d_Q_convective_op_needs_init
bool d_integrator_is_initialized = false
double d_cfl_max = 0.5
TimeSteppingType d_default_diffusion_time_stepping_type = TRAPEZOIDAL_RULE
ConvectiveDifferencingType d_default_convective_difference_form = CONSERVATIVE
std::vector < SAMRAI::tbox::Pointer < SAMRAI::pdat::FaceVariable < NDIM, double > > > d_u_var
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::FaceVariable < NDIM, double > >, bool > d_u_is_div_free
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::FaceVariable < NDIM, double > >, SAMRAI::tbox::Pointer < IBTK::CartGridFunction > > d_u_fcn
std::vector < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > > d_F_var
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, SAMRAI::tbox::Pointer < IBTK::CartGridFunction > > d_F_fcn
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, bool > d_F_output
std::vector < SAMRAI::tbox::Pointer < SAMRAI::pdat::SideVariable < NDIM, double > > > d_diffusion_coef_var
std::vector < SAMRAI::tbox::Pointer < SAMRAI::pdat::SideVariable < NDIM, double > > > d_diffusion_coef_rhs_var
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::SideVariable < NDIM, double > >, SAMRAI::tbox::Pointer < IBTK::CartGridFunction > > d_diffusion_coef_fcn
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::SideVariable < NDIM, double > >, SAMRAI::tbox::Pointer < SAMRAI::pdat::SideVariable < NDIM, double > > > d_diffusion_coef_rhs_map
std::vector < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > > d_Q_var
std::vector < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > > d_Q_rhs_var
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, SAMRAI::tbox::Pointer < SAMRAI::pdat::FaceVariable < NDIM, double > > > d_Q_u_map
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > > d_Q_F_map
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > > > d_Q_Q_rhs_map
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, TimeSteppingType > d_Q_diffusion_time_stepping_type
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, ConvectiveDifferencingType > d_Q_difference_form
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, double > d_Q_diffusion_coef
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, SAMRAI::tbox::Pointer < SAMRAI::pdat::SideVariable < NDIM, double > > > d_Q_diffusion_coef_variable
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, bool > d_Q_is_diffusion_coef_variable
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, double > d_Q_damping_coef
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, SAMRAI::tbox::Pointer < IBTK::CartGridFunction > > d_Q_init
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, std::vector < SAMRAI::solv::RobinBcCoefStrategy < NDIM > * > > d_Q_bc_coef
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, bool > d_Q_output
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, std::vector < ResetPropertiesFcnPtr > > d_Q_reset_fcns
std::map < SAMRAI::tbox::Pointer < SAMRAI::pdat::CellVariable < NDIM, double > >, std::vector < void * > > d_Q_reset_fcns_ctx
std::vector < int > d_Q_reset_priority
SAMRAI::tbox::Pointer < SAMRAI::math::HierarchyCellDataOpsReal < NDIM, double > > d_hier_cc_data_ops
SAMRAI::tbox::Pointer < SAMRAI::math::HierarchySideDataOpsReal < NDIM, double > > d_hier_sc_data_ops
std::vector < SAMRAI::tbox::Pointer < IBTK::HierarchyGhostCellInterpolation > > d_hier_bdry_fill_ops
SAMRAI::tbox::Pointer < IBTK::HierarchyGhostCellInterpolation > d_no_fill_op
std::vector < SAMRAI::tbox::Pointer < SAMRAI::solv::SAMRAIVectorReal < NDIM, double > > > d_sol_vecs
std::vector < SAMRAI::tbox::Pointer < SAMRAI::solv::SAMRAIVectorReal < NDIM, double > > > d_rhs_vecs
std::string d_helmholtz_solver_type
std::string d_helmholtz_precond_type
std::string d_helmholtz_sub_precond_type
SAMRAI::tbox::Pointer < SAMRAI::tbox::Database > d_helmholtz_solver_db
SAMRAI::tbox::Pointer < SAMRAI::tbox::Database > d_helmholtz_precond_db
SAMRAI::tbox::Pointer < SAMRAI::tbox::Database > d_helmholtz_sub_precond_db
std::vector < SAMRAI::tbox::Pointer < IBTK::PoissonSolver > > d_helmholtz_solvers
std::vector < SAMRAI::tbox::Pointer < IBTK::LaplaceOperator > > d_helmholtz_rhs_ops
std::vector < bool > d_helmholtz_solvers_need_init
std::vector < bool > d_helmholtz_rhs_ops_need_init
int d_coarsest_reset_ln = IBTK::invalid_level_number
int d_finest_reset_ln = IBTK::invalid_level_number
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
HierarchyIntegrator * d_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 < 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::VariableContext > d_current_context
SAMRAI::tbox::Pointer < SAMRAI::hier::VariableContext > d_new_context
SAMRAI::tbox::Pointer < SAMRAI::hier::VariableContext > d_scratch_context
SAMRAI::tbox::Pointer < SAMRAI::hier::VariableContext > d_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 < PreprocessIntegrateHierarchyCallbackFcnPtr > d_preprocess_integrate_hierarchy_callbacks
std::vector < void * > d_preprocess_integrate_hierarchy_callback_ctxs
std::vector < IntegrateHierarchyCallbackFcnPtr > d_integrate_hierarchy_callbacks
std::vector < void * > d_integrate_hierarchy_callback_ctxs
std::vector < PostprocessIntegrateHierarchyCallbackFcnPtr > d_postprocess_integrate_hierarchy_callbacks
std::vector < void * > d_postprocess_integrate_hierarchy_callback_ctxs
std::vector < ApplyGradientDetectorCallbackFcnPtr > d_apply_gradient_detector_callbacks
std::vector < void * > d_apply_gradient_detector_callback_ctxs
std::vector < RegridHierarchyCallbackFcnPtr > d_regrid_hierarchy_callbacks
std::vector < void * > d_regrid_hierarchy_callback_ctxs
Class BrinkmanAdvDiffSemiImplicitHierarchyIntegrator manages the spatial discretization and time integration of scalar- and vector-valued quantities whose dynamics are governed by the advection-diffusion equation. If the variable is registered with penalization boundary conditions, this class computes the additional diffusion coefficient and the forcing term from BrinkmanAdvDiffBcHelper class and solves a penalized advection-diffusion equation for that variable.
Each quantity managed by the integrator may have a unique diffusion coefficient and damping coefficient , and may optionally have a forcing term . Additionally, a different advection velocity may be used with each quantity registered with the integrator.
This hierarchy integrator advances all levels of the patch hierarchy synchronously in time. In particular, subcycling in time is not performed.
Various options are available for the spatial and temporal discretizations.
See also HierarchyIntegrator
SAMRAI::mesh::StandardTagAndInitStrategy
SAMRAI::algs::TimeRefinementIntegrator
SAMRAI::algs::TimeRefinementLevelStrategy