Subversion Repositories public iLand

Rev

Rev 1221 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1
 
671 werner 2
/********************************************************************************************
3
**    iLand - an individual based forest landscape and disturbance model
4
**    http://iland.boku.ac.at
5
**    Copyright (C) 2009-  Werner Rammer, Rupert Seidl
6
**
7
**    This program is free software: you can redistribute it and/or modify
8
**    it under the terms of the GNU General Public License as published by
9
**    the Free Software Foundation, either version 3 of the License, or
10
**    (at your option) any later version.
11
**
12
**    This program is distributed in the hope that it will be useful,
13
**    but WITHOUT ANY WARRANTY; without even the implied warranty of
14
**    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
**    GNU General Public License for more details.
16
**
17
**    You should have received a copy of the GNU General Public License
18
**    along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
********************************************************************************************/
20
 
113 Werner 21
#ifndef PRODUCTION3PG_H
22
#define PRODUCTION3PG_H
23
 
226 werner 24
class SpeciesResponse;
228 werner 25
class ProductionOut;
113 Werner 26
class Production3PG
27
{
28
public:
29
    Production3PG();
227 werner 30
    void setResponse(const SpeciesResponse *response) { mResponse=response;}
31
    double calculate(); ///< return  year GPP/rad: kg Biomass/MJ PAR/m2
369 werner 32
    void clear(); ///< clear production values
227 werner 33
    double rootFraction() const { return mRootFraction; } /// fraction of biomass that should be distributed to roots
257 werner 34
    double GPPperArea() const { return mGPPperArea; } ///<  GPP production (yearly) (kg Biomass) per m2 (effective area)
436 werner 35
    double fEnvYear() const { return mEnvYear; } ///< f_env,yr: aggregate environmental factor [0..1}
115 Werner 36
private:
227 werner 37
    inline double calculateUtilizablePAR(const int month) const;
38
    inline double calculateEpsilon(const int month) const;
39
    inline double abovegroundFraction() const; ///< calculate fraction of biomass
40
    const SpeciesResponse *mResponse; ///< species specific responses
251 werner 41
    double mUPAR[12]; ///< utilizable radiation MJ/m2 and month
608 werner 42
    double mGPP[12]; ///< monthly Gross Primary Production [kg Biomass / m2]
227 werner 43
    double mRootFraction; ///< fraction of production that flows into roots
230 werner 44
    double mGPPperArea; ///< kg GPP Biomass / m2 interception area
436 werner 45
    double mEnvYear; ///< f_env,yr: factor that aggregates the environment for the species over the year (weighted with the radiation pattern)
228 werner 46
 
47
    friend class ProductionOut;
113 Werner 48
};
49
 
50
#endif // PRODUCTION3PG_H