Class IBFEDirectForcingKinematics is a helper class that provides direct forcing IBMethod functionality to the IBFEMethod class.
More...
#include </home/runner/work/IBAMR/IBAMR/include/ibamr/IBFEDirectForcingKinematics.h>
|
using | KinematicsFcnPtr = void(*)(double data_time, Eigen::Vector3d &U_com, Eigen::Vector3d &W_com, void *ctx) |
| Typedef specifying interface for specifying rigid body velocities.
|
|
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW | IBFEDirectForcingKinematics (std::string object_name, SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > input_db, SAMRAI::tbox::Pointer< IBAMR::IBFEMethod > ibfe_method_ops, int part, bool register_for_restart=true) |
| Constructor. More...
|
|
virtual | ~IBFEDirectForcingKinematics () |
| Destructor.
|
|
void | registerKinematicsFunction (KinematicsFcnPtr comvelfcn, void *ctx=nullptr) |
| Register user defined constrained velocity functions.
|
|
void | registerKinematicsFunction (const KinematicsFcnData &data) |
| Register user defined velocity function data.
|
|
virtual void | setSolveRigidBodyVelocity (const IBTK::FreeRigidDOFVector &solve_rigid_dofs) |
| Set what rigid DOFs need to be solved for this particular structure.
|
|
virtual void | initializeKinematicsData (bool initial_time=true) |
|
virtual void | preprocessIntegrateData (double current_time, double new_time, int num_cycles) |
|
virtual void | forwardEulerStep (double current_time, double new_time, libMesh::PetscVector< double > &X_current_petsc, libMesh::PetscVector< double > &X_half_petsc, libMesh::PetscVector< double > &X_new_petsc) |
|
virtual void | midpointStep (double current_time, double new_time, libMesh::PetscVector< double > &X_current_petsc, libMesh::PetscVector< double > &X_half_petsc, libMesh::PetscVector< double > &X_new_petsc) |
|
virtual void | trapezoidalStep (double current_time, double new_time, libMesh::PetscVector< double > &X_current_petsc, libMesh::PetscVector< double > &X_half_petsc, libMesh::PetscVector< double > &X_new_petsc) |
|
virtual void | computeLagrangianForce (libMesh::PetscVector< double > &F_petsc, libMesh::PetscVector< double > &X_petsc, libMesh::PetscVector< double > &U_petsc, const double data_time) |
|
virtual void | postprocessIntegrateData (double current_time, double new_time, int num_cycles) |
|
const Eigen::Vector3d & | getStructureCOM () const |
|
const Eigen::Vector3d & | getCOMTransVelocity () const |
|
const Eigen::Vector3d & | getCOMRotVelocity () const |
|
void | putToDatabase (SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > db) override |
| Write out object state to the given database.
|
|
|
double | d_current_time |
|
double | d_new_time |
|
double | d_half_time |
|
SAMRAI::tbox::Pointer< IBAMR::IBFEMethod > | d_ibfe_method_ops |
|
int | d_part |
|
std::string | d_object_name |
|
KinematicsFcnData | d_kinematics |
|
double | d_rho |
|
Eigen::Vector3d | d_center_of_mass_initial = Eigen::Vector3d::Zero() |
|
Eigen::Vector3d | d_center_of_mass_current = Eigen::Vector3d::Zero() |
|
Eigen::Vector3d | d_center_of_mass_half = Eigen::Vector3d::Zero() |
|
Eigen::Vector3d | d_center_of_mass_new = Eigen::Vector3d::Zero() |
|
Eigen::Quaterniond | d_quaternion_current = Eigen::Quaterniond::Identity() |
|
Eigen::Quaterniond | d_quaternion_half = Eigen::Quaterniond::Identity() |
|
Eigen::Quaterniond | d_quaternion_new = Eigen::Quaterniond::Identity() |
|
IBTK::FRDV | d_solve_rigid_vel |
|
Eigen::Vector3d | d_trans_vel_current = Eigen::Vector3d::Zero() |
|
Eigen::Vector3d | d_trans_vel_half = Eigen::Vector3d::Zero() |
|
Eigen::Vector3d | d_trans_vel_new = Eigen::Vector3d::Zero() |
|
Eigen::Vector3d | d_rot_vel_current = Eigen::Vector3d::Zero() |
|
Eigen::Vector3d | d_rot_vel_half = Eigen::Vector3d::Zero() |
|
Eigen::Vector3d | d_rot_vel_new = Eigen::Vector3d::Zero() |
|
Eigen::Matrix3d | d_inertia_tensor_initial = Eigen::Matrix3d::Zero() |
|
bool | d_registered_for_restart |
|
Class IBFEDirectForcingKinematics is a helper class that provides direct forcing IBMethod functionality to the IBFEMethod class.
◆ IBFEDirectForcingKinematics()
Constructor.
Since this class has Eigen object members, which have special alignment requirements, we must explicitly override operator new to get the correct aligment for the object as a whole.
◆ computeCOMOfStructure()
void IBAMR::IBFEDirectForcingKinematics::computeCOMOfStructure |
( |
Eigen::Vector3d & |
X0 | ) |
|
|
protected |
Compute center of mass of the structure.
◆ computeLagrangianForce()
void IBAMR::IBFEDirectForcingKinematics::computeLagrangianForce |
( |
libMesh::PetscVector< double > & |
F_petsc, |
|
|
libMesh::PetscVector< double > & |
X_petsc, |
|
|
libMesh::PetscVector< double > & |
U_petsc, |
|
|
const double |
data_time |
|
) |
| |
|
virtual |
Compute the Lagrangian force at the specified time within the current time interval.
◆ computeMOIOfStructure()
void IBAMR::IBFEDirectForcingKinematics::computeMOIOfStructure |
( |
Eigen::Matrix3d & |
I, |
|
|
const Eigen::Vector3d & |
X0 |
|
) |
| |
|
protected |
Compute moment of inertia tensor for the structure.
◆ forwardEulerStep()
void IBAMR::IBFEDirectForcingKinematics::forwardEulerStep |
( |
double |
current_time, |
|
|
double |
new_time, |
|
|
libMesh::PetscVector< double > & |
X_current_petsc, |
|
|
libMesh::PetscVector< double > & |
X_half_petsc, |
|
|
libMesh::PetscVector< double > & |
X_new_petsc |
|
) |
| |
|
virtual |
Advance the positions of the Lagrangian structure using the forward Euler method.
◆ getCOMRotVelocity()
const Eigen::Vector3d& IBAMR::IBFEDirectForcingKinematics::getCOMRotVelocity |
( |
| ) |
const |
|
inline |
Get COM rotational velocity.
◆ getCOMTransVelocity()
const Eigen::Vector3d& IBAMR::IBFEDirectForcingKinematics::getCOMTransVelocity |
( |
| ) |
const |
|
inline |
Get COM translational velocity.
◆ getStructureCOM()
const Eigen::Vector3d& IBAMR::IBFEDirectForcingKinematics::getStructureCOM |
( |
| ) |
const |
|
inline |
◆ initializeKinematicsData()
void IBAMR::IBFEDirectForcingKinematics::initializeKinematicsData |
( |
bool |
initial_time = true | ) |
|
|
virtual |
Initialize kinematics data only initially.
◆ midpointStep()
void IBAMR::IBFEDirectForcingKinematics::midpointStep |
( |
double |
current_time, |
|
|
double |
new_time, |
|
|
libMesh::PetscVector< double > & |
X_current_petsc, |
|
|
libMesh::PetscVector< double > & |
X_half_petsc, |
|
|
libMesh::PetscVector< double > & |
X_new_petsc |
|
) |
| |
|
virtual |
Advance the positions of the Lagrangian structure using the (explicit) midpoint rule.
◆ postprocessIntegrateData()
void IBAMR::IBFEDirectForcingKinematics::postprocessIntegrateData |
( |
double |
current_time, |
|
|
double |
new_time, |
|
|
int |
num_cycles |
|
) |
| |
|
virtual |
Postprocess kinematics after hierarchy integrates.
◆ preprocessIntegrateData()
void IBAMR::IBFEDirectForcingKinematics::preprocessIntegrateData |
( |
double |
current_time, |
|
|
double |
new_time, |
|
|
int |
num_cycles |
|
) |
| |
|
virtual |
Preprocess kinematics before hierarchy integrates.
◆ trapezoidalStep()
void IBAMR::IBFEDirectForcingKinematics::trapezoidalStep |
( |
double |
current_time, |
|
|
double |
new_time, |
|
|
libMesh::PetscVector< double > & |
X_current_petsc, |
|
|
libMesh::PetscVector< double > & |
X_half_petsc, |
|
|
libMesh::PetscVector< double > & |
X_new_petsc |
|
) |
| |
|
virtual |
Advance the positions of the Lagrangian structure using the (explicit) trapezoidal rule.
The documentation for this class was generated from the following files:
- /home/runner/work/IBAMR/IBAMR/include/ibamr/IBFEDirectForcingKinematics.h
- /home/runner/work/IBAMR/IBAMR/src/IB/IBFEDirectForcingKinematics.cpp