3#include "../framework/constants.h"
15 const double gs = 3 * 1e-3;
18 const double gammaStar = 0.0002239473;
21 const double alpha = 0.01;
23 const double theta = 0.7;
24 const double R = physical_constants::ideal_gas_constant * 1e-3;
27 const double Ep = 47.1;
28 const double Erb = 72;
30 const double EKc = 79.43;
31 const double EKo = 36.38;
32 const double Q10cb = 1.7;
34 const double Ko2 = 532.9;
35 const double Kc2 = 1020;
43 double Vcmax1 = VCMAX;
44 double Vpmax1 = VPMAX;
49 double AirTemp = TEMP;
51 double Q10p = exp(Ep * (1 / (R * 298.15) - 1 / (R * (AirTemp + conversion_constants::celsius_to_kelvin))));
52 double Q10rb = exp(Erb * (1 / (R * 298.15) - 1 / (R * (AirTemp + conversion_constants::celsius_to_kelvin))));
53 double Q10Kc = exp(EKc * (1 / (R * 298.15) - 1 / (R * (AirTemp + conversion_constants::celsius_to_kelvin))));
54 double Q10Ko = exp(EKo * (1 / (R * 298.15) - 1 / (R * (AirTemp + conversion_constants::celsius_to_kelvin))));
56 Vcmax = Vcmax1 * Q10rb;
59 Vpmax = Vpmax1 * Q10p;
60 double Jmax_at_25 = Jmax1 * pow(Q10cb, (AirTemp - 25) / 10);
69 double I2 = (Idir * 0.85) / 2;
70 double J = (Jmax_at_25 + I2 - sqrt(pow(Jmax_at_25 + I2, 2) - 4 * theta * I2 * Jmax_at_25)) / 2 * theta;
71 double Aj0 = 0.4 * J - Rm + gs * Cm;
72 double Aj1 = (1 - 0.4) * J / 3 - RL;
81 double Vp = (Cm * Vpmax) / (Cm + Kp);
87 double Ko1 = Ko * 1e3;
88 double Om1 = Om * 1e3;
90 double a1 = 1 - alpha / 0.047 * Kc / Ko1;
91 double b1 = -((Vp - Rm + gs * Cm) + (Vcmax - RL) +
92 gs * (Kc * (1 + Om1 / Ko1)) + ((alpha / 0.047) * (gammaStar * Vcmax + RL * Kc / Ko1)));
93 double c1 = (Vcmax - RL) * (Vp - Rm + gs * Cm) - (Vcmax * gs * gammaStar * Om1 + RL * gs * Kc * (1 + Om1 / Ko1));
95 double c3 = pow(b1, 2) - 4 * a1 * c1;
99 double Ac0 = (-b1 - sqrt(c3)) / 2 * a1;
101 double AcLCO2 = (Cm * Vpmax / (Cm + Kp)) - Rm + gs * Cm;
double eC4photoC(double QP, double TEMP, double CA, double OA, double VCMAX, double VPMAX, double VPR, double JMAX)