/// <summary> /// Checks whether a particular gas exceeds /// the rate of change nominated in the /// appropriate table. /// </summary> /// <param name="currentDga">The current or latest DGA.</param> /// <param name="previousDga">The previous DGA.</param> /// <param name="gas">The Gas for which the rate needs to be checked</param> /// <returns>True if the table value is exceeded</returns> private bool CheckRateOfChange(DissolvedGasAnalysis currentDga, DissolvedGasAnalysis previousDga, Gas gas, ref List <IOutput> outputs) { var rateOfChange = helper.RateOfChange(currentDga, previousDga, gas, new TimeUnits.Year()); var lowerRate = TypicalRatesOfIncrease[gas].Item1; var upperRate = TypicalRatesOfIncrease[gas].Item2; var rateUnit = "ul/l/year"; // If oil volume is available, make the appropriate conversion. if (OilVolume != null && OilVolume.Value != 0.0) { rateOfChange = rateOfChange * OilVolume.ConvertTo(new VolumeUnits.Litre()); lowerRate = lowerRate * OilVolume.ConvertTo(new VolumeUnits.Litre()); upperRate = upperRate * OilVolume.ConvertTo(new VolumeUnits.Litre()); rateUnit = "ul/year"; } if (rateOfChange != null && rateOfChange > upperRate) { if (!outputs.Exists(o => o.Name == $"{gas.ToString()} Rate of Change")) { outputs.Add(new Output() { Name = $"{gas.ToString()} Rate of Change", Description = $"The rate of change of {gas.ToString()} is {rateOfChange.Value.ToString("0.00")} {rateUnit} which is higher than the typical value of {upperRate.ToString("0.00")} {rateUnit}." }); } return(true); } else if (rateOfChange != null && rateOfChange <= lowerRate) { if (!outputs.Exists(o => o.Name == $"{gas.ToString()} Rate of Change")) { outputs.Add(new Output() { Name = $"{gas.ToString()} Rate of Change", Description = $"The rate of change of {gas.ToString()} is {rateOfChange.Value} {rateUnit} which is lower than the typical value of {lowerRate} {rateUnit}." }); } return(false); } return(false); }