IBAMR
An adaptive and distributed-memory parallel implementation of the immersed boundary (IB) method
Public Member Functions | List of all members
IBAMR::IBLagrangianForceStrategySet Class Reference

Class IBLagrangianForceStrategySet is a utility class that allows multiple IBLagrangianForceStrategy objects to be employed by a single IBHierarchyIntegrator. More...

#include </home/runner/work/IBAMR/IBAMR/include/ibamr/IBLagrangianForceStrategySet.h>

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

Public Member Functions

template<typename InputIterator >
 IBLagrangianForceStrategySet (InputIterator first, InputIterator last)
 Constructor.
 
 ~IBLagrangianForceStrategySet ()=default
 Destructor.
 
void setTimeInterval (double current_time, double new_time) override
 Set the current and new times for the present timestep.
 
void initializeLevelData (SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, int level_number, double init_data_time, bool initial_time, IBTK::LDataManager *l_data_manager) override
 Setup the data needed to compute the forces on the specified level of the patch hierarchy.
 
void computeLagrangianForce (SAMRAI::tbox::Pointer< IBTK::LData > F_data, SAMRAI::tbox::Pointer< IBTK::LData > X_data, SAMRAI::tbox::Pointer< IBTK::LData > U_data, SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, int level_number, double data_time, IBTK::LDataManager *l_data_manager) override
 Compute the force generated by the Lagrangian structure on the specified level of the patch hierarchy. More...
 
void computeLagrangianForceJacobianNonzeroStructure (std::vector< int > &d_nnz, std::vector< int > &o_nnz, SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, int level_number, IBTK::LDataManager *l_data_manager) override
 Compute the non-zero structure of the force Jacobian matrix. More...
 
void computeLagrangianForceJacobian (Mat &J_mat, MatAssemblyType assembly_type, double X_coef, SAMRAI::tbox::Pointer< IBTK::LData > X_data, double U_coef, SAMRAI::tbox::Pointer< IBTK::LData > U_data, SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, int level_number, double data_time, IBTK::LDataManager *l_data_manager) override
 Compute the Jacobian of the force with respect to the present structure configuration and velocity. More...
 
double computeLagrangianEnergy (SAMRAI::tbox::Pointer< IBTK::LData > X_data, SAMRAI::tbox::Pointer< IBTK::LData > U_data, SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, int level_number, double data_time, IBTK::LDataManager *l_data_manager) override
 Compute the potential energy with respect to the present structure configuration and velocity.
 
- Public Member Functions inherited from IBAMR::IBLagrangianForceStrategy
 IBLagrangianForceStrategy ()=default
 Default constructor.
 
virtual ~IBLagrangianForceStrategy ()=default
 Virtual destructor.
 

Detailed Description

Class IBLagrangianForceStrategySet is a utility class that allows multiple IBLagrangianForceStrategy objects to be employed by a single IBHierarchyIntegrator.

Member Function Documentation

◆ computeLagrangianForce()

void IBAMR::IBLagrangianForceStrategySet::computeLagrangianForce ( SAMRAI::tbox::Pointer< IBTK::LData F_data,
SAMRAI::tbox::Pointer< IBTK::LData X_data,
SAMRAI::tbox::Pointer< IBTK::LData U_data,
SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > >  hierarchy,
int  level_number,
double  data_time,
IBTK::LDataManager l_data_manager 
)
overridevirtual

Compute the force generated by the Lagrangian structure on the specified level of the patch hierarchy.

Note
Nodal forces computed by this method are added to the force vector.

Reimplemented from IBAMR::IBLagrangianForceStrategy.

◆ computeLagrangianForceJacobian()

void IBAMR::IBLagrangianForceStrategySet::computeLagrangianForceJacobian ( Mat &  J_mat,
MatAssemblyType  assembly_type,
double  X_coef,
SAMRAI::tbox::Pointer< IBTK::LData X_data,
double  U_coef,
SAMRAI::tbox::Pointer< IBTK::LData U_data,
SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > >  hierarchy,
int  level_number,
double  data_time,
IBTK::LDataManager l_data_manager 
)
overridevirtual

Compute the Jacobian of the force with respect to the present structure configuration and velocity.

Note
The elements of the Jacobian should be "accumulated" in the provided matrix J.

Reimplemented from IBAMR::IBLagrangianForceStrategy.

◆ computeLagrangianForceJacobianNonzeroStructure()

void IBAMR::IBLagrangianForceStrategySet::computeLagrangianForceJacobianNonzeroStructure ( std::vector< int > &  d_nnz,
std::vector< int > &  o_nnz,
SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > >  hierarchy,
int  level_number,
IBTK::LDataManager l_data_manager 
)
overridevirtual

Compute the non-zero structure of the force Jacobian matrix.

Note
Elements indices must be global PETSc indices.

Reimplemented from IBAMR::IBLagrangianForceStrategy.


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