You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.3 KiB
41 lines
1.3 KiB
#pragma once |
|
#include "basedata.h" |
|
|
|
class Simple2DData: public BaseData |
|
{ |
|
real x0 = 0.0, y0 = 0.0; |
|
size_t nx = 0, ny = 0; |
|
real xstep = 0.0, ystep = 0.0; |
|
|
|
public: |
|
Simple2DData() = default; |
|
|
|
Simple2DData(size_t nx_, size_t ny_, real x0_, real y0_, real xs_, real ys_, MString&& unit = ""): |
|
BaseData(nx_ * ny_, std::move(unit)), x0(x0_), y0(y0_), nx(nx_), ny(ny_), xstep(xs_), ystep(ys_) |
|
{ |
|
} |
|
|
|
const real& V(size_t i) const { return BaseData::V(i); } |
|
real& V(size_t i) { return BaseData::V(i); } |
|
|
|
const real& operator()(size_t i) const { return BaseData::V(i); } |
|
real& operator()(size_t i) { return BaseData::V(i); } |
|
|
|
const real& V(size_t ix, size_t iy) const { return V(iy * nx + ix); } |
|
real& V(size_t ix, size_t iy) { return V(iy * nx + ix); } |
|
|
|
const real& operator()(size_t ix, size_t iy) const { return V(iy * nx + ix); } |
|
real& operator()(size_t ix, size_t iy) { return V(iy * nx + ix); } |
|
|
|
size_t Nx() const { return nx; } |
|
size_t Ny() const { return ny; } |
|
|
|
real Lon(size_t ix, [[maybe_unused]] size_t iy) const { return x0 + ix * xstep; } |
|
real Lat([[maybe_unused]] size_t ix, size_t iy) const { return y0 + iy * ystep; } |
|
|
|
real Lon(size_t i) const { return Lon(i % nx, i / nx); } |
|
real Lat(size_t i) const { return Lat(i % nx, i / nx); } |
|
|
|
real XStep() const { return xstep; } |
|
real YStep() const { return ystep; } |
|
};
|
|
|