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: OutputDataHandler.h (formerly ausgabe.h) 00012 // 00013 // Contents: Collects information from model components and writes to files 00014 // 00015 // 00016 // 00017 //------------------------------------------------------------------------------ 00018 00019 00020 #ifndef _OutputDataHandler_h 00021 #define _OutputDataHandler_h 00022 00023 00024 #include "BasicDefines.h" 00025 00026 00027 class ausgabe 00028 { protected: 00029 FILE* aStrm0; 00030 FILE* aStrm1; 00031 FILE* aStrm2; 00032 FILE* aStrm3; //neu 2004 00033 FILE* aStrm4; 00034 FILE* aStrm_w; // Yearly Water File 00035 00036 FILE* aStrm_wr; // Yearly Water Rental File 00037 FILE* aStrm_wre; 00038 FILE* aStrm_wAg; // Yearly Water Agent File 00039 00040 FILE* aStrm_Lrm; // Yearly Land rental file 00041 FILE* aStrm_Lrmexp; // Yearly Land rental file 00042 00043 //char filename[MXLENGTH];//maximal 50 Zeichen 00044 00045 public: 00046 ausgabe(); //Uebergabe: Output-Dateikrzel 00047 virtual ~ausgabe(); 00048 virtual void deallocate(); 00049 00050 virtual void data_period0(); 00051 00052 virtual void output_periode();//Periodendaten 00053 // Called once, in main slope; <sim_main.cpp> 00054 // executes ausgabe::aufgabedaten() 00055 // CHILE: ausgabe::betriebsdaten() 00056 // else: ausgabe::writeAgPfmDataInStream();//neu 2004 00057 00058 virtual void outputFinal(); //Daten zum Simulationsende 00059 00060 // virtual void betriebsdaten(); // CHILE only 00061 // Called in ausgabe::output_periode() 00062 // Produces <OUT><TIME>"p.out" 00063 // Produces <OUT><TIME>"k.out" 00064 00065 virtual void aufgabedaten(); // all 00066 // Called in ausgabe::output_periode 00067 // Produces <OUT><TIME>"a.out" 00068 00069 // Renamed from <diffusionsdaten> 00070 // Locally defined output stream 00071 virtual void writeDiffusion(); // 00072 // Warning: Same name as <s_liste::diffusionsdaten> 00073 // Called once, in main slope; <sim_main.cpp> 00074 // Produces <OUT><TIME>"d.out" 00075 00076 virtual void makeSectorOutputData(); 00077 // Called once, in main slope; <sim_main.cpp> 00078 00079 00080 00081 // NEW ARNOLD 2005 00082 virtual void openWater(); 00083 // uses streams aStrm_w, aStrm_wAg 00084 // 00085 // Called once, in ausgabe::makeSectorOutputData() 00086 // closes <OUT><TIME>"w.out" 00087 // <OUT><TIME>"wAg.out" 00088 00089 // NEW ARNOLD 2005 00090 virtual void closeWater(); 00091 // closes streams aStrm_w, aStrm_wAg 00092 // 00093 // Called once, in ausgabe::makeSectorOutputData() 00094 // closes <OUT><TIME>"w.out" 00095 // <OUT><TIME>"wAg.out" 00096 00097 00098 virtual void openPachtWater(); // CHILE only. Overloaded: timeshift=0! 00099 virtual void closePachtWater(); // CHILE only 00100 virtual void openPachtWater(int timeshift); // CHILE only 00101 // Renamed from "pachtdaten_vorbereiten" 00102 // Called once, in ausgabe::makeSectorOutputData() 00103 // Produces <OUT><TIME>"r.out" 00104 // time shift is one for expected values. Then, the filename is also rE 00105 00106 virtual void openPachtLand(); // CHILE only. Overloaded: timeshift=0! 00107 virtual void closePachtLand(); // CHILE only 00108 virtual void openPachtLand(int timeshift); // CHILE only 00109 // Produces <OUT><TIME>"Lr.out" and "Lrexp.out" 00110 // time shift is one for expected values. Then, the filename is also rE 00111 00112 // (Locally defined Streams) 00113 // AgentLandData 00114 virtual void writeAgLndDataInStream();//neu 2004 00115 // (Locally defined Streams) 00116 // Called in <void ausgabe::data_period0> 00117 // Produces <OUT>"l00.out" before first period 00118 // KEY to agent data!!! 00119 00120 // AgentPerformanceData 00121 // (Locally defined Streams) 00122 virtual void writeAgPfmDataInStream();//neu 2004 00123 // Called in <ausgabe::output_periode()> 00124 // Alternative to <ausgabe::betriebsdaten()> 00125 // Produces <OUT>p<TIME>.out 00126 // Produces <OUT>u<TIME>.out 00127 // Produces <OUT>k<TIME>.out 00128 // Executes 00129 // b_liste::writeAgentPfmData(aStrm0, aStrm1); 00130 // for_all(betrieb) 00131 // betrieb::writePfmPrdData 00132 00133 virtual void prepareStreamsExitData();//neu 2004 00134 // Called in ??? 00135 // Writes exiting agents into further data 00136 // Produces <OUT><TIME>"xp.out" 00137 // Produces <OUT><TIME>"xk.out" 00138 00139 virtual void prepareStreamYieldData();//neu 2004 00140 // Called in ??? 00141 // Writes soil data 00142 // Produces <OUT><TIME>"y.out" 00143 00144 virtual FILE* get_stream0(); //neu 2004 00145 virtual FILE* get_stream1(); 00146 virtual FILE* get_stream2(); 00147 virtual FILE* get_stream3(); //neu 2004 soils... 00148 virtual FILE* get_stream_w(); //neu 2005 00149 virtual FILE* get_stream_wAg(); //neu 2005 00150 virtual FILE* get_stream_Lrm(); //neu 2005 00151 virtual FILE* get_stream_Lrmexp(); //neu 2005 00152 00153 virtual FILE* get_stream_wr(); // in <sector::P_in_datei_schreiben> 00154 virtual FILE* get_stream_wre(); //in <sector::P_in_datei_schreiben> 00155 00156 00157 // ARNOLD 2005 00158 virtual void closeAllSectorStreams(); 00159 // Called once, in main slope; <sim_main.cpp> 00160 // Finishes ausgabe::makeSectorOutputData() 00161 // by closing all streams. 00162 00163 }; 00164 00165 #endif 00166 00167