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

PopulationClusterList.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:       PopulationClusterList.h (formerly cliste.h)
00012 //
00013 //  Contents:   Manages linked list of agent clusters
00014 //
00015 //
00016 //
00017 //------------------------------------------------------------------------------
00018 
00019 
00020 
00021 #ifndef _PopulationClusterList_h
00022 #define _PopulationClusterList_h
00023 
00024 
00025 #include "PopulationCluster.h"
00026 #include "CropSoil.h"
00027 
00028 
00029 typedef struct
00030 {  int carID;     //career ID
00031    int lfSpan;    //lifespan
00032         MatrixDouble labGrp; //labor group ID
00033    MatrixDouble labCap; //labor capacity over lifespan
00034    MatrixDouble probM;  //probability of dying at end of year
00035    MatrixDouble probF;  //probability of giving birth at end of year
00036    MatrixDouble ntrReq; //nutrient requirements
00037 }  career;
00038 
00039 
00040 class c_liste
00041 {       protected:
00042    int pop_nr;          //Populationsnummer
00043    int canzahl;         //Anzahl Cluster
00044    int letzte_c_nr;             //zuletzt vergebene Clusternummer
00045    int num_a;           //Anzahl aller Agenten
00046 
00047    int numCar;          //number of careers
00048    int numLab;          //number of labor groups
00049    career* careers;     //pointer to careers
00050 
00051    cluster* firstCluster;
00052    cluster* merkeCluster;//wird für suche_naechsten() gebraucht
00053 
00054    public:
00055    c_liste(int);
00056    virtual ~c_liste()
00057    {  deallocateCareers();
00058       liste_loeschen();
00059    }
00060 
00061    virtual void readInputFile(char* filename);
00062    virtual void writeInputIntoFile(char* filename);
00063 
00064    virtual int getLabGrps();
00065    virtual double getYearLabCap(int car, int age);
00066    virtual void addActLabCap(MatrixDouble& mtx, int car, int age);
00067    virtual void addExpLabCap(MatrixDouble& mtx, int car, int age, double = 0.0);
00068    virtual void addActNtrReq(MatrixDouble& mtx, int car, int age);
00069    virtual void addExpNtrReq(MatrixDouble& mtx, int car, int age, double = 0.0);
00070    virtual int hasDeceased(int car, int age);
00071    virtual int givesBirth(int car, int age);
00072    virtual int defCareer(int sex);//return ID of default career
00073    virtual void deallocateCareers();
00074 
00075    //returns fix costs per farm
00076    virtual double getFarmFixCosts(int cluID, double totHa, double irrHa);
00077 
00078    virtual void cluster_anlegen(char*);//Name der Input-Datei
00079    virtual void ccluster_anlegen(char*);//neu 2004: Name der Input-Datei
00080         virtual void deallokieren(cluster*);//deallokiert ein Cluster
00081         virtual void einfuegen(cluster*);//fügt ein Cluster ein
00082         virtual int get_anzahl(void);//liefert Anzahl der Cluster
00083    virtual int get_nummer(void);//liefert die zuletzt vergebene Clusternummer
00084    virtual cluster* cluster_suchen(int);//übergeben wird c_nummer;
00085    virtual cluster* getFirst();//liefert Listenersten
00086    virtual int getTotalNumAgents(void);
00087 
00088         virtual void lotto_deallokieren();//gibt nicht benötigten Speicher frei
00089    virtual void writeRandomAssignInFiles();
00090         virtual void printToScreen(cluster*);
00091    virtual void printOnScreen_list(void);
00092         virtual void liste_loeschen(void);
00093 };
00094 
00095 #endif
00096 

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