Simpatico  v1.10
List of all members | Public Member Functions
Util::GridArray< Data > Class Template Reference

Detailed Description

template<typename Data>
class Util::GridArray< Data >

Multi-dimensional array with the dimensionality of space.

The memory for a GridArray is stored in a single one-dimensional C array. The subscript [] operator is overloaded to return an element indexed by a one-dimensional rank, and the () operator is overloaded to return an element indexed by an IntVector of grid coordinates.

Definition at line 28 of file GridArray.h.

#include <GridArray.h>

Public Member Functions

 GridArray ()
 Constructor. More...
 
 GridArray (const GridArray< Data > &other)
 Copy constructor. More...
 
 ~GridArray ()
 Destructor. More...
 
GridArray< Data > & operator= (const GridArray< Data > &other)
 Assignment. More...
 
void allocate (const IntVector &dimensions)
 Allocate memory for a matrix. More...
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 Serialize a GridArray to/from an Archive. More...
 
bool isAllocated () const
 Return true if the GridArray has been allocated, false otherwise. More...
 
const IntVectordimensions ()
 Get all dimensions of array as an IntVector. More...
 
int dimension (int i) const
 Get number of grid points along direction i. More...
 
int size () const
 Get total number of grid points. More...
 
IntVector position (int rank) const
 Get the position IntVector of a grid point with a specified rank. More...
 
int rank (const IntVector &position) const
 Get the rank of a grid point with specified position. More...
 
bool isInGrid (int coordinate, int i) const
 Is this 1D coordinate in range? More...
 
bool isInGrid (IntVector &position) const
 Is this position within the grid? More...
 
int shift (int &coordinate, int i) const
 Shift a periodic 1D coordinate into primary range. More...
 
IntVector shift (IntVector &position) const
 Shift a periodic position into primary grid. More...
 
const Data & operator[] (int rank) const
 Return element by const reference, indexed by 1D rank. More...
 
Data & operator[] (int rank)
 Return element by reference, indexed by 1D rank. More...
 
const Data & operator() (const IntVector &position) const
 Return element by const reference, indexed by IntVector position. More...
 
Data & operator() (const IntVector &position)
 Return element by reference, indexed by IntVector position. More...
 

Constructor & Destructor Documentation

template<typename Data >
Util::GridArray< Data >::GridArray ( )
inline

Constructor.

Constructor (protected).

Definition at line 217 of file GridArray.h.

template<typename Data>
Util::GridArray< Data >::GridArray ( const GridArray< Data > &  other)

Copy constructor.

Definition at line 242 of file GridArray.h.

References Util::GridArray< Data >::allocate(), Util::GridArray< Data >::isAllocated(), and UTIL_THROW.

template<typename Data >
Util::GridArray< Data >::~GridArray ( )

Destructor.

Delete dynamically allocated C array, if allocated.

Definition at line 230 of file GridArray.h.

Member Function Documentation

template<typename Data>
GridArray< Data > & Util::GridArray< Data >::operator= ( const GridArray< Data > &  other)
template<typename Data >
void Util::GridArray< Data >::allocate ( const IntVector dimensions)
template<class Data >
template<class Archive >
void Util::GridArray< Data >::serialize ( Archive &  ar,
const unsigned int  version 
)

Serialize a GridArray to/from an Archive.

Parameters
ararchive
versionarchive version id

Definition at line 336 of file GridArray.h.

References Util::GridArray< Data >::allocate(), Util::GridArray< Data >::dimensions(), and Util::GridArray< Data >::isAllocated().

template<class Data >
bool Util::GridArray< Data >::isAllocated ( ) const
inline

Return true if the GridArray has been allocated, false otherwise.

Definition at line 517 of file GridArray.h.

Referenced by Util::GridArray< Data >::allocate(), Util::GridArray< Data >::GridArray(), Util::GridArray< Data >::operator=(), and Util::GridArray< Data >::serialize().

template<typename Data >
const IntVector & Util::GridArray< Data >::dimensions ( )
inline

Get all dimensions of array as an IntVector.

Returns
IntVector containing the number of elements in each direction.

Definition at line 357 of file GridArray.h.

Referenced by Util::GridArray< Data >::allocate(), and Util::GridArray< Data >::serialize().

template<class Data >
int Util::GridArray< Data >::dimension ( int  i) const
inline

Get number of grid points along direction i.

Parameters
iindex of Cartesian direction 0 <=i < 3.

Definition at line 364 of file GridArray.h.

Referenced by McMd::MdSpmePotential::makeWaves().

template<class Data >
int Util::GridArray< Data >::size ( ) const
inline
template<typename Data >
IntVector Util::GridArray< Data >::position ( int  rank) const

Get the position IntVector of a grid point with a specified rank.

Parameters
rankinteger rank of a grid point.
Returns
IntVector containing coordinates of specified point.

Definition at line 404 of file GridArray.h.

References Util::Dimension, and Util::GridArray< Data >::rank().

Referenced by Util::GridArray< Data >::size().

template<typename Data >
int Util::GridArray< Data >::rank ( const IntVector position) const
inline

Get the rank of a grid point with specified position.

Parameters
positioninteger position of a grid point
Returns
integer rank of specified grid point

Definition at line 394 of file GridArray.h.

Referenced by Util::GridArray< Data >::operator()(), Util::GridArray< Data >::operator[](), Util::GridArray< Data >::position(), and Util::GridArray< Data >::size().

template<typename Data >
bool Util::GridArray< Data >::isInGrid ( int  coordinate,
int  i 
) const

Is this 1D coordinate in range?

Returns true iff 0 <= coordinate < dimension(i).

Parameters
coordinatecoordinate value for direction i
iindex for Cartesian direction

Definition at line 422 of file GridArray.h.

template<typename Data >
bool Util::GridArray< Data >::isInGrid ( IntVector position) const

Is this position within the grid?

Returns true iff 0 <= coordinate[i] < dimension(i) for all i.

Parameters
positiongrid point position

Definition at line 436 of file GridArray.h.

References Util::Dimension.

template<typename Data >
int Util::GridArray< Data >::shift ( int &  coordinate,
int  i 
) const

Shift a periodic 1D coordinate into primary range.

Upon return, the coordinate will be shifted to lie within the range 0 <= coordinate < dimension(i) by subtracting an integer multiple of dimension(i), giving coordinate - shift*dimension(i). The return value is the required integer `shift'.

Parameters
coordinatecoordinate in Cartesian direction i.
iindex of Cartesian direction, i >= 0.
Returns
multiple of dimension(i) subtracted from input value.

Definition at line 452 of file GridArray.h.

Referenced by Util::GridArray< Data >::shift().

template<typename Data >
IntVector Util::GridArray< Data >::shift ( IntVector position) const

Shift a periodic position into primary grid.

Upon return, each element of the parameter position is shifted to lie within the range 0 <= position[i] < dimension(i) by adding or subtracting an integer multiple of dimension(i). The IntVector of shift values is returned.

Parameters
positionIntVector position within a grid.
Returns
IntVector of integer shifts.

Definition at line 468 of file GridArray.h.

References Util::Dimension, and Util::GridArray< Data >::shift().

template<typename Data >
const Data & Util::GridArray< Data >::operator[] ( int  rank) const
inline

Return element by const reference, indexed by 1D rank.

Parameters
rank1D array index of element

Definition at line 481 of file GridArray.h.

References Util::GridArray< Data >::rank().

template<typename Data >
Data & Util::GridArray< Data >::operator[] ( int  rank)
inline

Return element by reference, indexed by 1D rank.

Parameters
rank1D rank of element

Definition at line 488 of file GridArray.h.

References Util::GridArray< Data >::rank().

template<typename Data >
const Data & Util::GridArray< Data >::operator() ( const IntVector position) const
inline

Return element by const reference, indexed by IntVector position.

Parameters
positionIntVector of coordinates.

Definition at line 496 of file GridArray.h.

References Util::GridArray< Data >::rank().

template<typename Data >
Data & Util::GridArray< Data >::operator() ( const IntVector position)
inline

Return element by reference, indexed by IntVector position.

Parameters
positionIntVector of coordinates.

Definition at line 503 of file GridArray.h.

References Util::GridArray< Data >::rank().


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