Example #1
0
        /// <summary>
        /// This function increments thermal time accumulated in each phase
        /// and returns a non-zero value if the phase target is met today so
        /// the phenology class knows to progress to the next phase and how
        /// much tt to pass it on the first day.
        /// </summary>
        public override double DoTimeStep(double PropOfDayToUse)
        {
            base.DoTimeStep(PropOfDayToUse);

            // Get the Target TT
            double Target = CalcTarget();

            if (DaysFromSowingToEndPhase > 0)
            {
                if (phenology.DaysAfterSowing >= DaysFromSowingToEndPhase)
                {
                    PropOfDayUnused = 1.0;
                }
                else
                {
                    PropOfDayUnused = 0.0;
                }
            }
            else if (TTinPhase > Target)
            {
                double LeftOverValue = TTinPhase - Target;
                if (_TTForToday > 0.0)
                {
                    double PropOfValueUnused = LeftOverValue / ThermalTime.Value();
                    PropOfDayUnused = PropOfValueUnused * PropOfDayToUse;
                }
                else
                {
                    PropOfDayUnused = 1.0;
                }
                TTinPhase = Target;
            }

            return(PropOfDayUnused);
        }
Example #2
0
        /// <summary>Return proportion of TT unused</summary>
        /// <param name="PropOfDayToUse">The property of day to use.</param>
        /// <returns></returns>
        public override double AddTT(double PropOfDayToUse)
        {
            TTinPhase += ThermalTime.Value() * PropOfDayToUse;
            double AmountUnusedTT = TTinPhase - CalcTarget();

            if (AmountUnusedTT > 0)
            {
                return(AmountUnusedTT / ThermalTime.Value());
            }
            return(0);
        }
Example #3
0
        /// <summary>
        /// This function increments thermal time accumulated in each phase
        /// and returns a non-zero value if the phase target is met today so
        /// the phenology class knows to progress to the next phase and how
        /// much tt to pass it on the first day.
        /// </summary>
        public override double DoTimeStep(double PropOfDayToUse)
        {
            base.DoTimeStep(PropOfDayToUse);

            // Get the Target TT
            double Target = CalcTarget();

            structure.PrimaryBudNo = plant.SowingData.BudNumber;
            if (DaysFromSowingToEndPhase > 0)
            {
                if (phenology.DaysAfterSowing >= DaysFromSowingToEndPhase)
                {
                    PropOfDayUnused = 1.0;
                }
                else
                {
                    PropOfDayUnused = 0.0;
                }
            }
            else if (TTinPhase > Target)
            {
                double LeftOverValue = TTinPhase - Target;
                if (_TTForToday > 0.0)
                {
                    double PropOfValueUnused = LeftOverValue / ThermalTime.Value();
                    PropOfDayUnused = PropOfValueUnused * PropOfDayToUse;
                }
                else
                {
                    PropOfDayUnused = 1.0;
                }
                TTinPhase = Target;
            }

            if (PropOfDayUnused > 0.0)
            {
                double BudNumberBurst = plant.SowingData.BudNumber * FractionOfBudBurst.Value();

                structure.PrimaryBudNo  = BudNumberBurst;
                structure.TotalStemPopn = structure.MainStemPopn;
            }

            return(PropOfDayUnused);
        }
Example #4
0
 /// <summary>Do our timestep development</summary>
 /// <param name="PropOfDayToUse">The property of day to use.</param>
 /// <returns></returns>
 public override double DoTimeStep(double PropOfDayToUse)
 {
     _CumulativeValue += ThermalTime.Value();
     TTinPhase        += ThermalTime.Value();
     return(0);
 }