#include <fix.h>
Public Member Functions | |
T & | operator() (IXTYPE i0) const |
T & | operator() (IXTYPE i0, IXTYPE i1) const |
T & | operator() (IXTYPE i0, IXTYPE i1, IXTYPE i2) const |
T & | operator() (IXTYPE i0, IXTYPE i1, IXTYPE i2, IXTYPE i3) const |
T & | operator() (IXTYPE i0, IXTYPE i1, IXTYPE i2, IXTYPE i3, IXTYPE i4) const |
T & | operator() (IXTYPE i0, IXTYPE i1, IXTYPE i2, IXTYPE i3, IXTYPE i4, IXTYPE i5) const |
T & | operator[] (const Ix< N > &ix) const |
constructor | |
Array () | |
Array (const Ix< varrank > &len0) | |
Array (const Ix< varrank > &len0, const Ix< N > &l0) | |
Array (const Array &src) | |
template<class TypeS> | |
Array (const Array< N, TypeS > &src) | |
Array (IXTYPE i0) | |
Array (IXTYPE i0, IXTYPE i1) | |
Array (IXTYPE i0, IXTYPE i1, IXTYPE i2) | |
Array (IXTYPE i0, IXTYPE i1, IXTYPE i2, IXTYPE i3) | |
Array (IXTYPE i0, IXTYPE i1, IXTYPE i2, IXTYPE i3, IXTYPE i4) | |
Array (IXTYPE i0, IXTYPE i1, IXTYPE i2, IXTYPE i3, IXTYPE i4, IXTYPE i5) | |
const | |
IXTYPE | L (DIMT n) const |
IXTYPE | U (DIMT n) const |
IXTYPE | Len (DIMT n) const |
IXTYPE | Stride (DIMT n) const |
T * | Origo () const |
T * | Start () const |
const MultiPtr< T > & | Data () const |
bool | IsNull () const |
nonconst | |
bool | Dealloc () |
bool | Realloc (const Ix< varrank > &len0) |
bool | Realloc (const Ix< varrank > &len0, const Ix< N > &l0) |
bool | Realloc (const Ix< varrank > &len0, const Ix< N > &l0, const MultiPtr< T > &data0, T *origo0) |
template<class TypeS> | |
bool | Realloc (const Array< N, TypeS > &src) |
template<class TypeS> | |
bool | Refer (const Array< N, TypeS > &src) |
bool | Clone () |
template<class TypeS> | |
bool | Clone (const Array< N, TypeS > &src) |
template<class TypeS> | |
Array & | operator= (const Array< N, TypeS > &src) |
Array & | operator= (const Array &src) |
Array & | Shift (DIMT n, IXTYPE i) |
Array & | Shift (const Ix< N > &ix) |
Array & | Restrict (DIMT n, IXTYPE l0, IXTYPE u0) |
Array & | Restrict (const Ix< N > &l0, const Ix< N > &u0) |
Array & | RestrictL (DIMT n, IXTYPE l0) |
Array & | RestrictL (const Ix< N > &l0) |
Array & | RestrictU (DIMT n, IXTYPE u0) |
Array & | RestrictU (const Ix< N > &u0) |
Use this array for efficient numerical computations or other applications where powerful and efficient arrays are needed for large data sets.
This specialization of Array<N,T> is often more efficient than the default Array type.
The difference between Fix and standard Array is:
There may be two reasons for doing this. First it increases type safety, if the lowest dimension range is known then the compiler should be told about it. Second it may increase the compiler's ability to optimize some loops.
To retrieve a fortran-compatible pointer to first element, use member function Start.
esso::Array< N, Fix< T0 > >::Array | ( | ) | [inline] |
Default constructor. Initialize array with no data and index bounds zero
esso::Array< N, Fix< T0 > >::Array | ( | const Ix< varrank > & | len0 | ) | [inline] |
Constructor with given number of elements and lower index bound = 0
esso::Array< N, Fix< T0 > >::Array | ( | const Ix< varrank > & | len0, | |
const Ix< N > & | l0 | |||
) | [inline] |
Constructor with given number of elements and given lower index bound
esso::Array< N, Fix< T0 > >::Array | ( | const Array< N, Fix< T0 > > & | src | ) | [inline] |
Copy constructor Creates a reference to the same memory area as src
esso::Array< N, Fix< T0 > >::Array | ( | const Array< N, TypeS > & | src | ) | [inline] |
Copy constructor from another array type object If possible, create a reference to the same memory area as src. If this is not possible, create a new memory area and copy src 's elements
esso::Array< N, Fix< T0 > >::Array | ( | IXTYPE | i0 | ) | [inline] |
1-dimensional array of given length and lower bounds =0 (only compiles for Array<1,T>)
esso::Array< N, Fix< T0 > >::Array | ( | IXTYPE | i0, | |
IXTYPE | i1 | |||
) | [inline] |
2-dimensional array of given length and lower bounds =0 (only compiles for Array<2,T>)
esso::Array< N, Fix< T0 > >::Array | ( | IXTYPE | i0, | |
IXTYPE | i1, | |||
IXTYPE | i2 | |||
) | [inline] |
3-dimensional array of given length and lower bounds =0 (only compiles for Array<3,T>)
esso::Array< N, Fix< T0 > >::Array | ( | IXTYPE | i0, | |
IXTYPE | i1, | |||
IXTYPE | i2, | |||
IXTYPE | i3 | |||
) | [inline] |
4-dimensional array of given length and lower bounds =0 (only compiles for Array<4,T>)
esso::Array< N, Fix< T0 > >::Array | ( | IXTYPE | i0, | |
IXTYPE | i1, | |||
IXTYPE | i2, | |||
IXTYPE | i3, | |||
IXTYPE | i4 | |||
) | [inline] |
5-dimensional array of given length and lower bounds =0 (only compiles for Array<5,T>)
esso::Array< N, Fix< T0 > >::Array | ( | IXTYPE | i0, | |
IXTYPE | i1, | |||
IXTYPE | i2, | |||
IXTYPE | i3, | |||
IXTYPE | i4, | |||
IXTYPE | i5 | |||
) | [inline] |
6-dimensional array of given length and lower bounds =0 (only compiles for Array<6,T>)
IXTYPE esso::Array< N, Fix< T0 > >::L | ( | DIMT | n | ) | const [inline] |
Lower index bounds L(n) is the lowest index allowed on dimension n
IXTYPE esso::Array< N, Fix< T0 > >::U | ( | DIMT | n | ) | const [inline] |
Upper index bounds U(n) is one more than the largest index allowed on dimension n
IXTYPE esso::Array< N, Fix< T0 > >::Len | ( | DIMT | n | ) | const [inline] |
Convenience function giving the number of array elements along given dimension. Simply put, Len(n) is U(n) - L(n)
T* esso::Array< N, Fix< T0 > >::Origo | ( | ) | const [inline] |
Pointer to element at index (0,0,...,0) Useful in some rare circumstances. Note that this pointer does not point to a valid element if (0,0,...,0) is outside valid index range.
T* esso::Array< N, Fix< T0 > >::Start | ( | ) | const [inline] |
Pointer to first valid element i.e. element at lowest index bound
Use this function to get pointer to pass to fortran functions.
References esso::Array< N, T0 >::operator[]().
bool esso::Array< N, Fix< T0 > >::IsNull | ( | ) | const [inline] |
bool esso::Array< N, Fix< T0 > >::Dealloc | ( | ) | [inline] |
Release this object from it's element data and set index bounds to zero
bool esso::Array< N, Fix< T0 > >::Realloc | ( | const Ix< varrank > & | len0 | ) | [inline] |
Release this object from it's element data and allocate a new data set with given size (lower index bounds zero)
bool esso::Array< N, Fix< T0 > >::Realloc | ( | const Ix< varrank > & | len0, | |
const Ix< N > & | l0 | |||
) | [inline] |
Release this object from it's element data and allocate a new data set with given size and given lower index bounds
bool esso::Array< N, Fix< T0 > >::Realloc | ( | const Array< N, TypeS > & | src | ) | [inline] |
Release this object from it's element data and allocate a new, uninitialized data set with index bounds identical to those of src.
bool esso::Array< N, Fix< T0 > >::Refer | ( | const Array< N, TypeS > & | src | ) | [inline] |
Reinitialize this object as an identical copy of src (refering to the same element data as src)
bool esso::Array< N, Fix< T0 > >::Clone | ( | ) | [inline] |
bool esso::Array< N, Fix< T0 > >::Clone | ( | const Array< N, TypeS > & | src | ) | [inline] |
Release this object from it's element data and allocate a new data set with index bounds identical to those of src. Finally copy the element data from src
Note that this is the same as Realloc followed by element-wise copy.
References esso::Array< N, T0 >::IsNull(), and esso::Array< N, T0 >::Realloc().
Array& esso::Array< N, Fix< T0 > >::operator= | ( | const Array< N, TypeS > & | src | ) | [inline] |
Create an identical reference to src data if possible (same as Refer(src) ), otherwise create a new data area and copy src 's elements into it (same as Clone(src))
Array& esso::Array< N, Fix< T0 > >::operator= | ( | const Array< N, Fix< T0 > > & | src | ) | [inline] |
Create an identical reference to src data (same as Refer(src))
References esso::Array< N, T0 >::data, esso::Array< N, T0 >::l, esso::Array< N, T0 >::origo, esso::Array< N, T0 >::stride, and esso::Array< N, T0 >::u.
Array< N, Fix< T0 > > & esso::Array< N, Fix< T0 > >::Shift | ( | DIMT | n, | |
IXTYPE | i | |||
) | [inline] |
Shift data and valid index range along dimension n
Array< N, Fix< T0 > > & esso::Array< N, Fix< T0 > >::Shift | ( | const Ix< N > & | ix | ) | [inline] |
Shift data and valid index range along all dimensions
References esso::Shift().
Array< N, Fix< T0 > > & esso::Array< N, Fix< T0 > >::Restrict | ( | DIMT | n, | |
IXTYPE | l0, | |||
IXTYPE | u0 | |||
) | [inline] |
Restrict valid index range along dimension n . Resulting index range along n is intersection of [l0,u0[ and
[L(n),U(n)[.
Array< N, Fix< T0 > > & esso::Array< N, Fix< T0 > >::Restrict | ( | const Ix< N > & | l0, | |
const Ix< N > & | u0 | |||
) | [inline] |
Restrict valid index range along all dimensions
Array< N, Fix< T0 > > & esso::Array< N, Fix< T0 > >::RestrictL | ( | DIMT | n, | |
IXTYPE | l0 | |||
) | [inline] |
Restrict lower index bound along dimension n
Array< N, Fix< T0 > > & esso::Array< N, Fix< T0 > >::RestrictL | ( | const Ix< N > & | l0 | ) | [inline] |
Restrict lower index bound along all dimensions
Array< N, Fix< T0 > > & esso::Array< N, Fix< T0 > >::RestrictU | ( | DIMT | n, | |
IXTYPE | u0 | |||
) | [inline] |
Restrict upper index bound along dimension n
Array< N, Fix< T0 > > & esso::Array< N, Fix< T0 > >::RestrictU | ( | const Ix< N > & | u0 | ) | [inline] |
Restrict upper index bound along all dimensions
T& esso::Array< N, Fix< T0 > >::operator() | ( | IXTYPE | i0 | ) | const [inline] |
Get 1-dimensional array element at given position
T& esso::Array< N, Fix< T0 > >::operator() | ( | IXTYPE | i0, | |
IXTYPE | i1 | |||
) | const [inline] |
Get 2-dimensional array element at given position
T& esso::Array< N, Fix< T0 > >::operator() | ( | IXTYPE | i0, | |
IXTYPE | i1, | |||
IXTYPE | i2 | |||
) | const [inline] |
Get 3-dimensional array element at given position
T& esso::Array< N, Fix< T0 > >::operator() | ( | IXTYPE | i0, | |
IXTYPE | i1, | |||
IXTYPE | i2, | |||
IXTYPE | i3 | |||
) | const [inline] |
Get 4-dimensional array element at given position
T& esso::Array< N, Fix< T0 > >::operator() | ( | IXTYPE | i0, | |
IXTYPE | i1, | |||
IXTYPE | i2, | |||
IXTYPE | i3, | |||
IXTYPE | i4 | |||
) | const [inline] |
Get 5-dimensional array element at given position
T& esso::Array< N, Fix< T0 > >::operator() | ( | IXTYPE | i0, | |
IXTYPE | i1, | |||
IXTYPE | i2, | |||
IXTYPE | i3, | |||
IXTYPE | i4, | |||
IXTYPE | i5 | |||
) | const [inline] |
Get 6-dimensional array element at given position
T& esso::Array< N, Fix< T0 > >::operator[] | ( | const Ix< N > & | ix | ) | const [inline] |
Get element at given position