00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _GridCellHandler_h
00021 #define _GridCellHandler_h
00022 #include <iostream>
00023 using namespace std;
00024 #include <fstream>
00025 #include <string>
00026
00027 #include "CropSoil.h"
00028 #include "AgentParcel.h"
00029 #include "MainAuxiliaryFunctions.h"
00030 #include "MatrixDouble.h"
00031 class Raster3D;
00032 class Raster2D;
00033
00034
00035
00036
00037
00038 typedef struct {
00039 int x;
00040 int y;
00041 } coord;
00042
00043
00044 class cell
00045 {
00046 protected:
00047 bool isInitializedWithData;
00048
00049 int cellFarmID;
00050 int cellAgentID;
00051 double cellDistanceHome;
00052 int cellFlagIdentifiedByOwner;
00053 int cellSoilType;
00054 int cellUser;
00055 int colr;
00056
00057 int cellPopID;
00058 int cellCluID;
00059 int cellNetwID;
00060 int cellSectorID;
00061
00062 double cellPrecip;
00064
00065
00066
00067
00068
00069 MatrixDouble couplVector;
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080 soilC* sCon;
00081
00082
00083
00084
00085 int cropAct;
00086 MatrixDouble monthlyIrrigationQuantity;
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099 friend class ldscape;
00100
00101 private:
00102
00103
00104 virtual int getFaID(void);
00105 virtual int getAGID(void);
00106
00107 virtual double getDistanceFromHome(void);
00108 virtual int getFlagOwnerOK(void);
00109 virtual int getType(void);
00110 virtual int getUser(void);
00111
00112
00113 virtual int getPpID(void);
00114 virtual int getClustID(void);
00115 virtual int getNetwID(void);
00116 virtual int getSectorID(void);
00117
00118 virtual void setSectorID(double in);
00119 virtual void setSectorID(int in);
00120
00121 virtual void setFaID(int cellFarmID);
00122 virtual void set_aID(int cellAgentID);
00123
00124 virtual void setDistanceFromHome(double cellDistanceHome);
00125 virtual void setFlagOwnerOK(int cellFlagIdentifiedByOwner);
00126 virtual void setSoilType(int cellSoilType);
00127 virtual void setUser(int usID);
00128 virtual void setColr(int colr);
00129
00130 virtual void setPpID(int ppID);
00131 virtual void setClusterID(int cellCluID);
00132 virtual void setNetworkID(int nwID);
00133
00134
00135 virtual soilC* getSCon(void);
00136 virtual void setSCon(soilC* sCon);
00137
00138 virtual double getSoilN(void);
00139 virtual double getSoilP(void);
00140 virtual double getSoilK(void);
00141 virtual double getSoilA(void);
00142 virtual double getSoilC(void);
00143 virtual double getSoilSl(void);
00144 virtual double getSoilSe(void);
00145
00146 virtual void setSoilN(double);
00147 virtual void setSoilP(double);
00148 virtual void setSoilK(double);
00149 virtual void setSoilA(double);
00150 virtual void setSoilC(double);
00151 virtual void setSoilSl(double);
00152 virtual void setSoilSe(double);
00153
00154
00155 virtual int getCropActivityID(void);
00156 virtual void setCropActivityID(int crA);
00157 virtual double getPrecip();
00158 virtual void setPrecip(double val);
00159
00160
00161
00162
00163 virtual void setMonthlyIrrigationQuantity(int mTot, double monthlyIrrigVal);
00164 virtual double getMonthlyIrrigationQuantity(int mTot);
00165
00166 virtual double getCouplingValue(Content cont);
00167 virtual void setCouplingValue(Content cont, double val);
00168
00169 public:
00170
00171
00172 cell();
00173 virtual ~cell();
00174 virtual void deallocate(void);
00175 virtual void setEmptyAll();
00176
00177 virtual void setEmptyBasic(void);
00178 virtual void setEmptyIrrig(void);
00179 virtual void setEmptyTSPC(void);
00180
00181
00182
00183
00185
00186 virtual void printToScreen(void);
00187 virtual void printToScreenBasic(void);
00188 virtual void printOnScreenCropped(void);
00189 virtual void printOnScreenIrrig(void);
00190 virtual void printOnScreenTSPC(void);
00191
00192 bool isInitialized (void)
00193 { return isInitializedWithData;};
00194
00195
00196
00197
00198
00199 virtual void setByContent_monthly(Content cont, int m, int val);
00200 virtual void setByContent_monthly(Content cont, int m, double val);
00201
00202 virtual void setByContent(Content cont, int val);
00203 virtual void setByContent(Content cont, double val);
00204
00205
00206 virtual double getByContent_monthly(Content cont, int m);
00207 virtual double getByContent(Content cont);
00208 };
00209
00210
00211
00212 class ldscape
00213 {
00214 protected:
00215
00216 int gRows;
00217 int gCols;
00218 int gridAlloc;
00219
00220 double xcoord;
00221 double ycoord;
00222 double cellsize;
00223 int noData;
00224
00225
00226 int numAg;
00227
00228 MatrixDouble agentIDs;
00229
00230 public:
00231
00232
00233 cell*** grid;
00234
00235
00237
00238 ldscape();
00239 virtual ~ldscape();
00240
00241 virtual void allocateGrid(int Rows, int Cols);
00242 virtual void deallocGrid();
00243 virtual void deallocate(int r, int c);
00244
00245 virtual int getGridAlloc();
00246
00247
00249
00250
00251
00252 virtual void writeLayerToOpenFile(FILE* file, Content cont);
00253
00254
00256
00257 virtual void printToScreen(int r, int c);
00258 virtual void printOnScreenAll(void);
00259 virtual void printOnScreenAllCropped(void);
00260
00261
00263
00264 virtual int getGRows();
00265 virtual int getGCols();
00266 virtual int rows();
00267 virtual int cols();
00268
00269 void setXcoord(double xc) {xcoord = xc;};
00270 void setYcoord(double yc) {ycoord = yc;};
00271 double getXcoord() {return xcoord;}
00272 double getYcoord() {return ycoord;}
00273
00274 virtual bool isInitialized(int r, int c);
00275
00277 virtual void provideCellContentViaGisStruct(Content cont, Raster2D& gisCont);
00278 virtual void setCellContentViaGisStruct(Content cont, Raster2D& gisCont);
00279
00280
00281 virtual void exportBasicCellContentToRaster3D( Raster3D& raster3);
00282 virtual void exportTSPCCellContentToRaster3D( Raster3D& raster3);
00283 virtual void exportIrrigCellContentToRaster3D(Raster3D& raster3);
00284 virtual void exportAnyCellContentToRaster3D( Raster3D& raster3Dcell,
00285 int startContVal, int stopContVal);
00286
00287
00288
00289
00290 virtual void setValueInCell(int r, int c, Content cont, double value);
00291 virtual double getValueInCell(int r, int c, Content cont);
00292 virtual double getValueInCell(int r, int c, Content cont, bool supress);
00293
00294 virtual void setValueInCell_monthly(int r, int c, int m, Content cont, double value);
00295 virtual double getValueInCell_monthly(int r, int c, int m, Content cont);
00296
00297
00298
00299 virtual bool updateCell(int r, int c, Content cont, double value);
00300 virtual bool updateCellMonthly(int r, int c, int m, Content cont, double newVal);
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00313
00314
00315
00316 virtual void setFoundAndPlotDistances(int fr, int fc);
00317
00318
00319
00320 virtual void setFoundForPlot(int r, int c);
00321 virtual void makeAgentVector(int nAg);
00322 virtual void setAgentID(int i, int val);
00323 virtual int getNumAgents();
00324
00325
00327
00328
00329 virtual int getFound(int r, int c);
00330 virtual void setFound(int r, int c, int);
00331
00332 virtual soilC* getSoilCond(int r, int c);
00333
00334 virtual void setSoilCond(int r, int c, soilC*&);
00335 virtual void updSoilCond(int r, int c, soilC*&);
00336
00337
00338 virtual int getFstID(int i);
00339 virtual int getPopID(int i);
00340 virtual int getCluID(int i);
00341 virtual int getNetID(int i);
00342 virtual int getNumPl(int i);
00343
00344
00345
00346
00347
00348
00349
00350 };
00351
00352
00353 #endif
00354