|
IBAMR
IBAMR version 0.19.
|
Class OutersideData<DIM> provides an implementation for data defined at cell sides (faces) on the boundaries of AMR patches. It is derived from the hier::PatchData interface common to all SAMRAI patch data types. Given a CELL-centered AMR index space box, an outerside data object represents data of some template TYPE and depth on the cell sides (faces) on the boundary of the box. Here, depth indicates the number of data values at each face index location. The OuteredgsideGeometry class provides the translation between the standard SAMRAI cell-centered AMR index space and outerside-centered data. More...
#include <OutersideData.h>

Public Member Functions | |
| OutersideData (const hier::Box< DIM > &box, int depth, tbox::Pointer< tbox::Arena > pool=tbox::Pointer< tbox::Arena >(NULL)) | |
| Constructor for an outerside data object. More... | |
| virtual | ~OutersideData () |
| Virtual destructor for a outerside data object. More... | |
| int | getDepth () const |
| Return the depth (i.e., the number of data values for each spatial location) of the array. More... | |
| TYPE * | getPointer (int side_normal, int side, int depth=0) |
| Get a pointer to the beginning of a particular side normal, side, and depth component of the outerside centered array. More... | |
| const TYPE * | getPointer (int side_normal, int side, int depth=0) const |
| Get a const pointer to the beginning of a particular side normal, side, and depth component of the outerside centered array. More... | |
| TYPE & | operator() (const SideIndex< DIM > &i, int side, int depth=0) |
| Return a reference to data entry corresponding to a given side index, side location, and depth. More... | |
| const TYPE & | operator() (const SideIndex< DIM > &i, int side, int depth=0) const |
| Return a const reference to data entry corresponding to a given side index, side location, and depth. More... | |
| ArrayData< DIM, TYPE > & | getArrayData (int side_normal, int side) |
| Return a reference to the array data object for side normal and side location of the outerside centered array. More... | |
| const ArrayData< DIM, TYPE > & | getArrayData (int side_normal, int side) const |
| Return a const reference to the array data object for side normal and side location of the outerside centered array. More... | |
| virtual void | copy (const hier::PatchData< DIM > &src) |
| A fast copy from source to destination (i.e., this) patch data object. More... | |
| virtual void | copy2 (hier::PatchData< DIM > &dst) const |
| A fast copy from source (i.e., this) to destination patch data object. More... | |
| virtual void | copy (const hier::PatchData< DIM > &src, const hier::BoxOverlap< DIM > &overlap) |
| Copy data from source to destination (i.e., this) patch data object on the given overlap. More... | |
| virtual void | copy2 (hier::PatchData< DIM > &dst, const hier::BoxOverlap< DIM > &overlap) const |
| Copy data from source (i.e., this) to destination patch data object on the given overlap. More... | |
| void | copyDepth (int dst_depth, const SideData< DIM, TYPE > &src, int src_depth) |
| Fast copy (i.e., assumes side and outerside data objects are defined over the same box) from the given side source data object to this destination outerside data object at the specified depths. More... | |
| void | copyDepth2 (int dst_depth, SideData< DIM, TYPE > &dst, int src_depth) const |
| Fast copy (i.e., assumes side and outerside data objects are defined over the same box) to the given side destination data object from this source outerside data object at the specified depths. More... | |
| virtual bool | canEstimateStreamSizeFromBox () const |
| Return true if the patch data object can estimate the stream size required to fit its data using only index space information (i.e., a box). More... | |
| virtual int | getDataStreamSize (const hier::BoxOverlap< DIM > &overlap) const |
| Return the number of bytes needed to stream the data in this patch data object lying in the specified box overlap region. More... | |
| virtual void | packStream (tbox::AbstractStream &stream, const hier::BoxOverlap< DIM > &overlap) const |
| Pack data in this patch data object lying in the specified box overlap region into the stream. The overlap must be an SideOverlap of the same DIM. More... | |
| virtual void | unpackStream (tbox::AbstractStream &stream, const hier::BoxOverlap< DIM > &overlap) |
| Unpack data from stream into this patch data object over the specified box overlap region. The overlap must be an SideOverlap of the same DIM. More... | |
| void | fill (const TYPE &t, int d=0) |
| Fill all values at depth d with the value t. More... | |
| void | fill (const TYPE &t, const hier::Box< DIM > &box, int d=0) |
| Fill all values at depth d within the box with the value t. More... | |
| void | fillAll (const TYPE &t) |
| Fill all depth components with value t. More... | |
| void | fillAll (const TYPE &t, const hier::Box< DIM > &box) |
| Fill all depth components within the box with value t. More... | |
| void | print (const hier::Box< DIM > &box, std::ostream &os=tbox::plog, int prec=12) const |
| Print all outerside data values residing in the specified box. If the depth of the array is greater than one, all depths are printed. More... | |
| void | print (const hier::Box< DIM > &box, int depth, std::ostream &os=tbox::plog, int prec=12) const |
| Print all outerside data values at the given array depth in the specified box. More... | |
| void | printAxisSide (int side_normal, int side, const hier::Box< DIM > &box, std::ostream &os=tbox::plog, int prec=12) const |
| Print all outerside centered data values for specified side_normal and side location residing in the specified box. If the depth of the data is greater than one, all depths are printed. More... | |
| void | printAxisSide (int side_normal, int side, const hier::Box< DIM > &box, int depth, std::ostream &os=tbox::plog, int prec=12) const |
| Print all outerside centered data values for specified side_normal, side location, and depth residing in the specified box. More... | |
| virtual void | getSpecializedFromDatabase (tbox::Pointer< tbox::Database > database) |
| Check that class version and restart file version are equal. If so, read data members from the database. More... | |
| virtual void | putSpecializedToDatabase (tbox::Pointer< tbox::Database > database) |
| Write out the class version number and other data members to the database. More... | |
| const Box< DIM > & | getBox () const |
| const Box< DIM > & | getGhostBox () const |
| const IntVector< DIM > & | getGhostCellWidth () const |
| void | setTime (const double timestamp) |
| double | getTime () const |
| virtual void | getFromDatabase (tbox::Pointer< tbox::Database > database) |
| virtual void | putToDatabase (tbox::Pointer< tbox::Database > database) |
Static Public Member Functions | |
| static size_t | getSizeOfData (const hier::Box< DIM > &box, int depth) |
| Calculate the amount of memory needed to represent outerside- centered data over a CELL-centered AMR index space box. More... | |
Protected Member Functions | |
| void | setGhostBox (const Box< DIM > &ghost_box) |
Private Member Functions | |
| OutersideData (const OutersideData< DIM, TYPE > &) | |
| void | operator= (const OutersideData< DIM, TYPE > &) |
Private Attributes | |
| int | d_depth |
| ArrayData< DIM, TYPE > | d_data [DIM][2] |
| Box< DIM > | d_box |
| Box< DIM > | d_ghost_box |
| IntVector< DIM > | d_ghosts |
| double | d_timestamp |
Outerside data is stored in 2*DIM arrays, each of which contains data associated with side (face) indices normal to a coordinate axis direction and an upper or lower box side (face) in the face normal direction.
The data layout in the outerside data arrays matches the corresponding array sections provided by the side data implementation. Also, in each of array, memory allocation is in column-major ordering (e.g., Fortran style) so that the leftmost index runs fastest in memory. For example, a three-dimensional outerside data object created over a CELL-centered AMR index space [l0:u0,l1:u1,l2:u2] allocates six data arrays dimensioned as follows:
face normal 0:
lower face [ l0:l0 , l1:u1 , l2:u2 , d ]
upper face [ u0+1:u0+1 , l1:u1 , l2:u2 , d ]
face normal 1:
lower face [ l0:u0 , l1:l1 , l2:u2 , d ]
upper face [ l0:u0 , u1+1:u1+1 , l2:u2 , d ]
face normal 2:
lower face [ l0:u0 , l1:u1 , l2:l2 , d ]
upper face [ l0:u0 , l1:u1 , u2+1:u2+1 , d ]
* Here the face normal directions 0, 1, 2 can be thought of as the x, y, and z face normal directions, respectively, and d is the depth index (i.e., number of values at each face index location). Other spatial dimensions are represented similarly.
The data type TYPE must define a default constructor (that takes no arguments) and also the assignment operator.
IMPORTANT: The OuterfaceData<DIM> class provides the same storage as this outerside data class, except that the coordinate directions of the individual arrays are permuted; i.e., OuterfaceData is consistent with the FaceData implementation.
| SAMRAI::pdat::OutersideData< DIM, TYPE >::OutersideData | ( | const hier::Box< DIM > & | box, |
| int | depth, | ||
| tbox::Pointer< tbox::Arena > | pool = tbox::Pointer< tbox::Arena >(NULL) |
||
| ) |
Note: Outerside data always has ghost cell width of zero.
| box | const Box reference describing the interior of the standard CELL-centered index box over which the outerside data object will be created. |
| depth | gives the number of data values for each spatial location in the array. |
| pool | memory arena. If not given, then the standard arena is used. |
|
virtual |
|
private |
|
static |
This function assumes that the amount of memory needed for TYPE is sizeof(TYPE). If this is not the case, then a specialized function must be defined.
| box | const Box reference describing the interior of the standard CELL-centered index box over which the outerside data object will be created. Note: the ghost cell width is assumed to be zero. |
| depth | gives the number of data values for each spatial location in the array. |
| int SAMRAI::pdat::OutersideData< DIM, TYPE >::getDepth | ( | ) | const |
| TYPE* SAMRAI::pdat::OutersideData< DIM, TYPE >::getPointer | ( | int | side_normal, |
| int | side, | ||
| int | depth = 0 |
||
| ) |
| side_normal | integer side normal direction for data, must satisfy 0 <= side_normal < DIM |
| side | integer lower (0) or upper (1) side of outerside data array |
| depth | integer depth component, must satisfy 0 <= depth < actual depth of data array |
| const TYPE* SAMRAI::pdat::OutersideData< DIM, TYPE >::getPointer | ( | int | side_normal, |
| int | side, | ||
| int | depth = 0 |
||
| ) | const |
| side_normal | integer side normal direction for data, must satisfy 0 <= side_normal < DIM |
| side | integer lower (0) or upper (1) side of outerside data array |
| depth | integer depth component, must satisfy 0 <= depth < actual depth of data array |
| TYPE& SAMRAI::pdat::OutersideData< DIM, TYPE >::operator() | ( | const SideIndex< DIM > & | i, |
| int | side, | ||
| int | depth = 0 |
||
| ) |
| i | const reference to SideIndex, MUST be an index on the outerside of the box. |
| side | integer (lower/upper location of outerside data), must satisfy 0 <= side <= 1 |
| depth | integer depth component, must satisfy 0 <= depth < actual depth of data array |
| const TYPE& SAMRAI::pdat::OutersideData< DIM, TYPE >::operator() | ( | const SideIndex< DIM > & | i, |
| int | side, | ||
| int | depth = 0 |
||
| ) | const |
| i | const reference to SideIndex, MUST be an index on the outerside of the box. |
| side | integer (lower/upper location of outerside data), must satisfy 0 <= side <= 1 |
| depth | integer depth component, must satisfy 0 <= depth < actual depth of data array |
| ArrayData<DIM,TYPE>& SAMRAI::pdat::OutersideData< DIM, TYPE >::getArrayData | ( | int | side_normal, |
| int | side | ||
| ) |
| side_normal | integer side normal direction for data, must satisfy 0 <= side_normal < DIM |
| side | integer lower (0) or upper (1) side of outerside data array |
| const ArrayData<DIM,TYPE>& SAMRAI::pdat::OutersideData< DIM, TYPE >::getArrayData | ( | int | side_normal, |
| int | side | ||
| ) | const |
| side_normal | integer side normal direction for data, must satisfy 0 <= side_normal < DIM |
| side | integer lower (0) or upper (1) side of outerside data array |
|
virtual |
Data is copied where there is overlap in the underlying index space. The copy is performed on the interior plus the ghost cell width (for both the source and destination). Currently, source data must be SideData the same DIM and TYPE. If not, then an unrecoverable error results.
Implements SAMRAI::hier::PatchData< DIM >.
|
virtual |
Data is copied where there is overlap in the underlying index space. The copy is performed on the interior plus the ghost cell width (for both the source and destination). Currently, destination data must be SideData of the same DIM and TYPE. If not, then an unrecoverable error results.
Implements SAMRAI::hier::PatchData< DIM >.
|
virtual |
IMPORTANT: this routine is not yet implemented!
Implements SAMRAI::hier::PatchData< DIM >.
|
virtual |
Currently, destination data must be SideData of the same DIM and TYPE and the overlap must be a SideOverlap of the same DIM. If not, then an unrecoverable error results.
Implements SAMRAI::hier::PatchData< DIM >.
| void SAMRAI::pdat::OutersideData< DIM, TYPE >::copyDepth | ( | int | dst_depth, |
| const SideData< DIM, TYPE > & | src, | ||
| int | src_depth | ||
| ) |
| void SAMRAI::pdat::OutersideData< DIM, TYPE >::copyDepth2 | ( | int | dst_depth, |
| SideData< DIM, TYPE > & | dst, | ||
| int | src_depth | ||
| ) | const |
|
virtual |
This routine is defined for the standard types (bool, char, double, float, int, and dcomplex).
Implements SAMRAI::hier::PatchData< DIM >.
|
virtual |
This routine is defined for the standard types (bool, char, double, float, int, and dcomplex).
Implements SAMRAI::hier::PatchData< DIM >.
|
virtual |
Implements SAMRAI::hier::PatchData< DIM >.
|
virtual |
Implements SAMRAI::hier::PatchData< DIM >.
| void SAMRAI::pdat::OutersideData< DIM, TYPE >::fill | ( | const TYPE & | t, |
| int | d = 0 |
||
| ) |
| void SAMRAI::pdat::OutersideData< DIM, TYPE >::fill | ( | const TYPE & | t, |
| const hier::Box< DIM > & | box, | ||
| int | d = 0 |
||
| ) |
| void SAMRAI::pdat::OutersideData< DIM, TYPE >::fillAll | ( | const TYPE & | t | ) |
| void SAMRAI::pdat::OutersideData< DIM, TYPE >::fillAll | ( | const TYPE & | t, |
| const hier::Box< DIM > & | box | ||
| ) |
| void SAMRAI::pdat::OutersideData< DIM, TYPE >::print | ( | const hier::Box< DIM > & | box, |
| std::ostream & | os = tbox::plog, |
||
| int | prec = 12 |
||
| ) | const |
| box | const reference to box over whioch to print data. Note box is assumed to reside in standard cell-centered index space and will be converted to side index space. |
| os | reference to output stream. |
| prec | integer precision for printing floating point numbers (i.e., TYPE = float, double, or dcomplex). The default is 12 decimal places for double and complex floating point numbers, and the default is 6 decimal places floats. For other types, this value is ignored. |
| void SAMRAI::pdat::OutersideData< DIM, TYPE >::print | ( | const hier::Box< DIM > & | box, |
| int | depth, | ||
| std::ostream & | os = tbox::plog, |
||
| int | prec = 12 |
||
| ) | const |
| box | const reference to box over whioch to print data. Note box is assumed to reside in standard cell-centered index space and will be converted to side index space. |
| depth | integer depth component, must satisfy 0 <= depth < actual depth of data array |
| os | reference to output stream. |
| prec | integer precision for printing floating point numbers (i.e., TYPE = float, double, or dcomplex). The default is 12 decimal places for double and complex floating point numbers, and the default is 6 decimal places floats. For other types, this value is ignored. |
| void SAMRAI::pdat::OutersideData< DIM, TYPE >::printAxisSide | ( | int | side_normal, |
| int | side, | ||
| const hier::Box< DIM > & | box, | ||
| std::ostream & | os = tbox::plog, |
||
| int | prec = 12 |
||
| ) | const |
| side_normal | integer side normal direction for data, must satisfy 0 <= side_normal < DIM |
| side | integer lower (0) or upper (1) side of outerside data array |
| box | const reference to box over whioch to print data. Note box is assumed to reside in standard cell-centered index space and will be converted to side index space. |
| os | reference to output stream. |
| prec | integer precision for printing floating point numbers (i.e., TYPE = float, double, or dcomplex). The default is 12 decimal places for double and complex floating point numbers, and the default is 6 decimal places floats. For other types, this value is ignored. |
| void SAMRAI::pdat::OutersideData< DIM, TYPE >::printAxisSide | ( | int | side_normal, |
| int | side, | ||
| const hier::Box< DIM > & | box, | ||
| int | depth, | ||
| std::ostream & | os = tbox::plog, |
||
| int | prec = 12 |
||
| ) | const |
| side_normal | integer side normal direction for data, must satisfy 0 <= side_normal < DIM |
| side | integer lower (0) or upper (1) side of outerside data array |
| box | const reference to box over whioch to print data. Note box is assumed to reside in standard cell-centered index space and will be converted to side index space. |
| depth | integer depth component, must satisfy 0 <= depth < actual depth of data array |
| os | reference to output stream. |
| prec | integer precision for printing floating point numbers (i.e., TYPE = float, double, or dcomplex). The default is 12 decimal places for double and complex floating point numbers, and the default is 6 decimal places floats. For other types, this value is ignored. |
|
virtual |
Assertions: database must be a non-null pointer.
Implements SAMRAI::hier::PatchData< DIM >.
|
virtual |
Assertions: database must be a non-null pointer.
Implements SAMRAI::hier::PatchData< DIM >.
|
private |
|
inherited |
Return the box over which this patch data object is defined. All objects in the same patch are defined over the same box, although the patch data objects may interpret how to allocate storage for that box in different ways.
|
inherited |
Return the ghost cell box. The ghost cell box is defined to be the interior box grown by the ghost cell width.
|
inherited |
Get the ghost cell width associated with this patch data object.
|
inherited |
Set the simulation time stamp for the patch data type. The simulation time is initialized to zero when the patch data type is created.
|
inherited |
Get the simulation time stamp for the patch data type.
|
virtualinherited |
Checks that class version and restart file version are equal. If so, reads in the data members common to all patch data types from database. This method then calls the getSpecializedFromDatabase() method to retrieve the data special to the concrete patch data type.
|
virtualinherited |
Writes out the class version number to the database. Then, writes the data members common to all patch data types from database. After the common data is written to the database, the putSpecializedToDatabase() method is invoked.
|
protectedinherited |
This protected method is used by concrete patch data subclasses to set the ghost box over which the patch data will be allocated. Note that this allows the ghost box to be inconsistant with its standard interpretation as the patch domain box grown by the ghost cell width (as set in the constructor).
This function is included to treat some special cases for concrete patch data types and should be used with caution.
|
private |
|
private |
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
privateinherited |
1.8.17