Exemplo n.º 1
0
        /// <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);
            }
        }
Exemplo n.º 2
0
        /// <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);
        }