IBAMR  IBAMR version 0.20.
Classes | Functions
IBAMR::LevelSetUtilities Namespace Reference

Class LevelSetUtilities provides implementation of some helper functions to enforce mass/volume conservation of phases.

Classes

class  LevelSetContainer
 A lightweight class to hold the level set variable and the associated hierarchy integrator (AdvDiffHierarchyIntegrator). More...
 
class  TagLSRefinementCells
 A lightweight class to tag grid cells containing the level set variable for grid refinement. More...
 
class  LevelSetMassLossFixer
 Correct a regularized phase volume by a uniform level-set shift. More...
 
class  SetLSProperties
 Class SetLSProperties is a utility class which sets (or resets after reinitialization) level set values on the patch hierarchy. More...
 

Functions

void tagLSCells (SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM >> hierarchy, const int level_number, const double error_data_time, const int tag_index, const bool initial_time, const bool uses_richardson_extrapolation_too, void *ctx)
 Preprocessing call back function to be hooked into IBAMR::HierarchyIntegrator class to tag the cells for grid refinement based on the given tagging criteria. More...
 
void fixMassLoss2PhaseFlows (double current_time, double new_time, bool skip_synchronize_new_state_data, int num_cycles, void *ctx)
 Postprocess-integration callback correcting NEW gas volume. More...
 
void fixMassLoss3PhaseFlows (double current_time, double new_time, bool skip_synchronize_new_state_data, int num_cycles, void *ctx)
 Postprocess-integration callback correcting NEW liquid volume in a three-phase flow, preserving the second (solid) level-set field. More...
 
std::vector< double > computeHeavisideIntegrals2PhaseFlows (const LevelSetContainer &lsc)
 
std::vector< double > computeHeavisideIntegrals3PhaseFlows (const LevelSetContainer &lsc)
 
void setLSDataPatchHierarchy (int ls_idx, SAMRAI::tbox::Pointer< IBTK::HierarchyMathOps > hier_math_ops, const int integrator_step, const double current_time, const bool initial_time, const bool regrid_time, void *ctx)
 A function that sets or resets the level set data on the patch hierarchy. More...
 

Function Documentation

◆ tagLSCells()

void IBAMR::LevelSetUtilities::tagLSCells ( SAMRAI::tbox::Pointer< SAMRAI::hier::BasePatchHierarchy< NDIM >>  hierarchy,
const int  level_number,
const double  error_data_time,
const int  tag_index,
const bool  initial_time,
const bool  uses_richardson_extrapolation_too,
void *  ctx 
)

This static member should be registered with an appropriate hierarchy integrator via registerApplyGradientDetectorCallback().

Parameters
ctxis the pointer to the TagLSRefinementCells class object.

◆ fixMassLoss2PhaseFlows()

void IBAMR::LevelSetUtilities::fixMassLoss2PhaseFlows ( double  current_time,
double  new_time,
bool  skip_synchronize_new_state_data,
int  num_cycles,
void *  ctx 
)

Register with registerPostprocessIntegrateHierarchyCallback(). ctx points to a LevelSetMassLossFixer; its target must be set before the callback.

See also
LevelSetMassLossFixer::correctVolume

◆ fixMassLoss3PhaseFlows()

void IBAMR::LevelSetUtilities::fixMassLoss3PhaseFlows ( double  current_time,
double  new_time,
bool  skip_synchronize_new_state_data,
int  num_cycles,
void *  ctx 
)

Register with registerPostprocessIntegrateHierarchyCallback(). ctx points to a LevelSetMassLossFixer; its target must be set before the callback.

See also
LevelSetMassLossFixer::correctVolume

◆ computeHeavisideIntegrals2PhaseFlows()

std::vector<double> IBAMR::LevelSetUtilities::computeHeavisideIntegrals2PhaseFlows ( const LevelSetContainer &  lsc)
Returns
Integrals of \( 1- H(\phi)\), \( H(\phi)\), and \( \delta(\phi) \) over the entire domain.

Here, \( H(\phi) \) is the Heaviside function demarcating liquid and gas domains.

\( \phi \) is taken to be positive in the liquid domain and negative in the gas domain.

Physically, these three integrals represent volume of the gas region, liquid region, and a regularized interface-area estimate, respectively. The delta integral represents area when phi is a resolved signed-distance field.

◆ computeHeavisideIntegrals3PhaseFlows()

std::vector<double> IBAMR::LevelSetUtilities::computeHeavisideIntegrals3PhaseFlows ( const LevelSetContainer &  lsc)
Returns
Integrals of \( [1- H(\phi)] H(\Psi) \), \( H(\phi) H(\Psi)\), \( 1 - H(\Psi)\), and \( \delta(\phi)H(\Psi)\) over the entire domain.

Here, \( H(\phi) \) is the Heaviside function demarcating liquid and gas domains, and \( H(\Psi) \) is the Heaviside function demarcating solid and fluid (fluid = liquid and gas) domains.

Physically, these four integrals represents volume of the gas region, liquid region, solid region, and a regularized fluid-interface-area estimate, respectively. The delta integral represents area when phi is a resolved signed-distance field.

\( \phi \) is taken to be positive in the liquid domain and negative in the gas domain.

\( \Psi \) is taken to be positive outside the solid and negative inside the solid.

◆ setLSDataPatchHierarchy()

void IBAMR::LevelSetUtilities::setLSDataPatchHierarchy ( int  ls_idx,
SAMRAI::tbox::Pointer< IBTK::HierarchyMathOps >  hier_math_ops,
const int  integrator_step,
const double  current_time,
const bool  initial_time,
const bool  regrid_time,
void *  ctx 
)