IBAMR
An adaptive and distributed-memory parallel implementation of the immersed boundary (IB) method
|
Class IBLevelSetMethod is a concrete IBStrategy class that uses IBInterpolantMethod and IBFEMethod objects to initialize and transport rigid body level sets for Brinkman penalized IBMethod. This class is supposed to be used with INSVCHierarchyIntegrator class. More...
#include </home/runner/work/IBAMR/IBAMR/include/ibamr/IBLevelSetMethod.h>
Public Member Functions | |
IBLevelSetMethod (SAMRAI::tbox::Pointer< IBStrategy > ib_method_ops, SAMRAI::tbox::Pointer< IBStrategy > ibfe_method_ops) | |
Constructor. | |
SAMRAI::tbox::Pointer< IBStrategy > | getIBMethodOps () const |
Get IBMethod ops object. | |
SAMRAI::tbox::Pointer< IBStrategy > | getIBFEMethodOps () const |
Get IBFEMethod ops object. | |
void | deactivateIBFEMethod () |
Deactivate FE mesh based operations. | |
~IBLevelSetMethod ()=default | |
Default dstructor. | |
void | registerIBHierarchyIntegrator (IBHierarchyIntegrator *ib_solver) override |
void | registerEulerianVariables () override |
void | registerEulerianCommunicationAlgorithms () override |
const SAMRAI::hier::IntVector< NDIM > & | getMinimumGhostCellWidth () const override |
void | setupTagBuffer (SAMRAI::tbox::Array< int > &tag_buffer, SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > > gridding_alg) const override |
void | preprocessIntegrateData (double current_time, double new_time, int num_cycles) override |
void | postprocessIntegrateData (double current_time, double new_time, int num_cycles) override |
void | updateFixedLEOperators () override |
void | interpolateVelocity (int u_data_idx, const std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::CoarsenSchedule< NDIM > > > &u_synch_scheds, const std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineSchedule< NDIM > > > &u_ghost_fill_scheds, double data_time) override |
void | forwardEulerStep (double current_time, double new_time) override |
void | midpointStep (double current_time, double new_time) override |
void | trapezoidalStep (double current_time, double new_time) override |
void | computeLagrangianForce (double data_time) override |
void | spreadForce (int f_data_idx, IBTK::RobinPhysBdryPatchStrategy *f_phys_bdry_op, const std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineSchedule< NDIM > > > &f_prolongation_scheds, double data_time) override |
bool | hasFluidSources () const override |
void | computeLagrangianFluidSource (double data_time) override |
void | spreadFluidSource (int q_data_idx, IBTK::RobinPhysBdryPatchStrategy *q_phys_bdry_op, const std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineSchedule< NDIM > > > &q_prolongation_scheds, double data_time) override |
void | interpolatePressure (int p_data_idx, const std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::CoarsenSchedule< NDIM > > > &p_synch_scheds, const std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineSchedule< NDIM > > > &p_ghost_fill_scheds, double data_time) override |
void | preprocessSolveFluidEquations (double current_time, double new_time, int cycle_num) override |
void | postprocessSolveFluidEquations (double current_time, double new_time, int cycle_num) override |
void | postprocessData () override |
void | initializePatchHierarchy (SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > > gridding_alg, int u_data_idx, const std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::CoarsenSchedule< NDIM > > > &u_synch_scheds, const std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineSchedule< NDIM > > > &u_ghost_fill_scheds, int integrator_step, double init_data_time, bool initial_time) override |
void | addWorkloadEstimate (SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, const int workload_data_idx) override |
void | beginDataRedistribution (SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > > gridding_alg) override |
void | endDataRedistribution (SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > > gridding_alg) override |
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, bool allocate_data) 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 |
void | putToDatabase (SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > db) override |
Public Member Functions inherited from IBAMR::IBStrategy | |
IBStrategy ()=default | |
Constructor. | |
virtual void | inactivateLagrangianStructure (int structure_number=0, int level_number=std::numeric_limits< int >::max()) |
virtual void | activateLagrangianStructure (int structure_number=0, int level_number=std::numeric_limits< int >::max()) |
virtual bool | getLagrangianStructureIsActivated (int structure_number=0, int level_number=std::numeric_limits< int >::max()) const |
virtual double | getMaxPointDisplacement () const |
void | setUseFixedLEOperators (bool use_fixed_coupling_ops=true) |
virtual void | backwardEulerStep (double current_time, double new_time) |
virtual void | registerLoadBalancer (SAMRAI::tbox::Pointer< SAMRAI::mesh::LoadBalancer< NDIM > > load_balancer, int workload_data_idx) |
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, bool allocate_data) 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 |
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) |
Class IBLevelSetMethod is a concrete IBStrategy class that uses IBInterpolantMethod and IBFEMethod objects to initialize and transport rigid body level sets for Brinkman penalized IBMethod. This class is supposed to be used with INSVCHierarchyIntegrator class.
|
overridevirtual |
Add the estimated computational work from the current object per cell into the specified workload_data_idx
.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Set integer tags to "one" in cells where refinement of the given level should occur according to user-supplied feature detection criteria.
Reimplemented from SAMRAI::mesh::StandardTagAndInitStrategy< NDIM >.
|
overridevirtual |
Begin redistributing Lagrangian data prior to regridding the patch hierarchy.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Compute the Lagrangian source/sink density at the specified time within the current time interval.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Compute the Lagrangian force at the specified time within the current time interval.
Implements IBAMR::IBStrategy.
|
overridevirtual |
Complete redistributing Lagrangian data following regridding the patch hierarchy.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Advance the positions of the Lagrangian structure using the forward Euler method.
Implements IBAMR::IBStrategy.
|
overridevirtual |
Return the number of ghost cells required by the Lagrangian-Eulerian interaction routines.
Implements IBAMR::IBStrategy.
|
overridevirtual |
Indicate whether there are any internal fluid sources/sinks.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Initialize data on a new level after it is inserted into an AMR patch hierarchy by the gridding algorithm.
Implements SAMRAI::mesh::StandardTagAndInitStrategy< NDIM >.
|
overridevirtual |
Initialize Lagrangian data corresponding to the given AMR patch hierarchy at the start of a computation. If the computation is begun from a restart file, data may be read from the restart databases.
A patch data descriptor is provided for the Eulerian velocity in case initialization requires interpolating Eulerian data. Ghost cells for Eulerian data will be filled upon entry to this function.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Compute the pressures at the positions of any distributed internal fluid sources or sinks.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Interpolate the Eulerian velocity to the curvilinear mesh at the specified time within the current time interval.
Implements IBAMR::IBStrategy.
|
overridevirtual |
Advance the positions of the Lagrangian structure using the (explicit) midpoint rule.
Implements IBAMR::IBStrategy.
|
overridevirtual |
Execute user-defined post-processing operations.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Method to clean up data following call(s) to integrateHierarchy().
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Execute user-defined routines just after solving the fluid equations.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Method to prepare to advance data from current_time to new_time.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Execute user-defined routines just before solving the fluid equations.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Write out object state to the given database.
Implements SAMRAI::tbox::Serializable.
|
overridevirtual |
Register Eulerian refinement or coarsening algorithms with the parent IBHierarchyIntegrator using the two versions of the protected methods IBStrategy::registerGhostfillRefineAlgorithm(), IBStrategy::registerProlongRefineAlgorithm(), and IBStrategy::registerCoarsenAlgorithm().
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Register Eulerian variables with the parent IBHierarchyIntegrator with the VariableDatabase, or via the various versions of the protected method IBStrategy::registerVariable().
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Register the IBHierarchyIntegrator object that is using this strategy class.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Reset cached hierarchy dependent data.
Implements SAMRAI::mesh::StandardTagAndInitStrategy< NDIM >.
|
overridevirtual |
Setup the tag buffer.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Spread the Lagrangian source/sink density to the Cartesian grid at the specified time within the current time interval.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Spread the Lagrangian force to the Cartesian grid at the specified time within the current time interval.
Implements IBAMR::IBStrategy.
|
overridevirtual |
Advance the positions of the Lagrangian structure using the (explicit) trapezoidal rule.
Implements IBAMR::IBStrategy.
|
overridevirtual |
Update the positions used for the "fixed" interpolation and spreading operators.
Reimplemented from IBAMR::IBStrategy.