Array3d#

template<const int ndims, typename T = real>
class Array3d# Class for creating a 3dimensional array with (optionally) nonzero lower bounds.
 Template Parameters:
ndims – The number of pseudodimensions. Can be 0, 1, 2 or 3. If the ndims less than 3, the created array can still be accessed with 3 indices, but the second and/or third indices are ignored.
T – The array datatype.
Public Functions

Array3d() = default#
Default constructor.
This generates a zerosized array.

inline Array3d(int i0, int i1, int j0, int j1, int k0 = 0, int k1 = 0)#
Standard constructor.
This creates an array using the lower and upper bounds for each dimension. If ndims is less than 3 then the corresponding dimensions are given an upper and lower bound of zero, resulting in a size of 1.
Example:
Array3d<1> array1d(1, 10, 1, 10, 1, 10); // array1d.sx == 10, array1d.sy == array1d.sz == 1 Array3d<2> array2d(1, 10, 1, 10, 1, 10); // array2d.sx == array2d.sy == 10, array2d.sz == 1
 Parameters:
i0, i1 – Lower and upper bounds of the 1st dimension
j0, j1 – Lower and upper bounds of the 2nd dimension
k0, k1 – Lower and upper bounds of the 3rd dimension

inline Array3d(int i1, int j1, int k1)#
Basic constructor.
This creates arrays with lower bounds all set to 1. If ndims is less than 3 then the corresponding dimensions are given an upper and lower bound of zero, resulting in a size of 1.
 Parameters:
i1 – Upper bound of the 1st dimension
j1 – Upper bound of the 2nd dimension
k1 – Upper bound of the 3rd dimension

inline Array3d(int i0, int i1, int j0, int j1, int k0, int k1, void *data_)#
Standard constructor with memory reference.
This constructor can be used when the memory has already allocated elsewhere. It takes the same arguments as the standard constructor with the addition of a pointer to the memory to use. Allocation and deallocation of this memory is the responsibility of the caller.
Example:
constexpr int nx = 10, ny = 20, nz = 30; std::array<double, nx * ny * nz> mem; auto myarray = Array3d<3>(1, nx, 1, ny, 1, nz, mem.data());
 Parameters:
i0, i1 – Lower and upper bounds of the 1st dimension
j0, j1 – Lower and upper bounds of the 2nd dimension
k0, k1 – Lower and upper bounds of the 3rd dimension
data_ – Pointer to existing array storage to use

auto *get_data() const#
Get a pointer to the memory used for the 3d array.