LandscapeDNDC 1.37.0
quercus.h
1#ifndef M1D_MOD_WATERCYCLE_QUERCUS_H
2#define M1D_MOD_WATERCYCLE_QUERCUS_H
3
4#include <string>
5#include "watercyclemodule.h"
6
7using std::string;
8
9/* WaterCycleQUERCUS
10 * WaterCycleQUERCUS contains all Methods and data from the WaterCycleQUERCUS Module.
11 *
12 *
13*/
14class WaterCycleQUERCUS : public WaterCycleModule {
15 public:
17 WaterCycleQUERCUS(ModelCore & modelCore, unsigned int timeInterval) : WaterCycleModule(modelCore, timeInterval),
18 modelCore_(modelCore),
19 time_(modelCore.getLandscape().getTime()),
20 si_(modelCore.getInput().getSite()),
21 sipar_(modelCore.getInput().getParameter().getSitePar()),
22 sppar_(modelCore.getInput().getParameter().getSpeciesPar()),
23 ac_(modelCore.getSubstates().getAc()),
24 mc_(modelCore.getSubstates().getMc()),
25 sc_(modelCore.getSubstates().getSc()),
26 wc_(const_cast<WaterCycle &>(modelCore.getSubstates().getWc())),
27 ph_(modelCore.getSubstates().getPh()),
28 vs_(modelCore.getSubstates().getVs())
29 {
30 this->setName("WaterCycleQUERCUS");
31 }
32
34 ~WaterCycleQUERCUS() {
35
36 }
37
38 void solve() {
39 this->run_();
40 }
41
42
43
44 private:
45 ModelCore & modelCore_;
46 Timer & time_;
47 Site & si_;
48 SitePar & sipar_;
49 SpeciesPar & sppar_;
50
51 AirChemistry const & ac_;
52 MicroClimate const & mc_;
53 SoilChemistry const & sc_;
54 WaterCycle & wc_;
55 Physiology const & ph_;
56 VegStructure const & vs_;
57
58 // declaration of module specific parameters
59 // const int NANS = 023; // NOMBRE D'ANNEE DE SIMULATION
60 // const int IANDEB = 84; // PREMIERE ANNEE DE SIMULATION (EX:POUR 1980 IANDB=80)
61 // const double NB = 470; // PROFONDEUR DE SOL PRISE EN COMPTE EGALE ICI PROF.RACINAIRE EN CM
62 // const double IROCK = 88.; // IROCK POURCENTAGE VOLUMIQUE DE LA MATRICE ROCHEUSE DANS LE PROFIL
63 static const double CSOL1; // SLOPE PARAMETRE POTENTIEL SOL
64 static const double CSOL2; // EXP. PARAMETRE POTENTIEL SOL
65 static const double BFED; // FACTEUR D'EXTRACTION RACINAIRE DE FEDDES
66 // const double AKS = 100.0; // CONDUCTIVITE A SATURATION EN MM/J
67 // const double SSAT = 275.0; // STOCK EN EAU DU SOL A SATURATION EN MM (porosity)
68 static const double C; // START PARAMETRE DE LA COURBE DE DRAINAGE (soil specific!!)
69 static const double D; // SLOPE PARAMETRE DE LA COURBE DE DRAINAGE (soil specific!!)
70 // const double SOLCOV = 0.4; // RECOUVREMENT DE LA FRACTION FINE A LA SURFACE DU SOL
71 // const double SINIT = 210.1; // STOCK INITIAL EN MM
72 // const double vs__fDens = 1; // (NON ATTRIBUE ICI EGAL A 1.)
73 static const double U; // EVAPORATION CUMULEE MAXIMALE DE LA PHASE 1
74 static const double ALPHA; // COEFFICIENT DE FORME DE LA PHASE 2
75
76 // local variables
77 double TMAX0;
78 double E,PERCO,RUNOFF,ETP1,TR1,DSTOR;
79 double ALAI,NB,S,SSAT,SREF,SLIM,SMIN,AKS,STOR,STOROLD,SOLCOV;
80 double X1; // POT.FOLIAIRE TEL CONDUCTANCE DU COUVERT EGALE 50 % DE CONDUCT.MAX.,EN BARS
81 double X2; // PARAMETRE DE FORME DE LA RELATION CONDUCT.DU COUVERT-POT.FOLIAIRE
82 double X3; // RESISTANCE DE LA PLANTE EN BAR.J/MM
83 double STORM; // maximum storage capacity (mm m-2LAI) (formerly fixed at 1.5 mm for total canopy)
84
85 void run_();
86
87 // functions
88 void CalcWatercycle();
89
90 double WED(double TAK);
91
92 double ES(double TAK,double WED1);
93
94 double DELTA(double WED1,double ES1);
95
96 void CYCLE(double W1,double B1,double ANUM,double DEN);
97
98 void EVAP(double EP,double &E,double &SE1,double &SE2);
99
100 inline double Max(double x,double y){
101 return (x > y) ? x : y;
102 }
103
104 inline double Min(double x,double y){
105 return (x > y) ? y : x;
106 }
107 inline double Sqr(double x){
108 return x * x;
109 }
110
111};
112
113
114#endif // M1D_MOD_WATERCYCLE_QUERCUS_H
115