Subversion Repositories public iLand

Rev

Rev 521 | Rev 639 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 521 Rev 600
1
Redirecting to URL 'https://iland.boku.ac.at/svn/iland/tags/release_1.0/src/core/resourceunitspecies.h':
1
Redirecting to URL 'https://iland.boku.ac.at/svn/iland/tags/release_1.0/src/core/resourceunitspecies.h':
2
#ifndef RESOURCEUNITSPECIES_H
2
#ifndef RESOURCEUNITSPECIES_H
3
#define RESOURCEUNITSPECIES_H
3
#define RESOURCEUNITSPECIES_H
4
#include "production3pg.h"
4
#include "production3pg.h"
5
#include "standstatistics.h"
5
#include "standstatistics.h"
6
#include "speciesresponse.h"
6
#include "speciesresponse.h"
7
#include "establishment.h"
7
#include "establishment.h"
8
#include "sapling.h"
8
#include "sapling.h"
9
#include "grid.h"
9
#include "grid.h"
10
#include "snag.h"
10
#include "snag.h"
11
class Species;
11
class Species;
12
class ResourceUnit;
12
class ResourceUnit;
13
13
14
class ResourceUnitSpecies
14
class ResourceUnitSpecies
15
{
15
{
16
public:
16
public:
17
    ResourceUnitSpecies() : mLAIfactor(0.), mSpecies(0), mRU(0) {}
17
    ResourceUnitSpecies() : mLAIfactor(0.), mSpecies(0), mRU(0) {}
18
    ~ResourceUnitSpecies();
18
    ~ResourceUnitSpecies();
19
    void setup(Species *species, ResourceUnit *ru);
19
    void setup(Species *species, ResourceUnit *ru);
20
20
21
    // access
21
    // access
22
    const SpeciesResponse *speciesResponse() const { return &mResponse; }
22
    const SpeciesResponse *speciesResponse() const { return &mResponse; }
23
    const Species *species() const { return mSpecies; } ///< return pointer to species
23
    const Species *species() const { return mSpecies; } ///< return pointer to species
24
    const ResourceUnit *ru() const { return mRU; } ///< return pointer to resource unit
24
    const ResourceUnit *ru() const { return mRU; } ///< return pointer to resource unit
25
    const Production3PG &prod3PG() const { return m3PG; } ///< the 3pg production model of this speies x resourceunit
25
    const Production3PG &prod3PG() const { return m3PG; } ///< the 3pg production model of this speies x resourceunit
26
    const Sapling &sapling() const { return mSapling; } ///< sapling growth submodel
26
    const Sapling &sapling() const { return mSapling; } ///< sapling growth submodel
-
 
27
    Sapling &changeSapling() { return mSapling; } ///< sapling growth submodel (non-const access)
27
    StandStatistics &statistics() { return mStatistics; } ///< statistics of this species on the resourceunit
28
    StandStatistics &statistics() { return mStatistics; } ///< statistics of this species on the resourceunit
28
    StandStatistics &statisticsDead() { return mStatisticsDead; } ///< statistics of died trees
29
    StandStatistics &statisticsDead() { return mStatisticsDead; } ///< statistics of died trees
29
    StandStatistics &statisticsMgmt() { return mStatisticsMgmt; } ///< statistics of removed trees
30
    StandStatistics &statisticsMgmt() { return mStatisticsMgmt; } ///< statistics of removed trees
30
    const StandStatistics &constStatistics() const { return mStatistics; } ///< const accessor
31
    const StandStatistics &constStatistics() const { return mStatistics; } ///< const accessor
31
    const StandStatistics &constStatisticsDead() const { return mStatisticsDead; } ///< const accessor
32
    const StandStatistics &constStatisticsDead() const { return mStatisticsDead; } ///< const accessor
32
    const StandStatistics &constStatisticsMgmt() const { return mStatisticsMgmt; } ///< const accessor
33
    const StandStatistics &constStatisticsMgmt() const { return mStatisticsMgmt; } ///< const accessor
33
34
34
   // actions
35
   // actions
35
    void updateGWL();
36
    void updateGWL();
36
    double removedVolume() const { return mRemovedGrowth; } ///< sum of volume with was remvoved because of death/management (m3)
37
    double removedVolume() const { return mRemovedGrowth; } ///< sum of volume with was remvoved because of death/management (m3)
37
    double LAIfactor() const { return mLAIfactor; } ///< relative fraction of LAI of this species (0..1)
38
    double LAIfactor() const { return mLAIfactor; } ///< relative fraction of LAI of this species (0..1)
38
    void setLAIfactor(const double newLAIfraction) { mLAIfactor=newLAIfraction; if (mLAIfactor<0 || mLAIfactor>1.00001) qDebug() << "invalid LAIfactor"<<mLAIfactor; }
39
    void setLAIfactor(const double newLAIfraction) { mLAIfactor=newLAIfraction; if (mLAIfactor<0 || mLAIfactor>1.00001) qDebug() << "invalid LAIfactor"<<mLAIfactor; }
39
    // properties
40
    // properties
40
    double leafArea() const; ///< total leaf area of the species on the RU (m2).
41
    double leafArea() const; ///< total leaf area of the species on the RU (m2).
41
    // action
42
    // action
42
    void calculate(const bool fromEstablishment=false); ///< calculate response for species, calculate actual 3PG production
43
    void calculate(const bool fromEstablishment=false); ///< calculate response for species, calculate actual 3PG production
43
    // establishment, sapling growth
44
    // establishment, sapling growth
44
    void calclulateEstablishment(); ///< perform establishment calculations
45
    void calclulateEstablishment(); ///< perform establishment calculations
45
    void calclulateSaplingGrowth(); ///< growth of saplings
46
    void calclulateSaplingGrowth(); ///< growth of saplings
46
    void addSapling(const QPoint &position) { mSapling.addSapling(position); } ///< add a saplings on a given position
47
    void addSapling(const QPoint &position) { mSapling.addSapling(position); } ///< add a saplings on a given position
47
    void clearSaplings(const QPoint &position) { mSapling.clearSaplings(position);} ///< clear saplings on a given position (after recruitment)
48
    void clearSaplings(const QPoint &position) { mSapling.clearSaplings(position);} ///< clear saplings on a given position (after recruitment)
48
    bool hasSaplingAt(const QPoint &position) const { return mSapling.hasSapling(position); } ///< return true if a sapling of the current speices is present at 'position'
49
    bool hasSaplingAt(const QPoint &position) const { return mSapling.hasSapling(position); } ///< return true if a sapling of the current speices is present at 'position'
49
    // visualization/graphical output
50
    // visualization/graphical output
50
    void visualGrid(Grid<float> &grid) const;
51
    void visualGrid(Grid<float> &grid) const;
51
52
52
private:
53
private:
53
    ResourceUnitSpecies(const ResourceUnitSpecies &); // no copy
54
    ResourceUnitSpecies(const ResourceUnitSpecies &); // no copy
54
    ResourceUnitSpecies &operator=(const ResourceUnitSpecies &); // no copy
55
    ResourceUnitSpecies &operator=(const ResourceUnitSpecies &); // no copy
55
    double mLAIfactor; ///< relative amount of this species' LAI on this resource unit (0..1). Is calculated once a year.
56
    double mLAIfactor; ///< relative amount of this species' LAI on this resource unit (0..1). Is calculated once a year.
56
    double mRemovedGrowth; ///< m3 volume of trees removed/managed (to calculate GWL)
57
    double mRemovedGrowth; ///< m3 volume of trees removed/managed (to calculate GWL)
57
    StandStatistics mStatistics; ///< statistics of a species on this resource unit
58
    StandStatistics mStatistics; ///< statistics of a species on this resource unit
58
    StandStatistics mStatisticsDead; ///< statistics of died trees (this year) of a species on this resource unit
59
    StandStatistics mStatisticsDead; ///< statistics of died trees (this year) of a species on this resource unit
59
    StandStatistics mStatisticsMgmt; ///< statistics of removed trees (this year) of a species on this resource unit
60
    StandStatistics mStatisticsMgmt; ///< statistics of removed trees (this year) of a species on this resource unit
60
    Production3PG m3PG; ///< NPP prodution unit of this species
61
    Production3PG m3PG; ///< NPP prodution unit of this species
61
    SpeciesResponse mResponse; ///< calculation and storage of species specific respones on this resource unit
62
    SpeciesResponse mResponse; ///< calculation and storage of species specific respones on this resource unit
62
    Establishment mEstablishment; ///< establishment for seedlings and sapling growth
63
    Establishment mEstablishment; ///< establishment for seedlings and sapling growth
63
    Sapling mSapling; ///< saplings storage/growth
64
    Sapling mSapling; ///< saplings storage/growth
64
    Species *mSpecies; ///< link to speices
65
    Species *mSpecies; ///< link to speices
65
    ResourceUnit *mRU; ///< link to resource unit
66
    ResourceUnit *mRU; ///< link to resource unit
66
    int mLastYear;
67
    int mLastYear;
67
};
68
};
68
69
69
#endif // RESSOURCEUNITSPECIES_H
70
#endif // RESSOURCEUNITSPECIES_H
70
 
71