Exemple #1
0
        /// <inheritdoc/>
        protected override AssimilationFunction GetAjFunction(AssimilationPathway pathway, TemperatureResponse leaf)
        {
            var x = new Terms()
            {
                _1 = leaf.J / 4.0,
                _2 = 2.0 * leaf.Gamma * canopy.AirO2,
                _3 = 0.0,
                _4 = 0.0,
                _5 = 0.0,
                _6 = 0.0,
                _7 = 0.0,
                _8 = canopy.AirO2 * leaf.Gamma,
                _9 = 0.0
            };

            var func = new AssimilationFunction()
            {
                x = x,

                MesophyllRespiration    = leaf.GmRd,
                BundleSheathConductance = 1.0,
                Respiration             = leaf.RdT
            };

            return(func);
        }
Exemple #2
0
        /// <inheritdoc/>
        protected override AssimilationFunction GetAc2Function(AssimilationPathway pathway, TemperatureResponse leaf)
        {
            var a  = 0.1 / (canopy.DiffusivitySolubilityRatio * pathway.Gbs);
            var cc = pathway.ChloroplasticCO2;
            var oc = pathway.ChloroplasticO2;

            var x = new Terms()
            {
                _1 = leaf.VcMaxT,
                _2 = leaf.Kc + canopy.AirO2 * (leaf.Kc / leaf.Ko),
                _3 = 0.0,
                _4 = pathway.Vpr - cc * leaf.VcMaxT / (cc + leaf.Kc * (1 + oc / leaf.Ko)),
                _5 = 0.0,
                _6 = 1.0,
                _7 = a * leaf.Gamma,
                _8 = leaf.Gamma * canopy.AirO2,
                _9 = (leaf.Kc / leaf.Ko) * a
            };


            var func = new AssimilationFunction()
            {
                x = x,

                MesophyllRespiration    = leaf.GmRd,
                BundleSheathConductance = pathway.Gbs,
                Respiration             = leaf.RdT
            };

            return(func);
        }
Exemple #3
0
        /// <inheritdoc/>
        protected override AssimilationFunction GetAjFunction(AssimilationPathway pathway, TemperatureResponse leaf)
        {
            var a  = 0.1 / (canopy.DiffusivitySolubilityRatio * pathway.Gbs);
            var y  = parameters.MesophyllElectronTransportFraction;
            var z  = parameters.ATPProductionElectronTransportFactor;
            var cc = pathway.ChloroplasticCO2;
            var oc = pathway.ChloroplasticO2;

            var x = new Terms()
            {
                _1 = (1 - y) * z * leaf.J / 3.0,
                _2 = canopy.AirO2 * (7.0 / 3.0) * leaf.Gamma,
                _3 = 0.0,
                _4 = (y * z * leaf.J / parameters.ExtraATPCost) - cc * (1 - y) * z * leaf.J / (3 * cc + 7 * leaf.Gamma * oc),
                _5 = 0.0,
                _6 = 1.0,
                _7 = a * leaf.Gamma,
                _8 = leaf.Gamma * canopy.AirO2,
                _9 = (7.0 / 3.0) * leaf.Gamma * a
            };

            var func = new AssimilationFunction()
            {
                x = x,

                MesophyllRespiration    = leaf.GmRd,
                BundleSheathConductance = pathway.Gbs,
                Respiration             = leaf.RdT
            };

            return(func);
        }
Exemple #4
0
        /// <inheritdoc/>
        protected override AssimilationFunction GetAc1Function(AssimilationPathway pathway, TemperatureResponse leaf)
        {
            var x = new Terms()
            {
                _1 = leaf.VcMaxT,
                _2 = leaf.Kc + canopy.AirO2 * leaf.Kc / leaf.Ko,
                _3 = 0.0,
                _4 = 0.0,
                _5 = 0.0,
                _6 = 0.0,
                _7 = 0.0,
                _8 = canopy.AirO2 * leaf.Gamma,
                _9 = 0.0
            };

            var param = new AssimilationFunction()
            {
                x = x,
                MesophyllRespiration    = leaf.GmRd,
                BundleSheathConductance = 1.0,
                Respiration             = leaf.RdT
            };

            return(param);
        }
Exemple #5
0
        /// <inheritdoc/>
        protected override AssimilationFunction GetAjFunction(AssimilationPathway pathway, TemperatureResponse leaf)
        {
            var alpha = 0.1 / (canopy.DiffusivitySolubilityRatio * pathway.Gbs);
            var x     = new Terms()
            {
                _1 = (1.0 - parameters.MesophyllElectronTransportFraction) * leaf.J / 3.0,
                _2 = canopy.AirO2 * (7.0 / 3.0) * leaf.Gamma,
                _3 = 0.0,
                _4 = parameters.MesophyllElectronTransportFraction * leaf.J / parameters.ExtraATPCost,
                _5 = 1.0,
                _6 = 1.0,
                _7 = alpha * leaf.Gamma,
                _8 = leaf.Gamma * canopy.AirO2,
                _9 = (7.0 / 3.0) * leaf.Gamma * alpha
            };

            var func = new AssimilationFunction()
            {
                x = x,

                MesophyllRespiration    = leaf.GmRd,
                BundleSheathConductance = pathway.Gbs,
                Respiration             = leaf.RdT
            };

            return(func);
        }
Exemple #6
0
        /// <inheritdoc/>
        protected override AssimilationFunction GetAc1Function(AssimilationPathway pathway, TemperatureResponse leaf)
        {
            var alpha = 0.1 / (canopy.DiffusivitySolubilityRatio * pathway.Gbs);
            var x     = new Terms()
            {
                _1 = leaf.VcMaxT,
                _2 = leaf.Kc + canopy.AirO2 * (leaf.Kc / leaf.Ko),
                _3 = leaf.VpMaxT / (pathway.MesophyllCO2 + leaf.Kp),
                _4 = 0.0,
                _5 = 1.0,
                _6 = 1.0,
                _7 = alpha * leaf.Gamma,
                _8 = leaf.Gamma * canopy.AirO2,
                _9 = (leaf.Kc / leaf.Ko) * alpha
            };

            var func = new AssimilationFunction()
            {
                x = x,

                MesophyllRespiration    = leaf.GmRd,
                BundleSheathConductance = pathway.Gbs,
                Respiration             = leaf.RdT
            };

            return(func);
        }
Exemple #7
0
        /// <inheritdoc/>
        protected override void UpdateChloroplasticCO2(AssimilationPathway pathway, AssimilationFunction func)
        {
            var a = pathway.MesophyllCO2 * func.x._3
                    + func.x._4
                    - func.x._5 * pathway.CO2Rate
                    - func.MesophyllRespiration;

            pathway.ChloroplasticCO2 = pathway.MesophyllCO2 + a * func.x._6 / pathway.Gbs;
        }
Exemple #8
0
 /// <summary>
 /// Updates the chloroplastic CO2 parameter
 /// </summary>
 protected virtual void UpdateChloroplasticCO2(AssimilationPathway pathway, AssimilationFunction func)
 { /*CCM overwrites this.*/
 }
Exemple #9
0
        /// <inheritdoc/>
        public void UpdatePartialPressures(AssimilationPathway pathway, TemperatureResponse leaf, AssimilationFunction function)
        {
            var cm = pathway.MesophyllCO2;
            var cc = pathway.ChloroplasticCO2;
            var oc = pathway.ChloroplasticO2;

            UpdateMesophyllCO2(pathway, leaf);
            UpdateChloroplasticO2(pathway);
            UpdateChloroplasticCO2(pathway, function);

            pathway.MesophyllCO2     = (pathway.MesophyllCO2 + cm) / 2.0;
            pathway.ChloroplasticCO2 = (pathway.ChloroplasticCO2 + cc) / 2.0;
            pathway.ChloroplasticO2  = (pathway.ChloroplasticO2 + oc) / 2.0;
        }