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

Class HierarchyMathOps provides functionality to perform "composite-grid" mathematical operations on a range of levels in a SAMRAI::hier::PatchHierarchy object. More...

#include </home/runner/work/IBAMR/IBAMR/ibtk/include/ibtk/HierarchyMathOps.h>

Inheritance diagram for IBTK::HierarchyMathOps:
Inheritance graph
[legend]

Public Member Functions

 HierarchyMathOps (std::string name, SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy, int coarsest_ln=invalid_level_number, int finest_ln=invalid_level_number, std::string coarsen_op_name="CONSERVATIVE_COARSEN")
 Constructor. More...
 
virtual ~HierarchyMathOps ()=default
 Destructor.
 
Methods to set the hierarchy and range of levels.
void setPatchHierarchy (SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > hierarchy)
 Reset the patch hierarchy over which operations occur.
 
void resetLevels (int coarsest_ln, int finest_ln)
 Reset range of patch levels over which operations occur. More...
 

Methods to get cell weight data.

SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > getCellWeightVariable () const
 Access the SAMRAI::pdat::CellVariable that is used to store cell weights. These weights are used in computing discrete vector norms. More...
 
int getCellWeightPatchDescriptorIndex ()
 Access the patch descriptor index that corresponds to the SAMRAI::pdat::CellVariable that is used to store cell weights. These weights are used in computing discrete vector norms. More...
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > getFaceWeightVariable () const
 Access the SAMRAI::pdat::FaceVariable that is used to store face weights. These weights are used in computing discrete vector norms. More...
 
int getFaceWeightPatchDescriptorIndex ()
 Access the patch descriptor index that corresponds to the SAMRAI::pdat::FaceVariable that is used to store face weights. These weights are used in computing discrete vector norms. More...
 
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > getSideWeightVariable () const
 Access the SAMRAI::pdat::SideVariable that is used to store side weights. These weights are used in computing discrete vector norms. More...
 
int getSideWeightPatchDescriptorIndex ()
 Access the patch descriptor index that corresponds to the SAMRAI::pdat::SideVariable that is used to store side weights. These weights are used in computing discrete vector norms. More...
 
double getVolumeOfPhysicalDomain () const
 Returns the volume of the physical domain.
 
SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > > getPatchHierarchy () const
 Get the patch hierarchy object associated with the class.
 
void setCoarsenOperatorName (const std::string &coarsen_op_name)
 Set the name of the coarsen operator used for synchronizing the coarse-fine boundary.
 
void curl (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Compute the cell-centered curl of a cell-centered vector field using centered differences. More...
 
void curl (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Compute the cell-centered curl of a face-centered vector field using centered differences. More...
 
void curl (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Compute the cell-centered curl of a face-centered vector field using centered differences. More...
 
void curl (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Compute the cell-centered curl of a side-centered vector field using centered differences. More...
 
void curl (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Compute the cell-centered curl of a side-centered vector field using centered differences. More...
 
void curl (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > dst_var, bool dst_cf_bdry_synch, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time, bool src_cf_bdry_synch)
 Compute the node-centered curl of a side-centered vector field using centered differences. More...
 
void curl (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::EdgeVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Compute the edge-centered curl of a side-centered vector field using centered differences. More...
 
void rot (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time, const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &bc_coefs=std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * >())
 Compute the side-centered rot of a node-centered scalar field using centered differences. More...
 
void rot (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time, const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &bc_coefs=std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * >())
 Compute the side-centered rot of a node-centered scalar field using centered differences. More...
 
void rot (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::EdgeVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time, const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &bc_coefs=std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * >())
 Compute the side-centered rot of a edge-centered vector field using centered differences. More...
 
void rot (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time, const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &bc_coefs=std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * >())
 Compute the side-centered rot of a side-centered vector field using centered differences. More...
 
void div (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, double alpha, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src1_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src1_ghost_fill, double src1_ghost_fill_time, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src2_var=nullptr, int dst_depth=0, int src2_depth=0)
 Compute the cell-centered divergence of a cell-centered vector field using centered differences. More...
 
void div (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, double alpha, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > src1_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src1_ghost_fill, double src1_ghost_fill_time, bool src1_cf_bdry_synch, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src2_var=nullptr, int dst_depth=0, int src2_depth=0)
 Compute the cell-centered divergence of a face-centered normal vector field using centered differences. More...
 
void div (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, double alpha, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src1_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src1_ghost_fill, double src1_ghost_fill_time, bool src1_cf_bdry_synch, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src2_var=nullptr, int dst_depth=0, int src2_depth=0)
 Compute the cell-centered divergence of a side-centered normal vector field using centered differences. More...
 
void grad (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, double alpha, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src1_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src1_ghost_fill, double src1_ghost_fill_time, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src2_var=nullptr, int src1_depth=0)
 Compute the gradient of a scalar quantity using centered differences. More...
 
void grad (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > dst_var, bool dst_cf_bdry_synch, double alpha, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src1_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src1_ghost_fill, double src1_ghost_fill_time, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > src2_var=nullptr, int src1_depth=0)
 Compute the gradient of a scalar quantity using centered differences. More...
 
void grad (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > dst_var, bool dst_cf_bdry_synch, double alpha, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src1_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src1_ghost_fill, double src1_ghost_fill_time, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src2_var=nullptr, int src1_depth=0)
 Compute the gradient of a scalar quantity using centered differences. More...
 
void grad (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, int alpha_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > alpha_var, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src1_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src1_ghost_fill, double src1_ghost_fill_time, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src2_var=nullptr, int src1_depth=0)
 Compute the gradient of a scalar quantity using centered differences. More...
 
void grad (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, int alpha_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > alpha_var, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src1_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src1_ghost_fill, double src1_ghost_fill_time, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src2_var=nullptr, int src1_depth=0)
 Compute the gradient of a scalar quantity using centered differences. More...
 
void grad (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > dst_var, bool dst_cf_bdry_synch, int alpha_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > alpha_var, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src1_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src1_ghost_fill, double src1_ghost_fill_time, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > src2_var=nullptr, int src1_depth=0)
 Compute the gradient of a scalar quantity using centered differences. More...
 
void grad (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > dst_var, bool dst_cf_bdry_synch, int alpha_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > alpha_var, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src1_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src1_ghost_fill, double src1_ghost_fill_time, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src2_var=nullptr, int src1_depth=0)
 Compute the gradient of a scalar quantity using centered differences. More...
 
void interp (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time, bool src_cf_bdry_synch)
 Interpolate to a cell-centered vector/tensor field from a face-centered normal vector/tensor field. More...
 
void interp (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time, bool src_cf_bdry_synch)
 Interpolate to a cell-centered vector/tensor field from a side-centered normal vector/tensor field. More...
 
void interp (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > dst_var, bool dst_cf_bdry_synch, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Interpolate to a face-centered normal vector/tensor field from a cell-centered vector/tensor field. More...
 
void interp (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > dst_var, bool dst_cf_bdry_synch, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Interpolate to a side-centered normal vector/tensor field from a cell-centered vector/tensor field. More...
 
void interp (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time, bool src_cf_bdry_synch)
 Interpolate to a cell-centered vector/tensor field from a node-centered vector/tensor field. More...
 
void interp (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::EdgeVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time, bool src_cf_bdry_synch)
 Interpolate to a cell-centered vector/tensor field from an edge-centered vector/tensor field. More...
 
void interp (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > dst_var, bool dst_cf_bdry_synch, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Interpolate to a node-centered vector/tensor field from a cell-centered vector/tensor field. More...
 
void interp (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > dst_var, bool dst_cf_bdry_synch, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time, bool src_cf_bdry_synch)
 Interpolate to a node-centered vector/tensor field from a face-centered normal vector/tensor field. More...
 
void interp (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > dst_var, bool dst_cf_bdry_synch, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time, bool src_cf_bdry_synch)
 Interpolate to a node-centered vector/tensor field from a side-centered normal vector/tensor field. More...
 
void interp (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::EdgeVariable< NDIM, double > > dst_var, bool dst_cf_bdry_synch, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Interpolate to a edge-centered vector/tensor field from a cell-centered vector/tensor field. More...
 
void harmonic_interp (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > dst_var, bool dst_cf_bdry_synch, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Harmonically interpolate to a side-centered normal vector/tensor field from a cell-centered vector/tensor field. This should be used when the gradients in the src quantity are large. More...
 
void harmonic_interp (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Harmonically interpolate to a node-centered vector/tensor field from a cell-centered vector/tensor field. This should be used when the gradients in the src quantity are large. More...
 
void harmonic_interp (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::EdgeVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Harmonically interpolate to a edge-centered vector/tensor field from a cell-centered vector/tensor field. This should be used when the gradients in the src quantity are large. More...
 
void interp_ghosted (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Interpolate to a node-centered vector/tensor field from a cell-centered vector/tensor field. Interpolate both in the cell and in the ghost region. More...
 
void interp_ghosted (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::EdgeVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Interpolate to a edge-centered vector/tensor field from a cell-centered vector/tensor field. More...
 
void harmonic_interp_ghosted (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Harmonically interpolate to a node-centered vector/tensor field from a cell-centered vector/tensor field. This should be used when the gradients in the src quantity are large. More...
 
void harmonic_interp_ghosted (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::EdgeVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Harmonically interpolate to a edge-centered vector/tensor field from a cell-centered vector/tensor field. This should be used when the gradients in the src quantity are large. More...
 
void laplace (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, const SAMRAI::solv::PoissonSpecifications &poisson_spec, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src1_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src1_ghost_fill, double src1_ghost_fill_time, double gamma=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src2_var=nullptr, int dst_depth=0, int src1_depth=0, int src2_depth=0)
 Compute the Laplacian of a scalar quantity using centered differences. More...
 
void laplace (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > dst_var, const SAMRAI::solv::PoissonSpecifications &poisson_spec, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src1_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src1_ghost_fill, double src1_ghost_fill_time, double gamma=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src2_var=nullptr)
 Compute the Laplacian of a scalar quantity using centered differences. More...
 
void vc_laplace (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > dst_var, double alpha, double beta, int coef1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > coef1_var, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src1_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src1_ghost_fill, double src1_ghost_fill_time, IBTK::VCInterpType coef1_interp_type=VC_HARMONIC_INTERP, int coef2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > coef2_var=nullptr, double gamma=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src2_var=nullptr)
 Compute dst = alpha div coef1 ((grad src1) + (grad src1)^T) + beta coef2 src1 + gamma src2, the variable coefficient generalized Laplacian of src1. More...
 
void vc_laplace (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > dst_var, double alpha, double beta, int coef1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::EdgeVariable< NDIM, double > > coef1_var, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src1_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src1_ghost_fill, double src1_ghost_fill_time, IBTK::VCInterpType coef1_interp_type=VC_HARMONIC_INTERP, int coef2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > coef2_var=nullptr, double gamma=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src2_var=nullptr)
 Compute dst = alpha div coef1 ((grad src1) + (grad src1)^T) + beta coef2 src1 + gamma src2, the variable coefficient generalized Laplacian of src1. More...
 
void pointwiseMultiply (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, double alpha, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src1_var, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src2_var=nullptr, int dst_depth=0, int src1_depth=0, int src2_depth=0)
 Compute dst = alpha src1 + beta src2, pointwise. More...
 
void pointwiseMultiply (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, int alpha_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > alpha_var, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src1_var, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src2_var=nullptr, int dst_depth=0, int src1_depth=0, int src2_depth=0, int alpha_depth=0)
 Compute dst = alpha src1 + beta src2, pointwise. More...
 
void pointwiseMultiply (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, int alpha_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > alpha_var, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src1_var, int beta_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > beta_var=nullptr, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src2_var=nullptr, int dst_depth=0, int src1_depth=0, int src2_depth=0, int alpha_depth=0, int beta_depth=0)
 Compute dst = alpha src1 + beta src2, pointwise. More...
 
void pointwiseMultiply (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > dst_var, double alpha, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > src1_var, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > src2_var=nullptr, int dst_depth=0, int src1_depth=0, int src2_depth=0)
 Compute dst = alpha src1 + beta src2, pointwise. More...
 
void pointwiseMultiply (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > dst_var, int alpha_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > alpha_var, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > src1_var, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > src2_var=nullptr, int dst_depth=0, int src1_depth=0, int src2_depth=0, int alpha_depth=0)
 Compute dst = alpha src1 + beta src2, pointwise. More...
 
void pointwiseMultiply (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > dst_var, int alpha_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > alpha_var, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > src1_var, int beta_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > beta_var=nullptr, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > > src2_var=nullptr, int dst_depth=0, int src1_depth=0, int src2_depth=0, int alpha_depth=0, int beta_depth=0)
 Compute dst = alpha src1 + beta src2, pointwise. More...
 
void pointwiseMultiply (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > dst_var, double alpha, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > src1_var, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > src2_var=nullptr, int dst_depth=0, int src1_depth=0, int src2_depth=0)
 Compute dst = alpha src1 + beta src2, pointwise. More...
 
void pointwiseMultiply (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > dst_var, int alpha_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > alpha_var, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > src1_var, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > src2_var=nullptr, int dst_depth=0, int src1_depth=0, int src2_depth=0, int alpha_depth=0)
 Compute dst = alpha src1 + beta src2, pointwise. More...
 
void pointwiseMultiply (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > dst_var, int alpha_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > alpha_var, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > src1_var, int beta_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > beta_var=nullptr, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > src2_var=nullptr, int dst_depth=0, int src1_depth=0, int src2_depth=0, int alpha_depth=0, int beta_depth=0)
 Compute dst = alpha src1 + beta src2, pointwise. More...
 
void pointwiseMultiply (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > dst_var, double alpha, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src1_var, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src2_var=nullptr, int dst_depth=0, int src1_depth=0, int src2_depth=0)
 Compute dst = alpha src1 + beta src2, pointwise. More...
 
void pointwiseMultiply (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > dst_var, int alpha_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > alpha_var, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src1_var, double beta=0.0, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src2_var=nullptr, int dst_depth=0, int src1_depth=0, int src2_depth=0, int alpha_depth=0)
 Compute dst = alpha src1 + beta src2, pointwise. More...
 
void pointwiseMultiply (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > dst_var, int alpha_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > alpha_var, int src1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src1_var, int beta_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > beta_var=nullptr, int src2_idx=invalid_index, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src2_var=nullptr, int dst_depth=0, int src1_depth=0, int src2_depth=0, int alpha_depth=0, int beta_depth=0)
 Compute dst = alpha src1 + beta src2, pointwise. More...
 
void pointwiseL1Norm (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src_var)
 Compute dst = |src|_1, pointwise. More...
 
void pointwiseL2Norm (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src_var)
 Compute dst = |src|_2, pointwise. More...
 
void pointwiseMaxNorm (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > src_var)
 Compute dst = |src|_oo, pointwise. More...
 
void pointwiseL1Norm (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > src_var)
 Compute dst = |src|_1, pointwise. More...
 
void pointwiseL2Norm (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > src_var)
 Compute dst = |src|_2, pointwise. More...
 
void pointwiseMaxNorm (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > src_var)
 Compute dst = |src|_oo, pointwise. More...
 
void strain_rate (int dst1_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst1_var, int dst2_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst2_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Compute the cell-centered strain rate of a side-centered vector field using centered differences. More...
 
void strain_rate (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > dst_var, int src_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > src_var, SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation > src_ghost_fill, double src_ghost_fill_time)
 Compute the cell-centered strain rate of a side-centered vector field using centered differences. More...
 
void enforceHangingNodeConstraints (int dst_idx, SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > > dst_var)
 Enforce hanging node constraints in the sense of making the resulting bilinear or trilinear interpolation of nodal data continuous across the coarse-fine interface. More...
 

Detailed Description

Class HierarchyMathOps provides functionality to perform "composite-grid" mathematical operations on a range of levels in a SAMRAI::hier::PatchHierarchy object.

For nodal destination data, if the provided variable has fineBoundaryRepresentsVariable() == false and synch_dst_cf_interface == true then each routine will call HierarchyMathOps::enforceHangingNodeConstraints() to achieve a conforming bi/trilinear discretization.

Note
All specified variable descriptor indices must refer to SAMRAI::hier::Variable / SAMRAI::hier::VariableContext pairs that have been registered with the SAMRAI::hier::VariableDatabase.

Constructor & Destructor Documentation

◆ HierarchyMathOps()

IBTK::HierarchyMathOps::HierarchyMathOps ( std::string  name,
SAMRAI::tbox::Pointer< SAMRAI::hier::PatchHierarchy< NDIM > >  hierarchy,
int  coarsest_ln = invalid_level_number,
int  finest_ln = invalid_level_number,
std::string  coarsen_op_name = "CONSERVATIVE_COARSEN" 
)

Constructor.

Does nothing interesting.

Member Function Documentation

◆ curl() [1/7]

void IBTK::HierarchyMathOps::curl ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Compute the cell-centered curl of a cell-centered vector field using centered differences.

Sets dst = curl src.

Compute the curl of a vector field using centered differences.

See also
setPatchHierarchy
resetLevels

◆ curl() [2/7]

void IBTK::HierarchyMathOps::curl ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Compute the cell-centered curl of a face-centered vector field using centered differences.

Sets dst = curl src.

Compute the curl of a vector field using centered differences.

See also
setPatchHierarchy
resetLevels

◆ curl() [3/7]

void IBTK::HierarchyMathOps::curl ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Compute the cell-centered curl of a side-centered vector field using centered differences.

Sets dst = curl src.

Compute the curl of a vector field using centered differences.

See also
setPatchHierarchy
resetLevels

◆ curl() [4/7]

void IBTK::HierarchyMathOps::curl ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::EdgeVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Compute the edge-centered curl of a side-centered vector field using centered differences.

Sets dst = curl src.

Compute the curl of a vector field using centered differences.

See also
setPatchHierarchy
resetLevels

◆ curl() [5/7]

void IBTK::HierarchyMathOps::curl ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Compute the cell-centered curl of a face-centered vector field using centered differences.

Sets dst = curl src.

Compute the curl of a vector field using centered differences.

See also
setPatchHierarchy
resetLevels

◆ curl() [6/7]

void IBTK::HierarchyMathOps::curl ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  dst_var,
bool  dst_cf_bdry_synch,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time,
bool  src_cf_bdry_synch 
)

Compute the node-centered curl of a side-centered vector field using centered differences.

Sets dst = curl src.

Compute the curl of a vector field using centered differences.

See also
setPatchHierarchy
resetLevels

◆ curl() [7/7]

void IBTK::HierarchyMathOps::curl ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Compute the cell-centered curl of a side-centered vector field using centered differences.

Sets dst = curl src.

Compute the curl of a vector field using centered differences.

See also
setPatchHierarchy
resetLevels

◆ div() [1/3]

void IBTK::HierarchyMathOps::div ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
double  alpha,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src1_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src1_ghost_fill,
double  src1_ghost_fill_time,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src2_var = nullptr,
int  dst_depth = 0,
int  src2_depth = 0 
)

Compute the cell-centered divergence of a cell-centered vector field using centered differences.

Sets dst = alpha div src1 + beta src2.

Compute the divergence of a vector field using centered differences.

See also
setPatchHierarchy
resetLevels

◆ div() [2/3]

void IBTK::HierarchyMathOps::div ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
double  alpha,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  src1_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src1_ghost_fill,
double  src1_ghost_fill_time,
bool  src1_cf_bdry_synch,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src2_var = nullptr,
int  dst_depth = 0,
int  src2_depth = 0 
)

Compute the cell-centered divergence of a face-centered normal vector field using centered differences.

Sets dst = alpha div src1 + beta src2.

Compute the divergence of a vector field using centered differences. When specified, coarse values on each coarse-fine interface are synchronized prior to performing the differencing.

See also
setPatchHierarchy
resetLevels

◆ div() [3/3]

void IBTK::HierarchyMathOps::div ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
double  alpha,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src1_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src1_ghost_fill,
double  src1_ghost_fill_time,
bool  src1_cf_bdry_synch,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src2_var = nullptr,
int  dst_depth = 0,
int  src2_depth = 0 
)

Compute the cell-centered divergence of a side-centered normal vector field using centered differences.

Sets dst = alpha div src1 + beta src2.

Compute the divergence of a vector field using centered differences. When specified, coarse values on each coarse-fine interface are synchronized prior to performing the differencing.

See also
setPatchHierarchy
resetLevels

◆ enforceHangingNodeConstraints()

void IBTK::HierarchyMathOps::enforceHangingNodeConstraints ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  dst_var 
)

Enforce hanging node constraints in the sense of making the resulting bilinear or trilinear interpolation of nodal data continuous across the coarse-fine interface.

Warning

◆ getCellWeightPatchDescriptorIndex()

int IBTK::HierarchyMathOps::getCellWeightPatchDescriptorIndex ( )

Access the patch descriptor index that corresponds to the SAMRAI::pdat::CellVariable that is used to store cell weights. These weights are used in computing discrete vector norms.

If a cell is not refined in the hierarchy, its weight is set to its volume. If a cell is refined, its weight is set to zero.

◆ getCellWeightVariable()

Pointer< CellVariable< NDIM, double > > IBTK::HierarchyMathOps::getCellWeightVariable ( ) const

Access the SAMRAI::pdat::CellVariable that is used to store cell weights. These weights are used in computing discrete vector norms.

If a cell is not refined in the hierarchy, its weight is set to its volume. If a cell is refined, its weight is set to zero.

◆ getFaceWeightPatchDescriptorIndex()

int IBTK::HierarchyMathOps::getFaceWeightPatchDescriptorIndex ( )

Access the patch descriptor index that corresponds to the SAMRAI::pdat::FaceVariable that is used to store face weights. These weights are used in computing discrete vector norms.

If a face is not refined in the hierarchy, its weight is set to its volume. If a face is refined, its weight is set to zero.

◆ getFaceWeightVariable()

Pointer< FaceVariable< NDIM, double > > IBTK::HierarchyMathOps::getFaceWeightVariable ( ) const

Access the SAMRAI::pdat::FaceVariable that is used to store face weights. These weights are used in computing discrete vector norms.

If a face is not refined in the hierarchy, its weight is set to its volume. If a face is refined, its weight is set to zero.

◆ getSideWeightPatchDescriptorIndex()

int IBTK::HierarchyMathOps::getSideWeightPatchDescriptorIndex ( )

Access the patch descriptor index that corresponds to the SAMRAI::pdat::SideVariable that is used to store side weights. These weights are used in computing discrete vector norms.

If a side is not refined in the hierarchy, its weight is set to its volume. If a side is refined, its weight is set to zero.

◆ getSideWeightVariable()

Pointer< SideVariable< NDIM, double > > IBTK::HierarchyMathOps::getSideWeightVariable ( ) const

Access the SAMRAI::pdat::SideVariable that is used to store side weights. These weights are used in computing discrete vector norms.

If a side is not refined in the hierarchy, its weight is set to its volume. If a side is refined, its weight is set to zero.

◆ grad() [1/7]

void IBTK::HierarchyMathOps::grad ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
double  alpha,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src1_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src1_ghost_fill,
double  src1_ghost_fill_time,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src2_var = nullptr,
int  src1_depth = 0 
)

Compute the gradient of a scalar quantity using centered differences.

Sets dst = alpha grad src1 + beta src2.

Compute the gradient of a scalar quantity using centered differences.

See also
setPatchHierarchy
resetLevels

◆ grad() [2/7]

void IBTK::HierarchyMathOps::grad ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
int  alpha_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  alpha_var,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src1_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src1_ghost_fill,
double  src1_ghost_fill_time,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src2_var = nullptr,
int  src1_depth = 0 
)

Compute the gradient of a scalar quantity using centered differences.

Sets dst = alpha grad src1 + beta src2.

Compute the gradient of a scalar quantity using centered differences.

See also
setPatchHierarchy
resetLevels

◆ grad() [3/7]

void IBTK::HierarchyMathOps::grad ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
int  alpha_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  alpha_var,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src1_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src1_ghost_fill,
double  src1_ghost_fill_time,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src2_var = nullptr,
int  src1_depth = 0 
)

Compute the gradient of a scalar quantity using centered differences.

Sets dst = alpha grad src1 + beta src2.

Compute the gradient of a scalar quantity using centered differences.

See also
setPatchHierarchy
resetLevels

◆ grad() [4/7]

void IBTK::HierarchyMathOps::grad ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  dst_var,
bool  dst_cf_bdry_synch,
double  alpha,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src1_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src1_ghost_fill,
double  src1_ghost_fill_time,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  src2_var = nullptr,
int  src1_depth = 0 
)

Compute the gradient of a scalar quantity using centered differences.

Sets dst = alpha grad src1 + beta src2.

Compute the gradient of a scalar quantity using centered differences. When specified, coarse values on each coarse-fine interface are synchronized after performing the differencing.

See also
setPatchHierarchy
resetLevels

◆ grad() [5/7]

void IBTK::HierarchyMathOps::grad ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  dst_var,
bool  dst_cf_bdry_synch,
int  alpha_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  alpha_var,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src1_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src1_ghost_fill,
double  src1_ghost_fill_time,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  src2_var = nullptr,
int  src1_depth = 0 
)

Compute the gradient of a scalar quantity using centered differences.

Sets dst = alpha grad src1 + beta src2.

Compute the gradient of a scalar quantity using centered differences. When specified, coarse values on each coarse-fine interface are synchronized after performing the differencing.

Note
Homogeneous Neumann boundary conditions are explicitly enforced in the case of non-grid aligned anisotropy.
See also
setPatchHierarchy
resetLevels

◆ grad() [6/7]

void IBTK::HierarchyMathOps::grad ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  dst_var,
bool  dst_cf_bdry_synch,
double  alpha,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src1_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src1_ghost_fill,
double  src1_ghost_fill_time,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src2_var = nullptr,
int  src1_depth = 0 
)

Compute the gradient of a scalar quantity using centered differences.

Sets dst = alpha grad src1 + beta src2.

Compute the gradient of a scalar quantity using centered differences. When specified, coarse values on each coarse-fine interface are synchronized after performing the differencing.

See also
setPatchHierarchy
resetLevels

◆ grad() [7/7]

void IBTK::HierarchyMathOps::grad ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  dst_var,
bool  dst_cf_bdry_synch,
int  alpha_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  alpha_var,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src1_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src1_ghost_fill,
double  src1_ghost_fill_time,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src2_var = nullptr,
int  src1_depth = 0 
)

Compute the gradient of a scalar quantity using centered differences.

Sets dst = alpha grad src1 + beta src2.

Compute the gradient of a scalar quantity using centered differences. When specified, coarse values on each coarse-fine interface are synchronized after performing the differencing.

Note
Homogeneous Neumann boundary conditions are explicitly enforced in the case of non-grid aligned anisotropy.
See also
setPatchHierarchy
resetLevels

◆ harmonic_interp() [1/3]

void IBTK::HierarchyMathOps::harmonic_interp ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::EdgeVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Harmonically interpolate to a edge-centered vector/tensor field from a cell-centered vector/tensor field. This should be used when the gradients in the src quantity are large.

Interpolate a vector or tensor field from one variable type to another using (second-order accurate) averaging. When specified, the ghost cells of the edge centered variable are computed as averages of the cell centered variable

See also
setPatchHierarchy
resetLevels

◆ harmonic_interp() [2/3]

void IBTK::HierarchyMathOps::harmonic_interp ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Harmonically interpolate to a node-centered vector/tensor field from a cell-centered vector/tensor field. This should be used when the gradients in the src quantity are large.

Interpolate a vector or tensor field from one variable type to another using (second-order accurate) averaging. When specified, the ghost cells of the node centered variable are computed as averages of the cell centered variable

See also
setPatchHierarchy
resetLevels

◆ harmonic_interp() [3/3]

void IBTK::HierarchyMathOps::harmonic_interp ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  dst_var,
bool  dst_cf_bdry_synch,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Harmonically interpolate to a side-centered normal vector/tensor field from a cell-centered vector/tensor field. This should be used when the gradients in the src quantity are large.

Interpolate a vector or tensor field from one variable type to another using (second-order accurate) harmonic averaging. When the interpolation occurs over multiple levels of the hierarchy, second order interpolation is used at the coarse-fine interface to correct fine values along the interface. When specified, coarse values on each coarse-fine interface are synchronized after performing the interpolation.

See also
setPatchHierarchy
resetLevels

◆ harmonic_interp_ghosted() [1/2]

void IBTK::HierarchyMathOps::harmonic_interp_ghosted ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::EdgeVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Harmonically interpolate to a edge-centered vector/tensor field from a cell-centered vector/tensor field. This should be used when the gradients in the src quantity are large.

Interpolate a vector or tensor field from one variable type to another using (second-order accurate) averaging. When specified, the ghost cells of the edge centered variable are computed as averages of the cell centered variable

Warning
This function exists for backwards compatibility purposes. New code should handle ghost regions in the conventional way (i.e., that ghost data is read-only).
See also
setPatchHierarchy
resetLevels

◆ harmonic_interp_ghosted() [2/2]

void IBTK::HierarchyMathOps::harmonic_interp_ghosted ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Harmonically interpolate to a node-centered vector/tensor field from a cell-centered vector/tensor field. This should be used when the gradients in the src quantity are large.

Interpolate a vector or tensor field from one variable type to another using (second-order accurate) averaging. When specified, the ghost cells of the node centered variable are computed as averages of the cell centered variable

Warning
This function exists for backwards compatibility purposes. New code should handle ghost regions in the conventional way (i.e., that ghost data is read-only).
See also
setPatchHierarchy
resetLevels

◆ interp() [1/10]

void IBTK::HierarchyMathOps::interp ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::EdgeVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time,
bool  src_cf_bdry_synch 
)

Interpolate to a cell-centered vector/tensor field from an edge-centered vector/tensor field.

Interpolate a vector or tensor field from one variable type to another using (second-order accurate) averaging.

See also
setPatchHierarchy
resetLevels

◆ interp() [2/10]

void IBTK::HierarchyMathOps::interp ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time,
bool  src_cf_bdry_synch 
)

Interpolate to a cell-centered vector/tensor field from a face-centered normal vector/tensor field.

Interpolate a vector or tensor field from one variable type to another using (second-order accurate) averaging. When specified, coarse values on each coarse-fine interface are synchronized prior to performing the interpolation.

See also
setPatchHierarchy
resetLevels

◆ interp() [3/10]

void IBTK::HierarchyMathOps::interp ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time,
bool  src_cf_bdry_synch 
)

Interpolate to a cell-centered vector/tensor field from a node-centered vector/tensor field.

Interpolate a vector or tensor field from one variable type to another using (second-order accurate) averaging.

See also
setPatchHierarchy
resetLevels

◆ interp() [4/10]

void IBTK::HierarchyMathOps::interp ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time,
bool  src_cf_bdry_synch 
)

Interpolate to a cell-centered vector/tensor field from a side-centered normal vector/tensor field.

Interpolate a vector or tensor field from one variable type to another using (second-order accurate) averaging. When specified, coarse values on each coarse-fine interface are synchronized prior to performing the interpolation.

See also
setPatchHierarchy
resetLevels

◆ interp() [5/10]

void IBTK::HierarchyMathOps::interp ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::EdgeVariable< NDIM, double > >  dst_var,
bool  dst_cf_bdry_synch,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Interpolate to a edge-centered vector/tensor field from a cell-centered vector/tensor field.

Interpolate a vector or tensor field from one variable type to another using (second-order accurate) averaging. When specified, the ghost cells of the edge centered variable are computed as averages of the cell centered variable

See also
setPatchHierarchy
resetLevels

◆ interp() [6/10]

void IBTK::HierarchyMathOps::interp ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  dst_var,
bool  dst_cf_bdry_synch,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Interpolate to a face-centered normal vector/tensor field from a cell-centered vector/tensor field.

Interpolate a vector or tensor field from one variable type to another using (second-order accurate) averaging. When the interpolation occurs over over multiple levels of the hierarchy, second order interpolation is used at the coarse-fine interface to correct fine values along the interface. When specified, coarse values on each coarse-fine interface are synchronized after performing the interpolation.

See also
setPatchHierarchy
resetLevels

◆ interp() [7/10]

void IBTK::HierarchyMathOps::interp ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  dst_var,
bool  dst_cf_bdry_synch,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Interpolate to a node-centered vector/tensor field from a cell-centered vector/tensor field.

Interpolate a vector or tensor field from one variable type to another using (second-order accurate) averaging.

See also
setPatchHierarchy
resetLevels

◆ interp() [8/10]

void IBTK::HierarchyMathOps::interp ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  dst_var,
bool  dst_cf_bdry_synch,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time,
bool  src_cf_bdry_synch 
)

Interpolate to a node-centered vector/tensor field from a face-centered normal vector/tensor field.

Interpolate a vector or tensor field from one variable type to another using (second-order accurate) averaging. When specified, coarse values on each coarse-fine interface are synchronized prior to performing the interpolation.

See also
setPatchHierarchy
resetLevels

◆ interp() [9/10]

void IBTK::HierarchyMathOps::interp ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  dst_var,
bool  dst_cf_bdry_synch,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time,
bool  src_cf_bdry_synch 
)

Interpolate to a node-centered vector/tensor field from a side-centered normal vector/tensor field.

Interpolate a vector or tensor field from one variable type to another using (second-order accurate) averaging. When specified, coarse values on each coarse-fine interface are synchronized prior to performing the interpolation.

See also
setPatchHierarchy
resetLevels

◆ interp() [10/10]

void IBTK::HierarchyMathOps::interp ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  dst_var,
bool  dst_cf_bdry_synch,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Interpolate to a side-centered normal vector/tensor field from a cell-centered vector/tensor field.

Interpolate a vector or tensor field from one variable type to another using (second-order accurate) averaging. When the interpolation occurs over multiple levels of the hierarchy, second order interpolation is used at the coarse-fine interface to correct fine values along the interface. When specified, coarse values on each coarse-fine interface are synchronized after performing the interpolation.

See also
setPatchHierarchy
resetLevels

◆ interp_ghosted() [1/2]

void IBTK::HierarchyMathOps::interp_ghosted ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::EdgeVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Interpolate to a edge-centered vector/tensor field from a cell-centered vector/tensor field.

Interpolate a vector or tensor field from one variable type to another using (second-order accurate) averaging. When specified, the ghost cells of the edge centered variable are computed as averages of the cell centered variable

Warning
This function exists for backwards compatibility purposes. New code should handle ghost regions in the conventional way (i.e., that ghost data is read-only).
See also
setPatchHierarchy
resetLevels

◆ interp_ghosted() [2/2]

void IBTK::HierarchyMathOps::interp_ghosted ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Interpolate to a node-centered vector/tensor field from a cell-centered vector/tensor field. Interpolate both in the cell and in the ghost region.

Interpolate a vector or tensor field from one variable type to another using (second-order accurate) averaging.

Warning
This function exists for backwards compatibility purposes. New code should handle ghost regions in the conventional way (i.e., that ghost data is read-only).
See also
setPatchHierarchy
resetLevels

◆ laplace() [1/2]

void IBTK::HierarchyMathOps::laplace ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
const SAMRAI::solv::PoissonSpecifications poisson_spec,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src1_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src1_ghost_fill,
double  src1_ghost_fill_time,
double  gamma = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src2_var = nullptr,
int  dst_depth = 0,
int  src1_depth = 0,
int  src2_depth = 0 
)

Compute the Laplacian of a scalar quantity using centered differences.

Sets dst = C src1 + div D grad src1 + gamma src2.

Compute the Laplacian of a scalar quantity using centered differences, where C and D are specified by the SAMRAI::solv::PoissonSpecifications object poisson_spec. When the operation is being performed on multiple levels of the hierarchy, the appropriately synchronized gradient and divergence operators are employed to obtain a consistent discretization of the Laplace operator.

See also
setPatchHierarchy
resetLevels

◆ laplace() [2/2]

void IBTK::HierarchyMathOps::laplace ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  dst_var,
const SAMRAI::solv::PoissonSpecifications poisson_spec,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src1_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src1_ghost_fill,
double  src1_ghost_fill_time,
double  gamma = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src2_var = nullptr 
)

Compute the Laplacian of a scalar quantity using centered differences.

Sets dst = C src1 + div D grad src1 + gamma src2.

Compute the Laplacian of a scalar quantity using centered differences, where C and D are specified by the SAMRAI::solv::PoissonSpecifications object poisson_spec.

Note
The present implementation of this operator requires that damping factor C and diffusivity D be spatially constant and scalar-valued.
See also
setPatchHierarchy
resetLevels

◆ pointwiseL1Norm() [1/2]

void IBTK::HierarchyMathOps::pointwiseL1Norm ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src_var 
)

Compute dst = |src|_1, pointwise.

See also
setPatchHierarchy
resetLevels

◆ pointwiseL1Norm() [2/2]

void IBTK::HierarchyMathOps::pointwiseL1Norm ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  src_var 
)

Compute dst = |src|_1, pointwise.

See also
setPatchHierarchy
resetLevels

◆ pointwiseL2Norm() [1/2]

void IBTK::HierarchyMathOps::pointwiseL2Norm ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src_var 
)

Compute dst = |src|_2, pointwise.

See also
setPatchHierarchy
resetLevels

◆ pointwiseL2Norm() [2/2]

void IBTK::HierarchyMathOps::pointwiseL2Norm ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  src_var 
)

Compute dst = |src|_2, pointwise.

See also
setPatchHierarchy
resetLevels

◆ pointwiseMaxNorm() [1/2]

void IBTK::HierarchyMathOps::pointwiseMaxNorm ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src_var 
)

Compute dst = |src|_oo, pointwise.

See also
setPatchHierarchy
resetLevels

◆ pointwiseMaxNorm() [2/2]

void IBTK::HierarchyMathOps::pointwiseMaxNorm ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  src_var 
)

Compute dst = |src|_oo, pointwise.

See also
setPatchHierarchy
resetLevels

◆ pointwiseMultiply() [1/12]

void IBTK::HierarchyMathOps::pointwiseMultiply ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
double  alpha,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src1_var,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src2_var = nullptr,
int  dst_depth = 0,
int  src1_depth = 0,
int  src2_depth = 0 
)

Compute dst = alpha src1 + beta src2, pointwise.

See also
setPatchHierarchy
resetLevels

◆ pointwiseMultiply() [2/12]

void IBTK::HierarchyMathOps::pointwiseMultiply ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
int  alpha_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  alpha_var,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src1_var,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src2_var = nullptr,
int  dst_depth = 0,
int  src1_depth = 0,
int  src2_depth = 0,
int  alpha_depth = 0 
)

Compute dst = alpha src1 + beta src2, pointwise.

See also
setPatchHierarchy
resetLevels

◆ pointwiseMultiply() [3/12]

void IBTK::HierarchyMathOps::pointwiseMultiply ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
int  alpha_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  alpha_var,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src1_var,
int  beta_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  beta_var = nullptr,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src2_var = nullptr,
int  dst_depth = 0,
int  src1_depth = 0,
int  src2_depth = 0,
int  alpha_depth = 0,
int  beta_depth = 0 
)

Compute dst = alpha src1 + beta src2, pointwise.

See also
setPatchHierarchy
resetLevels

◆ pointwiseMultiply() [4/12]

void IBTK::HierarchyMathOps::pointwiseMultiply ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  dst_var,
double  alpha,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  src1_var,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  src2_var = nullptr,
int  dst_depth = 0,
int  src1_depth = 0,
int  src2_depth = 0 
)

Compute dst = alpha src1 + beta src2, pointwise.

See also
setPatchHierarchy
resetLevels

◆ pointwiseMultiply() [5/12]

void IBTK::HierarchyMathOps::pointwiseMultiply ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  dst_var,
int  alpha_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  alpha_var,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  src1_var,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  src2_var = nullptr,
int  dst_depth = 0,
int  src1_depth = 0,
int  src2_depth = 0,
int  alpha_depth = 0 
)

Compute dst = alpha src1 + beta src2, pointwise.

See also
setPatchHierarchy
resetLevels

◆ pointwiseMultiply() [6/12]

void IBTK::HierarchyMathOps::pointwiseMultiply ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  dst_var,
int  alpha_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  alpha_var,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  src1_var,
int  beta_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  beta_var = nullptr,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::FaceVariable< NDIM, double > >  src2_var = nullptr,
int  dst_depth = 0,
int  src1_depth = 0,
int  src2_depth = 0,
int  alpha_depth = 0,
int  beta_depth = 0 
)

Compute dst = alpha src1 + beta src2, pointwise.

See also
setPatchHierarchy
resetLevels

◆ pointwiseMultiply() [7/12]

void IBTK::HierarchyMathOps::pointwiseMultiply ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  dst_var,
double  alpha,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  src1_var,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  src2_var = nullptr,
int  dst_depth = 0,
int  src1_depth = 0,
int  src2_depth = 0 
)

Compute dst = alpha src1 + beta src2, pointwise.

See also
setPatchHierarchy
resetLevels

◆ pointwiseMultiply() [8/12]

void IBTK::HierarchyMathOps::pointwiseMultiply ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  dst_var,
int  alpha_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  alpha_var,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  src1_var,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  src2_var = nullptr,
int  dst_depth = 0,
int  src1_depth = 0,
int  src2_depth = 0,
int  alpha_depth = 0 
)

Compute dst = alpha src1 + beta src2, pointwise.

See also
setPatchHierarchy
resetLevels

◆ pointwiseMultiply() [9/12]

void IBTK::HierarchyMathOps::pointwiseMultiply ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  dst_var,
int  alpha_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  alpha_var,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  src1_var,
int  beta_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  beta_var = nullptr,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  src2_var = nullptr,
int  dst_depth = 0,
int  src1_depth = 0,
int  src2_depth = 0,
int  alpha_depth = 0,
int  beta_depth = 0 
)

Compute dst = alpha src1 + beta src2, pointwise.

See also
setPatchHierarchy
resetLevels

◆ pointwiseMultiply() [10/12]

void IBTK::HierarchyMathOps::pointwiseMultiply ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  dst_var,
double  alpha,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src1_var,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src2_var = nullptr,
int  dst_depth = 0,
int  src1_depth = 0,
int  src2_depth = 0 
)

Compute dst = alpha src1 + beta src2, pointwise.

See also
setPatchHierarchy
resetLevels

◆ pointwiseMultiply() [11/12]

void IBTK::HierarchyMathOps::pointwiseMultiply ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  dst_var,
int  alpha_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  alpha_var,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src1_var,
double  beta = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src2_var = nullptr,
int  dst_depth = 0,
int  src1_depth = 0,
int  src2_depth = 0,
int  alpha_depth = 0 
)

Compute dst = alpha src1 + beta src2, pointwise.

See also
setPatchHierarchy
resetLevels

◆ pointwiseMultiply() [12/12]

void IBTK::HierarchyMathOps::pointwiseMultiply ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  dst_var,
int  alpha_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  alpha_var,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src1_var,
int  beta_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  beta_var = nullptr,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src2_var = nullptr,
int  dst_depth = 0,
int  src1_depth = 0,
int  src2_depth = 0,
int  alpha_depth = 0,
int  beta_depth = 0 
)

Compute dst = alpha src1 + beta src2, pointwise.

See also
setPatchHierarchy
resetLevels

◆ resetLevels()

void IBTK::HierarchyMathOps::resetLevels ( int  coarsest_ln,
int  finest_ln 
)

Reset range of patch levels over which operations occur.

The specified levels must exist in the hierarchy or an assertion will result.

◆ rot() [1/4]

void IBTK::HierarchyMathOps::rot ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time,
const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &  bc_coefs = std::vector<SAMRAI::solv::RobinBcCoefStrategy<NDIM>*>() 
)

Compute the side-centered rot of a node-centered scalar field using centered differences.

Sets dst = rot src.

Compute the rot of a 2d scalar field defined on nodes using centered differences.

See also
setPatchHierarchy
resetLevels

◆ rot() [2/4]

void IBTK::HierarchyMathOps::rot ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::EdgeVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time,
const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &  bc_coefs = std::vector<SAMRAI::solv::RobinBcCoefStrategy<NDIM>*>() 
)

Compute the side-centered rot of a edge-centered vector field using centered differences.

Sets dst = rot src.

Compute the rot of a 3d vector field defined on edges using centered differences.

See also
setPatchHierarchy
resetLevels

◆ rot() [3/4]

void IBTK::HierarchyMathOps::rot ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time,
const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &  bc_coefs = std::vector<SAMRAI::solv::RobinBcCoefStrategy<NDIM>*>() 
)

Compute the side-centered rot of a node-centered scalar field using centered differences.

Sets dst = rot src.

Compute the rot of a 2d scalar field defined on nodes using centered differences.

See also
setPatchHierarchy
resetLevels

◆ rot() [4/4]

void IBTK::HierarchyMathOps::rot ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time,
const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &  bc_coefs = std::vector<SAMRAI::solv::RobinBcCoefStrategy<NDIM>*>() 
)

Compute the side-centered rot of a side-centered vector field using centered differences.

Sets dst = rot src.

Compute the rot of a 3d vector field defined on sides using centered differences.

See also
setPatchHierarchy
resetLevels

◆ strain_rate() [1/2]

void IBTK::HierarchyMathOps::strain_rate ( int  dst1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst1_var,
int  dst2_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst2_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Compute the cell-centered strain rate of a side-centered vector field using centered differences.

Sets dst1 = strain src (diagonal components). Sets dst2 = strain src (off diagonal components).

Compute the strain of a vector field using centered differences.

See also
setPatchHierarchy
resetLevels

◆ strain_rate() [2/2]

void IBTK::HierarchyMathOps::strain_rate ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > >  dst_var,
int  src_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src_ghost_fill,
double  src_ghost_fill_time 
)

Compute the cell-centered strain rate of a side-centered vector field using centered differences.

Sets dst = strain src.

Compute the strain of a vector field using centered differences.

See also
setPatchHierarchy
resetLevels

◆ vc_laplace() [1/2]

void IBTK::HierarchyMathOps::vc_laplace ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  dst_var,
double  alpha,
double  beta,
int  coef1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::EdgeVariable< NDIM, double > >  coef1_var,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src1_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src1_ghost_fill,
double  src1_ghost_fill_time,
IBTK::VCInterpType  coef1_interp_type = VC_HARMONIC_INTERP,
int  coef2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  coef2_var = nullptr,
double  gamma = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src2_var = nullptr 
)

Compute dst = alpha div coef1 ((grad src1) + (grad src1)^T) + beta coef2 src1 + gamma src2, the variable coefficient generalized Laplacian of src1.

Note
This routine is only appropriate for NDIM == 3 and uses edge centered coef1. Interally, coef1 will be interpolated onto cell centers when needed. Harmonic interpolation is used by default, but coef1_interp_type = VC_AVERAGE_INTERP will apply arithmetic averaging from edges to cells
See also
setPatchHierarchy
resetLevels

◆ vc_laplace() [2/2]

void IBTK::HierarchyMathOps::vc_laplace ( int  dst_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  dst_var,
double  alpha,
double  beta,
int  coef1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::NodeVariable< NDIM, double > >  coef1_var,
int  src1_idx,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src1_var,
SAMRAI::tbox::Pointer< HierarchyGhostCellInterpolation src1_ghost_fill,
double  src1_ghost_fill_time,
IBTK::VCInterpType  coef1_interp_type = VC_HARMONIC_INTERP,
int  coef2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  coef2_var = nullptr,
double  gamma = 0.0,
int  src2_idx = invalid_index,
SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > >  src2_var = nullptr 
)

Compute dst = alpha div coef1 ((grad src1) + (grad src1)^T) + beta coef2 src1 + gamma src2, the variable coefficient generalized Laplacian of src1.

Note
This routine is only appropriate for NDIM == 2 and uses node centered coef1. Interally, coef1 will be interpolated onto cell centers when needed. Harmonic interpolation is used by default, but coef1_interp_type = VC_AVERAGE_INTERP will apply arithmetic averaging from nodes to cells
See also
setPatchHierarchy
resetLevels

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