/// <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); } }
/// <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; } } }