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

Class RelaxationLSMethod provides a relaxation algorithm implementation of the level set method. Specifically, this class iterates (to steady-state) the PDE $\frac{\partial Q}{\partial \tau}+sgn(Q^0)(|\nabla Q | - 1) = 0$, which produces a solution to the Eikonal equation $ |\nabla Q | = 1 $. The solution of the Eikonal equation produces the signed distance away from an interface. More...

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

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

Public Member Functions

 RelaxationLSMethod (std::string object_name, SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > db=NULL, bool register_for_restart=true)
 Constructor.
 
- Public Member Functions inherited from IBAMR::LSInitStrategy
 LSInitStrategy (std::string object_name, bool register_for_restart=true)
 Constructor.
 
virtual ~LSInitStrategy ()
 Virtual destructor.
 
virtual void registerPhysicalBoundaryCondition (SAMRAI::solv::RobinBcCoefStrategy< NDIM > *robin_bc_coef)
 Register physical boundary condition for the level set.
 
virtual void registerInterfaceNeighborhoodLocatingFcn (LocateInterfaceNeighborhoodFcnPtr callback, void *ctx)
 Register interface neighborhood locating functions.
 
virtual void setReinitializeLSData (bool reinit_ls_data)
 Indicate that the class should reinitialize level set.
 
void putToDatabase (SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > db) override
 

Implementation of IBAMR::LSInitStrategy interface.

bool d_apply_mass_constraint = false
 
bool d_apply_vol_redistribution = false
 
bool d_apply_subcell_fix = false
 
bool d_apply_sign_fix = false
 
int d_D_gcw = -1
 
double d_alpha = 1.0
 
void initializeLSData (int D_idx, SAMRAI::tbox::Pointer< IBTK::HierarchyMathOps > hierarchy_math_ops, int integrator_step, double time, bool initial_time) override
 Initialize level set data using the relaxation method.
 
void setApplyMassConstraint (bool apply_mass_constraint)
 Indicate that the class should apply the mass constraint.
 
void setApplySubcellFix (bool apply_subcell_fix)
 Indicate that the class should apply the subcell fix.
 
void setApplySignFix (bool apply_sign_fix)
 Indicate that the class should apply the sign fix near interface points.
 
void setLSGhostCellWidth (int D_gcw)
 Hard set the ghost cell width for the level set variable.
 
void setApplyVolumeRedistribution (bool apply_volume_redistribution)
 Indicate that the class should apply the volume redistribution algorithm.
 

Additional Inherited Members

- Public Types inherited from IBAMR::LSInitStrategy
using LocateInterfaceNeighborhoodFcnPtr = void(*)(int D_idx, SAMRAI::tbox::Pointer< IBTK::HierarchyMathOps > hier_math_ops, double time, bool initial_time, void *ctx)
 Function specifying distance function near an interface.
 
- Protected Attributes inherited from IBAMR::LSInitStrategy
std::string d_object_name
 
bool d_registered_for_restart
 
LevelSetOrder d_ls_order = FIRST_ORDER_LS
 
LevelSetTimeStepping d_ls_ts = GAUSS_SEIDEL_PSEUDO_TS
 
double d_abs_tol = 1.0e-5
 
int d_max_its = 100
 
bool d_enable_logging = false
 
bool d_reinitialize_ls = false
 
int d_reinit_interval = 0
 
SAMRAI::solv::RobinBcCoefStrategy< NDIM > * d_bc_coef
 
std::vector< LocateInterfaceNeighborhoodFcnPtrd_locate_interface_fcns
 
std::vector< void * > d_locate_interface_fcns_ctx
 

Detailed Description

Class RelaxationLSMethod provides a relaxation algorithm implementation of the level set method. Specifically, this class iterates (to steady-state) the PDE $\frac{\partial Q}{\partial \tau}+sgn(Q^0)(|\nabla Q | - 1) = 0$, which produces a solution to the Eikonal equation $ |\nabla Q | = 1 $. The solution of the Eikonal equation produces the signed distance away from an interface.

An optional mass constraint can be applied to certain high-order LS schemes by first computing an intermediate $\tilde{Q}$ and projecting in the following way:

$Q = \tilde{Q} + \lambda_{ij}H'(Q^0)|\nabla Q^0|$.

This greatly improves the volume conservation of the interface while still retaining the order of accuracy and signed distance property. The mass conservation constraint assumes that $Q^0$ is already close to a signed distance function and is hence, by default, disabled at initial time.

References Min, C., On reinitializing level set functions

Sussman, M. and Fatemi, E., An Efficient, Interface-Preserving Level Set Redistancing Algorithm and Its Application to Interfacial Incompressible Fluid Flow


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