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

Class CIBMethod is a concrete CIBStrategy and IBMethod class which implements the motion of rigid bodies using the constraint formulation. The immersed structure is discretized using standard IB markers.

#include <ibamr/CIBMethod.h>

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

Classes

struct  ConstrainedVelocityFcnsData
 Struct encapsulating constrained velocity functions data. More...
 
struct  ExternalForceTorqueFcnData
 Struct encapsulating external force and torque function data. More...
 

Public Types

using ConstrainedNodalVelocityFcnPtr = void(*)(Vec U_k, const IBTK::RigidDOFVector &U, Vec X, const Eigen::Vector3d &X_com, const Eigen::Matrix3d &rotation_mat, double data_time, void *ctx)
 Typedef specifying interface for specifying constrained body velocities. More...
 
using ConstrainedCOMVelocityFcnPtr = void(*)(double data_time, Eigen::Vector3d &U_com, Eigen::Vector3d &W_com, void *ctx)
 
using ExternalForceTorqueFcnPtr = void(*)(double data_time, Eigen::Vector3d &F, Eigen::Vector3d &T, void *ctx)
 Typedef specifying interface for specifying net external force and torque on structures. More...
 
using preprocessSolveFluidEqn_callbackfcn = void(*)(const double, const double, const int, void *)
 Callbacks before INS is integrated. More...
 

Public Member Functions

 CIBMethod (std::string object_name, SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > input_db, const int no_structures=1, bool register_for_restart=true)
 Constructor of the class. More...
 
 ~CIBMethod ()
 Destructor of the class. More...
 
void registerConstrainedVelocityFunction (ConstrainedNodalVelocityFcnPtr nodalvelfcn, ConstrainedCOMVelocityFcnPtr comvelfcn, void *ctx=nullptr, unsigned int part=0)
 Register user defined constrained velocity functions. More...
 
void registerConstrainedVelocityFunction (const ConstrainedVelocityFcnsData &data, unsigned int part=0)
 Register user defined constrained velocity function data. More...
 
void registerExternalForceTorqueFunction (ExternalForceTorqueFcnPtr forcetorquefcn, void *ctx=nullptr, unsigned int part=0)
 Register an external force and torque function. More...
 
void registerExternalForceTorqueFunction (const ExternalForceTorqueFcnData &data, unsigned int part=0)
 Register an external force and torque function data. More...
 
int getStructuresLevelNumber () const
 Get the level on which the structures reside. More...
 
int getStructureHandle (const int lag_idx) const
 Get the structure handle to which this Lagrangian index belongs. More...
 
void registerPreProcessSolveFluidEquationsCallBackFcn (preprocessSolveFluidEqn_callbackfcn callback, void *ctx)
 Register any preprocess fluid solve callback functions. More...
 
void preprocessSolveFluidEquations (double current_time, double new_time, int cycle_num) override
 Calculate any body forces for INS solver over here. More...
 
void registerEulerianVariables () override
 Register Eulerian variables with the parent IBHierarchyIntegrator. More...
 
void registerEulerianCommunicationAlgorithms () override
 Register Eulerian refinement or coarsening algorithms with the parent IBHierarchyIntegrator. More...
 
void preprocessIntegrateData (double current_time, double new_time, int num_cycles) override
 Method to prepare to advance data from current_time to new_time. More...
 
void postprocessIntegrateData (double current_time, double new_time, int num_cycles) override
 Method to clean up data following call(s) to integrateHierarchy(). More...
 
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
 Initialize data on a new level after it is inserted into an AMR patch hierarchy by the gridding algorithm. More...
 
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
 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. More...
 
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
 Interpolate the Eulerian velocity to the curvilinear mesh at the specified time within the current time interval. More...
 
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
 Spread the Lagrangian force to the Cartesian grid at the specified time within the current time interval. More...
 
void forwardEulerStep (double current_time, double new_time) override
 Advance the positions of the Lagrangian structure using the forward Euler method. More...
 
void backwardEulerStep (double current_time, double new_time) override
 Advance the positions of the Lagrangian structure using the backward Euler method. More...
 
void midpointStep (double current_time, double new_time) override
 Advance the positions of the Lagrangian structure using the (explicit) midpoint rule. More...
 
void trapezoidalStep (double current_time, double new_time) override
 Advance the positions of the Lagrangian structure using the trapezoidal rule. More...
 
void registerVisItDataWriter (SAMRAI::tbox::Pointer< SAMRAI::appu::VisItDataWriter< NDIM > > visit_writer)
 Register VisIt data writer to output data files that may be postprocessed with the VisIt visualization tool. More...
 
void putToDatabase (SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > db) override
 Override the putToDatabase method of the base Serializable class. More...
 
void setConstraintForce (Vec L, const double data_time, const double scale=1.0) override
 Set the constraint force in the internal data structures of the class. More...
 
void getConstraintForce (Vec *L, const double data_time) override
 Get the constraint rigid body force at the specified time within the current time interval. More...
 
virtual void getFreeRigidVelocities (Vec *U, const double data_time) override
 Get the free rigid velocities (DOFs) at the specified time within the current time interval. More...
 
virtual void getNetExternalForceTorque (Vec *F, const double data_time) override
 Get net external force and torque at the specified time within the current time interval. More...
 
void subtractMeanConstraintForce (Vec L, int f_data_idx, const double scale=1.0) override
 Subtract the mean of constraint force from the background Eulerian grid. More...
 
void setInterpolatedVelocityVector (Vec V, const double data_time) override
 Prepare the CIBMethod class to get the interpolated fluid velocity. More...
 
void getInterpolatedVelocity (Vec V, const double data_time, const double scale=1.0) override
 Get interpolated velocity from the Eulerian grid. More...
 
void computeMobilityRegularization (Vec D, Vec L, const double scale=1.0) override
 Compute regularization vector for the mobility problem. More...
 
unsigned int getNumberOfNodes (const unsigned int part) const override
 Get number of nodes for a particular structure registered with CIBMethod. More...
 
void setRigidBodyVelocity (const unsigned int part, const IBTK::RigidDOFVector &U, Vec V) override
 Set the rigid body velocity at the nodal points contained in the Vec V. More...
 
void computeNetRigidGeneralizedForce (const unsigned int part, Vec L, IBTK::RigidDOFVector &F) override
 Compute total force and torque on the rigid structure(s). More...
 
void copyVecToArray (Vec b, double *array, const std::vector< unsigned > &struct_ids, const int data_depth, const int array_rank) override
 Copy PETSc Vec to raw array for specified structures. More...
 
void copyArrayToVec (Vec b, double *array, const std::vector< unsigned > &struct_ids, const int data_depth, const int array_rank) override
 Copy raw array to PETSc Vec for specified structures. More...
 
void constructMobilityMatrix (const std::string &mat_name, MobilityMatrixType mat_type, Mat &mobility_mat, const std::vector< unsigned > &prototype_struct_ids, const double *grid_dx, const double *domain_extents, const bool initial_time, double rho, double mu, const std::pair< double, double > &scale, double f_periodic_corr, const int managing_rank) override
 Generate dense mobility matrix for the prototypical structures identified by their indices. More...
 
void constructGeometricMatrix (const std::string &mat_name, Mat &geometric_mat, const std::vector< unsigned > &prototype_struct_ids, const bool initial_time, const int managing_rank) override
 Generate block-diagonal geometric matrix for the prototypical structures identified by their indices. More...
 
void rotateArray (double *array, const std::vector< unsigned > &struct_ids, const bool use_transpose, const int managing_rank, const int depth) override
 Rotate vector using rotation matrix to/from the reference frame of the structures. More...
 
bool flagRegrid () const
 
void setVelocityPhysBdryOp (IBTK::RobinPhysBdryPatchStrategy *u_phys_bdry_op)
 
virtual void setRigidBodyVelocity (const unsigned int part, const IBTK::RigidDOFVector &U, Vec V)=0
 
virtual void setRigidBodyVelocity (const unsigned int part, Vec U, Vec V)
 
virtual void setRigidBodyVelocity (Vec U, Vec V, const bool only_free_dofs, const bool only_imposed_dofs, const bool all_dofs=false)
 
virtual void computeNetRigidGeneralizedForce (const unsigned int part, Vec L, IBTK::RigidDOFVector &F)=0
 
virtual void computeNetRigidGeneralizedForce (const unsigned int part, Vec L, Vec F)
 
virtual void computeNetRigidGeneralizedForce (Vec L, Vec F, const bool only_free_dofs, const bool only_imposed_dofs, const bool all_dofs=false)
 
void registerIBLagrangianForceFunction (SAMRAI::tbox::Pointer< IBLagrangianForceStrategy > ib_force_fcn)
 
void registerIBLagrangianSourceFunction (SAMRAI::tbox::Pointer< IBLagrangianSourceStrategy > ib_source_fcn)
 
void registerLInitStrategy (SAMRAI::tbox::Pointer< IBTK::LInitStrategy > l_initializer)
 
void freeLInitStrategy ()
 
void registerIBMethodPostProcessor (SAMRAI::tbox::Pointer< IBMethodPostProcessStrategy > post_processor)
 
IBTK::LDataManagergetLDataManager () const
 
SAMRAI::tbox::Pointer< IBInstrumentPanelgetIBInstrumentPanel () const
 
void registerLSiloDataWriter (SAMRAI::tbox::Pointer< IBTK::LSiloDataWriter > silo_writer)
 
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
 
virtual void inactivateLagrangianStructure (int structure_number=0, int level_number=std::numeric_limits< int >::max()) override
 
virtual void activateLagrangianStructure (int structure_number=0, int level_number=std::numeric_limits< int >::max()) override
 
virtual bool getLagrangianStructureIsActivated (int structure_number=0, int level_number=std::numeric_limits< int >::max()) const override
 
void createSolverVecs (Vec *X_vec, Vec *F_vec) override
 
void setupSolverVecs (Vec *X_vec, Vec *F_vec) override
 
void setUpdatedPosition (Vec &X_new_vec) override
 
void setLinearizedPosition (Vec &X_vec, double data_time) override
 
void computeResidual (Vec &R_vec) override
 
void computeLinearizedResidual (Vec &X_vec, Vec &R_vec) override
 
void updateFixedLEOperators () override
 
void interpolateLinearizedVelocity (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 computeLagrangianForce (double data_time) override
 
void computeLinearizedLagrangianForce (Vec &X_vec, double data_time) override
 
void constructLagrangianForceJacobian (Mat &A, MatType mat_type, double data_time) override
 
void spreadLinearizedForce (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
 
void constructInterpOp (Mat &J, void(*spread_fnc)(const double, double *), int stencil_width, const std::vector< int > &num_dofs_per_proc, int dof_index_idx, 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 postprocessData () override
 
void registerLoadBalancer (SAMRAI::tbox::Pointer< SAMRAI::mesh::LoadBalancer< NDIM > > load_balancer, int workload_data_idx) 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
 
virtual void initializeLevelData (const tbox::Pointer< hier::BasePatchHierarchy< DIM > > hierarchy, const int level_number, const double init_data_time, const bool can_be_refined, const bool initial_time, const tbox::Pointer< hier::BasePatchLevel< DIM > > old_level=tbox::Pointer< hier::BasePatchLevel< DIM > >(NULL), const bool allocate_data=true)=0
 
void resetHierarchyConfiguration (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int coarsest_level, int finest_level) override
 
virtual void resetHierarchyConfiguration (const tbox::Pointer< hier::BasePatchHierarchy< DIM > > hierarchy, const int coarsest_level, const int finest_level)=0
 
void applyGradientDetector (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int level_number, double error_data_time, int tag_index, bool initial_time, bool uses_richardson_extrapolation_too) override
 
virtual void applyGradientDetector (const tbox::Pointer< hier::BasePatchHierarchy< DIM > > hierarchy, const int level_number, const double error_data_time, const int tag_index, const bool initial_time, const bool uses_richardson_extrapolation_too)
 
double convertTimeEnumToDouble (IBTK::TimePoint time_pt)
 Convert the enum TimePoint to it respective value. More...
 
void getPositionData (std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **X_data, bool **X_needs_ghost_fill, IBTK::TimePoint time_pt)
 Get the structure position data at the specified time point. More...
 
void getVelocityData (std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **U_data, IBTK::TimePoint time_pt)
 Get the current structure velocity data at the specified time point. More...
 
void getForceData (std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **F_data, bool **F_needs_ghost_fill, IBTK::TimePoint time_pt)
 Get the current structure force data at the specified time point. More...
 
virtual void registerIBHierarchyIntegrator (IBHierarchyIntegrator *ib_solver)
 
virtual double getMaxPointDisplacement () const
 
void setUseFixedLEOperators (bool use_fixed_coupling_ops=true)
 
virtual void setUseMultistepTimeStepping (unsigned int n_previous_steps=1)
 
virtual void AB2Step (double current_time, double new_time)
 
virtual void postprocessSolveFluidEquations (double current_time, double new_time, int cycle_num)
 
virtual double getLevelDt (const tbox::Pointer< hier::BasePatchLevel< DIM > > level, const double dt_time, const bool initial_time)
 
virtual double advanceLevel (const tbox::Pointer< hier::BasePatchLevel< DIM > > level, const tbox::Pointer< hier::BasePatchHierarchy< DIM > > hierarchy, const double current_time, const double new_time, const bool first_step, const bool last_step, const bool regrid_advance=false)
 
virtual void resetTimeDependentData (const tbox::Pointer< hier::BasePatchLevel< DIM > > level, const double new_time, const bool can_be_refined)
 
virtual void resetDataToPreadvanceState (const tbox::Pointer< hier::BasePatchLevel< DIM > > level)
 
virtual void applyRichardsonExtrapolation (const tbox::Pointer< hier::PatchLevel< DIM > > level, const double error_data_time, const int tag_index, const double deltat, const int error_coarsen_ratio, const bool initial_time, const bool uses_gradient_detector_too)
 
virtual void coarsenDataForRichardsonExtrapolation (const tbox::Pointer< hier::PatchHierarchy< DIM > > hierarchy, const int level_number, const tbox::Pointer< hier::PatchLevel< DIM > > coarser_level, const double coarsen_data_time, const bool before_advance)
 
unsigned int getNumberOfRigidStructures () const
 Get number of rigid structures registered with this class. More...
 
void setInitialCenterOfMass (const unsigned int part, const Eigen::Vector3d &XCOM_0)
 Set the initial center of mass location for the structures. More...
 
void setSolveRigidBodyVelocity (const unsigned int part, const IBTK::FreeRigidDOFVector &solve_rigid_dofs)
 Set what rigid DOFs need to be solved for this particular structure. More...
 
const IBTK::FreeRigidDOFVectorgetSolveRigidBodyVelocity (const unsigned int part, int &num_free_dofs) const
 Query what rigid DOFs need to be solved for. More...
 
virtual void setRigidBodyVelocity (const unsigned int part, Vec U, Vec V)
 Set the rigid body velocity at the nodal/marker points contained in the Vec V. More...
 
virtual void setRigidBodyVelocity (Vec U, Vec V, const bool only_free_dofs, const bool only_imposed_dofs, const bool all_dofs=false)
 Set the rigid body velocity at the nodal/marker points contained in the Vec V. More...
 
virtual void computeNetRigidGeneralizedForce (const unsigned int part, Vec L, Vec F)
 Compute total force and torque on the structure. More...
 
virtual void computeNetRigidGeneralizedForce (Vec L, Vec F, const bool only_free_dofs, const bool only_imposed_dofs, const bool all_dofs=false)
 Compute total force and torque on the structure. More...
 
const IBTK::RigidDOFVectorgetNetRigidGeneralizedForce (const unsigned int part)
 Get total torque and force on the structure at new_time within the current time interval. More...
 
void updateFreeDOFsMapping ()
 Update the mapping of free DOFs for all structures if they are collected in a global vector. More...
 
void updateNewRigidBodyVelocity (const unsigned int part, const IBTK::RigidDOFVector &U)
 Update the rigid body velocity obtained from the constraint Stokes solver for free-moving case. More...
 
void updateNewRigidBodyVelocity (const unsigned int part, Vec U)
 Update the rigid body velocity obtained from the constraint Stokes solver for free-moving case. More...
 
void updateNewRigidBodyVelocity (Vec U, const bool only_free_dofs, const bool only_imposed_dofs, const bool all_dofs=false)
 Update the rigid body velocity obtained from the constraint Stokes solver for free-moving case. More...
 
virtual void copyFreeDOFsVecToArray (Vec b, double *array, const std::vector< unsigned > &struct_ids, const int array_rank)
 Copy data from distributed PETSc Vec for specified stucture indices to an array defined on a single processor. A default implementation is provided. More...
 
virtual void copyFreeDOFsArrayToVec (Vec b, double *array, const std::vector< unsigned > &struct_ids, const int array_rank)
 Copy data from array defined on a single processor for specified stucture indices to distributed PETScVec. A default implementation is provided. More...
 
void getCurrentRigidBodyVelocity (const unsigned int part, IBTK::RigidDOFVector &U)
 Get the rigid body translational velocity at the beginning of the timestep. More...
 
void getNewRigidBodyVelocity (const unsigned int part, IBTK::RigidDOFVector &U)
 Get the rigid body translational velocity at the end of the timestep. More...
 
const Eigen::Vector3d & getCurrentBodyCenterOfMass (const unsigned int part)
 Get body center of mass at the current time step. More...
 
const Eigen::Vector3d & getNewBodyCenterOfMass (const unsigned int part)
 Get body center of mass at half time step. More...
 

Static Public Member Functions

static void vecToRDV (Vec U, IBTK::RigidDOFVector &Ur)
 Set the DOFs from PETSc Vec U to RigidDOFVector Ur. More...
 
static void rdvToVec (const IBTK::RigidDOFVector &Ur, Vec &U)
 Set the DOFs from RigidDOFVector Ur to PETSc Vec U. More...
 
static void eigenToRDV (const Eigen::Vector3d &U, const Eigen::Vector3d &W, IBTK::RigidDOFVector &UW)
 Set the DOFs from Eigen::Vector3d U and W to RigidDOFVector UW. More...
 
static void rdvToEigen (const IBTK::RigidDOFVector &UW, Eigen::Vector3d &U, Eigen::Vector3d &W)
 Set the DOFs from RigidDOFVector UW to Eigen::Vector3d U and W. More...
 

Protected Member Functions

void getPositionData (std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **X_data, bool **X_needs_ghost_fill, double data_time)
 
void getVelocityData (std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **U_data, double data_time)
 
void getForceData (std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **F_data, bool **F_needs_ghost_fill, double data_time)
 
void getLinearizedPositionData (std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **X_data, bool **X_needs_ghost_fill)
 
void getLECouplingPositionData (std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **X_LE_data, bool **X_LE_needs_ghost_fill, double data_time)
 
void getLinearizedVelocityData (std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **U_data)
 
void getLinearizedForceData (std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **F_data, bool **F_needs_ghost_fill)
 
void reinitMidpointData (const std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > &current_data, const std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > &new_data, const std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > &half_data)
 
void resetAnchorPointValues (std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > U_data, int coarsest_ln, int finest_ln)
 
PetscErrorCode computeForce (Vec X, Vec F)
 
INSHierarchyIntegratorgetINSHierarchyIntegrator () const
 
SAMRAI::tbox::Pointer< SAMRAI::math::HierarchyDataOpsReal< NDIM, double > > getVelocityHierarchyDataOps () const
 
SAMRAI::tbox::Pointer< SAMRAI::math::HierarchyDataOpsReal< NDIM, double > > getPressureHierarchyDataOps () const
 
SAMRAI::tbox::Pointer< IBTK::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< IBTK::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 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 setRotationMatrix (const std::vector< Eigen::Vector3d > &rot_vel, const std::vector< Eigen::Quaterniond > &q_old, std::vector< Eigen::Quaterniond > &q_new, std::vector< Eigen::Matrix3d > &rot_mat, const double dt)
 Fill the rotation matrix. More...
 

Static Protected Member Functions

static PetscErrorCode computeForce_SAMRAI (void *ctx, Vec X, Vec F)
 

Protected Attributes

std::vector< ConstrainedVelocityFcnsDatad_constrained_velocity_fcns_data
 
std::vector< ExternalForceTorqueFcnDatad_ext_force_torque_fcn_data
 
std::vector< preprocessSolveFluidEqn_callbackfcnd_prefluidsolve_callback_fcns
 
std::vector< void * > d_prefluidsolve_callback_fcns_ctx
 
bool d_constraint_force_is_initialized = false
 
bool d_lag_velvec_is_initialized = false
 
bool d_time_integrator_needs_regrid = false
 
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > d_eul_lambda_var
 
int d_eul_lambda_idx = IBTK::invalid_index
 
std::vector< std::pair< int, int > > d_struct_lag_idx_range
 
SAMRAI::tbox::Pointer< SAMRAI::appu::VisItDataWriter< NDIM > > d_visit_writer
 
bool d_output_eul_lambda = false
 
int d_lambda_dump_interval = 0
 
std::ofstream d_lambda_stream
 
std::vector< std::string > d_reg_filename
 
std::vector< std::string > d_lambda_filename
 
IBTK::RobinPhysBdryPatchStrategyd_u_phys_bdry_op = nullptr
 
bool d_use_steady_stokes = false
 
bool d_do_log = false
 
SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > d_hierarchy
 
SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > > d_gridding_alg
 
double d_current_time = std::numeric_limits<double>::quiet_NaN()
 
double d_new_time = std::numeric_limits<double>::quiet_NaN()
 
double d_half_time = std::numeric_limits<double>::quiet_NaN()
 
bool d_X_current_needs_ghost_fill = true
 
bool d_X_new_needs_ghost_fill = true
 
bool d_X_half_needs_ghost_fill = true
 
bool d_X_jac_needs_ghost_fill = true
 
bool d_X_LE_new_needs_ghost_fill = true
 
bool d_X_LE_half_needs_ghost_fill = true
 
bool d_F_current_needs_ghost_fill = true
 
bool d_F_new_needs_ghost_fill = true
 
bool d_F_half_needs_ghost_fill = true
 
bool d_F_jac_needs_ghost_fill = true
 
IBTK::LDataManagerd_l_data_manager
 
std::string d_interp_kernel_fcn = "IB_4"
 
std::string d_spread_kernel_fcn = "IB_4"
 
bool d_error_if_points_leave_domain = false
 
SAMRAI::hier::IntVector< NDIM > d_ghosts
 
std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > d_X_current_data
 
std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > d_X_new_data
 
std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > d_X_half_data
 
std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > d_X_jac_data
 
std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > d_X_LE_new_data
 
std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > d_X_LE_half_data
 
std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > d_U_current_data
 
std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > d_U_new_data
 
std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > d_U_half_data
 
std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > d_U_jac_data
 
std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > d_F_current_data
 
std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > d_F_new_data
 
std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > d_F_half_data
 
std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > d_F_jac_data
 
std::vector< std::set< int > > d_anchor_point_local_idxs
 
SAMRAI::tbox::Pointer< IBInstrumentPaneld_instrument_panel
 
std::vector< doubled_total_flow_volume
 
SAMRAI::tbox::Pointer< IBTK::LInitStrategyd_l_initializer
 
SAMRAI::tbox::Pointer< IBLagrangianForceStrategyd_ib_force_fcn
 
bool d_ib_force_fcn_needs_init = true
 
SAMRAI::tbox::Pointer< IBLagrangianSourceStrategyd_ib_source_fcn
 
bool d_ib_source_fcn_needs_init = true
 
std::vector< std::vector< IBTK::Point > > d_X_src
 
std::vector< std::vector< double > > d_r_src
 
std::vector< std::vector< double > > d_P_src
 
std::vector< std::vector< double > > d_Q_src
 
std::vector< intd_n_src
 
bool d_normalize_source_strength = false
 
SAMRAI::tbox::Pointer< IBMethodPostProcessStrategyd_post_processor
 
SAMRAI::tbox::Pointer< IBTK::LSiloDataWriterd_silo_writer
 
SAMRAI::tbox::Pointer< SAMRAI::mesh::LoadBalancer< NDIM > > d_load_balancer
 
int d_workload_idx = IBTK::invalid_index
 
std::string d_object_name
 
bool d_registered_for_restart
 
IBHierarchyIntegratord_ib_solver = nullptr
 
bool d_use_fixed_coupling_ops = false
 
unsigned int d_num_rigid_parts
 
std::vector< Eigen::Vector3d > d_center_of_mass_initial
 
std::vector< Eigen::Vector3d > d_center_of_mass_current
 
std::vector< Eigen::Vector3d > d_center_of_mass_half
 
std::vector< Eigen::Vector3d > d_center_of_mass_new
 
std::vector< boold_compute_center_of_mass_initial
 
std::vector< Eigen::Quaterniond > d_quaternion_current
 
std::vector< Eigen::Quaterniond > d_quaternion_half
 
std::vector< Eigen::Quaterniond > d_quaternion_new
 
std::vector< IBTK::FRDVd_solve_rigid_vel
 
Vec d_U
 
Vec d_F
 
std::vector< std::pair< int, int > > d_free_dofs_map
 
bool d_free_dofs_map_updated
 
std::vector< Eigen::Vector3d > d_trans_vel_current
 
std::vector< Eigen::Vector3d > d_trans_vel_half
 
std::vector< Eigen::Vector3d > d_trans_vel_new
 
std::vector< Eigen::Vector3d > d_rot_vel_current
 
std::vector< Eigen::Vector3d > d_rot_vel_half
 
std::vector< Eigen::Vector3d > d_rot_vel_new
 
std::vector< IBTK::RigidDOFVectord_net_rigid_generalized_force
 

Private Member Functions

void getFromInput (SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > input_db)
 Set additional values from input database. More...
 
void getFromRestart ()
 Get values from restart file. More...
 
void computeCOMOfStructures (std::vector< Eigen::Vector3d > &center_of_mass, std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > &X_data)
 Compute center of mass of structures. More...
 
void setRegularizationWeight (const int level_number)
 Set regularization weight for Lagrangian markers. More...
 
void setInitialLambda (const int level_number)
 Set initial Lambda for Lagrangian markers. More...
 
void resetLagrangianForceFunction (double init_data_time, bool initial_time)
 
void resetLagrangianSourceFunction (double init_data_time, bool initial_time)
 
void updateIBInstrumentationData (int timestep_num, double data_time)
 

Private Attributes

bool d_force_jac_mffd = false
 
Mat d_force_jac = nullptr
 
double d_force_jac_data_time
 

Member Typedef Documentation

◆ ConstrainedNodalVelocityFcnPtr

using IBAMR::CIBMethod::ConstrainedNodalVelocityFcnPtr = void (*)(Vec U_k, const IBTK::RigidDOFVector& U, Vec X, const Eigen::Vector3d& X_com, const Eigen::Matrix3d& rotation_mat, double data_time, void* ctx)

◆ ConstrainedCOMVelocityFcnPtr

using IBAMR::CIBMethod::ConstrainedCOMVelocityFcnPtr = void (*)(double data_time, Eigen::Vector3d& U_com, Eigen::Vector3d& W_com, void* ctx)

◆ ExternalForceTorqueFcnPtr

using IBAMR::CIBMethod::ExternalForceTorqueFcnPtr = void (*)(double data_time, Eigen::Vector3d& F, Eigen::Vector3d& T, void* ctx)

◆ preprocessSolveFluidEqn_callbackfcn

using IBAMR::CIBMethod::preprocessSolveFluidEqn_callbackfcn = void (*)(const double, const double, const int, void*)

Constructor & Destructor Documentation

◆ CIBMethod()

IBAMR::CIBMethod::CIBMethod ( std::string  object_name,
SAMRAI::tbox::Pointer< SAMRAI::tbox::Database input_db,
const int  no_structures = 1,
bool  register_for_restart = true 
)

◆ ~CIBMethod()

IBAMR::CIBMethod::~CIBMethod ( )

Member Function Documentation

◆ registerConstrainedVelocityFunction() [1/2]

void IBAMR::CIBMethod::registerConstrainedVelocityFunction ( ConstrainedNodalVelocityFcnPtr  nodalvelfcn,
ConstrainedCOMVelocityFcnPtr  comvelfcn,
void *  ctx = nullptr,
unsigned int  part = 0 
)

◆ registerConstrainedVelocityFunction() [2/2]

void IBAMR::CIBMethod::registerConstrainedVelocityFunction ( const ConstrainedVelocityFcnsData data,
unsigned int  part = 0 
)

◆ registerExternalForceTorqueFunction() [1/2]

void IBAMR::CIBMethod::registerExternalForceTorqueFunction ( ExternalForceTorqueFcnPtr  forcetorquefcn,
void *  ctx = nullptr,
unsigned int  part = 0 
)

◆ registerExternalForceTorqueFunction() [2/2]

void IBAMR::CIBMethod::registerExternalForceTorqueFunction ( const ExternalForceTorqueFcnData data,
unsigned int  part = 0 
)

◆ getStructuresLevelNumber()

int IBAMR::CIBMethod::getStructuresLevelNumber ( ) const

◆ getStructureHandle()

int IBAMR::CIBMethod::getStructureHandle ( const int  lag_idx) const

◆ registerPreProcessSolveFluidEquationsCallBackFcn()

void IBAMR::CIBMethod::registerPreProcessSolveFluidEquationsCallBackFcn ( preprocessSolveFluidEqn_callbackfcn  callback,
void *  ctx 
)

◆ preprocessSolveFluidEquations()

void IBAMR::CIBMethod::preprocessSolveFluidEquations ( double  current_time,
double  new_time,
int  cycle_num 
)
overridevirtual

Reimplemented from IBAMR::IBStrategy.

◆ registerEulerianVariables()

void IBAMR::CIBMethod::registerEulerianVariables ( )
overridevirtual

Reimplemented from IBAMR::IBStrategy.

◆ registerEulerianCommunicationAlgorithms()

void IBAMR::CIBMethod::registerEulerianCommunicationAlgorithms ( )
overridevirtual

Reimplemented from IBAMR::IBStrategy.

◆ preprocessIntegrateData()

void IBAMR::CIBMethod::preprocessIntegrateData ( double  current_time,
double  new_time,
int  num_cycles 
)
overridevirtual

Reimplemented from IBAMR::IBStrategy.

◆ postprocessIntegrateData()

void IBAMR::CIBMethod::postprocessIntegrateData ( double  current_time,
double  new_time,
int  num_cycles 
)
overridevirtual

Reimplemented from IBAMR::IBStrategy.

◆ initializeLevelData() [1/2]

void IBAMR::CIBMethod::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

◆ initializePatchHierarchy()

void IBAMR::CIBMethod::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 
)
overridevirtual

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.

◆ interpolateVelocity()

void IBAMR::CIBMethod::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 
)
overridevirtual

Implements IBAMR::IBStrategy.

◆ spreadForce()

void IBAMR::CIBMethod::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 
)
overridevirtual

Implements IBAMR::IBStrategy.

◆ forwardEulerStep()

void IBAMR::CIBMethod::forwardEulerStep ( double  current_time,
double  new_time 
)
overridevirtual

Implements IBAMR::IBStrategy.

◆ backwardEulerStep()

void IBAMR::CIBMethod::backwardEulerStep ( double  current_time,
double  new_time 
)
overridevirtual

Reimplemented from IBAMR::IBStrategy.

◆ midpointStep()

void IBAMR::CIBMethod::midpointStep ( double  current_time,
double  new_time 
)
overridevirtual

Implements IBAMR::IBStrategy.

◆ trapezoidalStep()

void IBAMR::CIBMethod::trapezoidalStep ( double  current_time,
double  new_time 
)
overridevirtual

Implements IBAMR::IBStrategy.

◆ registerVisItDataWriter()

void IBAMR::CIBMethod::registerVisItDataWriter ( SAMRAI::tbox::Pointer< SAMRAI::appu::VisItDataWriter< NDIM > >  visit_writer)

◆ putToDatabase()

void IBAMR::CIBMethod::putToDatabase ( SAMRAI::tbox::Pointer< SAMRAI::tbox::Database db)
overridevirtual

◆ setConstraintForce()

void IBAMR::CIBMethod::setConstraintForce ( Vec  L,
const double  data_time,
const double  scale = 1.0 
)
overridevirtual

Implements IBAMR::CIBStrategy.

◆ getConstraintForce()

void IBAMR::CIBMethod::getConstraintForce ( Vec *  L,
const double  data_time 
)
overridevirtual

Implements IBAMR::CIBStrategy.

◆ getFreeRigidVelocities()

virtual void IBAMR::CIBMethod::getFreeRigidVelocities ( Vec *  U,
const double  data_time 
)
overridevirtual

Reimplemented from IBAMR::CIBStrategy.

◆ getNetExternalForceTorque()

virtual void IBAMR::CIBMethod::getNetExternalForceTorque ( Vec *  F,
const double  data_time 
)
overridevirtual

Reimplemented from IBAMR::CIBStrategy.

◆ subtractMeanConstraintForce()

void IBAMR::CIBMethod::subtractMeanConstraintForce ( Vec  L,
int  f_data_idx,
const double  scale = 1.0 
)
overridevirtual

Implements IBAMR::CIBStrategy.

◆ setInterpolatedVelocityVector()

void IBAMR::CIBMethod::setInterpolatedVelocityVector ( Vec  V,
const double  data_time 
)
overridevirtual

Reimplemented from IBAMR::CIBStrategy.

◆ getInterpolatedVelocity()

void IBAMR::CIBMethod::getInterpolatedVelocity ( Vec  V,
const double  data_time,
const double  scale = 1.0 
)
overridevirtual

Implements IBAMR::CIBStrategy.

◆ computeMobilityRegularization()

void IBAMR::CIBMethod::computeMobilityRegularization ( Vec  D,
Vec  L,
const double  scale = 1.0 
)
overridevirtual

Implements IBAMR::CIBStrategy.

◆ getNumberOfNodes()

unsigned int IBAMR::CIBMethod::getNumberOfNodes ( const unsigned int  part) const
overridevirtual

Implements IBAMR::CIBStrategy.

◆ setRigidBodyVelocity() [1/6]

void IBAMR::CIBMethod::setRigidBodyVelocity ( const unsigned int  part,
const IBTK::RigidDOFVector U,
Vec  V 
)
overridevirtual

Implements IBAMR::CIBStrategy.

◆ computeNetRigidGeneralizedForce() [1/6]

void IBAMR::CIBMethod::computeNetRigidGeneralizedForce ( const unsigned int  part,
Vec  L,
IBTK::RigidDOFVector F 
)
overridevirtual

Implements IBAMR::CIBStrategy.

◆ copyVecToArray()

void IBAMR::CIBMethod::copyVecToArray ( Vec  b,
double array,
const std::vector< unsigned > &  struct_ids,
const int  data_depth,
const int  array_rank 
)
overridevirtual

Reimplemented from IBAMR::CIBStrategy.

◆ copyArrayToVec()

void IBAMR::CIBMethod::copyArrayToVec ( Vec  b,
double array,
const std::vector< unsigned > &  struct_ids,
const int  data_depth,
const int  array_rank 
)
overridevirtual

Reimplemented from IBAMR::CIBStrategy.

◆ constructMobilityMatrix()

void IBAMR::CIBMethod::constructMobilityMatrix ( const std::string &  mat_name,
MobilityMatrixType  mat_type,
Mat &  mobility_mat,
const std::vector< unsigned > &  prototype_struct_ids,
const double grid_dx,
const double domain_extents,
const bool  initial_time,
double  rho,
double  mu,
const std::pair< double, double > &  scale,
double  f_periodic_corr,
const int  managing_rank 
)
overridevirtual

Reimplemented from IBAMR::CIBStrategy.

◆ constructGeometricMatrix()

void IBAMR::CIBMethod::constructGeometricMatrix ( const std::string &  mat_name,
Mat &  geometric_mat,
const std::vector< unsigned > &  prototype_struct_ids,
const bool  initial_time,
const int  managing_rank 
)
overridevirtual

Reimplemented from IBAMR::CIBStrategy.

◆ rotateArray()

void IBAMR::CIBMethod::rotateArray ( double array,
const std::vector< unsigned > &  struct_ids,
const bool  use_transpose,
const int  managing_rank,
const int  depth 
)
overridevirtual

Reimplemented from IBAMR::CIBStrategy.

◆ flagRegrid()

bool IBAMR::CIBMethod::flagRegrid ( ) const

Function to determine whether regridding should occur at the current time step.

◆ setVelocityPhysBdryOp()

void IBAMR::CIBMethod::setVelocityPhysBdryOp ( IBTK::RobinPhysBdryPatchStrategy u_phys_bdry_op)

◆ getFromInput()

void IBAMR::CIBMethod::getFromInput ( SAMRAI::tbox::Pointer< SAMRAI::tbox::Database input_db)
private

◆ getFromRestart()

void IBAMR::CIBMethod::getFromRestart ( )
private

◆ computeCOMOfStructures()

void IBAMR::CIBMethod::computeCOMOfStructures ( std::vector< Eigen::Vector3d > &  center_of_mass,
std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > &  X_data 
)
private

◆ setRegularizationWeight()

void IBAMR::CIBMethod::setRegularizationWeight ( const int  level_number)
private

◆ setInitialLambda()

void IBAMR::CIBMethod::setInitialLambda ( const int  level_number)
private

◆ setRigidBodyVelocity() [2/6]

virtual void IBAMR::CIBStrategy::setRigidBodyVelocity

Explicitly use the other overload of this function from the base class.

◆ setRigidBodyVelocity() [3/6]

virtual void IBAMR::CIBStrategy::setRigidBodyVelocity

Explicitly use the other overload of this function from the base class.

◆ setRigidBodyVelocity() [4/6]

virtual void IBAMR::CIBStrategy::setRigidBodyVelocity

Explicitly use the other overload of this function from the base class.

◆ computeNetRigidGeneralizedForce() [2/6]

virtual void IBAMR::CIBStrategy::computeNetRigidGeneralizedForce

Explicitly use the other overloads of this function from the base class.

◆ computeNetRigidGeneralizedForce() [3/6]

virtual void IBAMR::CIBStrategy::computeNetRigidGeneralizedForce

Explicitly use the other overloads of this function from the base class.

◆ computeNetRigidGeneralizedForce() [4/6]

virtual void IBAMR::CIBStrategy::computeNetRigidGeneralizedForce

Explicitly use the other overloads of this function from the base class.

◆ registerIBLagrangianForceFunction()

void IBAMR::IBMethod::registerIBLagrangianForceFunction ( SAMRAI::tbox::Pointer< IBLagrangianForceStrategy ib_force_fcn)
inherited

Supply a Lagrangian force object.

◆ registerIBLagrangianSourceFunction()

void IBAMR::IBMethod::registerIBLagrangianSourceFunction ( SAMRAI::tbox::Pointer< IBLagrangianSourceStrategy ib_source_fcn)
inherited

Supply a Lagrangian source object.

◆ registerLInitStrategy()

void IBAMR::IBMethod::registerLInitStrategy ( SAMRAI::tbox::Pointer< IBTK::LInitStrategy l_initializer)
inherited

Supply a Lagrangian initialization object.

◆ freeLInitStrategy()

void IBAMR::IBMethod::freeLInitStrategy ( )
inherited

Free references to Lagrangian initialization objects.

◆ registerIBMethodPostProcessor()

void IBAMR::IBMethod::registerIBMethodPostProcessor ( SAMRAI::tbox::Pointer< IBMethodPostProcessStrategy post_processor)
inherited

Supply a post processor object.

◆ getLDataManager()

IBTK::LDataManager* IBAMR::IBMethod::getLDataManager ( ) const
inherited

Return a pointer to the Lagrangian data manager object.

◆ getIBInstrumentPanel()

SAMRAI::tbox::Pointer<IBInstrumentPanel> IBAMR::IBMethod::getIBInstrumentPanel ( ) const
inherited

Return a pointer to the instrumentation manager object.

◆ registerLSiloDataWriter()

void IBAMR::IBMethod::registerLSiloDataWriter ( SAMRAI::tbox::Pointer< IBTK::LSiloDataWriter silo_writer)
inherited

Register a Lagrangian Silo data writer so this class will write plot files that may be postprocessed with the VisIt visualization tool.

◆ getMinimumGhostCellWidth()

const SAMRAI::hier::IntVector<NDIM>& IBAMR::IBMethod::getMinimumGhostCellWidth ( ) const
overridevirtualinherited

Return the number of ghost cells required by the Lagrangian-Eulerian interaction routines.

Implements IBAMR::IBStrategy.

◆ setupTagBuffer()

void IBAMR::IBMethod::setupTagBuffer ( SAMRAI::tbox::Array< int > &  tag_buffer,
SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > >  gridding_alg 
) const
overridevirtualinherited

Setup the tag buffer.

Reimplemented from IBAMR::IBStrategy.

◆ inactivateLagrangianStructure()

virtual void IBAMR::IBMethod::inactivateLagrangianStructure ( int  structure_number = 0,
int  level_number = std::numeric_limits< int >::max() 
)
overridevirtualinherited

Inactivate a structure/part. See IBAMR::IBStrategy::inactivateLagrangianStructure().

Reimplemented from IBAMR::IBStrategy.

◆ activateLagrangianStructure()

virtual void IBAMR::IBMethod::activateLagrangianStructure ( int  structure_number = 0,
int  level_number = std::numeric_limits< int >::max() 
)
overridevirtualinherited

Activate a previously inactivated structure/part to be used again in FSI calculations. See IBAMR::IBStrategy::activateLagrangianStructure().

Reimplemented from IBAMR::IBStrategy.

◆ getLagrangianStructureIsActivated()

virtual bool IBAMR::IBMethod::getLagrangianStructureIsActivated ( int  structure_number = 0,
int  level_number = std::numeric_limits< int >::max() 
) const
overridevirtualinherited

Determine whether or not the given structure or part is currently activated. See IBAMR::IBStrategy::getLagrangianStructureIsActivated().

Reimplemented from IBAMR::IBStrategy.

◆ createSolverVecs()

void IBAMR::IBMethod::createSolverVecs ( Vec *  X_vec,
Vec *  F_vec 
)
overridevirtualinherited

Create solution and rhs data on the specified level of the patch hierarchy.

Implements IBAMR::IBImplicitStrategy.

◆ setupSolverVecs()

void IBAMR::IBMethod::setupSolverVecs ( Vec *  X_vec,
Vec *  F_vec 
)
overridevirtualinherited

Setup solution and rhs data on the specified level of the patch hierarchy.

Implements IBAMR::IBImplicitStrategy.

◆ setUpdatedPosition()

void IBAMR::IBMethod::setUpdatedPosition ( Vec &  X_new_vec)
overridevirtualinherited

Set the value of the updated position vector.

Implements IBAMR::IBImplicitStrategy.

◆ setLinearizedPosition()

void IBAMR::IBMethod::setLinearizedPosition ( Vec &  X_vec,
double  data_time 
)
overridevirtualinherited

Set the value of the intermediate position vector used in evaluating the linearized problem.

Implements IBAMR::IBImplicitStrategy.

◆ computeResidual()

void IBAMR::IBMethod::computeResidual ( Vec &  R_vec)
overridevirtualinherited

Compute the residual on the specified level of the patch hierarchy.

Implements IBAMR::IBImplicitStrategy.

◆ computeLinearizedResidual()

void IBAMR::IBMethod::computeLinearizedResidual ( Vec &  X_vec,
Vec &  R_vec 
)
overridevirtualinherited

Compute the linearized residual for the given intermediate position vector.

Implements IBAMR::IBImplicitStrategy.

◆ updateFixedLEOperators()

void IBAMR::IBMethod::updateFixedLEOperators ( )
overridevirtualinherited

Update the positions used for the "fixed" interpolation and spreading operators.

Reimplemented from IBAMR::IBStrategy.

◆ interpolateLinearizedVelocity()

void IBAMR::IBMethod::interpolateLinearizedVelocity ( 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 
)
overridevirtualinherited

Interpolate the Eulerian velocity to the curvilinear mesh at the specified time within the current time interval for use in evaluating the residual of the linearized problem.

Implements IBAMR::IBImplicitStrategy.

◆ computeLagrangianForce()

void IBAMR::IBMethod::computeLagrangianForce ( double  data_time)
overridevirtualinherited

Compute the Lagrangian force at the specified time within the current time interval.

Implements IBAMR::IBStrategy.

Reimplemented in IBAMR::PenaltyIBMethod.

◆ computeLinearizedLagrangianForce()

void IBAMR::IBMethod::computeLinearizedLagrangianForce ( Vec &  X_vec,
double  data_time 
)
overridevirtualinherited

Compute the Lagrangian force of the linearized problem for the specified configuration of the updated position vector.

Implements IBAMR::IBImplicitStrategy.

◆ constructLagrangianForceJacobian()

void IBAMR::IBMethod::constructLagrangianForceJacobian ( Mat &  A,
MatType  mat_type,
double  data_time 
)
overridevirtualinherited

Construct the linearized Lagrangian force Jacobian.

Implements IBAMR::IBImplicitStrategy.

◆ spreadLinearizedForce()

void IBAMR::IBMethod::spreadLinearizedForce ( 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 
)
overridevirtualinherited

Spread the Lagrangian force of the linearized problem to the Cartesian grid at the specified time within the current time interval.

Implements IBAMR::IBImplicitStrategy.

◆ constructInterpOp()

void IBAMR::IBMethod::constructInterpOp ( Mat &  J,
void(*)(const double, double *)  spread_fnc,
int  stencil_width,
const std::vector< int > &  num_dofs_per_proc,
int  dof_index_idx,
double  data_time 
)
overridevirtualinherited

Construct the IB interpolation operator.

Implements IBAMR::IBImplicitStrategy.

◆ hasFluidSources()

bool IBAMR::IBMethod::hasFluidSources ( ) const
overridevirtualinherited

Indicate whether there are any internal fluid sources/sinks.

Reimplemented from IBAMR::IBStrategy.

◆ computeLagrangianFluidSource()

void IBAMR::IBMethod::computeLagrangianFluidSource ( double  data_time)
overridevirtualinherited

Compute the Lagrangian source/sink density at the specified time within the current time interval.

Reimplemented from IBAMR::IBStrategy.

◆ spreadFluidSource()

void IBAMR::IBMethod::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 
)
overridevirtualinherited

Spread the Lagrangian source/sink density to the Cartesian grid at the specified time within the current time interval.

Reimplemented from IBAMR::IBStrategy.

◆ interpolatePressure()

void IBAMR::IBMethod::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 
)
overridevirtualinherited

Compute the pressures at the positions of any distributed internal fluid sources or sinks.

Reimplemented from IBAMR::IBStrategy.

◆ postprocessData()

void IBAMR::IBMethod::postprocessData ( )
overridevirtualinherited

Execute user-defined post-processing operations.

Reimplemented from IBAMR::IBStrategy.

◆ registerLoadBalancer()

void IBAMR::IBMethod::registerLoadBalancer ( SAMRAI::tbox::Pointer< SAMRAI::mesh::LoadBalancer< NDIM > >  load_balancer,
int  workload_data_idx 
)
overridevirtualinherited

Register a load balancer and work load patch data index with the IB strategy object.

Deprecated:
This method is no longer necessary with the current workload estimation scheme.

Reimplemented from IBAMR::IBStrategy.

◆ addWorkloadEstimate()

void IBAMR::IBMethod::addWorkloadEstimate ( SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > >  hierarchy,
const int  workload_data_idx 
)
overridevirtualinherited

Add the estimated computational work from the current object per cell into the specified workload_data_idx.

Reimplemented from IBAMR::IBStrategy.

◆ beginDataRedistribution()

void IBAMR::IBMethod::beginDataRedistribution ( SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > >  hierarchy,
SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > >  gridding_alg 
)
overridevirtualinherited

Begin redistributing Lagrangian data prior to regridding the patch hierarchy.

Reimplemented from IBAMR::IBStrategy.

◆ endDataRedistribution()

void IBAMR::IBMethod::endDataRedistribution ( SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > >  hierarchy,
SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > >  gridding_alg 
)
overridevirtualinherited

Complete redistributing Lagrangian data following regridding the patch hierarchy.

Reimplemented from IBAMR::IBStrategy.

◆ initializeLevelData() [2/2]

virtual void SAMRAI::mesh::StandardTagAndInitStrategy< DIM >::initializeLevelData ( const tbox::Pointer< hier::BasePatchHierarchy< DIM > >  hierarchy,
const int  level_number,
const double  init_data_time,
const bool  can_be_refined,
const bool  initial_time,
const tbox::Pointer< hier::BasePatchLevel< DIM > >  old_level = tbox::Pointerhier::BasePatchLevel<DIM> >(NULL),
const bool  allocate_data = true 
)
pure virtualinherited

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

Generally, when data is set, it is interpolated from coarser levels in the hierarchy. If the old level pointer in the argument list is non-null, then data is copied from the old level to the new level on regions of intersection between those levels before interpolation occurs. In this case, the level number must match that of the old level. The specific operations that occur when initializing level data are determined by the particular solution methods in use; i.e., in the subclass of this abstract base class.

The boolean argument initial_time indicates whether the level is being introduced for the first time (i.e., at initialization time), or after some regrid process during the calculation beyond the initial hierarchy construction. This information is provided since the initialization of the data may be different in each of those circumstances. The can_be_refined boolean argument indicates whether the level is the finest allowable level in the hierarchy.

◆ resetHierarchyConfiguration() [1/2]

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

Reset cached hierarchy dependent data.

See also
SAMRAI::mesh::StandardTagAndInitStrategy::resetHierarchyConfiguration

◆ resetHierarchyConfiguration() [2/2]

virtual void SAMRAI::mesh::StandardTagAndInitStrategy< DIM >::resetHierarchyConfiguration ( const tbox::Pointer< hier::BasePatchHierarchy< DIM > >  hierarchy,
const int  coarsest_level,
const int  finest_level 
)
pure virtualinherited

After hierarchy levels have changed and data has been initialized on the new levels, this routine can be used to reset any information needed by the solution method that is particular to the hierarchy configuration. For example, the solution procedure may cache communication schedules to amortize the cost of data movement on the AMR patch hierarchy. This function will be called by the gridding algorithm after the initialization occurs so that the algorithm-specific subclass can reset such things. Also, if the solution method must make the solution consistent across multiple levels after the hierarchy is changed, this process may be invoked by this routine. Of course the details of these processes are determined by the particular solution methods in use.

The level number arguments indicate the coarsest and finest levels in the current hierarchy configuration that have changed. It should be assumed that all intermediate levels have changed as well.

◆ applyGradientDetector() [1/2]

void IBAMR::IBMethod::applyGradientDetector ( SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > >  hierarchy,
int  level_number,
double  error_data_time,
int  tag_index,
bool  initial_time,
bool  uses_richardson_extrapolation_too 
)
overrideinherited

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

See also
SAMRAI::mesh::StandardTagAndInitStrategy::applyGradientDetector

◆ applyGradientDetector() [2/2]

virtual void SAMRAI::mesh::StandardTagAndInitStrategy< DIM >::applyGradientDetector ( const tbox::Pointer< hier::BasePatchHierarchy< DIM > >  hierarchy,
const int  level_number,
const double  error_data_time,
const int  tag_index,
const bool  initial_time,
const bool  uses_richardson_extrapolation_too 
)
virtualinherited

Set integer tags to "one" in cells where refinement of the given level should occur according to some user-supplied gradient criteria. The double time argument is the regrid time. The integer "tag_index" argument is the patch descriptor index of the cell-centered integer tag array on each patch in the hierarchy. The boolean argument initial_time indicates whether the level is being subject to refinement at the initial simulation time. If it is false, then the error estimation process is being invoked at some later time after the AMR hierarchy was initially constructed. Typically, this information is passed to the user's patch tagging routines since the error estimator or gradient detector may be different in each case.

The boolean uses_richardson_extrapolation_too is true when Richardson extrapolation error estimation is used in addition to the gradient detector, and false otherwise. This argument helps the user to manage multiple regridding criteria.

This routine is only when gradient detector is being used. It is virtual with an empty implementation here (rather than pure virtual) so that users are not required to provide an implementation when the function is not needed.

◆ convertTimeEnumToDouble()

double IBAMR::IBMethod::convertTimeEnumToDouble ( IBTK::TimePoint  time_pt)
inherited

If TimePoint is not one of CURRENT_TIME, HALF_TIME, or NEW_TIME, this returns NaN.

◆ getPositionData() [1/2]

void IBAMR::IBMethod::getPositionData ( std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **  X_data,
bool **  X_needs_ghost_fill,
IBTK::TimePoint  time_pt 
)
inherited

The time point should be one of CURRENT_TIME, HALF_TIME, or NEW_TIME. If this condition is met, X_data is set to the data at that respective time, otherwise the X_data pointers are unchanged.

◆ getPositionData() [2/2]

void IBAMR::IBMethod::getPositionData ( std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **  X_data,
bool **  X_needs_ghost_fill,
double  data_time 
)
protectedinherited

Get the current structure position data.

data_time must be equal to one of current time, new time, or half time. If this condition is met, X_data is set to the data at that respective time, otherwise the X_data pointers are unchanged.

◆ getVelocityData() [1/2]

void IBAMR::IBMethod::getVelocityData ( std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **  U_data,
IBTK::TimePoint  time_pt 
)
inherited

The time point should be one of CURRENT_TIME, HALF_TIME, or NEW_TIME. If this condition is met, U_data is set to the data at that respective time, otherwise the U_data pointers are unchanged.

◆ getVelocityData() [2/2]

void IBAMR::IBMethod::getVelocityData ( std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **  U_data,
double  data_time 
)
protectedinherited

Get the current structure velocity data.

data_time must be equal to one of current time, new time, or half time. If this condition is met, U_data is set to the data at that respective time, otherwise the U_data pointers are unchanged.

◆ getForceData() [1/2]

void IBAMR::IBMethod::getForceData ( std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **  F_data,
bool **  F_needs_ghost_fill,
IBTK::TimePoint  time_pt 
)
inherited

The time point should be one of CURRENT_TIME, HALF_TIME, or NEW_TIME. If this condition is met, F_data is set to the data at that respective time, otherwise the F_data pointers are unchanged.

◆ getForceData() [2/2]

void IBAMR::IBMethod::getForceData ( std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **  F_data,
bool **  F_needs_ghost_fill,
double  data_time 
)
protectedinherited

Get the current structure force data.

data_time must be equal to one of current time, new time, or half time. If this condition is met, F_data is set to the data at that respective time, otherwise the F_data pointers are unchanged.

◆ getLinearizedPositionData()

void IBAMR::IBMethod::getLinearizedPositionData ( std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **  X_data,
bool **  X_needs_ghost_fill 
)
protectedinherited

Get the linearized structure position data.

If the linearized position data does not exist, it will be created.

◆ getLECouplingPositionData()

void IBAMR::IBMethod::getLECouplingPositionData ( std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **  X_LE_data,
bool **  X_LE_needs_ghost_fill,
double  data_time 
)
protectedinherited

Get the current interpolation/spreading position data.

data_time must be equal to one of current time, new time, or half time. If this condition is met, X_LE_data is set to the data at that respective time, otherwise the X_LE_data is unchanged.

If this class is not set up to use fixed coupling, this returns data from getPositionData().

◆ getLinearizedVelocityData()

void IBAMR::IBMethod::getLinearizedVelocityData ( std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **  U_data)
protectedinherited

Get the linearized structure velocity data.

If the linearized velocity data does not exist, it will be created.

◆ getLinearizedForceData()

void IBAMR::IBMethod::getLinearizedForceData ( std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > **  F_data,
bool **  F_needs_ghost_fill 
)
protectedinherited

Get the linearized structure force data.

If the linearized force data does not exist, it will be created.

◆ reinitMidpointData()

void IBAMR::IBMethod::reinitMidpointData ( const std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > &  current_data,
const std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > &  new_data,
const std::vector< SAMRAI::tbox::Pointer< IBTK::LData > > &  half_data 
)
protectedinherited

Interpolate the current and new data to obtain values at the midpoint of the time interval.

◆ resetAnchorPointValues()

void IBAMR::IBMethod::resetAnchorPointValues ( std::vector< SAMRAI::tbox::Pointer< IBTK::LData > >  U_data,
int  coarsest_ln,
int  finest_ln 
)
protectedinherited

Set the elements of the Lagrangian vector to zero at anchored nodes of the curvilinear mesh.

◆ computeForce_SAMRAI()

static PetscErrorCode IBAMR::IBMethod::computeForce_SAMRAI ( void *  ctx,
Vec  X,
Vec  F 
)
staticprotectedinherited

◆ computeForce()

PetscErrorCode IBAMR::IBMethod::computeForce ( Vec  X,
Vec  F 
)
protectedinherited

◆ resetLagrangianForceFunction()

void IBAMR::IBMethod::resetLagrangianForceFunction ( double  init_data_time,
bool  initial_time 
)
privateinherited

Reset the Lagrangian force function object.

◆ resetLagrangianSourceFunction()

void IBAMR::IBMethod::resetLagrangianSourceFunction ( double  init_data_time,
bool  initial_time 
)
privateinherited

Reset the Lagrangian source function object.

◆ updateIBInstrumentationData()

void IBAMR::IBMethod::updateIBInstrumentationData ( int  timestep_num,
double  data_time 
)
privateinherited

Compute the flow rates and pressures in the internal flow meters and pressure gauges.

◆ registerIBHierarchyIntegrator()

virtual void IBAMR::IBStrategy::registerIBHierarchyIntegrator ( IBHierarchyIntegrator ib_solver)
virtualinherited

Register the IBHierarchyIntegrator object that is using this strategy class.

Reimplemented in IBAMR::IBLevelSetMethod, and IBAMR::IBStrategySet.

◆ getMaxPointDisplacement()

virtual double IBAMR::IBStrategy::getMaxPointDisplacement ( ) const
virtualinherited

Get the ratio of the maximum point displacement of all the structures owned by the current class to the cell width of the grid level on which the structure is assigned. This value is useful for determining if the Eulerian patch hierarchy needs to be regridded.

Note
The process of regridding is distinct, for some IBStrategy objects (like IBFEMethod), from forming (or reforming) the association between Lagrangian structures and patches. In particular, this function computes the distance between the current position of the structure and the structure at the point of the last regrid, which may not be the same point at which we last rebuilt the structure-to-patch mappings. The reassociation check should be implemented in postprocessIntegrateData().

Reimplemented in IBAMR::IBFEMethod, and IBAMR::IBStrategySet.

◆ setUseFixedLEOperators()

void IBAMR::IBStrategy::setUseFixedLEOperators ( bool  use_fixed_coupling_ops = true)
inherited

Indicate whether "fixed" interpolation and spreading operators should be used during Lagrangian-Eulerian interaction.

◆ setUseMultistepTimeStepping()

virtual void IBAMR::IBStrategy::setUseMultistepTimeStepping ( unsigned int  n_previous_steps = 1)
virtualinherited

Indicate that multistep time stepping will be used.

A default implementation is provided that emits an unrecoverable exception.

Parameters
[in]n_previous_stepsNumber of previous solution values that can be used by the multistep scheme.

Reimplemented in IBAMR::IBFEMethod.

◆ AB2Step()

virtual void IBAMR::IBStrategy::AB2Step ( double  current_time,
double  new_time 
)
virtualinherited

Advance the positions of the Lagrangian structure using the standard 2nd-order Adams-Bashforth rule.

A default implementation is provided that emits an unrecoverable exception.

Reimplemented in IBAMR::IBFEMethod.

◆ postprocessSolveFluidEquations()

virtual void IBAMR::IBStrategy::postprocessSolveFluidEquations ( double  current_time,
double  new_time,
int  cycle_num 
)
virtualinherited

Execute user-defined routines just after solving the fluid equations.

An empty default implementation is provided.

Reimplemented in IBAMR::IBLevelSetMethod, IBAMR::IBStrategySet, and IBAMR::ConstraintIBMethod.

◆ getINSHierarchyIntegrator()

INSHierarchyIntegrator* IBAMR::IBStrategy::getINSHierarchyIntegrator ( ) const
protectedinherited

Return a pointer to the INSHierarchyIntegrator object being used with the IBHierarchyIntegrator class registered with this IBStrategy object.

◆ getVelocityHierarchyDataOps()

SAMRAI::tbox::Pointer<SAMRAI::math::HierarchyDataOpsReal<NDIM, double> > IBAMR::IBStrategy::getVelocityHierarchyDataOps ( ) const
protectedinherited

Return a pointer to the HierarchyDataOpsReal object associated with velocity-like variables.

◆ getPressureHierarchyDataOps()

SAMRAI::tbox::Pointer<SAMRAI::math::HierarchyDataOpsReal<NDIM, double> > IBAMR::IBStrategy::getPressureHierarchyDataOps ( ) const
protectedinherited

Return a pointer to the HierarchyDataOpsReal object associated with pressure-like variables.

◆ getHierarchyMathOps()

SAMRAI::tbox::Pointer<IBTK::HierarchyMathOps> IBAMR::IBStrategy::getHierarchyMathOps ( ) const
protectedinherited

Return a pointer to a HierarchyMathOps object.

◆ registerVariable() [1/2]

void IBAMR::IBStrategy::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< IBTK::CartGridFunction init_fcn = nullptr,
const bool  register_for_restart = true 
)
protectedinherited

Register a state variable with the integrator. When a refine operator is specified, the data for the variable are automatically maintained as the patch hierarchy evolves.

All state variables are registered with three contexts: current, new, and scratch. The current context of a state variable is maintained from time step to time step and, if the necessary coarsen and refine operators are specified, as the patch hierarchy evolves.

◆ registerVariable() [2/2]

void IBAMR::IBStrategy::registerVariable ( int idx,
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > >  variable,
const SAMRAI::hier::IntVector< NDIM > &  ghosts = SAMRAI::hier::IntVector< NDIM >(0),
SAMRAI::tbox::Pointer< SAMRAI::hier::VariableContext ctx = SAMRAI::tbox::PointerSAMRAI::hier::VariableContext >(nullptr),
const bool  register_for_restart = true 
)
protectedinherited

Register a variable with the integrator that may not be maintained from time step to time step.

By default, variables are registered with the scratch context, which is deallocated after each time step.

◆ registerGhostfillRefineAlgorithm()

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

Register a ghost cell-filling refine algorithm.

◆ registerProlongRefineAlgorithm()

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

Register a data-prolonging refine algorithm.

◆ registerCoarsenAlgorithm()

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

Register a coarsen algorithm.

◆ getGhostfillRefineAlgorithm()

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

Get ghost cell-filling refine algorithm.

◆ getProlongRefineAlgorithm()

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

Get data-prolonging refine algorithm.

◆ getCoarsenAlgorithm()

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

Get coarsen algorithm.

◆ getGhostfillRefineSchedules()

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

Get ghost cell-filling refine schedules.

◆ getProlongRefineSchedules()

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

Get data-prolonging refine schedules.

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

◆ getCoarsenSchedules()

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

Get coarsen schedules.

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

◆ getLevelDt()

virtual double SAMRAI::mesh::StandardTagAndInitStrategy< DIM >::getLevelDt ( const tbox::Pointer< hier::BasePatchLevel< DIM > >  level,
const double  dt_time,
const bool  initial_time 
)
virtualinherited

Determine time increment to advance data on level. The recompute_dt option specifies whether to compute the timestep using the current level data or to return the value stored by the time integrator. The default true setting means the timestep will be computed if no value is supplied.

This routine is only when Richardson extrapolation is being used. It is virtual with an empty implementation here (rather than pure virtual) so that users are not required to provide an implementation when the function is not needed.

◆ advanceLevel()

virtual double SAMRAI::mesh::StandardTagAndInitStrategy< DIM >::advanceLevel ( const tbox::Pointer< hier::BasePatchLevel< DIM > >  level,
const tbox::Pointer< hier::BasePatchHierarchy< DIM > >  hierarchy,
const double  current_time,
const double  new_time,
const bool  first_step,
const bool  last_step,
const bool  regrid_advance = false 
)
virtualinherited

Advance data on all patches on specified patch level from current time (current_time) to new time (new_time). This routine is called only during time-dependent regridding procedures, such as Richardson extrapolation. It is virtual with an empty implementation here (rather than pure virtual) so that users are not required to provide an implementation when the function is not needed. The boolean arguments are used to determine the state of the algorithm and the data when the advance routine is called. Note that this advance function is also used during normal time integration steps.

When this function is called, the level data required to begin the advance must be allocated and be defined appropriately. Typically, this is equivalent to what is needed to initialize a new level after regridding. Upon exiting this routine, both current and new data may exist on the level. This data is needed until level synchronization occurs, in general. Current and new data may be reset by calling the member function resetTimeDependentData().

This routine is called from two different points within the Richardson exptrapolation process: to advance a temporary level that is coarser than the hierarchy level on which error estimation is performed, and to advance the hierarchy level itself. In the first case, the values of the boolean flags are:

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

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

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

◆ resetTimeDependentData()

virtual void SAMRAI::mesh::StandardTagAndInitStrategy< DIM >::resetTimeDependentData ( const tbox::Pointer< hier::BasePatchLevel< DIM > >  level,
const double  new_time,
const bool  can_be_refined 
)
virtualinherited

Reset time-dependent data storage for the specified patch level.

This routine only applies when Richardson extrapolation is being used. It is virtual with an empty implementation here (rather than pure virtual) so that users are not required to provide an implementation when the function is not needed.

◆ resetDataToPreadvanceState()

virtual void SAMRAI::mesh::StandardTagAndInitStrategy< DIM >::resetDataToPreadvanceState ( const tbox::Pointer< hier::BasePatchLevel< DIM > >  level)
virtualinherited

Reset data on the patch level by destroying all patch data other than that which is needed to initialize the solution on that level. In other words, this is the data needed to begin a time integration step on the level.

This routine is only when Richardson extrapolation is being used. It is virtual with an empty implementation here (rather than pure virtual) so that users are not required to provide an implementation when the function is not needed.

◆ applyRichardsonExtrapolation()

virtual void SAMRAI::mesh::StandardTagAndInitStrategy< DIM >::applyRichardsonExtrapolation ( const tbox::Pointer< hier::PatchLevel< DIM > >  level,
const double  error_data_time,
const int  tag_index,
const double  deltat,
const int  error_coarsen_ratio,
const bool  initial_time,
const bool  uses_gradient_detector_too 
)
virtualinherited

Set integer tags to "one" in cells where refinement of the given level should occur according to some user-supplied Richardson extrapolation criteria. The "error_data_time" argument is the regrid time. The "deltat" argument is the time increment to advance the solution on the level to be refined. Note that that level is finer than the level in the argument list, in general. The ratio between the argument level and the actual hierarchy level is given by the integer "coarsen ratio".

The integer "tag_index" argument is the patch descriptor index of the cell-centered integer tag array on each patch in the hierarchy.

The boolean argument initial_time indicates whether the level is being subject to refinement at the initial simulation time. If it is false, then the error estimation process is being invoked at some later time after the AMR hierarchy was initially constructed. Typically, this information is passed to the user's patch tagging routines since the application of the Richardson extrapolation process may be different in each case.

The boolean uses_gradient_detector_too is true when a gradient detector procedure is used in addition to Richardson extrapolation, and false otherwise. This argument helps the user to manage multiple regridding criteria.

This routine is only when Richardson extrapolation is being used. It is virtual with an empty implementation here (rather than pure virtual) so that users are not required to provide an implementation when the function is not needed.

◆ coarsenDataForRichardsonExtrapolation()

virtual void SAMRAI::mesh::StandardTagAndInitStrategy< DIM >::coarsenDataForRichardsonExtrapolation ( const tbox::Pointer< hier::PatchHierarchy< DIM > >  hierarchy,
const int  level_number,
const tbox::Pointer< hier::PatchLevel< DIM > >  coarser_level,
const double  coarsen_data_time,
const bool  before_advance 
)
virtualinherited

Coarsen solution data from level to coarse_level for Richardson extrapolation. Note that this routine will be called twice during the Richardson extrapolation error estimation process, once to set data on the coarser level and once to coarsen data from after advancing the fine level. The init_coarse_level boolean argument indicates whether data is set on the coarse level by coarsening the "old" time level solution or by coarsening the "new" solution on the fine level (i.e., after it has been advanced).

This routine is only when Richardson extrapolation is being used. It is virtual with an empty implementation here (rather than pure virtual) so that users are not required to provide an implementation when the function is not needed.

◆ getNumberOfRigidStructures()

unsigned int IBAMR::CIBStrategy::getNumberOfRigidStructures ( ) const
inherited

◆ setInitialCenterOfMass()

void IBAMR::CIBStrategy::setInitialCenterOfMass ( const unsigned int  part,
const Eigen::Vector3d &  XCOM_0 
)
inherited
Parameters
partThe rigid body for which we are setting the initial center of mass position.

◆ setSolveRigidBodyVelocity()

void IBAMR::CIBStrategy::setSolveRigidBodyVelocity ( const unsigned int  part,
const IBTK::FreeRigidDOFVector solve_rigid_dofs 
)
inherited
Parameters
partThe rigid body for which we are setting the free DOFs.

◆ getSolveRigidBodyVelocity()

const IBTK::FreeRigidDOFVector& IBAMR::CIBStrategy::getSolveRigidBodyVelocity ( const unsigned int  part,
int num_free_dofs 
) const
inherited

◆ setRigidBodyVelocity() [5/6]

virtual void IBAMR::CIBStrategy::setRigidBodyVelocity ( const unsigned int  part,
Vec  U,
Vec  V 
)
virtualinherited
Parameters
partThe rigid part for which velocity needs to be set.
UVec contains the rigid component of velocities. For two-dimensions the vector contains the values \([u,v,\omega_z]\) and for three-dimensions the vector values are \([u,v,w,\omega_x,\omega_y,\omega_z]\).

◆ setRigidBodyVelocity() [6/6]

virtual void IBAMR::CIBStrategy::setRigidBodyVelocity ( Vec  U,
Vec  V,
const bool  only_free_dofs,
const bool  only_imposed_dofs,
const bool  all_dofs = false 
)
virtualinherited
Parameters
UVec that contains the rigid component of velocities for the required components. For two-dimensions each sub Vec contains the values \([u,v,\omega_z]\) and for three-dimensions the vector values are \([u,v,w,\omega_x,\omega_y,\omega_z]\).
only_free_dofsBoolean indicating if the rigid body velocity is to be set only for free DOFS for all parts. The corresponding size of U_sub would be \( U_{sub} \leq NDIM * (NDIM + 1) / 2 \).
only_imposed_dofsBoolean indicating if the rigid body velocity is to be set only for prescribed kinematics dofs for all parts. The corresponding size of U_sub would be \( U_{sub} \leq NDIM * (NDIM + 1) / 2 \).
all_dofsBoolean indicating if the rigid body velocity is to be set for all parts. The corresponding size of U_sub would be \( U_{sub} = NDIM * (NDIM + 1) / 2 \).
Note
User is responsible for setting correct number of subvecs in U that corresponds to the particular combination of booleans.

◆ computeNetRigidGeneralizedForce() [5/6]

virtual void IBAMR::CIBStrategy::computeNetRigidGeneralizedForce ( const unsigned int  part,
Vec  L,
Vec  F 
)
virtualinherited
Parameters
partThe structure index.
LThe Lagrange multiplier vector.
FVec storing the net generalized force.

◆ computeNetRigidGeneralizedForce() [6/6]

virtual void IBAMR::CIBStrategy::computeNetRigidGeneralizedForce ( Vec  L,
Vec  F,
const bool  only_free_dofs,
const bool  only_imposed_dofs,
const bool  all_dofs = false 
)
virtualinherited
Parameters
LThe Lagrange multiplier vector.
FVec storing the net generalized force.
only_free_dofsBoolean indicating if the net generalized force and torque is to be computed only for free dofs of all bodies.
only_imposed_dofsBoolean indicating if the net generalized force and torque is to be computed for imposed dofs of all bodies.
all_dofsBoolean indicating if the net generalized force and torque is to be computed for all dofs of all bodies.
Note
User is responsible for setting correct number of subvecs in F that corresponds to the particular combination of booleans.

◆ getNetRigidGeneralizedForce()

const IBTK::RigidDOFVector& IBAMR::CIBStrategy::getNetRigidGeneralizedForce ( const unsigned int  part)
inherited
Parameters
partThe rigid part.

◆ updateFreeDOFsMapping()

void IBAMR::CIBStrategy::updateFreeDOFsMapping ( )
inherited

◆ updateNewRigidBodyVelocity() [1/3]

void IBAMR::CIBStrategy::updateNewRigidBodyVelocity ( const unsigned int  part,
const IBTK::RigidDOFVector U 
)
inherited

◆ updateNewRigidBodyVelocity() [2/3]

void IBAMR::CIBStrategy::updateNewRigidBodyVelocity ( const unsigned int  part,
Vec  U 
)
inherited

◆ updateNewRigidBodyVelocity() [3/3]

void IBAMR::CIBStrategy::updateNewRigidBodyVelocity ( Vec  U,
const bool  only_free_dofs,
const bool  only_imposed_dofs,
const bool  all_dofs = false 
)
inherited

◆ copyFreeDOFsVecToArray()

virtual void IBAMR::CIBStrategy::copyFreeDOFsVecToArray ( Vec  b,
double array,
const std::vector< unsigned > &  struct_ids,
const int  array_rank 
)
virtualinherited
Parameters
bPETSc Vec to copy from. The Vec stores only free DOFs of all the structures.
arrayData pointer to copy to. It is a linear array of maximum free DOFs of the passed structure IDs.
struct_idsVector of structure indices.
array_rankRank of the processor on which the array is located.
Note
The size of array is assummed to be sum of maximum number of free degrees of freedom of all the structures given in struct_ids. The caller is responsible for allocating and destroying array memory outside of this routine.

◆ copyFreeDOFsArrayToVec()

virtual void IBAMR::CIBStrategy::copyFreeDOFsArrayToVec ( Vec  b,
double array,
const std::vector< unsigned > &  struct_ids,
const int  array_rank 
)
virtualinherited
Parameters
bCopy to PETSc Vec. The Vec stores only free DOFs of all the structures.
arrayCopy from data pointer. It is a linear array of maximum free DOFs of the passed structure IDs.
struct_idsVector of structure indices.
array_rankRank of the processor on which the array is located.
Note
The size of array is assummed to be sum of maximum number of free degrees of freedom of all the structures given in struct_ids. The caller is responsible for allocating and destroying array memory outside of this routine.

◆ vecToRDV()

static void IBAMR::CIBStrategy::vecToRDV ( Vec  U,
IBTK::RigidDOFVector Ur 
)
staticinherited

◆ rdvToVec()

static void IBAMR::CIBStrategy::rdvToVec ( const IBTK::RigidDOFVector Ur,
Vec &  U 
)
staticinherited

◆ eigenToRDV()

static void IBAMR::CIBStrategy::eigenToRDV ( const Eigen::Vector3d &  U,
const Eigen::Vector3d &  W,
IBTK::RigidDOFVector UW 
)
staticinherited

◆ rdvToEigen()

static void IBAMR::CIBStrategy::rdvToEigen ( const IBTK::RigidDOFVector UW,
Eigen::Vector3d &  U,
Eigen::Vector3d &  W 
)
staticinherited

◆ getCurrentRigidBodyVelocity()

void IBAMR::CIBStrategy::getCurrentRigidBodyVelocity ( const unsigned int  part,
IBTK::RigidDOFVector U 
)
inherited

◆ getNewRigidBodyVelocity()

void IBAMR::CIBStrategy::getNewRigidBodyVelocity ( const unsigned int  part,
IBTK::RigidDOFVector U 
)
inherited

◆ getCurrentBodyCenterOfMass()

const Eigen::Vector3d& IBAMR::CIBStrategy::getCurrentBodyCenterOfMass ( const unsigned int  part)
inherited

◆ getNewBodyCenterOfMass()

const Eigen::Vector3d& IBAMR::CIBStrategy::getNewBodyCenterOfMass ( const unsigned int  part)
inherited

◆ setRotationMatrix()

void IBAMR::CIBStrategy::setRotationMatrix ( const std::vector< Eigen::Vector3d > &  rot_vel,
const std::vector< Eigen::Quaterniond > &  q_old,
std::vector< Eigen::Quaterniond > &  q_new,
std::vector< Eigen::Matrix3d > &  rot_mat,
const double  dt 
)
protectedinherited
Parameters
q_oldPrevious applied quaternion.
q_newNew quaternion to set.
rot_matMatrix to set.
dtTime interval of rotation.

Member Data Documentation

◆ d_constrained_velocity_fcns_data

std::vector<ConstrainedVelocityFcnsData> IBAMR::CIBMethod::d_constrained_velocity_fcns_data
protected

Functions to set constrained velocities of the structures.

◆ d_ext_force_torque_fcn_data

std::vector<ExternalForceTorqueFcnData> IBAMR::CIBMethod::d_ext_force_torque_fcn_data
protected

Functions to set net external force and torque on free moving structures.

◆ d_prefluidsolve_callback_fcns

std::vector<preprocessSolveFluidEqn_callbackfcn> IBAMR::CIBMethod::d_prefluidsolve_callback_fcns
protected

Pre and post fluid solve call back functions and contexts.

◆ d_prefluidsolve_callback_fcns_ctx

std::vector<void*> IBAMR::CIBMethod::d_prefluidsolve_callback_fcns_ctx
protected

◆ d_constraint_force_is_initialized

bool IBAMR::CIBMethod::d_constraint_force_is_initialized = false
protected

Booleans to control spreading constraint force and interpolating to Lagrangian velocities.

◆ d_lag_velvec_is_initialized

bool IBAMR::CIBMethod::d_lag_velvec_is_initialized = false
protected

◆ d_time_integrator_needs_regrid

bool IBAMR::CIBMethod::d_time_integrator_needs_regrid = false
protected

Boolean to flag if time integrator needs regriding

◆ d_eul_lambda_var

SAMRAI::tbox::Pointer<SAMRAI::hier::Variable<NDIM> > IBAMR::CIBMethod::d_eul_lambda_var
protected

Eulerian variables.

◆ d_eul_lambda_idx

int IBAMR::CIBMethod::d_eul_lambda_idx = IBTK::invalid_index
protected

◆ d_struct_lag_idx_range

std::vector<std::pair<int, int> > IBAMR::CIBMethod::d_struct_lag_idx_range
protected

Vector of Lagrnagian indices of all structures.

◆ d_visit_writer

SAMRAI::tbox::Pointer<SAMRAI::appu::VisItDataWriter<NDIM> > IBAMR::CIBMethod::d_visit_writer
protected

The object used to write out data for postprocessing by the visIt visualization tool.

◆ d_output_eul_lambda

bool IBAMR::CIBMethod::d_output_eul_lambda = false
protected

Control printing of S[lambda]

◆ d_lambda_dump_interval

int IBAMR::CIBMethod::d_lambda_dump_interval = 0
protected

Input/output.

◆ d_lambda_stream

std::ofstream IBAMR::CIBMethod::d_lambda_stream
protected

◆ d_reg_filename

std::vector<std::string> IBAMR::CIBMethod::d_reg_filename
protected

◆ d_lambda_filename

std::vector<std::string> IBAMR::CIBMethod::d_lambda_filename
protected

◆ d_u_phys_bdry_op

IBTK::RobinPhysBdryPatchStrategy* IBAMR::CIBMethod::d_u_phys_bdry_op = nullptr
protected

◆ d_use_steady_stokes

bool IBAMR::CIBMethod::d_use_steady_stokes = false
protected

◆ d_do_log

bool IBAMR::IBMethod::d_do_log = false
protectedinherited

◆ d_hierarchy

SAMRAI::tbox::Pointer<SAMRAI::hier::PatchHierarchy<NDIM> > IBAMR::IBMethod::d_hierarchy
protectedinherited

◆ d_gridding_alg

SAMRAI::tbox::Pointer<SAMRAI::mesh::GriddingAlgorithm<NDIM> > IBAMR::IBMethod::d_gridding_alg
protectedinherited

◆ d_current_time

double IBAMR::IBMethod::d_current_time = std::numeric_limits<double>::quiet_NaN()
protectedinherited

◆ d_new_time

double IBAMR::IBMethod::d_new_time = std::numeric_limits<double>::quiet_NaN()
protectedinherited

◆ d_half_time

double IBAMR::IBMethod::d_half_time = std::numeric_limits<double>::quiet_NaN()
protectedinherited

◆ d_X_current_needs_ghost_fill

bool IBAMR::IBMethod::d_X_current_needs_ghost_fill = true
protectedinherited

◆ d_X_new_needs_ghost_fill

bool IBAMR::IBMethod::d_X_new_needs_ghost_fill = true
protectedinherited

◆ d_X_half_needs_ghost_fill

bool IBAMR::IBMethod::d_X_half_needs_ghost_fill = true
protectedinherited

◆ d_X_jac_needs_ghost_fill

bool IBAMR::IBMethod::d_X_jac_needs_ghost_fill = true
protectedinherited

◆ d_X_LE_new_needs_ghost_fill

bool IBAMR::IBMethod::d_X_LE_new_needs_ghost_fill = true
protectedinherited

◆ d_X_LE_half_needs_ghost_fill

bool IBAMR::IBMethod::d_X_LE_half_needs_ghost_fill = true
protectedinherited

◆ d_F_current_needs_ghost_fill

bool IBAMR::IBMethod::d_F_current_needs_ghost_fill = true
protectedinherited

◆ d_F_new_needs_ghost_fill

bool IBAMR::IBMethod::d_F_new_needs_ghost_fill = true
protectedinherited

◆ d_F_half_needs_ghost_fill

bool IBAMR::IBMethod::d_F_half_needs_ghost_fill = true
protectedinherited

◆ d_F_jac_needs_ghost_fill

bool IBAMR::IBMethod::d_F_jac_needs_ghost_fill = true
protectedinherited

◆ d_l_data_manager

IBTK::LDataManager* IBAMR::IBMethod::d_l_data_manager
protectedinherited

◆ d_interp_kernel_fcn

std::string IBAMR::IBMethod::d_interp_kernel_fcn = "IB_4"
protectedinherited

◆ d_spread_kernel_fcn

std::string IBAMR::IBMethod::d_spread_kernel_fcn = "IB_4"
protectedinherited

◆ d_error_if_points_leave_domain

bool IBAMR::IBMethod::d_error_if_points_leave_domain = false
protectedinherited

◆ d_ghosts

SAMRAI::hier::IntVector<NDIM> IBAMR::IBMethod::d_ghosts
protectedinherited

◆ d_X_current_data

std::vector<SAMRAI::tbox::Pointer<IBTK::LData> > IBAMR::IBMethod::d_X_current_data
protectedinherited

◆ d_X_new_data

std::vector<SAMRAI::tbox::Pointer<IBTK::LData> > IBAMR::IBMethod::d_X_new_data
protectedinherited

◆ d_X_half_data

std::vector<SAMRAI::tbox::Pointer<IBTK::LData> > IBAMR::IBMethod::d_X_half_data
protectedinherited

◆ d_X_jac_data

std::vector<SAMRAI::tbox::Pointer<IBTK::LData> > IBAMR::IBMethod::d_X_jac_data
protectedinherited

◆ d_X_LE_new_data

std::vector<SAMRAI::tbox::Pointer<IBTK::LData> > IBAMR::IBMethod::d_X_LE_new_data
protectedinherited

◆ d_X_LE_half_data

std::vector<SAMRAI::tbox::Pointer<IBTK::LData> > IBAMR::IBMethod::d_X_LE_half_data
protectedinherited

◆ d_U_current_data

std::vector<SAMRAI::tbox::Pointer<IBTK::LData> > IBAMR::IBMethod::d_U_current_data
protectedinherited

◆ d_U_new_data

std::vector<SAMRAI::tbox::Pointer<IBTK::LData> > IBAMR::IBMethod::d_U_new_data
protectedinherited

◆ d_U_half_data

std::vector<SAMRAI::tbox::Pointer<IBTK::LData> > IBAMR::IBMethod::d_U_half_data
protectedinherited

◆ d_U_jac_data

std::vector<SAMRAI::tbox::Pointer<IBTK::LData> > IBAMR::IBMethod::d_U_jac_data
protectedinherited

◆ d_F_current_data

std::vector<SAMRAI::tbox::Pointer<IBTK::LData> > IBAMR::IBMethod::d_F_current_data
protectedinherited

◆ d_F_new_data

std::vector<SAMRAI::tbox::Pointer<IBTK::LData> > IBAMR::IBMethod::d_F_new_data
protectedinherited

◆ d_F_half_data

std::vector<SAMRAI::tbox::Pointer<IBTK::LData> > IBAMR::IBMethod::d_F_half_data
protectedinherited

◆ d_F_jac_data

std::vector<SAMRAI::tbox::Pointer<IBTK::LData> > IBAMR::IBMethod::d_F_jac_data
protectedinherited

◆ d_anchor_point_local_idxs

std::vector<std::set<int> > IBAMR::IBMethod::d_anchor_point_local_idxs
protectedinherited

◆ d_instrument_panel

SAMRAI::tbox::Pointer<IBInstrumentPanel> IBAMR::IBMethod::d_instrument_panel
protectedinherited

◆ d_total_flow_volume

std::vector<double> IBAMR::IBMethod::d_total_flow_volume
protectedinherited

◆ d_l_initializer

SAMRAI::tbox::Pointer<IBTK::LInitStrategy> IBAMR::IBMethod::d_l_initializer
protectedinherited

◆ d_ib_force_fcn

SAMRAI::tbox::Pointer<IBLagrangianForceStrategy> IBAMR::IBMethod::d_ib_force_fcn
protectedinherited

◆ d_ib_force_fcn_needs_init

bool IBAMR::IBMethod::d_ib_force_fcn_needs_init = true
protectedinherited

◆ d_ib_source_fcn

SAMRAI::tbox::Pointer<IBLagrangianSourceStrategy> IBAMR::IBMethod::d_ib_source_fcn
protectedinherited

◆ d_ib_source_fcn_needs_init

bool IBAMR::IBMethod::d_ib_source_fcn_needs_init = true
protectedinherited

◆ d_X_src

std::vector<std::vector<IBTK::Point> > IBAMR::IBMethod::d_X_src
protectedinherited

◆ d_r_src

std::vector<std::vector<double> > IBAMR::IBMethod::d_r_src
protectedinherited

◆ d_P_src

std::vector<std::vector<double> > IBAMR::IBMethod::d_P_src
protectedinherited

◆ d_Q_src

std::vector<std::vector<double> > IBAMR::IBMethod::d_Q_src
protectedinherited

◆ d_n_src

std::vector<int> IBAMR::IBMethod::d_n_src
protectedinherited

◆ d_normalize_source_strength

bool IBAMR::IBMethod::d_normalize_source_strength = false
protectedinherited

◆ d_post_processor

SAMRAI::tbox::Pointer<IBMethodPostProcessStrategy> IBAMR::IBMethod::d_post_processor
protectedinherited

◆ d_silo_writer

SAMRAI::tbox::Pointer<IBTK::LSiloDataWriter> IBAMR::IBMethod::d_silo_writer
protectedinherited

◆ d_load_balancer

SAMRAI::tbox::Pointer<SAMRAI::mesh::LoadBalancer<NDIM> > IBAMR::IBMethod::d_load_balancer
protectedinherited

◆ d_workload_idx

int IBAMR::IBMethod::d_workload_idx = IBTK::invalid_index
protectedinherited

◆ d_object_name

std::string IBAMR::IBMethod::d_object_name
protectedinherited

◆ d_registered_for_restart

bool IBAMR::IBMethod::d_registered_for_restart
protectedinherited

◆ d_force_jac_mffd

bool IBAMR::IBMethod::d_force_jac_mffd = false
privateinherited

Jacobian data.

◆ d_force_jac

Mat IBAMR::IBMethod::d_force_jac = nullptr
privateinherited

◆ d_force_jac_data_time

double IBAMR::IBMethod::d_force_jac_data_time
privateinherited

◆ d_ib_solver

IBHierarchyIntegrator* IBAMR::IBStrategy::d_ib_solver = nullptr
protectedinherited

The IBHierarchyIntegrator object that is using this strategy class.

◆ d_use_fixed_coupling_ops

bool IBAMR::IBStrategy::d_use_fixed_coupling_ops = false
protectedinherited

Whether to use "fixed" Lagrangian-Eulerian coupling operators.

◆ d_num_rigid_parts

unsigned int IBAMR::CIBStrategy::d_num_rigid_parts
protectedinherited

◆ d_center_of_mass_initial

std::vector<Eigen::Vector3d> IBAMR::CIBStrategy::d_center_of_mass_initial
protectedinherited

Center of mass.

◆ d_center_of_mass_current

std::vector<Eigen::Vector3d> IBAMR::CIBStrategy::d_center_of_mass_current
protectedinherited

◆ d_center_of_mass_half

std::vector<Eigen::Vector3d> IBAMR::CIBStrategy::d_center_of_mass_half
protectedinherited

◆ d_center_of_mass_new

std::vector<Eigen::Vector3d> IBAMR::CIBStrategy::d_center_of_mass_new
protectedinherited

◆ d_compute_center_of_mass_initial

std::vector<bool> IBAMR::CIBStrategy::d_compute_center_of_mass_initial
protectedinherited

◆ d_quaternion_current

std::vector<Eigen::Quaterniond> IBAMR::CIBStrategy::d_quaternion_current
protectedinherited

Quaternion of the body.

◆ d_quaternion_half

std::vector<Eigen::Quaterniond> IBAMR::CIBStrategy::d_quaternion_half
protectedinherited

◆ d_quaternion_new

std::vector<Eigen::Quaterniond> IBAMR::CIBStrategy::d_quaternion_new
protectedinherited

◆ d_solve_rigid_vel

std::vector<IBTK::FRDV> IBAMR::CIBStrategy::d_solve_rigid_vel
protectedinherited

◆ d_U

Vec IBAMR::CIBStrategy::d_U
protectedinherited

◆ d_F

Vec IBAMR::CIBStrategy::d_F
protectedinherited

◆ d_free_dofs_map

std::vector<std::pair<int, int> > IBAMR::CIBStrategy::d_free_dofs_map
protectedinherited

◆ d_free_dofs_map_updated

bool IBAMR::CIBStrategy::d_free_dofs_map_updated
protectedinherited

◆ d_trans_vel_current

std::vector<Eigen::Vector3d> IBAMR::CIBStrategy::d_trans_vel_current
protectedinherited

Rigid body velocity of the structures.

◆ d_trans_vel_half

std::vector<Eigen::Vector3d> IBAMR::CIBStrategy::d_trans_vel_half
protectedinherited

◆ d_trans_vel_new

std::vector<Eigen::Vector3d> IBAMR::CIBStrategy::d_trans_vel_new
protectedinherited

◆ d_rot_vel_current

std::vector<Eigen::Vector3d> IBAMR::CIBStrategy::d_rot_vel_current
protectedinherited

◆ d_rot_vel_half

std::vector<Eigen::Vector3d> IBAMR::CIBStrategy::d_rot_vel_half
protectedinherited

◆ d_rot_vel_new

std::vector<Eigen::Vector3d> IBAMR::CIBStrategy::d_rot_vel_new
protectedinherited

◆ d_net_rigid_generalized_force

std::vector<IBTK::RigidDOFVector> IBAMR::CIBStrategy::d_net_rigid_generalized_force
protectedinherited

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