Flumy [Free API]
Process based model for meandering chanelized systems
iDomain.hpp
1 #ifndef I_DOMAIN_HH
2 #define I_DOMAIN_HH
3 
4 #include "MCRCProgramming.hpp"
5 #include "flumy_export.hpp"
6 
7 #include "GridParams.hpp"
8 #include "Point2D.hpp"
9 #include "DepositUnit.hpp"
10 #include "WellStat.hpp"
11 
12 #ifndef SWIG
13 #include "CenterlineDisc.hpp"
14 #endif
15 
16 class iChannel;
17 class Topo;
18 
68 class FLUMY_EXPORT iDomain {
69 
70 public:
72  iDomain() {}
74  virtual ~iDomain() {}
76  virtual MP_real getSlope() const = 0;
78  virtual MP_real getSlopeAlongX() const = 0;
80  virtual MP_real getSlopeAlongY() const = 0;
82  virtual MP_real getZrefGeo() const = 0;
84  virtual MP_real getRotGridGeo() const = 0;
86  virtual MP_real getRotFlowGeo() const = 0;
88  virtual Point2D getOriginGeo() const = 0;
90  virtual MP_real getErodMax() const = 0;
92  virtual MP_age getOldestAge() const = 0;
94  virtual MP_real getZMaxGeo() const = 0;
96  virtual MP_real getZMinGeo() const = 0;
98  virtual MP_real getZMaxRel() const = 0;
100  virtual MP_real getZMinRel() const = 0;
102  virtual MP_real getMeshX() const = 0;
104  virtual MP_real getMeshY() const = 0;
106  virtual MP_int getNbNodeX() const = 0;
108  virtual MP_int getNbNodeY() const = 0;
110  virtual GridParams getGrid() const = 0;
111 
113  virtual MP_real getMinTopo(bool with_water_depth=true) const = 0;
115  virtual MP_real getMaxTopo(bool with_water_depth=true) const = 0;
117  virtual MP_real getMeanTopo(bool with_water_depth=true) const = 0;
118 
120  virtual MP_real getProportionFull(MP_stut fac,
121  MP_real zmin=MP_UNKNOWN_REAL_VALUE,
122  MP_real zmax=MP_UNKNOWN_REAL_VALUE) const = 0;
125  virtual MP_real getProportion(MP_stut fac,
126  MP_int ix_min, MP_int ix_max,
127  MP_int iy_min, MP_int iy_max,
128  MP_real zmin=MP_UNKNOWN_REAL_VALUE,
129  MP_real zmax=MP_UNKNOWN_REAL_VALUE) const = 0;
130 
132  virtual Point2D getGeoPointFromGrid(const MP_int& ix, const MP_int& iy) const = 0;
134  virtual Point2D getGeoPointFromRel(const Point2D& relPoint) const = 0;
136  virtual Point2D getRelPointFromGeo(const Point2D& geoPoint) const = 0;
137 
139  virtual Point2D getRelPointFromGrid(const MP_int& ix, const MP_int& iy) const = 0;
141  virtual Point2D getGridPointFromRel(const Point2D& relPoint) const = 0;
143  virtual Point2D getGridPointFromGeo(const Point2D& geoPoint) const = 0;
144 
146  virtual bool isValid(const MP_int& ix, const MP_int& iy) const = 0;
147 
149  virtual RealList getAllThickness() const = 0;
150  virtual FaciesList getAllFacies() const = 0;
151  virtual RealList getAllGrainsize() const = 0;
152  virtual IntList getAllGrainsizeClass() const = 0;
153  virtual AgeList getAllAge() const = 0;
154 
161  virtual DepositsList getDeposits(MP_int ix, MP_int iy) const = 0;
162 
171  virtual bool getIrregular(MP_int ix, MP_int iy, DepositsList* list) const = 0;
172 
200  virtual bool getRegularPile (MP_int ix, MP_int iy,
201  MP_real zStep,
202  FaciesList* facies,
203  AgeList* ages = NULL,
204  RealList* granulo = NULL,
205  MP_real* zBot = NULL,
206  MP_int* nbSample = NULL) const = 0;
207 
214  virtual bool getRegular (MP_int ix_min, MP_int ix_max,
215  MP_int iy_min, MP_int iy_max,
216  MP_real zStep,
217  FaciesList* facies,
218  AgeList* ages = NULL,
219  RealList* granulo = NULL,
220  MP_real* zBot = NULL,
221  MP_int* nbSample = NULL) const = 0;
222 
225  virtual FaciesList getRegularFacies (MP_real zStep,
226  MP_real zBot,
227  MP_int nbSample) const = 0;
228 
231  virtual RealList getRegularGrain (MP_real zStep,
232  MP_real zBot,
233  MP_int nbSample) const = 0;
234 
237  virtual AgeList getRegularAge (MP_real zStep,
238  MP_real zBot,
239  MP_int nbSample) const = 0;
240 
242  virtual bool getTopo(Topo& topo,
243  bool with_water = true,
244  MP_age age_limit = MP_UNKNOWN_INT_VALUE) const = 0;
245 
258  virtual bool saveF2G(const MP_string & filename, MP_real dz,
259  bool save_facies, bool save_grain, bool save_age,
260  MP_real min_z = MP_UNKNOWN_REAL_VALUE,
261  MP_real max_z = MP_UNKNOWN_REAL_VALUE,
262  const MP_string& order = MP_DEFAULT_CELLS_ORDER) const = 0;
263 
270  virtual std::vector<WellStat> getCondStats() const = 0;
271 
278  virtual bool getCenterlineDisc(CenterlineDisc& cldisc, const iChannel* ch) const = 0;
279 };
280 
281 #endif /* I_DOMAIN_HH */
282 
Base class for 3D grid description.
Definition: GridParams.hpp:28
Storage class for 2D points.
Definition: Point2D.hpp:13
Storage class used to alterate or get domain topography.
Definition: Topo.hpp:29
Interface class used to access Domain informations.
Definition: iDomain.hpp:68
virtual MP_real getMeshX() const =0
Assessor get to protected member variable _dx.
iDomain()
Default constructor.
Definition: iDomain.hpp:72
virtual MP_real getRotFlowGeo() const =0
Return flow rotation (in degrees clockwise) relative to South-North direction (90° <=> West-East)
virtual std::vector< WellStat > getCondStats() const =0
virtual bool isValid(const MP_int &ix, const MP_int &iy) const =0
Return true if indices are valid grid indices.
virtual RealList getAllThickness() const =0
Return all thicknesses / facies / grainsizes and ages.
virtual bool getCenterlineDisc(CenterlineDisc &cldisc, const iChannel *ch) const =0
virtual GridParams getGrid() const =0
Return domain geometry in grid object.
virtual Point2D getOriginGeo() const =0
Return grid origin into the geographical referential system (in meters)
virtual Point2D getRelPointFromGeo(const Point2D &geoPoint) const =0
Return a point into the relative referential system from a point into the geographical referential sy...
virtual bool getIrregular(MP_int ix, MP_int iy, DepositsList *list) const =0
Retrieve irregular vertical facies collection.
virtual Point2D getGeoPointFromRel(const Point2D &relPoint) const =0
Return a point into the geographical referential system from a point into the relative referential sy...
virtual MP_real getMaxTopo(bool with_water_depth=true) const =0
Return domain max topography (geographic)
virtual MP_real getSlopeAlongY() const =0
Return global mean slope along Y (ratio positive decreasing)
virtual MP_age getOldestAge() const =0
Return the age (in number of iteration since the simulation beginning) of the oldest deposit encounte...
virtual AgeList getRegularAge(MP_real zStep, MP_real zBot, MP_int nbSample) const =0
virtual MP_real getProportion(MP_stut fac, MP_int ix_min, MP_int ix_max, MP_int iy_min, MP_int iy_max, MP_real zmin=MP_UNKNOWN_REAL_VALUE, MP_real zmax=MP_UNKNOWN_REAL_VALUE) const =0
virtual bool getRegularPile(MP_int ix, MP_int iy, MP_real zStep, FaciesList *facies, AgeList *ages=NULL, RealList *granulo=NULL, MP_real *zBot=NULL, MP_int *nbSample=NULL) const =0
Retrieve regular vertical facies collection located at a domain grid node for a given elevation step.
virtual FaciesList getRegularFacies(MP_real zStep, MP_real zBot, MP_int nbSample) const =0
virtual MP_real getZMinRel() const =0
Return the lowest elevation of the domain (in meters) (excluding elevation at origin and mean slope)
virtual bool getRegular(MP_int ix_min, MP_int ix_max, MP_int iy_min, MP_int iy_max, MP_real zStep, FaciesList *facies, AgeList *ages=NULL, RealList *granulo=NULL, MP_real *zBot=NULL, MP_int *nbSample=NULL) const =0
virtual MP_int getNbNodeY() const =0
Assessor get to protected member variable _nx.
virtual MP_real getMeshY() const =0
Assessor get to protected member variable _dx.
virtual DepositsList getDeposits(MP_int ix, MP_int iy) const =0
Retrieve irregular vertical facies collection.
virtual RealList getRegularGrain(MP_real zStep, MP_real zBot, MP_int nbSample) const =0
virtual Point2D getGridPointFromRel(const Point2D &relPoint) const =0
Retrieve grid point from relative one.
virtual IntList getAllGrainsizeClass() const =0
virtual MP_real getSlope() const =0
Return global mean slope along flow direction (ratio positive decreasing)
virtual MP_int getNbNodeX() const =0
Assessor get to protected member variable _nx.
virtual MP_real getMeanTopo(bool with_water_depth=true) const =0
Return domain mean topography (geographic)
virtual MP_real getZrefGeo() const =0
Return grid origin elevation (in meters)
virtual bool getTopo(Topo &topo, bool with_water=true, MP_age age_limit=MP_UNKNOWN_INT_VALUE) const =0
Retrieve current topography in geographical system (including grid elevation)
virtual AgeList getAllAge() const =0
virtual MP_real getSlopeAlongX() const =0
Return global mean slope along X (ratio positive decreasing)
virtual FaciesList getAllFacies() const =0
virtual RealList getAllGrainsize() const =0
virtual MP_real getMinTopo(bool with_water_depth=true) const =0
Return domain min topography (geographic)
virtual Point2D getGeoPointFromGrid(const MP_int &ix, const MP_int &iy) const =0
Return a point into the geographical referential system from a point into the grid referential system...
virtual MP_real getZMaxRel() const =0
Return the highest elevation of the domain (in meters) (excluding elevation at origin and mean slope)
virtual MP_real getProportionFull(MP_stut fac, MP_real zmin=MP_UNKNOWN_REAL_VALUE, MP_real zmax=MP_UNKNOWN_REAL_VALUE) const =0
Return facies proportion between min and max geographical elevations.
virtual Point2D getRelPointFromGrid(const MP_int &ix, const MP_int &iy) const =0
Retrieve relative point from a grid one.
virtual Point2D getGridPointFromGeo(const Point2D &geoPoint) const =0
Retrieve grid point from geographical one.
virtual ~iDomain()
Destructor.
Definition: iDomain.hpp:74
virtual MP_real getZMinGeo() const =0
Return the lowest elevation of the domain (in meters) (including elevation at origin but excluding me...
virtual MP_real getErodMax() const =0
Return the maximum erodibility coefficient encountered inside the domain.
virtual bool saveF2G(const MP_string &filename, MP_real dz, bool save_facies, bool save_grain, bool save_age, MP_real min_z=MP_UNKNOWN_REAL_VALUE, MP_real max_z=MP_UNKNOWN_REAL_VALUE, const MP_string &order=MP_DEFAULT_CELLS_ORDER) const =0
virtual MP_real getZMaxGeo() const =0
Return the highest elevation of the domain (in meters) (including elevation at origin but excluding m...
virtual MP_real getRotGridGeo() const =0
Return grid rotation (in degrees counterclockwise) relative to West-East direction (90° <=> South-Nor...