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); } } } }