21 int nx()
const {
return nx_; }
22 int ny()
const {
return ny_; }
23 int nz()
const {
return nz_; }
24 double dx()
const {
return dx_; }
25 int size()
const {
return nx_ * ny_ * nz_; }
30 void set(
int i,
int j,
int k,
real v) { data_[flat(i, j, k)] = v; }
36 for (
int k = 0; k < nz_; ++k)
37 for (
int j = 0; j < ny_; ++j)
38 for (
int i = 0; i < nx_; ++i)
39 data_[flat(i, j, k)] = f(i, j, k);
46 fill(std::forward<F>(f));
57 std::vector<real> data_;
59 idx flat(
int i,
int j,
int k)
const {
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)
Dense vector storage and operations.