IBAMR  IBAMR version 0.19.
Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
SAMRAI::pdat::FaceGeometry< DIM > Class Template Referenceabstract

#include <OuterfaceGeometry.h>

Inheritance diagram for SAMRAI::pdat::FaceGeometry< DIM >:
Inheritance graph
[legend]

Public Types

typedef FaceOverlap< DIM > Overlap
 

Public Member Functions

 FaceGeometry (const hier::Box< DIM > &box, const hier::IntVector< DIM > &ghosts)
 Construct the face geometry object given an AMR index space box and ghost cell width. More...
 
virtual ~FaceGeometry ()
 The virtual destructor does nothing interesting. More...
 
virtual tbox::Pointer< hier::BoxOverlap< DIM > > calculateOverlap (const hier::BoxGeometry< DIM > &dst_geometry, const hier::BoxGeometry< DIM > &src_geometry, const hier::Box< DIM > &src_mask, const bool overwrite_interior, const hier::IntVector< DIM > &src_offset, const bool retry) const
 Compute the overlap in face-centered index space between the source box geometry and the destination box geometry. More...
 
const hier::Box< DIM > & getBox () const
 Return the box for this face centered box geometry object. More...
 
const hier::IntVector< DIM > & getGhosts () const
 Return the ghost cell width for this face centered box geometry object. More...
 
tbox::Pointer< BoxOverlap< DIM > > calculateOverlap (const BoxGeometry< DIM > &src_geometry, const Box< DIM > &src_mask, const bool overwrite_interior, const IntVector< DIM > &src_offset) const
 
virtual tbox::Pointer< BoxOverlap< DIM > > calculateOverlap (const BoxGeometry< DIM > &dst_geometry, const BoxGeometry< DIM > &src_geometry, const Box< DIM > &src_mask, const bool overwrite_interior, const IntVector< DIM > &src_offset, const bool retry) const =0
 

Static Public Member Functions

static hier::Box< DIM > toFaceBox (const hier::Box< DIM > &box, int face_normal)
 Convert an AMR index box space box into an face geometry box. An face geometry box extends the given AMR index box space box by one in upper dimension for the face normal coordinate direction. More...
 

Private Member Functions

 FaceGeometry (const FaceGeometry< DIM > &)
 
void operator= (const FaceGeometry< DIM > &)
 

Static Private Member Functions

static tbox::Pointer< hier::BoxOverlap< DIM > > doOverlap (const FaceGeometry< DIM > &dst_geometry, const FaceGeometry< DIM > &src_geometry, const hier::Box< DIM > &src_mask, const bool overwrite_interior, const hier::IntVector< DIM > &src_offset)
 

Private Attributes

hier::Box< DIM > d_box
 
hier::IntVector< DIM > d_ghosts
 

Detailed Description

template<int DIM>
class SAMRAI::pdat::FaceGeometry< DIM >

Class FaceGeometry<DIM> manages the mapping between the AMR index space and the face-centered geometry index space. It is a subclass of hier::BoxGeometry<DIM> and it computes intersections between face- centered box geometries for communication operations.

See header file for FaceData<DIM> class for a more detailed description of the data layout.

See also
hier::BoxGeometry
pdat::FaceOverlap

Member Typedef Documentation

◆ Overlap

template<int DIM>
typedef FaceOverlap<DIM> SAMRAI::pdat::FaceGeometry< DIM >::Overlap

The BoxOverlap implemenation for this geometry.

Constructor & Destructor Documentation

◆ FaceGeometry() [1/2]

template<int DIM>
SAMRAI::pdat::FaceGeometry< DIM >::FaceGeometry ( const hier::Box< DIM > &  box,
const hier::IntVector< DIM > &  ghosts 
)

◆ ~FaceGeometry()

template<int DIM>
virtual SAMRAI::pdat::FaceGeometry< DIM >::~FaceGeometry ( )
virtual

◆ FaceGeometry() [2/2]

template<int DIM>
SAMRAI::pdat::FaceGeometry< DIM >::FaceGeometry ( const FaceGeometry< DIM > &  )
private

Member Function Documentation

◆ toFaceBox()

template<int DIM>
static hier::Box<DIM> SAMRAI::pdat::FaceGeometry< DIM >::toFaceBox ( const hier::Box< DIM > &  box,
int  face_normal 
)
static

Recall that box indices are cyclically shifted such that the face normal direction is the first coordinate index. See SideData header file.

◆ calculateOverlap() [1/3]

template<int DIM>
virtual tbox::Pointer< hier::BoxOverlap<DIM> > SAMRAI::pdat::FaceGeometry< DIM >::calculateOverlap ( const hier::BoxGeometry< DIM > &  dst_geometry,
const hier::BoxGeometry< DIM > &  src_geometry,
const hier::Box< DIM > &  src_mask,
const bool  overwrite_interior,
const hier::IntVector< DIM > &  src_offset,
const bool  retry 
) const
virtual

◆ getBox()

template<int DIM>
const hier::Box<DIM>& SAMRAI::pdat::FaceGeometry< DIM >::getBox ( ) const

◆ getGhosts()

template<int DIM>
const hier::IntVector<DIM>& SAMRAI::pdat::FaceGeometry< DIM >::getGhosts ( ) const

◆ doOverlap()

template<int DIM>
static tbox::Pointer< hier::BoxOverlap<DIM> > SAMRAI::pdat::FaceGeometry< DIM >::doOverlap ( const FaceGeometry< DIM > &  dst_geometry,
const FaceGeometry< DIM > &  src_geometry,
const hier::Box< DIM > &  src_mask,
const bool  overwrite_interior,
const hier::IntVector< DIM > &  src_offset 
)
staticprivate

Function doOverlap() is the function that computes the overlap between the source and destination objects, where both box geometry objects are guaranteed to have face centered geometry.

◆ operator=()

template<int DIM>
void SAMRAI::pdat::FaceGeometry< DIM >::operator= ( const FaceGeometry< DIM > &  )
private

◆ calculateOverlap() [2/3]

template<int DIM>
tbox::Pointer< BoxOverlap<DIM> > SAMRAI::hier::BoxGeometry< DIM >::calculateOverlap ( const BoxGeometry< DIM > &  src_geometry,
const Box< DIM > &  src_mask,
const bool  overwrite_interior,
const IntVector< DIM > &  src_offset 
) const
inherited

Calculate the overlap between two box geometry objects given the source and destination (given by this) geometries, a source mask, the priority overwrite flag, and an offset between source and destination index spaces. The box overlap description returned by this function will be used in later copy and pack/unpack calls on the patch data object. The offset is from the source space into the destination index space. That is, if p is in the source index space, then p + sourceOffset is the corresponding point in the destination index space. The overwrite flag is used to represent priority between patches. If it is set, then the copy is allowed to modify the interior of the destination region. Note that the source and destination box geometries encode the geometry of the box that they represent; thus, it is possible to calculate intersections between different geometries. This will be necessary when copying data from flux sum counters into a face centered array in the AMR flux synchronization algorithm.

◆ calculateOverlap() [3/3]

template<int DIM>
virtual tbox::Pointer< BoxOverlap<DIM> > SAMRAI::hier::BoxGeometry< DIM >::calculateOverlap ( const BoxGeometry< DIM > &  dst_geometry,
const BoxGeometry< DIM > &  src_geometry,
const Box< DIM > &  src_mask,
const bool  overwrite_interior,
const IntVector< DIM > &  src_offset,
const bool  retry 
) const
pure virtualinherited

Calculate the overlap between two box geometry objects given the source and destination geometries. This form calculateOverlap() is redefined by the subclasses of BoxGeometry<DIM> for the appropriate intersection algorithms. If calculateOverlap() cannot compute the intersection between the two given geometries and retry is true, then calculateOverlap() is called on the destination geometry object with retry set to false (to avoid infinite recursion). This protocol makes it possible to add new box geometry types and still calculate intersections with existing box geometry types.

Member Data Documentation

◆ d_box

template<int DIM>
hier::Box<DIM> SAMRAI::pdat::FaceGeometry< DIM >::d_box
private

◆ d_ghosts

template<int DIM>
hier::IntVector<DIM> SAMRAI::pdat::FaceGeometry< DIM >::d_ghosts
private

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