IBAMR
An adaptive and distributed-memory parallel implementation of the immersed boundary (IB) method
|
Class CIBMobilitySolver solves for the constraint forces
#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. | |
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. | |
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. | |
bool | solveBodyMobilitySystem (Vec x, Vec b) |
Solves the mobility problem. | |
void | initializeSolverState (Vec x, Vec b) |
Initialize the mobility solver. | |
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. | |
Class CIBMobilitySolver solves for the constraint forces
Here,
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