|
IBAMR
IBAMR version 0.19.
|
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>

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::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 | 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::FreeRigidDOFVector & | getSolveRigidBodyVelocity (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::RigidDOFVector & | getNetRigidGeneralizedForce (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 > > ¤t_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) |
| INSHierarchyIntegrator * | getINSHierarchyIntegrator () 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::HierarchyMathOps > | getHierarchyMathOps () const |
| void | registerVariable (int ¤t_idx, int &new_idx, int &scratch_idx, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > variable, const SAMRAI::hier::IntVector< NDIM > &scratch_ghosts=SAMRAI::hier::IntVector< NDIM >(0), const std::string &coarsen_name="NO_COARSEN", const std::string &refine_name="NO_REFINE", SAMRAI::tbox::Pointer< 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) |
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 > ¢er_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 |
| 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) |
| using IBAMR::CIBMethod::ConstrainedCOMVelocityFcnPtr = void (*)(double data_time, Eigen::Vector3d& U_com, Eigen::Vector3d& W_com, void* ctx) |
| using IBAMR::CIBMethod::ExternalForceTorqueFcnPtr = void (*)(double data_time, Eigen::Vector3d& F, Eigen::Vector3d& T, void* ctx) |
| using IBAMR::CIBMethod::preprocessSolveFluidEqn_callbackfcn = void (*)(const double, const double, const int, void*) |
| 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 |
||
| ) |
| IBAMR::CIBMethod::~CIBMethod | ( | ) |
| void IBAMR::CIBMethod::registerConstrainedVelocityFunction | ( | ConstrainedNodalVelocityFcnPtr | nodalvelfcn, |
| ConstrainedCOMVelocityFcnPtr | comvelfcn, | ||
| void * | ctx = nullptr, |
||
| unsigned int | part = 0 |
||
| ) |
| void IBAMR::CIBMethod::registerConstrainedVelocityFunction | ( | const ConstrainedVelocityFcnsData & | data, |
| unsigned int | part = 0 |
||
| ) |
| void IBAMR::CIBMethod::registerExternalForceTorqueFunction | ( | ExternalForceTorqueFcnPtr | forcetorquefcn, |
| void * | ctx = nullptr, |
||
| unsigned int | part = 0 |
||
| ) |
| void IBAMR::CIBMethod::registerExternalForceTorqueFunction | ( | const ExternalForceTorqueFcnData & | data, |
| unsigned int | part = 0 |
||
| ) |
| int IBAMR::CIBMethod::getStructuresLevelNumber | ( | ) | const |
| void IBAMR::CIBMethod::registerPreProcessSolveFluidEquationsCallBackFcn | ( | preprocessSolveFluidEqn_callbackfcn | callback, |
| void * | ctx | ||
| ) |
|
overridevirtual |
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Reimplemented from IBAMR::IBStrategy.
|
overridevirtual |
Reimplemented from IBAMR::IBStrategy.
|
override |
|
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.
|
overridevirtual |
Implements IBAMR::IBStrategy.
|
overridevirtual |
Implements IBAMR::IBStrategy.
Implements IBAMR::IBStrategy.
Reimplemented from IBAMR::IBStrategy.
Implements IBAMR::IBStrategy.
Implements IBAMR::IBStrategy.
| void IBAMR::CIBMethod::registerVisItDataWriter | ( | SAMRAI::tbox::Pointer< SAMRAI::appu::VisItDataWriter< NDIM > > | visit_writer | ) |
|
overridevirtual |
Implements SAMRAI::tbox::Serializable.
|
overridevirtual |
Implements IBAMR::CIBStrategy.
|
overridevirtual |
Implements IBAMR::CIBStrategy.
|
overridevirtual |
Reimplemented from IBAMR::CIBStrategy.
|
overridevirtual |
Reimplemented from IBAMR::CIBStrategy.
|
overridevirtual |
Implements IBAMR::CIBStrategy.
|
overridevirtual |
Reimplemented from IBAMR::CIBStrategy.
|
overridevirtual |
Implements IBAMR::CIBStrategy.
|
overridevirtual |
Implements IBAMR::CIBStrategy.
Implements IBAMR::CIBStrategy.
|
overridevirtual |
Implements IBAMR::CIBStrategy.
|
overridevirtual |
Implements IBAMR::CIBStrategy.
|
overridevirtual |
Reimplemented from IBAMR::CIBStrategy.
|
overridevirtual |
Reimplemented from IBAMR::CIBStrategy.
|
overridevirtual |
Reimplemented from IBAMR::CIBStrategy.
|
overridevirtual |
Reimplemented from IBAMR::CIBStrategy.
|
overridevirtual |
Reimplemented from IBAMR::CIBStrategy.
| bool IBAMR::CIBMethod::flagRegrid | ( | ) | const |
Function to determine whether regridding should occur at the current time step.
| void IBAMR::CIBMethod::setVelocityPhysBdryOp | ( | IBTK::RobinPhysBdryPatchStrategy * | u_phys_bdry_op | ) |
|
private |
|
private |
|
private |
|
private |
|
private |
| virtual void IBAMR::CIBStrategy::setRigidBodyVelocity |
Explicitly use the other overload of this function from the base class.
| virtual void IBAMR::CIBStrategy::setRigidBodyVelocity |
Explicitly use the other overload of this function from the base class.
| virtual void IBAMR::CIBStrategy::setRigidBodyVelocity |
Explicitly use the other overload of this function from the base class.
| virtual void IBAMR::CIBStrategy::computeNetRigidGeneralizedForce |
Explicitly use the other overloads of this function from the base class.
| virtual void IBAMR::CIBStrategy::computeNetRigidGeneralizedForce |
Explicitly use the other overloads of this function from the base class.
| virtual void IBAMR::CIBStrategy::computeNetRigidGeneralizedForce |
Explicitly use the other overloads of this function from the base class.
|
inherited |
Supply a Lagrangian force object.
|
inherited |
Supply a Lagrangian source object.
|
inherited |
Supply a Lagrangian initialization object.
|
inherited |
Free references to Lagrangian initialization objects.
|
inherited |
Supply a post processor object.
|
inherited |
Return a pointer to the Lagrangian data manager object.
|
inherited |
Return a pointer to the instrumentation manager object.
|
inherited |
Register a Lagrangian Silo data writer so this class will write plot files that may be postprocessed with the VisIt visualization tool.
|
overridevirtualinherited |
Return the number of ghost cells required by the Lagrangian-Eulerian interaction routines.
Implements IBAMR::IBStrategy.
|
overridevirtualinherited |
Setup the tag buffer.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtualinherited |
Inactivate a structure/part. See IBAMR::IBStrategy::inactivateLagrangianStructure().
Reimplemented from IBAMR::IBStrategy.
|
overridevirtualinherited |
Activate a previously inactivated structure/part to be used again in FSI calculations. See IBAMR::IBStrategy::activateLagrangianStructure().
Reimplemented from IBAMR::IBStrategy.
|
overridevirtualinherited |
Determine whether or not the given structure or part is currently activated. See IBAMR::IBStrategy::getLagrangianStructureIsActivated().
Reimplemented from IBAMR::IBStrategy.
|
overridevirtualinherited |
Create solution and rhs data on the specified level of the patch hierarchy.
Implements IBAMR::IBImplicitStrategy.
|
overridevirtualinherited |
Setup solution and rhs data on the specified level of the patch hierarchy.
Implements IBAMR::IBImplicitStrategy.
|
overridevirtualinherited |
Set the value of the updated position vector.
Implements IBAMR::IBImplicitStrategy.
|
overridevirtualinherited |
Set the value of the intermediate position vector used in evaluating the linearized problem.
Implements IBAMR::IBImplicitStrategy.
|
overridevirtualinherited |
Compute the residual on the specified level of the patch hierarchy.
Implements IBAMR::IBImplicitStrategy.
|
overridevirtualinherited |
Compute the linearized residual for the given intermediate position vector.
Implements IBAMR::IBImplicitStrategy.
|
overridevirtualinherited |
Update the positions used for the "fixed" interpolation and spreading operators.
Reimplemented from IBAMR::IBStrategy.
|
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.
|
overridevirtualinherited |
Compute the Lagrangian force at the specified time within the current time interval.
Implements IBAMR::IBStrategy.
Reimplemented in IBAMR::PenaltyIBMethod.
|
overridevirtualinherited |
Compute the Lagrangian force of the linearized problem for the specified configuration of the updated position vector.
Implements IBAMR::IBImplicitStrategy.
|
overridevirtualinherited |
Construct the linearized Lagrangian force Jacobian.
Implements IBAMR::IBImplicitStrategy.
|
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.
|
overridevirtualinherited |
Construct the IB interpolation operator.
Implements IBAMR::IBImplicitStrategy.
|
overridevirtualinherited |
Indicate whether there are any internal fluid sources/sinks.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtualinherited |
Compute the Lagrangian source/sink density at the specified time within the current time interval.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtualinherited |
Spread the Lagrangian source/sink density to the Cartesian grid at the specified time within the current time interval.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtualinherited |
Compute the pressures at the positions of any distributed internal fluid sources or sinks.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtualinherited |
Execute user-defined post-processing operations.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtualinherited |
Register a load balancer and work load patch data index with the IB strategy object.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtualinherited |
Add the estimated computational work from the current object per cell into the specified workload_data_idx.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtualinherited |
Begin redistributing Lagrangian data prior to regridding the patch hierarchy.
Reimplemented from IBAMR::IBStrategy.
|
overridevirtualinherited |
Complete redistributing Lagrangian data following regridding the patch hierarchy.
Reimplemented from IBAMR::IBStrategy.
|
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.
|
overrideinherited |
Reset cached hierarchy dependent data.
|
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.
|
overrideinherited |
Set integer tags to "one" in cells where refinement of the given level should occur according to user-supplied feature detection criteria.
|
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.
|
inherited |
If TimePoint is not one of CURRENT_TIME, HALF_TIME, or NEW_TIME, this returns NaN.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
protectedinherited |
Get the linearized structure position data.
If the linearized position data does not exist, it will be created.
|
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().
|
protectedinherited |
Get the linearized structure velocity data.
If the linearized velocity data does not exist, it will be created.
|
protectedinherited |
Get the linearized structure force data.
If the linearized force data does not exist, it will be created.
|
protectedinherited |
Interpolate the current and new data to obtain values at the midpoint of the time interval.
|
protectedinherited |
Set the elements of the Lagrangian vector to zero at anchored nodes of the curvilinear mesh.
|
staticprotectedinherited |
|
protectedinherited |
|
privateinherited |
Reset the Lagrangian force function object.
|
privateinherited |
Reset the Lagrangian source function object.
|
privateinherited |
Compute the flow rates and pressures in the internal flow meters and pressure gauges.
|
virtualinherited |
Register the IBHierarchyIntegrator object that is using this strategy class.
Reimplemented in IBAMR::IBLevelSetMethod, and IBAMR::IBStrategySet.
|
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.
Reimplemented in IBAMR::IBFEMethod, and IBAMR::IBStrategySet.
|
inherited |
Indicate whether "fixed" interpolation and spreading operators should be used during Lagrangian-Eulerian interaction.
|
virtualinherited |
Indicate that multistep time stepping will be used.
A default implementation is provided that emits an unrecoverable exception.
| [in] | n_previous_steps | Number of previous solution values that can be used by the multistep scheme. |
Reimplemented in IBAMR::IBFEMethod.
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.
|
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.
|
protectedinherited |
Return a pointer to the INSHierarchyIntegrator object being used with the IBHierarchyIntegrator class registered with this IBStrategy object.
|
protectedinherited |
Return a pointer to the HierarchyDataOpsReal object associated with velocity-like variables.
|
protectedinherited |
Return a pointer to the HierarchyDataOpsReal object associated with pressure-like variables.
|
protectedinherited |
Return a pointer to a HierarchyMathOps object.
|
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.
|
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.
|
protectedinherited |
Register a ghost cell-filling refine algorithm.
|
protectedinherited |
Register a data-prolonging refine algorithm.
|
protectedinherited |
Register a coarsen algorithm.
|
protectedinherited |
Get ghost cell-filling refine algorithm.
|
protectedinherited |
Get data-prolonging refine algorithm.
|
protectedinherited |
Get coarsen algorithm.
|
protectedinherited |
Get ghost cell-filling refine schedules.
|
protectedinherited |
Get data-prolonging refine schedules.
|
protectedinherited |
Get coarsen schedules.
|
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.
|
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:
In the second case, the values of the boolean flags are:
|
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.
|
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.
|
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.
|
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.
|
inherited |
|
inherited |
| part | The rigid body for which we are setting the initial center of mass position. |
|
inherited |
| part | The rigid body for which we are setting the free DOFs. |
|
inherited |
|
virtualinherited |
| part | The rigid part for which velocity needs to be set. |
| U | Vec 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]\). |
|
virtualinherited |
| U | Vec 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_dofs | Boolean 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_dofs | Boolean 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_dofs | Boolean 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 \). |
|
virtualinherited |
| part | The structure index. |
| L | The Lagrange multiplier vector. |
| F | Vec storing the net generalized force. |
|
virtualinherited |
| L | The Lagrange multiplier vector. |
| F | Vec storing the net generalized force. |
| only_free_dofs | Boolean indicating if the net generalized force and torque is to be computed only for free dofs of all bodies. |
| only_imposed_dofs | Boolean indicating if the net generalized force and torque is to be computed for imposed dofs of all bodies. |
| all_dofs | Boolean indicating if the net generalized force and torque is to be computed for all dofs of all bodies. |
|
inherited |
| part | The rigid part. |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
virtualinherited |
| b | PETSc Vec to copy from. The Vec stores only free DOFs of all the structures. |
| array | Data pointer to copy to. It is a linear array of maximum free DOFs of the passed structure IDs. |
| struct_ids | Vector of structure indices. |
| array_rank | Rank of the processor on which the array is located. |
|
virtualinherited |
| b | Copy to PETSc Vec. The Vec stores only free DOFs of all the structures. |
| array | Copy from data pointer. It is a linear array of maximum free DOFs of the passed structure IDs. |
| struct_ids | Vector of structure indices. |
| array_rank | Rank of the processor on which the array is located. |
|
staticinherited |
|
staticinherited |
|
staticinherited |
|
staticinherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
protectedinherited |
| q_old | Previous applied quaternion. |
| q_new | New quaternion to set. |
| rot_mat | Matrix to set. |
| dt | Time interval of rotation. |
|
protected |
Functions to set constrained velocities of the structures.
|
protected |
Functions to set net external force and torque on free moving structures.
|
protected |
Pre and post fluid solve call back functions and contexts.
|
protected |
|
protected |
Booleans to control spreading constraint force and interpolating to Lagrangian velocities.
|
protected |
|
protected |
Boolean to flag if time integrator needs regriding
|
protected |
Eulerian variables.
|
protected |
Vector of Lagrnagian indices of all structures.
|
protected |
The object used to write out data for postprocessing by the visIt visualization tool.
|
protected |
Control printing of S[lambda]
|
protected |
Input/output.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
privateinherited |
Jacobian data.
|
privateinherited |
|
privateinherited |
|
protectedinherited |
The IBHierarchyIntegrator object that is using this strategy class.
|
protectedinherited |
Whether to use "fixed" Lagrangian-Eulerian coupling operators.
|
protectedinherited |
|
protectedinherited |
Center of mass.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
Quaternion of the body.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
Rigid body velocity of the structures.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
1.8.17