Subversion Repositories public iLand

Rev

Rev 376 | Rev 440 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1
 
187 iland 2
#ifndef RESOURCEUNITSPECIES_H
3
#define RESOURCEUNITSPECIES_H
115 Werner 4
#include "production3pg.h"
180 werner 5
#include "standstatistics.h"
193 werner 6
#include "speciesresponse.h"
111 Werner 7
 
8
class Species;
187 iland 9
class ResourceUnit;
111 Werner 10
 
187 iland 11
class ResourceUnitSpecies
111 Werner 12
{
13
public:
367 werner 14
    ResourceUnitSpecies() : mLAIfactor(0.), mSpecies(0), mRU(0) {}
234 werner 15
    void setup(Species *species, ResourceUnit *ru);
115 Werner 16
 
209 werner 17
    const SpeciesResponse *speciesResponse() const { return &mResponse; }
208 werner 18
    const Species *species() const { return mSpecies; } ///< return pointer to species
19
    const ResourceUnit *ru() const { return mRU; } ///< return pointer to resource unit
228 werner 20
    const Production3PG &prod3PG() const { return m3PG; } ///< the 3pg production model of this speies x resourceunit
208 werner 21
    StandStatistics &statistics() { return mStatistics; } ///< statistics of this species on the resourceunit
278 werner 22
    StandStatistics &statisticsDead() { return mStatisticsDead; } ///< statistics of died trees
23
    StandStatistics &statisticsMgmt() { return mStatisticsMgmt; } ///< statistics of removed trees
262 werner 24
    const StandStatistics &constStatistics() const { return mStatistics; } ///< const accessor
25
    const StandStatistics &constStatisticsDead() const { return mStatisticsDead; } ///< const accessor
278 werner 26
    const StandStatistics &constStatisticsMgmt() const { return mStatisticsMgmt; } ///< const accessor
27
 
277 werner 28
    void updateGWL();
29
    double removedVolume() const { return mRemovedGrowth; } ///< sum of volume with was remvoved because of death/management (m3)
367 werner 30
    double LAIfactor() const { return mLAIfactor; } ///< relative fraction of LAI of this species (0..1)
370 werner 31
    void setLAIfactor(const double newLAIfraction) { mLAIfactor=newLAIfraction; if (mLAIfactor<0 || mLAIfactor>1.00001) qDebug() << "invalid LAIfactor"<<mLAIfactor; }
376 werner 32
    // properties
33
    double leafArea() const; ///< total leaf area of the species on the RU (m2).
115 Werner 34
    // action
369 werner 35
    void calculate(); ///< calculate response for species, calculate actual 3PG production
115 Werner 36
 
111 Werner 37
private:
376 werner 38
    double mLAIfactor; ///< relative amount of this species' LAI on this resource unit (0..1). Is calculated once a year.
277 werner 39
    double mRemovedGrowth; ///< m3 volume of trees removed/managed (to calculate GWL)
262 werner 40
    StandStatistics mStatistics; ///< statistics of a species on this resource unit
41
    StandStatistics mStatisticsDead; ///< statistics of died trees (this year) of a species on this resource unit
278 werner 42
    StandStatistics mStatisticsMgmt; ///< statistics of removed trees (this year) of a species on this resource unit
234 werner 43
    Production3PG m3PG; ///< NPP prodution unit of this species
44
    SpeciesResponse mResponse; ///< calculation and storage of species specific respones on this resource unit
45
    Species *mSpecies; ///< speices
46
    ResourceUnit *mRU; ///< resource unit
438 werner 47
    int mLastYear;
111 Werner 48
};
49
 
50
#endif // RESSOURCEUNITSPECIES_H