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

CarmanKozenyDragForce provides an implementation of Carman-Kozeny drag force to impose zero velocity inside the solid $ \bm{u}=\bm{u}_b = 0$. More...

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

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

Public Member Functions

 CarmanKozenyDragForce (std::string object_name, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > H_var, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > lf_var, SAMRAI::tbox::Pointer< IBAMR::AdvDiffHierarchyIntegrator > adv_diff_solver, SAMRAI::tbox::Pointer< IBAMR::INSVCStaggeredHierarchyIntegrator > fluid_solver, SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > input_db, bool register_for_restart=true)
 
void preprocessComputeBrinkmanPenalization (double current_time, double new_time, int num_cycles) override
 Preprocess routine before computing Carman-Kozeny term.
 
void computeBrinkmanVelocity (int u_idx, double time, int cycle_num) override
 
void demarcateBrinkmanZone (int u_idx, double time, int cycle_num) override
 Demarcate the Brinkman zone (solid) with Carman-Kozeny term term.
 
void postprocessComputeBrinkmanPenalization (double current_time, double new_time, int num_cycles) override
 Postprocess routine after computing Brinkman penalization terms.
 
void putToDatabase (SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > db) override
 Write out object state to the given database.
 
- Public Member Functions inherited from IBAMR::BrinkmanPenalizationStrategy
 BrinkmanPenalizationStrategy (std::string object_name, bool register_for_restart=true)
 
virtual void setTimeInterval (double current_time, double new_time)
 Set the time interval in which Brinkman velocity is computed.
 
virtual void setBrinkmanCoefficient (double chi)
 Set the Brinkman penalization coefficient. More...
 
virtual void setBrinkmanPenaltyFactor (double penalty_factor)
 Set Brinkman penalization penalty factor.
 
const std::stringgetName () const
 
double getBrinkmanCoefficient () const
 
double getBrinkmanPenaltyFactor () const
 
std::pair< double, double > getCurrentTimeInterval () const
 

Protected Attributes

SAMRAI::tbox::Pointer< IBAMR::AdvDiffHierarchyIntegratord_adv_diff_solver
 Pointers to solvers.
 
SAMRAI::tbox::Pointer< IBAMR::INSVCStaggeredHierarchyIntegratord_fluid_solver
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > d_H_var
 Heaviside variable defining the gas-pcm interface.
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > d_lf_var
 Liquid fraction variable.
 
- Protected Attributes inherited from IBAMR::BrinkmanPenalizationStrategy
std::string d_object_name
 
bool d_registered_for_restart
 
double d_current_time = std::numeric_limits<double>::quiet_NaN()
 
double d_new_time = std::numeric_limits<double>::quiet_NaN()
 
double d_penalty_factor = 1.0
 
bool d_use_rho_scale = true
 
bool d_use_mu_scale = false
 

Detailed Description

CarmanKozenyDragForce provides an implementation of Carman-Kozeny drag force to impose zero velocity inside the solid $ \bm{u}=\bm{u}_b = 0$.

The penalization force is taken to be $ A_d(\bm{u}_b - \bm{u}^{n+1}) $. The class computes the coefficient $A_d $ of the fluid velocity $ \bm{u}^{n+1} $ for the variable-coefficient INS solvers of INSVCStaggeredHierarchyIntegrator. This is done in the CarmanKozenyDragForce::demarcateBrinkmanZone method. Here $ A_d = C_d\frac{\alpha_S}{(1-alpha_S)^3+e_d}$, $ \alpha_S $ is the volume fraction of the solid, $ C_d$ and $ e_d$ are the model parameters. The rigid body velocity $\bm{u}_b$ is taken to be zero. The penalty parameter C_d is taken to be $C_d = ( \rho / \Delta t + \mu / h^2)$. The user can choose the density or the inertia scale or both for $C_d$ through input.

Member Function Documentation

◆ computeBrinkmanVelocity()

void IBAMR::CarmanKozenyDragForce::computeBrinkmanVelocity ( int  u_idx,
double  time,
int  cycle_num 
)
overridevirtual
   \brief Compute the desired rigid body velocity in the Brinkman penalized (solid) zone. The present
  • * implementation sets rigid body velocity to be zero.

Implements IBAMR::BrinkmanPenalizationStrategy.


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