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

TimeHandlerClass.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:       TimeHandlerClass.h
00012 //
00013 //  Contents:   Header of class used for handling of time
00014 //              
00015 //
00016 //
00017 //------------------------------------------------------------------------------
00018 
00019 
00020 // DOCUMENTAITON AND TEST PROJECT:
00021 // ... utilities\Win32\bcb5\TestTimeHandlerBorland.bpr
00022 // ... utilities\src\master\testTimeHandler.cpp
00023 
00024 
00025 #ifndef _TimeHandlerClass_
00026 #define _TimeHandlerClass_
00027 
00028 #include "BasicData.h"
00029 
00030 
00031 string integerToString(int val);
00032 string int2String(int val);
00033 
00034 class TimeHandler
00035 {
00036 public:
00038         int STARTYEAR()             { return absoluteStartYear;}    
00039         int STARTMONTH()            { return absoluteStartMonth;}
00040         int STARTDAY()              { return absoluteStartDay;}        
00041          
00042         int STOPYEAR()              { return absoluteStopYear;}        
00043         int STOPMONTH()             { return absoluteStopMonth;}
00044         int STOPDAY()               { return absoluteStopDay;}
00045 
00046         int IRRIGATIONSTARTMONTH()  {return irrigationStartMonth;}
00047         int IRRIGATIONSTOPMONTH()   {return irrigationStopMonth;}
00048         
00049         bool isIrrigationMonth();  // assumes This Month
00050         bool isIrrigationMonth(int m); // takes any month <m> as argument   
00051          
00053         // old, erase later
00054         virtual int MONATE();
00055         virtual int TOTAL_IRRIGATION_MONTHS();
00056         virtual int TOTALPERIODS();   
00057    virtual bool ISNORTHERN();
00058 
00059         void setMONATE(int m_);
00060          
00062         int GETMONTH()              { return currentAbsoluteMonth;}
00063         int GETYEAR()               { return currentAbsoluteYear;}
00064 
00065         string GETMONTH_string()    { return integerToString(currentAbsoluteMonth); }
00066         string GETYEAR_string()     { return integerToString(currentAbsoluteYear);   }
00067 
00068          
00069          
00071         int PERIODE()               { return currentRelativePeriod;} // old, erase later
00072         int CURRENTMODELPERIOD()    { return currentRelativePeriod;}
00073         int CURRENTMODELMONTH()     { return currentRelativeMonth;}
00074 
00076    void initializeDummy();
00077         void readTimeHandler(string filename);
00078         void readFromFile(string filename) { readTimeHandler(filename);}
00079 
00080         void writeToFile(string fn);
00081         void writeAsRead(ofstream& outstream);
00082 
00084    
00085    // CAREFUL with these set functions
00086    virtual void setSTOPYEAR(int absoluteStopYear_);
00087 
00088    // ... set back to start
00089         void resetAllDatesToStart();
00090         void reset() {resetAllDatesToStart();}
00091 
00092    // ... Reset to beginning of (model) year.
00093    // ... In southern hemisphere, that is July!
00094    virtual void resetToStartOfYear(int _year);
00095    virtual void resetToStartOfYear(int _year, string comment);
00096 
00098         void nextMonth();
00099         void nextPeriod();
00100 
00102         void printCurrentTimeStatus(std::ostream *outstream);
00103         void printToScreen();
00104         void printDaysPerMonth();
00105 
00107         bool isLeapYear(int y_year);
00108         int  getDaysPerMonth(int m_month, int y_year);
00109         int  DAYSperTHISMONTH();
00110 
00112         TimeHandler();
00113    TimeHandler(  TimeHandler& sourceHandle, string nm);
00114         virtual ~TimeHandler();
00115    virtual void deallocate();
00116 
00117    // Copy constructor
00118    virtual void copy( TimeHandler&  sourceHandle);
00119 
00120    //
00121    virtual void setNameOfHandler(string nm_);
00122    virtual string getNameOfHandler(); 
00123 
00124    // Should be private
00125         virtual void SETMONTH(int m_);
00126    virtual void SETYEAR(int y_);
00127  
00128 private:
00129 
00131    virtual void setSTARTYEAR(int absoluteStartYear_);
00132    virtual void setSTARTMONTH(int absoluteStartMonth_);
00133    virtual      void setSTOPMONTH(int absoluteStopMonth_);
00134    virtual void setISNORTHERN(bool isNorthern_);
00135    
00136 
00137 
00138 
00139         void updateIrrigationMonths();
00140         void updateIrrigationMonths(bool doOutput);
00141 
00142         // Ongoing date within model run, in real years ( 1-1996)
00143    // 1-1996  is
00144    // ... 0-0 in north if model starts in Jan 1996
00145    // ... 6-0 in south if model starts in July 1995
00146         int currentAbsoluteMonth;
00147         int currentAbsoluteYear;
00148 
00149         // Ongoing date within model run, in real years ( 1-1996)
00150         int currentRelativePeriod;
00151         int currentRelativeMonth;
00152         
00153         // Absolute, fixed times
00154         int absoluteStartYear;
00155         int absoluteStartMonth;
00156         int absoluteStartDay;
00157         
00158         int absoluteStopYear;
00159         int absoluteStopMonth;
00160         int absoluteStopDay;    
00161         
00162         int irrigationStartMonth;
00163         int irrigationStopMonth;
00164         
00165         int maximumNumberOfIrrigationMonths; // MONATE();
00166         int maximumNumberOfPeriodsModeled;
00167 
00168         bool isNorthernHemisphere;
00169 
00171         int* daysPerMonth; //= {  0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
00172         string* monthString;
00173         void initDaysPerMonths();
00174 
00175    // Each time handler has a name, which is set when
00176    //   a) read from file
00177    //   b) created with copy constructor
00178    string nameOfThisHandler;
00179 
00180 
00181         bool checkIfCountUpYear();
00182         void addYearInTimeHandler() {   currentAbsoluteYear++;}
00183 };
00184 #endif
00185 

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