34 return nx_ * ny_ * nz_;
38 return data_[flat(i, j, k)];
41 return data_[flat(i, j, k)];
45 data_[flat(i, j, k)] = v;
52 for (
int k = 0; k < nz_; ++k)
53 for (
int j = 0; j < ny_; ++j)
54 for (
int i = 0; i < nx_; ++i)
55 data_[flat(i, j, k)] = f(i, j, k);
71 std::vector<real> data_;
73 idx flat(
int i,
int j,
int k)
const {
74 return (
idx)(k * ny_ * nx_ + j * nx_ + i);
void from_vector(const Vector &v)
Copy solver result back into grid.
real & operator()(int i, int j, int k)
Grid3D(int nx, int ny, int nz, double dx, F &&f)
Construct and fill from callable f(i, j, k) -> real.
void fill(F &&f)
Fill every cell with f(i, j, k).
real operator()(int i, int j, int k) const
Vector to_vector() const
Copy contents into a new Vector (for solver interop).
void set(int i, int j, int k, real v)