00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _CatchmentHandler_h
00023 #define _CatchmentHandler_h
00024
00025
00026 #include "CatchmentSectorAuxiliary.h"
00027 #include "MatrixDouble.h"
00028 #include "Raster2D.h"
00029 #include "BasicEnums.h"
00030
00031
00032
00033 #include"Catchment_DynamicRiverFlows.h"
00034
00035
00036
00037 class CropPrecipitation;
00038 class CropWater;
00039
00040 class TimeHandler;
00041
00042 class scuenca
00043 {
00044 public:
00045
00046
00047
00049
00050
00051
00052 virtual void initializeNetInflowsInYear(const MatrixDouble& inflows);
00053 virtual void rememberTypicalNetInflowsInYear(const MatrixDouble& inflows);
00054 virtual void reinitWithTypicalNetInflows();
00055
00056 virtual void makeForecastForNetInflows(int yr_, double forecastError );
00057
00058 virtual void setInflows(int mTot, MatrixDouble& infl);
00059 virtual bool setOneInflow(int mTot, int inflowID, double flowVal_m3PerSec);
00060
00061 virtual string getName();
00062 virtual int getCatchID() { return sc_nummer;}
00063 virtual int getCatchmentID() { return sc_nummer;}
00064 virtual int getSubcatchID() const { return sc_nummer;};
00065 virtual int get_sectorsInCuenca(void) {return numberOfActualSectors;};
00066
00067
00069
00070
00071 virtual double get_Ext(int);
00072 virtual double get_monatl_N(int, int);
00073
00074 virtual void addTo_totalMonthlyIrr(int month_, int secID_, double irrAmountSector_);
00075 virtual double get_totalMonthlyIrr(int month_, int secID_);
00076 virtual double get_totalMonthlyIrr_sum(int month_);
00077
00078
00079 virtual double getGlobalWaterDemand();
00080
00082
00084
00085 void addOneToSectorsInSubcatchment();
00086 virtual void initRoutingEmpty(void);
00087
00088 virtual void readSectorMapFromFile(string fn);
00089
00090
00091
00092
00093 virtual void readAndExtractSectorMapsFromCatchMaps();
00094
00095
00096
00097
00098
00099 virtual void copyRaster2Landscape(Raster2D& catchmentMap, Content cont);
00100
00101 virtual void copyRaster2Landscape(Raster2D& catchmentMap, Content cont, bool flag_fixCopyToCell);
00102
00103
00104 virtual void makeSectorwiseHistogram(MatrixDouble& histogramBySector, Content cont);
00106
00107
00109
00110
00112
00113 void initializeEmpty(void);
00114
00115 virtual void EDIC_readSurfaceAndSubsurfaceRunoffMatrix();
00116 virtual void readparamsIrrigationMethodAndAssignToSectors();
00117 virtual void initializeCropPointersInSectors(CropPrecipitation* p_cropPrecipitation, CropWater* p_cropWat_);
00118
00119
00121
00122
00123
00124 virtual void make_derr(int, double);
00125 virtual void make_esc(int, double);
00126
00127
00128
00129
00130
00131 virtual void resetEdicMonthlyReturnFlowData();
00132 virtual void resetEdicAnnualData();
00133
00134 double return_delta(int sectorIndex);
00135 double return_e(int sectorIndex);
00136
00137
00138 bool IS_DYNAMIC_INFLOWS() { return isDynamicRiverFlow;};
00139
00140
00141 double getFlowForRiverAndYearAndMonth(int riverID_, int y_, int m_, bool isNorthern_);
00142 virtual void setFlowForRiverAndYearAndMonth(int riverID, int yearID, int modelMonth, int valFlowM3);
00143 virtual void setRiver_fullYear(int riverID, int yearID, MatrixDouble& vectorThisYearFlows);
00144
00145
00146
00147
00148 virtual void updateAllInflowsForCurrentMonth(TimeHandler& timeHandle_const);
00149
00150
00151 virtual void read_DynamicRiverFlows(string fn);
00152 virtual void writeDynamicInflowsToFile(string fn);
00154
00155
00156
00157
00159
00160 virtual void joinCatchmentMap(Content cont, Raster2D& gisFull);
00161 virtual void joinCatchmentMap(Content cont, Raster2D& gisFull, int monthIndex, bool flag_forceToCell);
00162
00163 virtual void writeToFile_SektorMaps(Content cont);
00164 virtual void writeToFile_SektorMaps_monthly(Content cont, int m);
00165
00166 virtual void writeInputToFile(char*);
00167
00169 virtual void printToScreen(void);
00170 virtual void printEffectiveRouting();
00171 virtual void writeToFileEffectiveRouting();
00172 virtual void printToScreen_allSectors();
00173 virtual void printToScreen_Edic();
00174 virtual void printOnScreen_MatrixSize(void);
00175 virtual void printInflows();
00177
00178
00180
00181
00182 scuenca(void);
00183 scuenca(int sc);
00184
00186 virtual ~scuenca ();
00187
00189
00190
00191 protected:
00192
00193
00194
00195
00196 Raster2D gisKey;
00197
00198
00199 int sc_nummer;
00200
00201
00202
00203 double b_faktor;
00204 double g_faktor;
00205
00206
00207 int numberOfActualSectors;
00208
00209
00210
00211 unsigned num;
00212
00213 MatrixDouble b_j;
00214 MatrixDouble g_j;
00215 MatrixDouble d_jk;
00216 MatrixDouble e_jk;
00217
00218
00219 MatrixDouble totalSectorIrrig;
00220 MatrixDouble sumByMonth_Irrig;
00221
00222
00223 IrrigationMethod paramsIrrigationMethod;
00224
00225
00226
00227
00228 MatrixDouble N;
00229
00230 MatrixDouble N_typical_m3Sec;
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248 MatrixDouble Derr;
00249 MatrixDouble Esc;
00250
00251
00252 bool isDynamicRiverFlow;
00253 DynamicRiverFlows DynamicFlows;
00254
00255
00256 virtual void speicher_freigeben(void);
00257
00258 };
00259
00260
00261 #endif
00262