IBAMR
An adaptive and distributed-memory parallel implementation of the immersed boundary (IB) method
|
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>
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 |
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.
IBTK::CartCellRobinPhysBdryOp::CartCellRobinPhysBdryOp | ( | ) |
Default constructor.
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.
patch_data_index | Patch data index requiring ghost cell filling. |
bc_coef | Robin boundary conditions to use with this class. |
homogeneous_bc | Whether to employ the homogeneous form of the boundary conditions. |
type | Type of interpolation to use. Valid options are "LINEAR" or "QUADRATIC". Defaults to "LINEAR". |
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.
patch_data_indices | Collection of patch data indices which require ghost cell filling. |
bc_coef | Robin boundary conditions to use with this class. |
homogeneous_bc | Whether to employ the homogeneous form of the boundary conditions. |
type | Type of interpolation to use. Valid options are "LINEAR" or "QUADRATIC". Defaults to "LINEAR". |
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.
patch_data_indices | Collection of patch data indices which require ghost cell filling. |
bc_coef | Robin boundary conditions to use with this class. |
homogeneous_bc | Whether to employ the homogeneous form of the boundary conditions. |
type | Type of interpolation to use. Valid options are "LINEAR" or "QUADRATIC". Defaults to "LINEAR". |
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.
patch_data_index | Patch data index requiring ghost cell filling. |
bc_coefs | Robin boundary conditions to use with this class. |
homogeneous_bc | Whether to employ the homogeneous form of the boundary conditions. |
type | Type of interpolation to use. Valid options are "LINEAR" or "QUADRATIC". Defaults to "LINEAR". |
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.
patch_data_indices | Collection of patch data indices which require ghost cell filling. |
bc_coefs | Robin boundary conditions to use with this class. |
homogeneous_bc | Whether to employ the homogeneous form of the boundary conditions. |
type | Type of interpolation to use. Valid options are "LINEAR" or "QUADRATIC". Defaults to "LINEAR". |
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.
patch_data_indices | Collection of patch data indices which require ghost cell filling. |
bc_coefs | Robin boundary conditions to use with this class. |
homogeneous_bc | Whether to employ the homogeneous form of the boundary conditions. |
type | Type of interpolation to use. Valid options are "LINEAR" or "QUADRATIC". Defaults to "LINEAR". |
|
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.
patch | Patch on which to fill boundary data. |
fill_time | Double simulation time for boundary filling. |
ghost_width_to_fill | Integer vector describing maximum ghost width to fill over all registered scratch components. |
Reimplemented from IBTK::RobinPhysBdryPatchStrategy.
|
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 >.
|
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.
patch | Patch on which to fill boundary data. |
fill_time | Double simulation time for boundary filling. |
ghost_width_to_fill | Integer vector describing maximum ghost width to fill over all registered scratch components. |
Implements SAMRAI::xfer::RefinePatchStrategy< NDIM >.