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

Class MarangoniSurfaceTensionForceFunction provides Marangoni forcing due to temperature variations. This class computes the forcing term $ F = \frac{\mathrm{d} \sigma}{\mathrm{d} T}(\nabla T |\nabla C| - (\nabla T \cdot \nabla \phi) \nabla C)$ and add it to the surface tension forcing. More...

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

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

Public Member Functions

 MarangoniSurfaceTensionForceFunction (const std::string &object_name, SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > input_db, AdvDiffHierarchyIntegrator *adv_diff_solver, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > level_set_var, SAMRAI::tbox::Pointer< SAMRAI::hier::Variable< NDIM > > T_var, SAMRAI::solv::RobinBcCoefStrategy< NDIM > *&T_bc_coef)
 Constructor.
 
virtual ~MarangoniSurfaceTensionForceFunction ()=default
 Destructor.
 
- Public Member Functions inherited from IBAMR::SurfaceTensionForceFunction
 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.
 
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.
 
- 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 ComputeMarangoniCoefPtr = 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)
 Callback function to compute the marangoni coefficient as a function of temperature and multiply it with the F_data as F_data = marangoni_coef*F_data.
 
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=-1, int finest_ln=-1) 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 registerMarangoniCoefficientFunction (ComputeMarangoniCoefPtr callback, void *ctx)
 Register callback function to compute the variable marangoni coefficient.
 

Additional Inherited Members

- Public Types inherited from IBAMR::SurfaceTensionForceFunction
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.
 
- Protected Member Functions inherited from IBAMR::SurfaceTensionForceFunction
int getMinimumGhostWidth (const std::string &kernel_fcn)
 
- Protected Attributes inherited from IBAMR::SurfaceTensionForceFunction
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
 
- Protected Attributes inherited from IBTK::CartGridFunction
std::string d_object_name
 

Detailed Description

Class MarangoniSurfaceTensionForceFunction provides Marangoni forcing due to temperature variations. This class computes the forcing term $ F = \frac{\mathrm{d} \sigma}{\mathrm{d} T}(\nabla T |\nabla C| - (\nabla T \cdot \nabla \phi) \nabla C)$ and add it to the surface tension forcing.

This class uses the callback function to compute the variable Marangoni coefficient as a function of Temperature.

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.

Member Function Documentation

◆ isTimeDependent()

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

Implements IBTK::CartGridFunction.

◆ setDataOnPatch()

void IBAMR::MarangoniSurfaceTensionForceFunction::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::MarangoniSurfaceTensionForceFunction::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 = -1,
int  finest_ln = -1 
)
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: