/// <summary>Does the n balance.</summary> private void DoNBalance() { Soils.NitrogenChangedType NUptakeType = new Soils.NitrogenChangedType(); NUptakeType.Sender = Name; NUptakeType.SenderType = "Plant"; NUptakeType.DeltaNO3 = new double[SoilWat.Thickness.Length]; NUptakeType.DeltaNH4 = new double[SoilWat.Thickness.Length]; double Ndemand = DltDM * 10 * 0.021; NFixation = Math.Max(0.0, Ndemand * .44); for (int j = 0; j < SoilWat.Thickness.Length; j++) { PotNUptake[j] = Math.Max(0.0, RootProportion(j, RootDepth) * SoilN.NO3[j]); } double TotPotNUptake = MathUtilities.Sum(PotNUptake); double Fr = Math.Min(1.0, (Ndemand - NFixation) / TotPotNUptake); for (int j = 0; j < SoilWat.Thickness.Length; j++) { NUptake[j] = PotNUptake[j] * Fr; NUptakeType.DeltaNO3[j] = -NUptake[j]; } if (NitrogenChanged != null) { NitrogenChanged.Invoke(NUptakeType); } }
/// <summary>Does the n balance.</summary> private void DoNBalance() { Soils.NitrogenChangedType NUptakeType = new Soils.NitrogenChangedType(); NUptakeType.Sender = Name; NUptakeType.SenderType = "Plant"; NUptakeType.DeltaNO3 = new double[SoilWat.Thickness.Length]; NUptakeType.DeltaNH4 = new double[SoilWat.Thickness.Length]; double Ndemand = DltDM * 10 * 0.021; NFixation = Math.Max(0.0, Ndemand * .44); for (int j = 0; j < SoilWat.Thickness.Length; j++) { PotNUptake[j] = Math.Max(0.0, RootProportion(j, RootDepth) * SoilN.NO3[j]); } double TotPotNUptake = MathUtilities.Sum(PotNUptake); double Fr = Math.Min(1.0, (Ndemand - NFixation) / TotPotNUptake); for (int j = 0; j < SoilWat.Thickness.Length; j++) { NUptake[j] = PotNUptake[j] * Fr; NUptakeType.DeltaNO3[j] = -NUptake[j]; } if (NitrogenChanged != null) NitrogenChanged.Invoke(NUptakeType); }