IBAMR  IBAMR version 0.19.
Public Member Functions | Static Public Attributes | List of all members
IBTK::CartSideDoubleDivPreservingRefine Class Referenceabstract

Class CartSideDoubleDivPreservingRefine is a concrete SAMRAI::xfer::RefinePatchStrategy which prolongs side-centered double precision patch data via conservative linear interpolation with divergence- and curl-preserving corrections.

#include <ibtk/CartSideDoubleDivPreservingRefine.h>

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

Public Member Functions

 CartSideDoubleDivPreservingRefine (int u_dst_idx, int u_src_idx, int indicator_idx, SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineOperator< NDIM > > refine_op, SAMRAI::tbox::Pointer< SAMRAI::xfer::CoarsenOperator< NDIM > > coarsen_op, double fill_time, SAMRAI::xfer::RefinePatchStrategy< NDIM > *phys_bdry_op)
 Constructor. More...
 
virtual ~CartSideDoubleDivPreservingRefine ()=default
 Virtual destructor. More...
 
virtual void setPhysicalBoundaryConditions (hier::Patch< DIM > &patch, const double fill_time, const hier::IntVector< DIM > &ghost_width_to_fill)=0
 
virtual hier::IntVector< DIM > getRefineOpStencilWidth () const=0
 
virtual void preprocessRefine (hier::Patch< DIM > &fine, const hier::Patch< DIM > &coarse, const hier::Box< DIM > &fine_box, const hier::IntVector< DIM > &ratio)=0
 
virtual void postprocessRefine (hier::Patch< DIM > &fine, const hier::Patch< DIM > &coarse, const hier::Box< DIM > &fine_box, const hier::IntVector< DIM > &ratio)=0
 
virtual void preprocessRefineBoxes (hier::Patch< DIM > &fine, const hier::Patch< DIM > &coarse, const hier::BoxList< DIM > &fine_boxes, const hier::IntVector< DIM > &ratio)
 
virtual void postprocessRefineBoxes (hier::Patch< DIM > &fine, const hier::Patch< DIM > &coarse, const hier::BoxList< DIM > &fine_boxes, const hier::IntVector< DIM > &ratio)
 

Static Public Attributes

static const int REFINE_OP_STENCIL_WIDTH = 4
 The number of required ghost cells. More...
 

Implementation of SAMRAI::xfer::RefinePatchStrategy interface.

const int d_u_dst_idx
 
const int d_u_src_idx
 
const int d_indicator_idx
 
const double d_fill_time
 
SAMRAI::xfer::RefinePatchStrategy< NDIM > *const d_phys_bdry_op
 
SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineOperator< NDIM > > d_refine_op
 
SAMRAI::tbox::Pointer< SAMRAI::xfer::CoarsenOperator< NDIM > > d_coarsen_op
 
virtual void setPhysicalBoundaryConditions (SAMRAI::hier::Patch< NDIM > &patch, double fill_time, const SAMRAI::hier::IntVector< NDIM > &ghost_width_to_fill) override
 
virtual SAMRAI::hier::IntVector< NDIM > getRefineOpStencilWidth () const override
 
virtual 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
 
virtual 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
 
 CartSideDoubleDivPreservingRefine ()=delete
 Default constructor. More...
 
 CartSideDoubleDivPreservingRefine (const CartSideDoubleDivPreservingRefine &from)=delete
 Copy constructor. More...
 
CartSideDoubleDivPreservingRefineoperator= (const CartSideDoubleDivPreservingRefine &that)=delete
 Assignment operator. More...
 

Constructor & Destructor Documentation

◆ CartSideDoubleDivPreservingRefine() [1/3]

IBTK::CartSideDoubleDivPreservingRefine::CartSideDoubleDivPreservingRefine ( int  u_dst_idx,
int  u_src_idx,
int  indicator_idx,
SAMRAI::tbox::Pointer< SAMRAI::xfer::RefineOperator< NDIM > >  refine_op,
SAMRAI::tbox::Pointer< SAMRAI::xfer::CoarsenOperator< NDIM > >  coarsen_op,
double  fill_time,
SAMRAI::xfer::RefinePatchStrategy< NDIM > *  phys_bdry_op 
)

◆ ~CartSideDoubleDivPreservingRefine()

virtual IBTK::CartSideDoubleDivPreservingRefine::~CartSideDoubleDivPreservingRefine ( )
virtualdefault

◆ CartSideDoubleDivPreservingRefine() [2/3]

IBTK::CartSideDoubleDivPreservingRefine::CartSideDoubleDivPreservingRefine ( )
privatedelete
Note
This constructor is not implemented and should not be used.

◆ CartSideDoubleDivPreservingRefine() [3/3]

IBTK::CartSideDoubleDivPreservingRefine::CartSideDoubleDivPreservingRefine ( const CartSideDoubleDivPreservingRefine from)
privatedelete
Note
This constructor is not implemented and should not be used.
Parameters
fromThe value to copy to this object.

Member Function Documentation

◆ setPhysicalBoundaryConditions() [1/2]

virtual void IBTK::CartSideDoubleDivPreservingRefine::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 specific boundary conditions are determined by the user. 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.

◆ getRefineOpStencilWidth() [1/2]

virtual SAMRAI::hier::IntVector<NDIM> IBTK::CartSideDoubleDivPreservingRefine::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.

◆ preprocessRefine() [1/2]

virtual void IBTK::CartSideDoubleDivPreservingRefine::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 
)
overridevirtual

Function to perform user-defined preprocess data refine operations. This member function is called before standard refine operations (expressed using concrete subclasses of the SAMRAI::xfer::RefineOperator base class). The preprocess function refines data from the scratch components of the coarse patch into the scratch components of the fine patch on the specified fine box region. Recall that the scratch components are specified in calls to the registerRefine() function in the SAMRAI::xfer::RefineAlgorithm class.

Parameters
fineFine patch containing destination data.
coarseCoarse patch containing source data.
fine_boxBox region on fine patch into which data is refined.
ratioInteger vector containing ratio relating index space between coarse and fine patches.

◆ postprocessRefine() [1/2]

virtual void IBTK::CartSideDoubleDivPreservingRefine::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 
)
overridevirtual

Function to perform user-defined preprocess data refine operations. This member function is called after standard refine operations (expressed using concrete subclasses of the SAMRAI::xfer::RefineOperator base class). The postprocess function refines data from the scratch components of the coarse patch into the scratch components of the fine patch on the specified fine box region. Recall that the scratch components are specified in calls to the registerRefine() function in the SAMRAI::xfer::RefineAlgorithm class.

Parameters
fineFine patch containing destination data.
coarseCoarse patch containing source data.
fine_boxBox region on fine patch into which data is refined.
ratioInteger vector containing ratio relating index space between coarse and fine patches.

◆ operator=()

CartSideDoubleDivPreservingRefine& IBTK::CartSideDoubleDivPreservingRefine::operator= ( const CartSideDoubleDivPreservingRefine that)
privatedelete
Note
This operator is not implemented and should not be used.
Parameters
thatThe value to assign to this object.
Returns
A reference to this object.

◆ setPhysicalBoundaryConditions() [2/2]

virtual void SAMRAI::xfer::RefinePatchStrategy< DIM >::setPhysicalBoundaryConditions ( hier::Patch< DIM > &  patch,
const double  fill_time,
const hier::IntVector< DIM > &  ghost_width_to_fill 
)
pure virtualinherited

Pure virtual function to set data associated with the given list of patch data indices at patch boundaries that intersect the physical domain boundary. The specific boundary conditions are determined by the user. The patch data components set in this routine correspond to the "scratch" components specified in calls to the registerRefine() function in the RefineAlgorithm<DIM> class.

Parameters
patchhier::Patch 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.

◆ getRefineOpStencilWidth() [2/2]

virtual hier::IntVector<DIM> SAMRAI::xfer::RefinePatchStrategy< DIM >::getRefineOpStencilWidth ( ) const
pure virtualinherited

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

◆ preprocessRefine() [2/2]

virtual void SAMRAI::xfer::RefinePatchStrategy< DIM >::preprocessRefine ( hier::Patch< DIM > &  fine,
const hier::Patch< DIM > &  coarse,
const hier::Box< DIM > &  fine_box,
const hier::IntVector< DIM > &  ratio 
)
pure virtualinherited

Pure virtual function to perform user-defined preprocess data refine operations. This member function is called before standard refine operations (expressed using concrete subclasses of the RefineOperator<DIM> base class). The preprocess function must refine data from the scratch components of the coarse patch into the scratch components of the fine patch on the specified fine box region. Recall that the scratch components are specified in calls to the registerRefine() function in the RefineAlgorithm<DIM> class.

Parameters
fineFine patch containing destination data.
coarseCoarse patch containing source data.
fine_boxhier::Box region on fine patch into which data is refined.
ratioInteger vector containing ratio relating index space between coarse and fine patches.

◆ postprocessRefine() [2/2]

virtual void SAMRAI::xfer::RefinePatchStrategy< DIM >::postprocessRefine ( hier::Patch< DIM > &  fine,
const hier::Patch< DIM > &  coarse,
const hier::Box< DIM > &  fine_box,
const hier::IntVector< DIM > &  ratio 
)
pure virtualinherited

Pure virtual function to perform user-defined postprocess data refine operations. This member function is called after standard refine operations (expressed using concrete subclasses of the RefineOperator<DIM> base class). The postprocess function must refine data from the scratch components of the coarse patch into the scratch components of the fine patch on the specified fine box region. Recall that the scratch components are specified in calls to the registerRefine() function in the RefineAlgorithm<DIM> class.

Parameters
fineFine patch containing destination data.
coarseCoarse patch containing source data.
fine_boxhier::Box region on fine patch into which data is refined.
ratioInteger vector containing ratio relating index space between coarse and fine patches.

◆ preprocessRefineBoxes()

virtual void SAMRAI::xfer::RefinePatchStrategy< DIM >::preprocessRefineBoxes ( hier::Patch< DIM > &  fine,
const hier::Patch< DIM > &  coarse,
const hier::BoxList< DIM > &  fine_boxes,
const hier::IntVector< DIM > &  ratio 
)
virtualinherited

Virtual function to perform user-defined refine operations. This member function is called before standard refining operations (expressed using concrete subclasses of the RefineOperator<DIM> base class). The preprocess function must refine data from the scratch components of the coarse patch into the scratch components of the fine patch on the specified fine box regions.

Typically, only the pure virtual members of this class are implemented in user-defined subclasses of this base class. This version of the preprocess function operates on an entire box list. By default, this version simply loops over the box list and calls the single-box version, which is a pure virtual function.

Parameters
fineFine patch containing destination data.
coarseCoarse patch containing source data.
fine_boxestbox::List of box regions on fine patch into which data is refined.
ratioInteger vector containing ratio relating index space between coarse and fine patches.

◆ postprocessRefineBoxes()

virtual void SAMRAI::xfer::RefinePatchStrategy< DIM >::postprocessRefineBoxes ( hier::Patch< DIM > &  fine,
const hier::Patch< DIM > &  coarse,
const hier::BoxList< DIM > &  fine_boxes,
const hier::IntVector< DIM > &  ratio 
)
virtualinherited

Virtual function to perform user-defined refine operations. This member function is called after standard refining operations (expressed using concrete subclasses of the RefineOperator<DIM> base class). The postprocess function must refine data from the scratch components of the coarse patch into the scratch components of the fine patch on the specified fine box regions.

Typically, only the pure virtual members of this class are implemented in user-defined subclasses of this base class. This version of the postprocess function operates on an entire box list. By default, this version simply loops over the box list and calls the single-box version, which is a pure virtual function.

Parameters
fineFine patch containing destination data.
coarseCoarse patch containing source data.
fine_boxestbox::List of box regions on fine patch into which data is refined.
ratioInteger vector containing ratio relating index space between coarse and fine patches.

Member Data Documentation

◆ REFINE_OP_STENCIL_WIDTH

const int IBTK::CartSideDoubleDivPreservingRefine::REFINE_OP_STENCIL_WIDTH = 4
static
Note
This value is chosen to allow refinement ratios up to 4. A larger value would be necessary for refinement ratios greater than 4.

◆ d_u_dst_idx

const int IBTK::CartSideDoubleDivPreservingRefine::d_u_dst_idx
private

Patch data indices.

◆ d_u_src_idx

const int IBTK::CartSideDoubleDivPreservingRefine::d_u_src_idx
private

◆ d_indicator_idx

const int IBTK::CartSideDoubleDivPreservingRefine::d_indicator_idx
private

◆ d_fill_time

const double IBTK::CartSideDoubleDivPreservingRefine::d_fill_time
private

Routines for setting physical boundary conditions.

◆ d_phys_bdry_op

SAMRAI::xfer::RefinePatchStrategy<NDIM>* const IBTK::CartSideDoubleDivPreservingRefine::d_phys_bdry_op
private

◆ d_refine_op

SAMRAI::tbox::Pointer<SAMRAI::xfer::RefineOperator<NDIM> > IBTK::CartSideDoubleDivPreservingRefine::d_refine_op
private

The basic linear refine operator.

◆ d_coarsen_op

SAMRAI::tbox::Pointer<SAMRAI::xfer::CoarsenOperator<NDIM> > IBTK::CartSideDoubleDivPreservingRefine::d_coarsen_op
private

The basic coarsening operator.


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