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

Class CartCellRobinPhysBdryOp is a concrete SAMRAI::xfer::RefinePatchStrategy for setting Robin boundary conditions at physical boundaries for cell-centered scalar- and vector-valued quantities. More...

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

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

Public Member Functions

 CartCellRobinPhysBdryOp ()
 Default constructor. More...
 
 CartCellRobinPhysBdryOp (int patch_data_index, SAMRAI::solv::RobinBcCoefStrategy< NDIM > *bc_coef, bool homogeneous_bc=false, std::string type="LINEAR")
 Constructor to fill boundary conditions for scalar-valued quantities. More...
 
 CartCellRobinPhysBdryOp (const std::set< int > &patch_data_indices, SAMRAI::solv::RobinBcCoefStrategy< NDIM > *bc_coef, bool homogeneous_bc=false, std::string type="LINEAR")
 Constructor to fill boundary conditions for scalar-valued quantities. More...
 
 CartCellRobinPhysBdryOp (const SAMRAI::hier::ComponentSelector &patch_data_indices, SAMRAI::solv::RobinBcCoefStrategy< NDIM > *bc_coef, bool homogeneous_bc=false, std::string type="LINEAR")
 Constructor to fill boundary conditions for scalar-valued quantities. More...
 
 CartCellRobinPhysBdryOp (int patch_data_index, const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &bc_coefs, bool homogeneous_bc=false, std::string type="LINEAR")
 Constructor to fill boundary conditions for vector-valued quantities. In this case, we require that distinct boundary condition objects are provided for each data depth. More...
 
 CartCellRobinPhysBdryOp (const std::set< int > &patch_data_indices, const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &bc_coefs, bool homogeneous_bc=false, std::string type="LINEAR")
 Constructor to fill boundary conditions for vector-valued quantities. More...
 
 CartCellRobinPhysBdryOp (const SAMRAI::hier::ComponentSelector &patch_data_indices, const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &bc_coefs, bool homogeneous_bc=false, std::string type="LINEAR")
 Constructor to fill boundary conditions for vector-valued quantities. More...
 
 ~CartCellRobinPhysBdryOp ()
 Destructor.
 
- Public Member Functions inherited from IBTK::RobinPhysBdryPatchStrategy
 RobinPhysBdryPatchStrategy ()=default
 Default constructor.
 
 ~RobinPhysBdryPatchStrategy ()=default
 Destructor.
 
void setPatchDataIndex (int patch_data_index)
 Reset the patch data index operated upon by this class.
 
void setPatchDataIndices (const std::set< int > &patch_data_indices)
 Reset the patch data indices operated upon by this class.
 
void setPatchDataIndices (const SAMRAI::hier::ComponentSelector &patch_data_indices)
 Reset the patch data indices operated upon by this class.
 
void setPhysicalBcCoef (SAMRAI::solv::RobinBcCoefStrategy< NDIM > *bc_coef)
 Reset the Robin boundary condition specification object employed by this class to set physical boundary conditions. More...
 
void setPhysicalBcCoefs (const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &bc_coefs)
 Reset the Robin boundary condition specification object employed by this class to set physical boundary conditions. More...
 
void setHomogeneousBc (bool homogeneous_bc)
 Set whether boundary filling should employ homogeneous boundary conditions. More...
 
bool getHomogeneousBc () const
 
void preprocessRefine (SAMRAI::hier::Patch< NDIM > &fine, const SAMRAI::hier::Patch< NDIM > &coarse, const SAMRAI::hier::Box< NDIM > &fine_box, const SAMRAI::hier::IntVector< NDIM > &ratio) override
 
void postprocessRefine (SAMRAI::hier::Patch< NDIM > &fine, const SAMRAI::hier::Patch< NDIM > &coarse, const SAMRAI::hier::Box< NDIM > &fine_box, const SAMRAI::hier::IntVector< NDIM > &ratio) override
 
- Public Member Functions inherited from SAMRAI::xfer::RefinePatchStrategy< NDIM >
virtual void preprocessRefineBoxes (hier::Patch< NDIM > &fine, const hier::Patch< NDIM > &coarse, const hier::BoxList< NDIM > &fine_boxes, const hier::IntVector< NDIM > &ratio)
 
virtual void postprocessRefineBoxes (hier::Patch< NDIM > &fine, const hier::Patch< NDIM > &coarse, const hier::BoxList< NDIM > &fine_boxes, const hier::IntVector< NDIM > &ratio)
 

Implementation of SAMRAI::xfer::RefinePatchStrategy interface.

void setPhysicalBoundaryConditions (SAMRAI::hier::Patch< NDIM > &patch, double fill_time, const SAMRAI::hier::IntVector< NDIM > &ghost_width_to_fill) override
 
SAMRAI::hier::IntVector< NDIM > getRefineOpStencilWidth () const override
 
void accumulateFromPhysicalBoundaryData (SAMRAI::hier::Patch< NDIM > &patch, double fill_time, const SAMRAI::hier::IntVector< NDIM > &ghost_width_to_fill) override
 

Additional Inherited Members

- Protected Attributes inherited from IBTK::RobinPhysBdryPatchStrategy
std::set< int > d_patch_data_indices
 
std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > d_bc_coefs
 
bool d_homogeneous_bc = false
 

Detailed Description

Class CartCellRobinPhysBdryOp is a concrete SAMRAI::xfer::RefinePatchStrategy for setting Robin boundary conditions at physical boundaries for cell-centered scalar- and vector-valued quantities.

This implementation works similarly to the SAMRAI::solv::CartesianRobinBcHelper class. An important difference between the two classes is that class CartCellRobinPhysBdryOp allows for the specification of boundary conditions for vector-valued quantities.

Constructor & Destructor Documentation

◆ CartCellRobinPhysBdryOp() [1/7]

IBTK::CartCellRobinPhysBdryOp::CartCellRobinPhysBdryOp ( )

Default constructor.

Note
This constructor leaves the class in an undefined state. In particular, the patch data indices requiring cell filling and the boundary condition specifications must be set prior to use of method setPhysicalBoundaryConditions().
See also
setPatchDataIndex
setPatchDataIndices
setPhysicalBcCoef
setPhysicalBcCoefs
setHomogeneousBc

◆ CartCellRobinPhysBdryOp() [2/7]

IBTK::CartCellRobinPhysBdryOp::CartCellRobinPhysBdryOp ( int  patch_data_index,
SAMRAI::solv::RobinBcCoefStrategy< NDIM > *  bc_coef,
bool  homogeneous_bc = false,
std::string  type = "LINEAR" 
)

Constructor to fill boundary conditions for scalar-valued quantities.

Parameters
patch_data_indexPatch data index requiring ghost cell filling.
bc_coefRobin boundary conditions to use with this class.
homogeneous_bcWhether to employ the homogeneous form of the boundary conditions.
typeType of interpolation to use. Valid options are "LINEAR" or "QUADRATIC". Defaults to "LINEAR".

◆ CartCellRobinPhysBdryOp() [3/7]

IBTK::CartCellRobinPhysBdryOp::CartCellRobinPhysBdryOp ( const std::set< int > &  patch_data_indices,
SAMRAI::solv::RobinBcCoefStrategy< NDIM > *  bc_coef,
bool  homogeneous_bc = false,
std::string  type = "LINEAR" 
)

Constructor to fill boundary conditions for scalar-valued quantities.

Parameters
patch_data_indicesCollection of patch data indices which require ghost cell filling.
bc_coefRobin boundary conditions to use with this class.
homogeneous_bcWhether to employ the homogeneous form of the boundary conditions.
typeType of interpolation to use. Valid options are "LINEAR" or "QUADRATIC". Defaults to "LINEAR".

◆ CartCellRobinPhysBdryOp() [4/7]

IBTK::CartCellRobinPhysBdryOp::CartCellRobinPhysBdryOp ( const SAMRAI::hier::ComponentSelector patch_data_indices,
SAMRAI::solv::RobinBcCoefStrategy< NDIM > *  bc_coef,
bool  homogeneous_bc = false,
std::string  type = "LINEAR" 
)

Constructor to fill boundary conditions for scalar-valued quantities.

Parameters
patch_data_indicesCollection of patch data indices which require ghost cell filling.
bc_coefRobin boundary conditions to use with this class.
homogeneous_bcWhether to employ the homogeneous form of the boundary conditions.
typeType of interpolation to use. Valid options are "LINEAR" or "QUADRATIC". Defaults to "LINEAR".

◆ CartCellRobinPhysBdryOp() [5/7]

IBTK::CartCellRobinPhysBdryOp::CartCellRobinPhysBdryOp ( int  patch_data_index,
const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &  bc_coefs,
bool  homogeneous_bc = false,
std::string  type = "LINEAR" 
)

Constructor to fill boundary conditions for vector-valued quantities. In this case, we require that distinct boundary condition objects are provided for each data depth.

Parameters
patch_data_indexPatch data index requiring ghost cell filling.
bc_coefsRobin boundary conditions to use with this class.
homogeneous_bcWhether to employ the homogeneous form of the boundary conditions.
typeType of interpolation to use. Valid options are "LINEAR" or "QUADRATIC". Defaults to "LINEAR".

◆ CartCellRobinPhysBdryOp() [6/7]

IBTK::CartCellRobinPhysBdryOp::CartCellRobinPhysBdryOp ( const std::set< int > &  patch_data_indices,
const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &  bc_coefs,
bool  homogeneous_bc = false,
std::string  type = "LINEAR" 
)

Constructor to fill boundary conditions for vector-valued quantities.

Parameters
patch_data_indicesCollection of patch data indices which require ghost cell filling.
bc_coefsRobin boundary conditions to use with this class.
homogeneous_bcWhether to employ the homogeneous form of the boundary conditions.
typeType of interpolation to use. Valid options are "LINEAR" or "QUADRATIC". Defaults to "LINEAR".

◆ CartCellRobinPhysBdryOp() [7/7]

IBTK::CartCellRobinPhysBdryOp::CartCellRobinPhysBdryOp ( const SAMRAI::hier::ComponentSelector patch_data_indices,
const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &  bc_coefs,
bool  homogeneous_bc = false,
std::string  type = "LINEAR" 
)

Constructor to fill boundary conditions for vector-valued quantities.

Parameters
patch_data_indicesCollection of patch data indices which require ghost cell filling.
bc_coefsRobin boundary conditions to use with this class.
homogeneous_bcWhether to employ the homogeneous form of the boundary conditions.
typeType of interpolation to use. Valid options are "LINEAR" or "QUADRATIC". Defaults to "LINEAR".

Member Function Documentation

◆ accumulateFromPhysicalBoundaryData()

void IBTK::CartCellRobinPhysBdryOp::accumulateFromPhysicalBoundaryData ( SAMRAI::hier::Patch< NDIM > &  patch,
double  fill_time,
const SAMRAI::hier::IntVector< NDIM > &  ghost_width_to_fill 
)
overridevirtual

Function to accumulate data near physical boundaries from values set in the ghost cell region using the adjoint of the operator used to extrapolate the ghost cell values. This function can be used to construct the adjoint of linear operators that use ghost cell data.

Parameters
patchPatch on which to fill boundary data.
fill_timeDouble simulation time for boundary filling.
ghost_width_to_fillInteger vector describing maximum ghost width to fill over all registered scratch components.

Reimplemented from IBTK::RobinPhysBdryPatchStrategy.

◆ getRefineOpStencilWidth()

IntVector< NDIM > IBTK::CartCellRobinPhysBdryOp::getRefineOpStencilWidth ( ) const
overridevirtual

Function to return maximum stencil width needed over user-defined data interpolation operations. This is needed to determine the correct interpolation data dependencies.

Implements SAMRAI::xfer::RefinePatchStrategy< NDIM >.

◆ setPhysicalBoundaryConditions()

void IBTK::CartCellRobinPhysBdryOp::setPhysicalBoundaryConditions ( SAMRAI::hier::Patch< NDIM > &  patch,
double  fill_time,
const SAMRAI::hier::IntVector< NDIM > &  ghost_width_to_fill 
)
overridevirtual

Function to set data associated with the given list of patch data indices at patch boundaries that intersect the physical domain boundary. The patch data components set in this routine correspond to the "scratch" components specified in calls to the registerRefine() function in the SAMRAI::xfer::RefineAlgorithm class.

Parameters
patchPatch on which to fill boundary data.
fill_timeDouble simulation time for boundary filling.
ghost_width_to_fillInteger vector describing maximum ghost width to fill over all registered scratch components.

Implements SAMRAI::xfer::RefinePatchStrategy< NDIM >.


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