Exemplo n.º 1
0
        /// <summary>
        /// Scale the grazing inputs
        /// </summary>
        /// <param name="inputs">The grazing inputs</param>
        /// <param name="scale">The scale value</param>
        /// <returns>The scaled grazing input</returns>
        public static GrazingInputs ScaleGrazingInputs(GrazingInputs inputs, double scale)
        {
            int iClass;
            int iSpecies;
            int iRipe;

            GrazingInputs Result = new GrazingInputs(inputs);

            if (scale != 1.0)
            {
                for (iClass = 1; iClass <= DigClassNo; iClass++)
                {
                    Result.Herbage[iClass].Biomass = scale * inputs.Herbage[iClass].Biomass;
                }

                Result.TotalGreen = scale * inputs.TotalGreen;
                Result.TotalDead  = scale * inputs.TotalDead;

                for (iSpecies = 1; iSpecies <= MaxPlantSpp; iSpecies++)
                {
                    for (iRipe = UNRIPE; iRipe <= RIPE; iRipe++)
                    {
                        Result.Seeds[iSpecies, iRipe].Biomass = scale * inputs.Seeds[iSpecies, iRipe].Biomass;
                    }
                }
            }

            return(Result);
        }
Exemplo n.º 2
0
 /// <summary>
 /// Zero the grazing inputs
 /// </summary>
 /// <param name="inputs">The grazing inputs to clear</param>
 public static void zeroGrazingInputs(ref GrazingInputs inputs)
 {
     inputs.Herbage      = new IntakeRecord[DigClassNo + 1];
     inputs.TotalGreen   = 0;
     inputs.TotalDead    = 0;
     inputs.LegumePropn  = 0;
     inputs.Seeds        = new IntakeRecord[MaxPlantSpp + 1, RIPE + 1];
     inputs.SeedClass    = new int[MaxPlantSpp + 1, RIPE + 1];
     inputs.SelectFactor = 0;
     inputs.LegumeTrop   = 0;
 }
Exemplo n.º 3
0
 /// <summary>
 /// Copy constructor
 /// </summary>
 /// <param name="src">The grazing inputs source object</param>
 public GrazingInputs(GrazingInputs src)
 {
     Array.Copy(src.Herbage, this.Herbage, src.Herbage.Length);
     this.TotalGreen  = src.TotalGreen;
     this.TotalDead   = src.TotalDead;
     this.LegumePropn = src.LegumePropn;
     Array.Copy(src.Seeds, this.Seeds, src.Seeds.Length);
     Array.Copy(src.SeedClass, this.SeedClass, src.SeedClass.Length);
     this.SelectFactor = src.SelectFactor;
     this.LegumeTrop   = src.LegumeTrop;
 }
Exemplo n.º 4
0
        /// <summary>
        /// Add grazing inputs to total inputs
        /// </summary>
        /// <param name="iPopn">The seed population</param>
        /// <param name="partInputs">Partial inputs</param>
        /// <param name="totalInputs">Total inputs</param>
        public static void addGrazingInputs(int iPopn, GrazingInputs partInputs, ref GrazingInputs totalInputs)
        {
            int iClass;
            // IntakeRecord intakeRec;
            {
                for (iClass = 1; iClass <= DigClassNo; iClass++)
                {
                    IntakeRecord intake = totalInputs.Herbage[iClass];

                    intake.HeightRatio = WeightAverage(
                        intake.HeightRatio,
                        intake.Biomass,
                        partInputs.Herbage[iClass].HeightRatio,
                        partInputs.Herbage[iClass].Biomass);
                    intake.Degradability = WeightAverage(
                        intake.Degradability,
                        intake.Biomass * intake.CrudeProtein,
                        partInputs.Herbage[iClass].Degradability,
                        partInputs.Herbage[iClass].Biomass * partInputs.Herbage[iClass].CrudeProtein);
                    intake.Digestibility = WeightAverage(
                        intake.Digestibility,
                        intake.Biomass,
                        partInputs.Herbage[iClass].Digestibility,
                        partInputs.Herbage[iClass].Biomass);
                    intake.CrudeProtein = WeightAverage(
                        intake.CrudeProtein,
                        intake.Biomass,
                        partInputs.Herbage[iClass].CrudeProtein,
                        partInputs.Herbage[iClass].Biomass);
                    intake.PhosContent = WeightAverage(
                        intake.PhosContent,
                        intake.Biomass,
                        partInputs.Herbage[iClass].PhosContent,
                        partInputs.Herbage[iClass].Biomass);
                    intake.SulfContent = WeightAverage(
                        intake.SulfContent,
                        intake.Biomass,
                        partInputs.Herbage[iClass].SulfContent,
                        partInputs.Herbage[iClass].Biomass);
                    intake.AshAlkalinity = WeightAverage(
                        intake.AshAlkalinity,
                        intake.Biomass,
                        partInputs.Herbage[iClass].AshAlkalinity,
                        partInputs.Herbage[iClass].Biomass);
                    intake.Biomass = intake.Biomass + partInputs.Herbage[iClass].Biomass;
                    totalInputs.Herbage[iClass] = intake;
                }
                totalInputs.LegumePropn = WeightAverage(
                    totalInputs.LegumePropn,
                    totalInputs.TotalGreen + totalInputs.TotalDead,
                    partInputs.LegumePropn,
                    partInputs.TotalGreen + partInputs.TotalDead);
                totalInputs.SelectFactor = WeightAverage(
                    totalInputs.SelectFactor,
                    totalInputs.TotalGreen + totalInputs.TotalDead,
                    partInputs.SelectFactor,
                    partInputs.TotalGreen + partInputs.TotalDead);
                totalInputs.TotalGreen = totalInputs.TotalGreen + partInputs.TotalGreen;
                totalInputs.TotalDead  = totalInputs.TotalDead + partInputs.TotalDead;
                for (int i = 0; i <= 2; i++)
                {
                    totalInputs.Seeds[iPopn, i]     = partInputs.Seeds[1, i];
                    totalInputs.SeedClass[iPopn, i] = partInputs.SeedClass[1, i];
                }
                totalInputs.LegumeTrop = WeightAverage(
                    totalInputs.LegumeTrop,
                    totalInputs.TotalGreen + totalInputs.TotalDead,
                    partInputs.LegumeTrop,
                    partInputs.TotalGreen + partInputs.TotalDead);
            }
        }