Exemple #1
0
        //---------------------------------------------------------------------------------------------------------
        public double calcLeafTemperature(PhotosynthesisModel PM, int layer, double _leafTemp)
        {
            EnvironmentModel EM     = PM.envModel;
            LeafCanopy       canopy = PM.canopy;

            double airTemp = EM.getTemp(PM.time);

            s[layer] = (es[layer] - canopy.es_Ta) / (leafTemp[layer] - EM.maxT);

            gs[layer] = gs_CO2[layer] / canopy.ra;

            rs_H2O[layer] = (1 / gs[layer] - 1.3 * canopy.rb_H_LAIs[layer] - canopy.rts[layer]) / 1.6;

            Sn[layer] = canopy.energyConvRatio * absorbedIrradiance[layer];

            R_[layer] = canopy.Bz * Math.Pow((leafTemp[layer] + 273), 4) * canopy.fvap * canopy.fclear * LAIS[layer] / canopy.LAIs.Sum();

            Rn[layer] = Sn[layer] - R_[layer];

            lE[layer] = (s[layer] * Rn[layer] + canopy.airDensity * canopy.cp * VPD[layer] / (canopy.rb_H_LAIs[layer] + canopy.rts[layer])) /
                        (s[layer] + canopy.g * ((canopy.rb_H2O_LAIs[layer] + canopy.rts[layer] + rs_H2O[layer]) / (canopy.rb_H_LAIs[layer] + canopy.rts[layer])));

            double calcLeafTemp = airTemp + (canopy.rb_H_LAIs[layer] + canopy.rts[layer]) * (Rn[layer] - lE[layer]) / (canopy.airDensity * canopy.cp);

            //return Math.Pow(1 - _leafTemp / calcLeafTemp, 2);
            return(Math.Pow(_leafTemp - calcLeafTemp, 2));
        }
Exemple #2
0
        //-----------------------------------------------------------------------

        public void calcLeafTemperature(PhotosynthesisModel PM, EnvironmentModel EM)
        {
            double airTemp = EM.getTemp(PM.time);

            fvap = 0.56 - 0.079 * Math.Pow(10 * Vair, 0.5);

            fclear = 0.1 + 0.9 * Math.Max(0, Math.Min(1, (EM.atmTransmissionRatio - 0.2) / 0.5));

            g = (cp * Math.Pow(10, -6)) * p / (l * mwRatio);

            es_Ta = 5.637E-7 * Math.Pow(airTemp, 4) + 1.728E-5 * Math.Pow(airTemp, 3) + 1.534E-3 *
                    Math.Pow(airTemp, 2) + 4.424E-2 * airTemp + 6.095E-1;

            a2 = CPath.F2 * (1 - CPath.fcyc) / (CPath.F2 / CPath.F1 + (1 - CPath.fcyc));
        }