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

Class SurfaceTensionForceFunction provides surface tension forcing using the continuum surface tension force model of Brackbill, Kothe, and Zemach. More...

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

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

Public Member Functions

 SurfaceTensionForceFunction (const std::string &object_name, SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > input_db, const AdvDiffHierarchyIntegrator *adv_diff_solver, const SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > level_set_var)
 Constructor.
 
virtual ~SurfaceTensionForceFunction ()=default
 Destructor.
 
virtual void setSmoother (const std::string &kernel_fcn)
 Set the smoother (kernel function) to mollify the Heaviside function.
 
virtual void setSurfaceTensionCoef (double sigma)
 Set the constant surface tension coefficient.
 
virtual void setNumberOfInterfaceCells (double m)
 Set the number of interface cells m over which the surface tension force will be applied. The surface tension will take effect in the band -m*h to m*h around the interface, where h = (dx*dy)^(1/2) in 2D and h = (dx*dy*dz)^(1/3) in 3D.
 
std::string getSmoother () const
 Get the smoother (kernel function) to mollify the Heaviside function.
 
double getSurfaceTensionCoef () const
 Get the constant surface tension coefficient.
 
double getNumberOfInterfaceCells () const
 Get the number of interface cells over which the surface tension force will be applied.
 
- Public Member Functions inherited from IBTK::CartGridFunction
 CartGridFunction (std::string object_name="")
 The default constructor sets the name of the strategy object.
 
virtual ~CartGridFunction ()=default
 Empty virtual destructor.
 
virtual void setDataOnPatchLevel (int data_idx, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > var, SAMRAI::tbox::Pointer< SAMRAI::hier::PatchLevel< NDIM > > patch_level, double data_time, bool initial_time=false)
 Evaluate the function on the patch interiors on the specified level of the patch hierarchy using the virtual function setDataOnPatch(). More...
 

Methods to set the data.

using MaskSurfaceTensionForcePtr = void(*)(int F_idx, SAMRAI::tbox::Pointer< IBTK::HierarchyMathOps > hier_math_ops, int cycle_num, double time, double current_time, double new_time, void *ctx)
 Function to Mask surface tension force to act only on the liquid-gas interface.
 
using ComputeSurfaceTensionCoefficientPtr = void(*)(int F_idx, SAMRAI::tbox::Pointer< IBTK::HierarchyMathOps > hier_math_ops, int cycle_num, double time, double current_time, double new_time, void *ctx)
 Function to compute the variable surface tension coefficient.
 
const AdvDiffHierarchyIntegrator *const d_adv_diff_solver
 
const SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > d_ls_var
 
TimeSteppingType d_ts_type
 
int d_C_idx = IBTK::invalid_index
 
int d_phi_idx = IBTK::invalid_index
 
std::string d_kernel_fcn
 
double d_sigma = std::numeric_limits<double>::signaling_NaN()
 
double d_num_interface_cells = std::numeric_limits<double>::signaling_NaN()
 
SAMRAI::tbox::Pointer< IBTK::HierarchyMathOpsd_hier_math_ops
 
SAMRAI::tbox::Pointer< SAMRAI::math::HierarchySideDataOpsReal< NDIM, double > > d_hier_sc_data_ops
 
bool isTimeDependent () const override
 
void setDataOnPatchHierarchy (int data_idx, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > var, SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, double data_time, bool initial_time=false, int coarsest_ln=IBTK::invalid_level_number, int finest_ln=IBTK::invalid_level_number) override
 Evaluate the function on the patch interiors on the specified levels of the patch hierarchy using the virtual function setDataOnPatch(). More...
 
void setDataOnPatch (int data_idx, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > var, SAMRAI::tbox::Pointer< SAMRAI::hier::Patch< NDIM > > patch, double data_time, bool initial_time=false, SAMRAI::tbox::Pointer< SAMRAI::hier::PatchLevel< NDIM > > level=SAMRAI::tbox::Pointer< SAMRAI::hier::PatchLevel< NDIM > >(NULL)) override
 
void registerSurfaceTensionForceMasking (MaskSurfaceTensionForcePtr callback, void *ctx)
 Register function to limit the surface tension force.
 
void registerSurfaceTensionCoefficientFunction (ComputeSurfaceTensionCoefficientPtr callback, void *ctx)
 Register function to compute the variable surface tension coefficient.
 
int getMinimumGhostWidth (const std::string &kernel_fcn)
 

Additional Inherited Members

- Protected Attributes inherited from IBTK::CartGridFunction
std::string d_object_name
 

Detailed Description

Class SurfaceTensionForceFunction provides surface tension forcing using the continuum surface tension force model of Brackbill, Kothe, and Zemach.

Note
Presently, this class assumes that the indicator function is a cell centered level-set variable that is maintained by the advection-diffusion integrator. In general, the indicator variable can either be a level set function, a volume fraction function, or a phase field function.

Reference Brackbill et. al, A continuum method for modeling surface tension

Member Function Documentation

◆ getMinimumGhostWidth()

int IBAMR::SurfaceTensionForceFunction::getMinimumGhostWidth ( const std::string kernel_fcn)
protected

Get the ghost cell width of scratch data.

◆ isTimeDependent()

bool IBAMR::SurfaceTensionForceFunction::isTimeDependent ( ) const
overridevirtual
Note
This concrete IBTK::CartGridFunction is time-dependent.

Implements IBTK::CartGridFunction.

◆ setDataOnPatch()

void IBAMR::SurfaceTensionForceFunction::setDataOnPatch ( int  data_idx,
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > >  var,
SAMRAI::tbox::Pointer< SAMRAI::hier::Patch< NDIM > >  patch,
double  data_time,
bool  initial_time = false,
SAMRAI::tbox::Pointer< SAMRAI::hier::PatchLevel< NDIM > >  level = SAMRAI::tbox::Pointer<SAMRAI::hier::PatchLevel<NDIM> >(NULL) 
)
overridevirtual

Set the data on the patch interior.

Implements IBTK::CartGridFunction.

◆ setDataOnPatchHierarchy()

void IBAMR::SurfaceTensionForceFunction::setDataOnPatchHierarchy ( int  data_idx,
SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > >  var,
SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > >  hierarchy,
double  data_time,
bool  initial_time = false,
int  coarsest_ln = IBTK::invalid_level_number,
int  finest_ln = IBTK::invalid_level_number 
)
overridevirtual

Evaluate the function on the patch interiors on the specified levels of the patch hierarchy using the virtual function setDataOnPatch().

See also
setDataOnPatch

Reimplemented from IBTK::CartGridFunction.


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