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

CropActualPrecipitation.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:       CropActualPrecipitation.h
00012 //
00013 //  Contents:   Auxiliary class for actual precipiation
00014 //              
00015 //
00016 //
00017 //------------------------------------------------------------------------------
00018 
00019 
00020 #ifndef _CropActualPrecipitation_h
00021 #define _CropActualPrecipitation_h
00022 
00023 #include "BasicData.h"
00024 #include "MatrixDouble.h"
00025 
00026 enum enumPrecipType {
00027    precipTypeActual, precipTypeAverage
00028 };
00029 
00030 enum typeInputDataActualPrecipitation
00031 {       inputTypeByYear, inputTypeRandom
00032 };
00033 
00035 class CropPrecipitation{
00036 public:
00038 
00039    virtual double getActualPrecipitationByYear(int year_, int month_, int catchment_, int sector_);
00040    virtual double getActualPrecipitationByIndex(int year_, int month_, int catchment_, int sector_);
00041    virtual int getIndexForAbsoluteYear(int year);
00042    virtual void printValue(int year_, int month_, int catchment_, int sector_);
00043    virtual void printValueByIndex(int yearIndex, int month_, int catchment_, int sector_);
00044         virtual double getAveragePrecipitationInMonth(int month_, int catchment_, int sector_);
00046 
00048 
00049         virtual void printToScreen();
00050         virtual void writeToFile(string fn, int catchID);//with <ifstream>
00051         virtual void writeToFile(char* filename, int catchID);//with <fscanf>
00052         //virtual void readFromFile(string fn, int catchID);//with <ifstream>
00053    virtual void readHeader(FILE* strm);
00054    virtual void readPrecipitationDataIntoMatrix(FILE* strm, MatrixDouble& matrixPassedByRef, int numYR_, int secID, enumPrecipType precipType);
00055         virtual void readFromFile(char* filename, int catchID);//with <fscanf>
00057 
00059 
00060         CropPrecipitation()
00061         {       allocate();
00062         }
00063                 
00064         CropPrecipitation(int numCatchments_, int numSectors_, int numberOfYears_, int numTimeSteps_)
00065         {       allocate(numCatchments_, numSectors_, numberOfYears_, numTimeSteps_);
00066         }
00067                 
00068         CropPrecipitation(CropPrecipitation& orig)
00069    {    allocate(orig);
00070         }
00071                 
00072         virtual CropPrecipitation& operator=(CropPrecipitation&);
00073         virtual ~CropPrecipitation();
00074         
00076 
00077 protected:
00078 
00079    int numberOfYears;
00080    int numTimeSteps;
00081    int numCatchments;
00082    int numSectors;
00083    typeInputDataActualPrecipitation inputType;
00084 
00085    virtual int getNumberOfYears()  
00086         {       return numberOfYears;
00087         }
00088    
00089         virtual int getNumTimeStepsPerYear()
00090         {       return numTimeSteps;
00091         }
00092    
00093         virtual int getNumCatchments()
00094         {       return numCatchments;
00095         }
00096 
00097    virtual int getNumSectors()
00098         {       return numSectors;
00099         }
00100 
00101    virtual int getRealYear(int yInd)
00102    {  return (int)translationMatrix_YearToIndex.getValue(yInd);
00103    }
00104 
00105    virtual typeInputDataActualPrecipitation getInputType()      
00106         {       return inputType;
00107         }
00108 
00109    virtual bool  getIsDataPerSector()      
00110         {       return isDataPerSector;
00111         }
00112 
00113    bool isDataPerSector;
00115    MatrixDouble translationMatrix_YearToIndex;
00116         
00118         MatrixDouble** actualPrecipitation;
00119    // Dimension of matrix: (years X timeSteps ):
00120    // Length of array: (catchments X sectors)
00121 
00123         MatrixDouble** averagePrecipitation;
00124    // Dimension of matrix: (1 X timeSteps ):
00125    // Length of array: (catchments X sectors)
00126 
00127 
00128    // Functions:
00129    virtual void allocate();
00130    virtual void allocate(int numCatchments_, int numSectors_, int numberOfYears_, int numTimeSteps_);
00131    virtual void allocate(CropPrecipitation& orig);
00132    virtual void deallocate();
00133    virtual void copy(CropPrecipitation& orig);
00134 };
00135 
00136 
00137 #endif
00138 

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