00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
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
00033
00034
00035
00036 class crpMixClass;
00037 class parPointlist;
00038
00039
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
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
00088
00089 virtual void clearList(void);
00090
00091 virtual void printOnScreen_list();
00092 virtual void updateIrrigWaterCropMixClass2Parcels(double iQ, int m);
00093
00094
00095
00096 virtual int getPosInList(parPointer* searchPointer);
00097
00098
00099 virtual int get_len(void);
00100 virtual int getLengthOfList(void) {return lengthList;};
00101
00102
00103
00104 virtual bool checkIfTrue(bool isTrue);
00105 virtual bool checkIfTrue(bool isTrue, int cropCnt);
00106
00107 };
00108
00109
00110 class crpMixClass
00111 { private:
00112
00113
00114
00115 int scl;
00116 int nCr;
00117 int currM;
00118
00119
00120
00121 double areaTot;
00122 double restTot;
00123
00124
00125
00126 int* crA;
00127
00128 int* LPcol;
00129 int* IPGvec;
00130 int* lenParcelList;
00131
00132 double* aHa;
00133
00134
00135 double* aHaRest;
00136 double* irrigQ;
00137
00138 parPointlist* parcelListArray;
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
00163 void set_irrigQ(double q, int cropCnt) { irrigQ[cropCnt] = q; };
00164 double get_irrigQ(int cropCnt) { return irrigQ[cropCnt]; };
00165
00166
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;};
00181 int get_currM(void) {return currM;};
00182
00183
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
00190 void set_IPGvec(int cropCnt, int g) { IPGvec[cropCnt] = g; };
00191 int get_IPGvec(int cropCnt) { return IPGvec[cropCnt]; };
00192
00193
00194 virtual void addAreaCropped(void);
00195 virtual void addRest(void);
00196
00197
00198 virtual void printToScreen(void);
00199 virtual void printOnScreen_list(int cropCnt);
00200
00201
00202 virtual void appendParcelAllocated(int cropCnt, parzelle* parcelAlloc);
00203 virtual void printParcels(int cropCnt);
00204
00205 virtual void clearParcelList();
00206
00207
00208 virtual void updateIrrigWaterCropMixClass2Parcels(int cropCnt, int m, double iQ) ;
00209 virtual void updateIrrigWaterCropMixClass2Parcels_all(int mTot, int bnummer);
00210
00211
00212
00213 virtual void checkIfTrue(int cropCnt, bool isTrue);
00214 };
00215
00216 #endif
00217