/// <summary> /// Creates a time series for the chemical /// </summary> /// <param name="Chem"></param> /// <returns></returns> private TimestampSeries CreateChemicalSeries(Chemical Chem) { TimestampSeries ts = new TimestampSeries(); ts.Name = Chem.Name; ts.Unit = UnitFactory.Instance.GetUnit(NamedUnits.molespercubicmeter); Items.Add(ts); ChemicalsToLog.Add(Chem, ts); return(ts); }
/// <summary> /// Logs chemical /// </summary> /// <param name="Water"></param> /// <param name="Start"></param> /// <param name="End"></param> public void Log(IWaterPacket Water, DateTime Start, DateTime End) { WaterPacket wc = Water as WaterPacket; //Log chemicals if the water is based on WaterPacket if (wc != null) { if (LogAllChemicals) { foreach (var c in wc.Chemicals.Keys) { TimestampSeries ts; if (!ChemicalsToLog.TryGetValue(c, out ts)) { ts = CreateChemicalSeries(c); } ts.AddSiValue(End, wc.GetConcentration(c)); } } else { foreach (KeyValuePair <Chemical, TimestampSeries> ct in ChemicalsToLog) { ct.Value.AddSiValue(End, ((WaterPacket)Water).GetConcentration(ct.Key)); } } } //Log the water composition if (LogComposition) { foreach (var id in Water.Composition) { TimestampSeries ts; if (!CompositionLog.TryGetValue(id.Key, out ts)) { ts = CreateCompositionTimeSeries(id.Key); } ts.AddValue(End, id.Value); } } }