Ejemplo n.º 1
0
        /// <summary>
        /// Repeat the assimilation calculation to let the result converge
        /// </summary>
        private void DoIterations(Transpiration t, double airTemp, bool updateT)
        {
            pathways.ForEach(p => p.SetConditions(airTemp, LAI));
            t.SetConditions(At25C, PhotonCount, AbsorbedRadiation);

            for (int n = 0; n <= assimilation.Iterations; n++)
            {
                UpdateAssimilation(t, updateT);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Recalculates the assimilation values for each pathway
        /// </summary>
        public void UpdateAssimilation(Transpiration t)
        {
            foreach (var p in pathways)
            {
                t.SetConditions(At25C, p.Temperature, PhotonCount, AbsorbedRadiation);
                t.UpdatePathway(assimilation, p);
                t.UpdateTemperature(p);

                // If the assimilation is not sensible zero the values
                if (double.IsNaN(p.CO2Rate) || p.CO2Rate <= 0.0 || double.IsNaN(p.WaterUse) || p.WaterUse <= 0.0)
                {
                    p.CO2Rate  = 0;
                    p.WaterUse = 0;
                }
            }
        }