public void OnPrepare()
    {
        inputFile.SeekToDate(Today);
        object[] values = inputFile.GetNextLineOfData();
        foreach (Paddock p in paddock.ChildPaddocks)
        {
            fieldProps = (ModelFramework.Component)p.LinkByName("FieldProps");
            fieldProps.Get("isDry", out isDry);
            fieldProps.Get("isHot", out isHot);
            fieldProps.Get("isShaded", out isShaded);

            localMint = Convert.ToSingle(values[MinTIndex]);
            localMaxt = Convert.ToSingle(values[MaxTIndex]);
            localRadn = Convert.ToSingle(values[RadnIndex]);
            localRain = Convert.ToSingle(values[RainIndex]);

            if (isDry.Equals("yes"))
            {
                localRain *= 0.9f;
            }
            if (isHot.Equals("yes"))
            {
                localMint += 2;
                localMaxt += 2; //change tav/amp?
            }
            if (isShaded.Equals("yes"))
            {
                localMaxt -= 5;
            }

            localMet = (ModelFramework.Component)p.LinkByName("LocalClimate");
            localMet.Set("mint", localMint);
            localMet.Set("maxt", localMaxt);
            localMet.Set("radn", localRadn);
            localMet.Set("rain", localRain);
        }
    }
        /// <summary>Applies the patch if we have data for the specified date.</summary>
        /// <param name="dateTime">The date</param>
        internal void ApplyPatch(DateTime date)
        {
            bool useDates = this.fromDate != DateTime.MinValue && this.toDate != DateTime.MinValue;

            bool inDateRange = !useDates || dateInRange(date);

            if (inDateRange)
            {
                string newVariableValue = value;
                if (newVariableValue == null)
                {
                    if (data == null)
                    {
                        throw new Exception("Cannot find values for patch variable: " + this.dataColumnName);
                    }

                    // Find the row that has the month we're looking for.
                    var row = data.AsEnumerable().FirstOrDefault
                                  (r => ((DateTime)r["Date"]).Day == date.Day &&
                                  ((DateTime)r["Date"]).Month == date.Month);

                    if (row != null)
                    {
                        newVariableValue = row[this.dataColumnName].ToString();
                    }
                }
                if (newVariableValue != null && newVariableValue != string.Empty)
                {
                    double doubleValue = Convert.ToDouble(newVariableValue);
                    if (!paddock.Set(this.variableNameToSet, doubleValue))
                    {
                        throw new Exception("Cannot set variable: " + this.variableNameToSet);
                    }
                }
            }
        }