Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members

GridCellHandler_orig.h

Go to the documentation of this file.
00001 //------------------------------------------------------------------------------
00002 //
00003 //  Thomas Berger (main author), Pepijn Schreinemachers, and Thorsten Arnold
00004 //
00005 //
00006 //  Hohenheim University (490d)
00007 //  Professorship for Land Use Economics in the Tropics and Subtropics
00008 //
00009 //  May not be distributed without permission by main author
00010 //
00011 //  File:       GridCellHandler.h (formerly flaeche9.h)
00012 //
00013 //  Contents:   Auxiliary landscape class, containing the grid cells
00014 //
00015 //
00016 //
00017 //------------------------------------------------------------------------------
00018 
00019 
00020 #ifndef _GridCellHandler_h
00021 #define _GridCellHandler_h
00022 #include <iostream>
00023 using namespace std; // fuer C++-Compiler, damit cin nicht als std::cin eingelesen werden muss
00024 #include <fstream>   // new 2005
00025 #include <string>    // new 2005
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 // coordinates
00036 typedef struct {
00037         int x; // = column
00038         int y; // = row
00039 } coord;
00040 
00041 // gridcell
00042 class cell
00043 {
00044    protected:
00045    bool isInitializedWithData;
00046    
00047         int cellFarmID;    //farmstead ID, must be identical with agent plot ID (cellAgentID = cellFarmID)
00048         int cellAgentID;   //agent plot ID, must be identical with farmstead ID (cellAgentID = cellFarmID)
00049         double cellDistanceHome;//Euklidean distance of plot from farmstead
00050         int cellFlagIdentifiedByOwner;   //flag: plot identified by owner
00051         int cellSoilType;  //soil type
00052    int cellUser;      //cellUser ID (operator, not necessarily owner)
00053    int colr;          //color of cellUser's plots
00054 
00055    int cellPopID;     //population ID of owner
00056    int cellCluID;     //cluster ID of owner
00057    int cellNetwID;    //network ID of owner
00058    int cellSectorID;  // used when migrating cells to catchment
00059 
00060 /* Tbe 071120 apparently not needed
00061    // This pointer is initialized if the grid is actually owned by some agent, and
00062    // if it then attributed spatially. Otherwise, it remains as initialized to NULL
00063    parzelle* parcel;
00064 */
00065    // Pointer to soilC
00066    // Changed pointer soilC* sCon. Since there were problems with memory allocation,
00067    // now I defined a variable soilC sConDat, which is still referenced with a
00068    // pointer soilC* sCon. Thus, the code does not have to be changed anywhere.
00069    // Only memory allocation changes, sCon->METHODE() still works!
00070    soilC* sCon;   //soil conditions
00071    //soilC sConDat;
00072 
00073    //Spatial allcoation of cropping activities
00074    //cropAct links to milp->getHydro_XXXXX(int crA)
00075    int cropAct;     // Cropping activity
00076    MatrixDouble monthlyIrrigationQuantity;
00077                      // Quantity of irrigation water applied
00078                     // ARRAY, since it encodes for each REAL month
00079                     // setIrrigQ(mTot) called with real month, has Dims of RELEVANT months
00080 
00081                     // (returns zero if not relevant)
00082 
00083    public:
00084    cell();
00085    virtual ~cell();
00086    virtual void deallocate(void);
00087    virtual void setEmptyAll();
00088    // calls:
00089    virtual void setEmptyBasic(void);
00090    virtual void setEmptyIrrig(void);
00091    virtual void setEmptyTSPC(void);
00092 
00093 
00094 
00095    // ----------------------------------------
00097    // ----------------------------------------
00098    virtual void printToScreen(void);
00099    virtual void printToScreenBasic(void);
00100    virtual void printOnScreenCropped(void);
00101    virtual void printOnScreenIrrig(void);
00102    virtual void printOnScreenTSPC(void);
00103 
00104    bool isInitialized (void)
00105    { return isInitializedWithData;};
00106 
00107    // -----------------
00108    // get - set functions
00109    // -----------------
00110 
00111    virtual void setByContent(Content cont, int val);
00112    virtual void setByContent(Content cont, double val);
00113 
00114    virtual double getByContent(Content cont);
00115 
00116    // ---------------------------------------------------
00117    // SHOULD ALL BE PRIVATE
00118    // ---------------------------------------------------
00119 
00120    // Receives ACTUAL (real) months, but internally saves as reduced ("relevant") months.
00121    // Internal conversion.
00122    virtual void setMonthlyIrrigationQuantity(int mTot, double monthlyIrrigVal);
00123    virtual double getMonthlyIrrigationQuantity(int mTot);
00124 
00125    // General, original version
00126    virtual int getFaID(void);
00127    virtual int getAGID(void);
00128 
00129    virtual double getDistanceFromHome(void);
00130    virtual int getFlagOwnerOK(void);
00131    virtual int getType(void);
00132    virtual int getUser(void);
00133 //   virtual int getColr(void);
00134 
00135    virtual int getPpID(void);
00136    virtual int getClustID(void);
00137    virtual int getNetwID(void);
00138    virtual int getSectorID(void);
00139 
00140    virtual void setSectorID(double in);
00141    virtual void setSectorID(int in);
00142 
00143    virtual void setFaID(int cellFarmID);
00144    virtual void set_aID(int cellAgentID);
00145 
00146    virtual void setDistanceFromHome(double cellDistanceHome);
00147    virtual void setFlagOwnerOK(int cellFlagIdentifiedByOwner);
00148    virtual void setSoilType(int cellSoilType);
00149    virtual void setUser(int usID);
00150    virtual void setColr(int colr);
00151 
00152    virtual void setPpID(int ppID);
00153    virtual void setClusterID(int cellCluID);
00154    virtual void setNetworkID(int nwID);
00155 
00156    // TSPC
00157    virtual soilC* getSCon(void);
00158    virtual void setSCon(soilC* sCon);
00159 
00160    virtual double getSoilN(void);
00161    virtual double getSoilP(void);
00162    virtual double getSoilK(void);
00163    virtual double getSoilA(void);
00164    virtual double getSoilC(void);
00165    virtual double getSoilSl(void);
00166    virtual double getSoilSe(void);
00167 
00168    virtual void setSoilN(double);
00169    virtual void setSoilP(double);
00170    virtual void setSoilK(double);
00171    virtual void setSoilA(double);
00172    virtual void setSoilC(double);
00173    virtual void setSoilSl(double);
00174    virtual void setSoilSe(double);
00175 
00176    // Irrigation Spatially explicit
00177    virtual int  getCropActivityID(void);
00178    virtual void setCropActivityID(int crA);
00179 };
00180 
00181 //------------------------------------------------------------------------------
00182 // --> landscape
00183 class ldscape
00184 {  
00185    protected:
00186 
00187         int gRows;   //Rows in grid
00188         int gCols;   //columns in grid
00189    int gridAlloc;//Flag: grid allocated (yes/no)
00190 
00191    double xcoord;
00192    double ycoord;
00193    double cellsize;
00194    int noData;
00195 
00196    
00197    int  numAg;
00198    /* TODO 1 -oArnold -cImplement : Discard this vector - it does not belong into this class */
00199    MatrixDouble agentIDs;
00200 
00201    public:
00202    //pointer to cells in grid
00203    /* TODO 2 -oBerger -cImplement : grid should become protected element of ldscape */
00204    cell*** grid;
00205 
00206    // --------------------------------------
00208    // --------------------------------------
00209    ldscape();
00210         virtual ~ldscape();
00211 
00212    virtual void allocateGrid(int Rows, int Cols);
00213         virtual void deallocGrid();
00214    virtual void deallocate(int r, int c);
00215 
00216    virtual int getGridAlloc();
00217 
00218    // --------------------------------------
00220    // --------------------------------------
00221 //   virtual void writeAllMapsIntoFiles(char* prefix); // prefix not used anymore
00222 //   virtual void writeAllMapsIntoFiles();
00223    virtual void writeLayerToOpenFile(FILE* file, Content cont);
00224      
00225    // --------------------------------------
00227    // --------------------------------------
00228    virtual void printToScreen(int r, int c);
00229    virtual void printOnScreenAll(void);
00230    virtual void printOnScreenAllCropped(void);
00231 
00232    // --------------------------------------
00234    // --------------------------------------
00235    virtual int getGRows();
00236    virtual int getGCols();
00237    virtual int rows();
00238    virtual int cols();
00239 
00240    void setXcoord(double xc) {xcoord = xc;};
00241    void setYcoord(double yc) {ycoord = yc;};
00242    double getXcoord() {return xcoord;}
00243    double getYcoord() {return ycoord;}
00244   
00245    virtual bool isInitialized(int r, int c);
00246    
00248    virtual void provideCellContentViaGisStruct( Content cont, Raster2D& gisCont);
00249    virtual void setCellContentViaGisStruct( Content cont, Raster2D& gisCont);
00250 
00251    // Access by Raster3D
00252    virtual void exportBasicCellContentToRaster3D(Raster3D& raster3);
00253    virtual void exportTSPCCellContentToRaster3D(Raster3D& raster3);
00254    virtual void exportIrrigCellContentToRaster3D(Raster3D& raster3);
00255    virtual void exportAnyCellContentToRaster3D(
00256            Raster3D& raster3Dcell, 
00257           int startContVal, int stopContVal);
00258    virtual double getValueInCell(int r, int c, Content cont, bool supressOutputs);
00259    
00260    // THESE SHOULD BE ONLY ACCESS FUNCTIONS at cell level
00261    // setValueInCell(r, c, contDistFromHome, value);
00262    // = getValueInCell(r, c, contAgentID);
00263    virtual void setValueInCell(int r, int c, Content cont, double value);
00264    virtual double getValueInCell(int r, int c, Content cont);
00265 
00266    virtual bool updateCell(int r, int c, Content cont, double value); //probably not used
00267     //(takes REAL month. Only "cell" does conversion)
00268    virtual bool updateCellMonthly(int r, int c, int mTot, Content cont, double newVal);
00269 
00270 
00271    // --------------------------------------
00273    // --------------------------------------
00274 
00275    // Functions that do something
00276    virtual void setFoundAndPlotDistances(int fr, int fc);
00277 
00278    // Carefull: This function can be called INSTEAD of setFoundAndPlotDistances, 
00279    // implemented for standalone consistency check.   
00280    virtual void setFoundForPlot(int r, int c);
00281    virtual void makeAgentVector(int nAg);
00282    virtual void setAgentID(int i, int val);
00283    virtual int getNumAgents();
00284 
00285    // --------------------------------------
00287    // --------------------------------------
00288    // row r, col c always refer to the grid within "cell*** grid"
00289    virtual int getFound(int r, int c);
00290    virtual void setFound(int r, int c, int);
00291 
00292    virtual soilC* getSoilCond(int r, int c);
00293 
00294    virtual void setSoilCond(int r, int c, soilC*&);//overwrites values
00295    virtual void updSoilCond(int r, int c, soilC*&);//adds values
00296 
00297    // These require some vector
00298    virtual int getFstID(int i);
00299    virtual int getPopID(int i);
00300    virtual int getCluID(int i);
00301    virtual int getNetID(int i);
00302    virtual int getNumPl(int i);
00303 
00304    // receives ACTUAL (real) MONTH!
00305    // Internal conversion within cell::getMonthlyIrrigationQuantity(m);
00306    virtual double getMonthlyIrrigationQuantity( int r, int c, int m);
00307    virtual void setMonthlyIrrigationQuantity(int r, int c, int m, double newVal);
00308 
00309 };
00310 
00311 
00312 #endif
00313 

Generated on Thu Aug 28 12:38:45 2008 for MPMAS by  doxygen 1.3.9.1