51 :
mpages(std::move(g.mpages)),
52 mrows(std::move(g.mrows)),
53 mcols(std::move(g.mcols)),
54 data(std::move(g.data)) {}
67 const base& init = base())
71 data(cols * rows * pages, init) {}
83 base&
operator()(
size_t page = 0,
size_t row = 0,
size_t col = 0) {
99 size_t page = 0)
const {
117 const GridPos& row = {0, {0, 1}},
118 const GridPos& col = {0, {0, 1}})
const {
119 const std::array pos{
129 const std::array
w{page.fd[1] * row.
fd[1] * col.
fd[1],
130 page.fd[1] * row.
fd[1] * col.
fd[0],
131 page.fd[1] * row.
fd[0] * col.
fd[1],
132 page.fd[1] * row.
fd[0] * col.
fd[0],
133 page.fd[0] * row.
fd[1] * col.
fd[1],
134 page.fd[0] * row.
fd[1] * col.
fd[0],
135 page.fd[0] * row.
fd[0] * col.
fd[1],
136 page.fd[0] * row.
fd[0] * col.
fd[0]};
138 bool any_base =
false;
140 for (
size_t i = 0; i < 8; i++) {
143 out +=
w[i] *
data[pos[i]];
145 out =
w[i] *
data[pos[i]];
162 for (
size_t i = 0; i <
v.npages(); i++)
163 for (
size_t j = 0; j <
v.nrows(); j++)
164 for (
size_t k = 0; k <
v.ncols(); k++) os <<
v(i, j, k) <<
'\n';
Creates a 3D field of a base unit.
base operator()(const GridPos &page={0, {0, 1}}, const GridPos &row={0, {0, 1}}, const GridPos &col={0, {0, 1}}) const
Weighted access operator by GridPos.
size_t ncols() const
Number of columns.
Field3D(const Field3D &g)=default
Construct a new Field3D object.
friend std::ostream & operator<<(std::ostream &os, const Field3D &v)
size_t npages() const
Number of pages.
Field3D(Field3D &&g) noexcept
Construct a new Field3D object.
Field3D & operator=(Field3D &&g) noexcept=default
Default move operator.
base & operator()(size_t page=0, size_t row=0, size_t col=0)
Access operator.
Field3D(size_t pages=0, size_t rows=0, size_t cols=0, const base &init=base())
Construct a new Field 3 D object.
size_t nrows() const
Number of rows.
Field3D & operator=(const Field3D &g)=default
Default assignment operator.
const base & operator()(size_t col=0, size_t row=0, size_t page=0) const
Access operator.
Header file for interpolation.cc.
Structure to store a grid position.
std::array< Numeric, 2 > fd