|
| 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.
|
|
| ~CIBMethod () |
| Destructor of the class.
|
|
void | registerConstrainedVelocityFunction (ConstrainedNodalVelocityFcnPtr nodalvelfcn, ConstrainedCOMVelocityFcnPtr comvelfcn, void *ctx=nullptr, unsigned int part=0) |
| Register user defined constrained velocity functions.
|
|
void | registerConstrainedVelocityFunction (const ConstrainedVelocityFcnsData &data, unsigned int part=0) |
| Register user defined constrained velocity function data.
|
|
void | registerExternalForceTorqueFunction (ExternalForceTorqueFcnPtr forcetorquefcn, void *ctx=nullptr, unsigned int part=0) |
| Register an external force and torque function.
|
|
void | registerExternalForceTorqueFunction (const ExternalForceTorqueFcnData &data, unsigned int part=0) |
| Register an external force and torque function data.
|
|
int | getStructuresLevelNumber () const |
| Get the level on which the structures reside.
|
|
int | getStructureHandle (const int lag_idx) const |
| Get the structure handle to which this Lagrangian index belongs.
|
|
void | registerPreProcessSolveFluidEquationsCallBackFcn (preprocessSolveFluidEqn_callbackfcn callback, void *ctx) |
| Register any preprocess fluid solve callback functions.
|
|
void | preprocessSolveFluidEquations (double current_time, double new_time, int cycle_num) override |
| Calculate any body forces for INS solver over here.
|
|
void | registerEulerianVariables () override |
| Register Eulerian variables with the parent IBHierarchyIntegrator.
|
|
void | registerEulerianCommunicationAlgorithms () override |
| Register Eulerian refinement or coarsening algorithms with the parent IBHierarchyIntegrator.
|
|
void | preprocessIntegrateData (double current_time, double new_time, int num_cycles) override |
| Method to prepare to advance data from current_time to new_time.
|
|
void | postprocessIntegrateData (double current_time, double new_time, int num_cycles) override |
| Method to clean up data following call(s) to integrateHierarchy().
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
void | forwardEulerStep (double current_time, double new_time) override |
| Advance the positions of the Lagrangian structure using the forward Euler method.
|
|
void | backwardEulerStep (double current_time, double new_time) override |
| Advance the positions of the Lagrangian structure using the backward Euler method.
|
|
void | midpointStep (double current_time, double new_time) override |
| Advance the positions of the Lagrangian structure using the (explicit) midpoint rule.
|
|
void | trapezoidalStep (double current_time, double new_time) override |
| Advance the positions of the Lagrangian structure using the trapezoidal rule.
|
|
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.
|
|
void | putToDatabase (SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > db) override |
| Override the putToDatabase method of the base Serializable class.
|
|
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.
|
|
void | getConstraintForce (Vec *L, const double data_time) override |
| Get the constraint rigid body force at the specified time within the current time interval.
|
|
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.
|
|
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.
|
|
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.
|
|
void | setInterpolatedVelocityVector (Vec V, const double data_time) override |
| Prepare the CIBMethod class to get the interpolated fluid velocity.
|
|
void | getInterpolatedVelocity (Vec V, const double data_time, const double scale=1.0) override |
| Get interpolated velocity from the Eulerian grid.
|
|
void | computeMobilityRegularization (Vec D, Vec L, const double scale=1.0) override |
| Compute regularization vector for the mobility problem.
|
|
unsigned int | getNumberOfNodes (const unsigned int part) const override |
| Get number of nodes for a particular structure registered with CIBMethod.
|
|
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.
|
|
void | computeNetRigidGeneralizedForce (const unsigned int part, Vec L, IBTK::RigidDOFVector &F) override |
| Compute total force and torque on the rigid structure(s).
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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) |
|
| IBMethod (std::string object_name, SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > input_db, bool register_for_restart=true) |
| Constructor.
|
|
| ~IBMethod () |
| Destructor.
|
|
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::LDataManager * | getLDataManager () const |
|
SAMRAI::tbox::Pointer< IBInstrumentPanel > | getIBInstrumentPanel () 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 | preprocessIntegrateData (double current_time, double new_time, int num_cycles) override |
|
void | postprocessIntegrateData (double current_time, double new_time, int num_cycles) 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 | interpolateVelocity (int u_data_idx, const std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::CoarsenSchedule< NDIM > > > &u_synch_scheds, const std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineSchedule< NDIM > > > &u_ghost_fill_scheds, double data_time) override |
|
void | 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 | forwardEulerStep (double current_time, double new_time) override |
|
void | backwardEulerStep (double current_time, double new_time) override |
|
void | midpointStep (double current_time, double new_time) override |
|
void | trapezoidalStep (double current_time, double new_time) override |
|
void | computeLagrangianForce (double data_time) override |
|
void | computeLinearizedLagrangianForce (Vec &X_vec, double data_time) override |
|
void | constructLagrangianForceJacobian (Mat &A, MatType mat_type, double data_time) override |
|
void | spreadForce (int f_data_idx, IBTK::RobinPhysBdryPatchStrategy *f_phys_bdry_op, const std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineSchedule< NDIM > > > &f_prolongation_scheds, double data_time) override |
|
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 | initializePatchHierarchy (SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, SAMRAI::tbox::Pointer< SAMRAI::mesh::GriddingAlgorithm< NDIM > > gridding_alg, int u_data_idx, const std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::CoarsenSchedule< NDIM > > > &u_synch_scheds, const std::vector< SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineSchedule< NDIM > > > &u_ghost_fill_scheds, int integrator_step, double init_data_time, bool initial_time) override |
|
void | 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 |
|
void | initializeLevelData (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int level_number, double init_data_time, bool can_be_refined, bool initial_time, SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchLevel< NDIM > > old_level, bool allocate_data) override |
|
void | resetHierarchyConfiguration (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int coarsest_level, int finest_level) override |
|
void | applyGradientDetector (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int level_number, double error_data_time, int tag_index, bool initial_time, bool uses_richardson_extrapolation_too) override |
|
void | putToDatabase (SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > db) override |
|
double | convertTimeEnumToDouble (IBTK::TimePoint time_pt) |
| Convert the enum TimePoint to it respective value.
|
|
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.
|
|
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.
|
|
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.
|
|
| IBImplicitStrategy ()=default |
| Constructor.
|
|
virtual | ~IBImplicitStrategy ()=default |
| Virtual destructor.
|
|
| IBStrategy ()=default |
| Constructor.
|
|
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) |
|
void | initializeLevelData (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int level_number, double init_data_time, bool can_be_refined, bool initial_time, SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchLevel< NDIM > > old_level, bool allocate_data) override |
|
void | resetHierarchyConfiguration (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int coarsest_level, int finest_level) override |
|
void | applyGradientDetector (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM > > hierarchy, int level_number, double error_data_time, int tag_index, bool initial_time, bool uses_richardson_extrapolation_too) override |
|
void | putToDatabase (SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > db) override |
|
Public Member Functions inherited from SAMRAI::mesh::StandardTagAndInitStrategy< NDIM > |
virtual double | getLevelDt (const tbox::Pointer< hier::BasePatchLevel< NDIM > > level, const double dt_time, const bool initial_time) |
|
virtual double | advanceLevel (const tbox::Pointer< hier::BasePatchLevel< NDIM > > level, const tbox::Pointer< hier::BasePatchHierarchy< NDIM > > hierarchy, const double current_time, const double new_time, const bool first_step, const bool last_step, const bool regrid_advance=false) |
|
virtual void | resetTimeDependentData (const tbox::Pointer< hier::BasePatchLevel< NDIM > > level, const double new_time, const bool can_be_refined) |
|
virtual void | resetDataToPreadvanceState (const tbox::Pointer< hier::BasePatchLevel< NDIM > > level) |
|
virtual void | applyRichardsonExtrapolation (const tbox::Pointer< hier::PatchLevel< NDIM > > level, const double error_data_time, const int tag_index, const double deltat, const int error_coarsen_ratio, const bool initial_time, const bool uses_gradient_detector_too) |
|
virtual void | coarsenDataForRichardsonExtrapolation (const tbox::Pointer< hier::PatchHierarchy< NDIM > > hierarchy, const int level_number, const tbox::Pointer< hier::PatchLevel< NDIM > > coarser_level, const double coarsen_data_time, const bool before_advance) |
|
| CIBStrategy (const unsigned int parts) |
| Constructor of the class.
|
|
virtual | ~CIBStrategy () |
| Destructor of the class.
|
|
unsigned int | getNumberOfRigidStructures () const |
| Get number of rigid structures registered with this class.
|
|
void | setInitialCenterOfMass (const unsigned int part, const Eigen::Vector3d &XCOM_0) |
| Set the initial center of mass location for the structures.
|
|
void | setSolveRigidBodyVelocity (const unsigned int part, const IBTK::FreeRigidDOFVector &solve_rigid_dofs) |
| Set what rigid DOFs need to be solved for this particular structure.
|
|
const IBTK::FreeRigidDOFVector & | getSolveRigidBodyVelocity (const unsigned int part, int &num_free_dofs) const |
| Query what rigid DOFs need to be solved for.
|
|
const IBTK::RigidDOFVector & | getNetRigidGeneralizedForce (const unsigned int part) |
| Get total torque and force on the structure at new_time within the current time interval.
|
|
void | updateFreeDOFsMapping () |
| Update the mapping of free DOFs for all structures if they are collected in a global vector.
|
|
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.
|
|
void | updateNewRigidBodyVelocity (const unsigned int part, Vec U) |
| Update the rigid body velocity obtained from the constraint Stokes solver for free-moving case.
|
|
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.
|
|
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.
|
|
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.
|
|
void | getCurrentRigidBodyVelocity (const unsigned int part, IBTK::RigidDOFVector &U) |
| Get the rigid body translational velocity at the beginning of the timestep.
|
|
void | getNewRigidBodyVelocity (const unsigned int part, IBTK::RigidDOFVector &U) |
| Get the rigid body translational velocity at the end of the timestep.
|
|
const Eigen::Vector3d & | getCurrentBodyCenterOfMass (const unsigned int part) |
| Get body center of mass at the current time step.
|
|
const Eigen::Vector3d & | getNewBodyCenterOfMass (const unsigned int part) |
| Get body center of mass at half time step.
|
|