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

AgentParcelGridCellInterface.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:      AgentParcelGridCellInterface.h (formerly irrigation.h)
00012 //
00013 //  Contents:  Auxiliary class, links agent parcel list to grid cells,
00014 //             needed for coupling with WASIM-ETH
00015 //
00016 //
00017 //------------------------------------------------------------------------------
00018 
00019 
00020 #ifndef _AgentParcelGridCellInterface_h
00021 #define _AgentParcelGridCellInterface_h
00022 
00023 
00024 #include "AgentParcel.h"
00025 
00026 #ifdef AIX
00027    #include <unistd.h>
00028 #endif
00029 
00030 #ifndef AIX
00031         #include <dos.h>
00032 #endif /* AIX */
00033 
00034 
00035 
00036 class  crpMixClass;
00037 class  parPointlist;
00038 
00039 //data structure for crop mix per soil class
00040 class parPointer
00041 {  protected:
00042    parPointer* nextElem;
00043         parPointer* prevElem;
00044    parzelle* actualParcel;
00045 
00046    public:
00047    parPointer()   {initialize();};
00048    
00049    void initialize()
00050    {  nextElem=NULL;
00051       prevElem=NULL;
00052       actualParcel=NULL;
00053    };
00054    ~parPointer()
00055    {
00056       initialize();
00057    };
00058    
00059    void setParcel(parzelle* par) {actualParcel = par;};
00060    parzelle* getParcel() {return actualParcel;};
00061 
00062 
00063    void setNextElem(parPointer* parP) {nextElem = parP;};
00064    parPointer* getNextElem() {return nextElem;};
00065 
00066    void setPrevElem(parPointer* parP) {prevElem = parP;};
00067    parPointer* getPrevElem() {return prevElem;};
00068 
00069 };
00070 
00071 //data structure for crop mix per soil class
00072 class parPointlist
00073 {  protected:
00074    int lengthList;
00075    parPointer* firstElement;
00076    parPointer* lastElement;
00077 
00078    public:
00079    parPointlist()
00080     { lengthList=0;
00081       firstElement=NULL;
00082       lastElement=NULL;
00083     };
00084    virtual ~parPointlist();   
00085 
00086    virtual void append(parzelle* currP);
00087    //Arnold2006_46
00088    //erasing list of pointers, but leaving parzellen untouched;
00089    virtual void clearList(void);
00090 
00091    virtual void printOnScreen_list();
00092    virtual void updateIrrigWaterCropMixClass2Parcels(double iQ, int m);
00093 
00094    //Arnold2006_53
00095    // find position of a parcel "searchParcel" in list p_liste, accordiong to row/col position
00096    virtual int getPosInList(parPointer* searchPointer);//returns position (from beginning) of parcelle in List
00097 
00098    //Arnold2006_54
00099    virtual int get_len(void);//returns length of list in memory, but re-calculates each time
00100    virtual int getLengthOfList(void) {return  lengthList;};
00101 
00102    //Arnold2006_55
00103    // checks if all parcels are set to "get_hasCrop() == isTrue"
00104    virtual bool checkIfTrue(bool isTrue);
00105    virtual bool checkIfTrue(bool isTrue, int cropCnt);
00106 
00107 };
00108 
00109 //data structure for crop mix per soil class
00110 class crpMixClass
00111 {  private:
00112    //auxiliary class, everthing public
00113 
00114    //general data of soil class
00115    int scl;             //ID of soil class
00116    int nCr;    //number of cropping activities of agent
00117    int currM;  //Remembers current month (RELEVANT counting;
00118                // to get real month:
00119 
00120    //Arnold2006_31
00121    double areaTot;    // Total area that is cropped
00122    double restTot;    // Total area that is not yet allocated spatially
00123 
00124 
00125    //data per cropping activity
00126    int*    crA;//cropping activity ID
00127    //Arnold2006_31
00128    int*  LPcol;//Index into LP
00129    int* IPGvec; // Vector of irrigation priority group of each activity
00130    int* lenParcelList;
00131 
00132    double* aHa;//hectares of cropping activities
00133 
00134    //Arnold2006_31
00135    double* aHaRest;//hectares of cropping activities that is not yet allocated
00136    double* irrigQ;    // Vector of irrigation water (quantitiy in m3) by month
00137 
00138    parPointlist* parcelListArray;  //vector of parzelle*
00139 
00140    public:
00141    crpMixClass(void);
00142    crpMixClass(int sClass);
00143 
00144    virtual ~crpMixClass();
00145    
00146    virtual void initEmpty(void);
00147    virtual void allocate(int in);
00148    virtual void deallocate();
00149 
00150    void set_sClass(int sClass) { scl = sClass;}
00151    int   get_nCr() {return nCr;};
00152    int   get_scl() {return scl;};
00153 
00154    int   get_crA(int cropCnt) {return crA[cropCnt];};
00155    int   get_LPcol(int cropCnt) {return LPcol[cropCnt];};
00156    double get_aHa(int cropCnt) {return aHa[cropCnt];};
00157 
00158    void  set_crA(int cropCnt, int crAnew)     {  crA[cropCnt] = (int) crAnew;  };
00159    void  set_aHa(int cropCnt, double xi) {  aHa[cropCnt] = xi; };
00160    void  set_LPcol(int cropCnt, int col) {  LPcol[cropCnt] = col; };
00161 
00162    //Arnold2006_31
00163    void   set_irrigQ(double q, int cropCnt) { irrigQ[cropCnt] = q; };
00164    double get_irrigQ(int cropCnt) { return irrigQ[cropCnt]; };
00165 
00166    //reduces rest area of activity "cropCnt" by one parcel size
00167    double get_aHaRest(int cropCnt)
00168    {
00169       return aHaRest[cropCnt];
00170    };
00171    virtual double get_aHaRestTotal();
00172    virtual int get_RestMaxPos();
00173    virtual int get_RestMinPos();
00174 
00175    void  set_aHaRest(int cropCnt, double xi) {  aHaRest[cropCnt] = xi; };   
00176    void reduceRestByOneUnit(int cropCnt) {aHaRest[cropCnt]-=PLOTSIZE();};
00177    void restSubtract(int cropCnt, double val) {aHaRest[cropCnt]-=val;};
00178    void restAdd(int cropCnt, double val) {aHaRest[cropCnt]+=val;};   
00179 
00180    void  set_currM(int m) {currM = m;};    //RELEVANT month
00181    int  get_currM(void) {return currM;};   //RELEVANT month
00182 
00183    //Arnold2006_66: Number of parcels that have been allocated (and saved in list)
00184    void add_lenParcelList(int cropCnt) { lenParcelList[cropCnt] ++; };
00185    void subtr_lenParcelList(int cropCnt) { lenParcelList[cropCnt] --; };
00186    int get_lenParcelList(int cropCnt) { return lenParcelList[cropCnt];   };
00187    void reset_lenParcelList(int cropCnt) {  lenParcelList[cropCnt]=0; };
00188 
00189    //Arnold2006_54: llength of parcel list
00190    void set_IPGvec(int cropCnt, int g) { IPGvec[cropCnt] = g; };
00191    int get_IPGvec(int cropCnt) { return IPGvec[cropCnt]; };
00192 
00193    //Arnold2006_31: ADD Total Area Cropped / Rest
00194    virtual void addAreaCropped(void);
00195    virtual void addRest(void);
00196 
00197    //Arnold2006_33:
00198    virtual void printToScreen(void);
00199    virtual void printOnScreen_list(int cropCnt);
00200 
00201    //Arnold2006_45
00202    virtual void appendParcelAllocated(int cropCnt, parzelle* parcelAlloc);
00203    virtual void printParcels(int cropCnt);
00204    //Arnold2006_46
00205    virtual void clearParcelList();
00206 
00207    //Arnold2006_52
00208    virtual void updateIrrigWaterCropMixClass2Parcels(int cropCnt, int m, double iQ) ;
00209    virtual void updateIrrigWaterCropMixClass2Parcels_all(int mTot, int bnummer);   
00210 
00211    //Arnold2006_55
00212    // checks if all parcels in crpMixClass are set to "get_hasCrop() == true"
00213    virtual void checkIfTrue(int cropCnt, bool isTrue);
00214 };
00215 
00216 #endif
00217 

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