IBAMR
An adaptive and distributed-memory parallel implementation of the immersed boundary (IB) method
|
Class CIBMobilitySolver solves for the constraint forces and rigid body velocity of the structure(s). Specifically, the class solves two types of matrix-equations. More...
#include </home/runner/work/IBAMR/IBAMR/include/ibamr/CIBMobilitySolver.h>
Public Member Functions | |
CIBMobilitySolver (std::string object_name, SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > input_db, SAMRAI::tbox::Pointer< IBAMR::INSStaggeredHierarchyIntegrator > navier_stokes_integrator, SAMRAI::tbox::Pointer< IBAMR::CIBStrategy > cib_strategy) | |
The only constructor of this class. | |
virtual | ~CIBMobilitySolver () |
Destructor for this class. | |
void | setSolutionTime (const double solution_time) |
Set the time at which the solution is to be evaluated. | |
void | setTimeInterval (const double current_time, const double new_time) |
Set the time interval of integration. | |
void | setInterpScale (const double interp_scale) |
Set scale for interp operator. | |
void | setSpreadScale (const double spread_scale) |
Set scale for spread operator. | |
void | setRegularizeMobilityScale (const double reg_mob_scale) |
Set scale for regularizing mobility matrix. | |
void | setNormalizeSpreadForce (const bool normalize_force) |
Set if the mean of the Lagrangian force is to be subtracted from the Eulerian force variable. More... | |
void | setVelocityPoissonSpecifications (const SAMRAI::solv::PoissonSpecifications &u_problem_coefs) |
Set the PoissonSpecifications object used to specify the coefficients for the momentum equation in the incompressible Stokes operator. | |
void | setPhysicalBcCoefs (const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &u_bc_coefs, SAMRAI::solv::RobinBcCoefStrategy< NDIM > *p_bc_coef) |
Set the SAMRAI::solv::RobinBcCoefStrategy objects used to specify physical boundary conditions. More... | |
void | setPhysicalBoundaryHelper (SAMRAI::tbox::Pointer< IBAMR::StaggeredStokesPhysicalBoundaryHelper > bc_helper) |
Set the StokesSpecifications object and timestep size used to specify the coefficients for the time-dependent incompressible Stokes operator. | |
bool | solveMobilitySystem (Vec x, Vec b) |
Solves the mobility problem. More... | |
bool | solveBodyMobilitySystem (Vec x, Vec b) |
Solves the mobility problem. More... | |
void | initializeSolverState (Vec x, Vec b) |
Initialize the mobility solver. More... | |
void | deallocateSolverState () |
Deallocate the mobility solver. | |
void | getMobilitySolvers (IBAMR::KrylovMobilitySolver **km_solver=nullptr, IBAMR::DirectMobilitySolver **dm_solver=nullptr, IBAMR::KrylovFreeBodyMobilitySolver **fbm_solver=nullptr) |
Get access to mobility solvers. More... | |
Class CIBMobilitySolver solves for the constraint forces and rigid body velocity of the structure(s). Specifically, the class solves two types of matrix-equations.
Here, is the interpolation operator, is the spreading operator, is the incompressible Stokes operator, is the rigid body operator, is the desired velocity at the nodes of the structure(s), and is the net external force and torque on the body.
This class employs direct solver for the approximate mobility and body-mobility sub-problems. The approximate mobility matrix is intended to be used in the preconditioning step of the overall constraint solver. The overall preconditioner is implemented in
void IBAMR::CIBMobilitySolver::getMobilitySolvers | ( | IBAMR::KrylovMobilitySolver ** | km_solver = nullptr , |
IBAMR::DirectMobilitySolver ** | dm_solver = nullptr , |
||
IBAMR::KrylovFreeBodyMobilitySolver ** | fbm_solver = nullptr |
||
) |
Get access to mobility solvers.
void IBAMR::CIBMobilitySolver::initializeSolverState | ( | Vec | x, |
Vec | b | ||
) |
Initialize the mobility solver.
x | Vec storing the Lagrange multiplier |
b | Vec storing the desired velocity |
void IBAMR::CIBMobilitySolver::setNormalizeSpreadForce | ( | const bool | normalize_force | ) |
Set if the mean of the Lagrangian force is to be subtracted from the Eulerian force variable.
void IBAMR::CIBMobilitySolver::setPhysicalBcCoefs | ( | const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > & | u_bc_coefs, |
SAMRAI::solv::RobinBcCoefStrategy< NDIM > * | p_bc_coef | ||
) |
Set the SAMRAI::solv::RobinBcCoefStrategy objects used to specify physical boundary conditions.
u_bc_coefs | IBTK::Vector of pointers to objects that can set the Robin boundary condition coefficients for the velocity. |
p_bc_coef | Pointer to object that can set the Robin boundary condition coefficients for the pressure. |
bool IBAMR::CIBMobilitySolver::solveBodyMobilitySystem | ( | Vec | x, |
Vec | b | ||
) |
Solves the mobility problem.
x | Vec storing the rigid body velocity |
b | Vec storing the net external generalized force |
true
if the solver converged to the specified tolerances, false
otherwise bool IBAMR::CIBMobilitySolver::solveMobilitySystem | ( | Vec | x, |
Vec | b | ||
) |
Solves the mobility problem.
x | Vec storing the Lagrange multiplier. |
b | Vec storing the desired velocity. |
true
if the solver converged to the specified tolerances, false
otherwise