/// /// Copyright (c) 2013-2015 Sensus Metering Systems /// using System; using System.Collections.Generic; namespace Config.Entities { public class TestResult { public virtual int Id { get; protected set; } public virtual string Name { get; set; } public virtual int BatchNr { get; set; } public virtual string PurchaseOrder { get; set; } public virtual MetersKind MetersKind { get; set; } public virtual IList Meters { get; set; } public virtual IList CombinedMeters { get; set; } /// Value copied from the procedure (Entities.Procedure) public virtual string ProcedureName { get; set; } public virtual string ProtocolTitle { get; set; } /// Values copied from the test (Entities.Test) public virtual int TestId { get; set; } /// Test entity ID to distinguish between tests with the same name public virtual string TestName { get; set; } public virtual int Part { get; set; } public virtual bool DoNotEvaluate { get; set; } /// Not mapped to the database public virtual bool DoNotPublish { get; set; } /// Not mapped to the database public virtual float Qfrom { get; set; } /// [m3/h] Water flow low limit public virtual float Qto { get; set; } /// [m3/h] Water flow high limit public virtual float Volume { get; set; } /// [l] Target test volume public virtual float TstTime { get; set; } /// [s] Test time estimate public virtual int Repeats { get; set; } public virtual bool Emptying { get; set; } public virtual bool Zeroing { get; set; } public virtual float PumpPower { get; set; } /// Power of the pump in [%] in the range 0 .. 100.0f, use values 0% and 100% for non-FM pumps public virtual int Time2MassMsrmt { get; set; } public virtual string Method { get; set; } public virtual float ErrLimLo { get; set; } /// [%] Lower error limit (usually < 0) public virtual float ErrLimHi { get; set; } /// [%] Upper error limit (usually > 0) public virtual float Uncertainty { get; set; } /// [%] Makes error limits tighter: 0 <= Uncertainty <= abs(ErrLimXx) /// To be replaced by the virtual bench component parameters public virtual string FeedingPath { get; set; } public virtual string BenchPath { get; set; } public virtual string OutputPath { get; set; } public virtual string MetersPath { get; set; } /// Results public virtual DateTime TimeStart { get; set; } /// Date and time of the test start public virtual DateTime TimeEnd { get; set; } /// Date and time of the test end public virtual int RepetitionNr { get; set; } /// Repetition number from the set of repeated tests (1...) public virtual float AmbientTempAve { get; set; } /// [deg.C] Average ambient air temperature public virtual float AmbientPressAve { get; set; } /// Average ambient air pressure public virtual float AmbientHumiAve { get; set; } /// [%] Average ambient air relative humidity public virtual float PressInAvrg { get; set; } /// [Bar] Input water pressure (average) public virtual float PressInStart { get; set; } /// [Bar] public virtual float PressInEnd { get; set; } /// [Bar] public virtual float PressOutAvrg { get; set; } /// [Bar] public virtual float PressOutStart { get; set; } /// [Bar] public virtual float PressOutEnd { get; set; } /// [Bar] public virtual float TempInAvrg { get; set; } /// [deg.C] public virtual float TempInStart { get; set; } /// [deg.C] public virtual float TempInEnd { get; set; } /// [deg.C] public virtual float TempOutAvrg { get; set; } /// [deg.C] public virtual float TempOutStart { get; set; } /// [deg.C] public virtual float TempOutEnd { get; set; } /// [deg.C] public virtual float TempDivAvrg { get; set; } /// [deg.C] public virtual float TempDivStart { get; set; } /// [deg.C] public virtual float TempDivEnd { get; set; } /// [deg.C] public virtual float MassStartRaw { get; set; } /// [kg] public virtual float MassStart { get; set; } /// [kg] public virtual float MassEndRaw { get; set; } /// [kg] public virtual float MassEnd { get; set; } /// [kg] public virtual float MassDiff { get; set; } /// [kg] public virtual float DensityIn { get; set; } /// [kg/m3] public virtual float DensityOut { get; set; } /// [kg/m3] public virtual float DensityDiv { get; set; } /// [kg/m3] public virtual float Buoyancy { get; set; } ///TODO -> map public virtual float FlowMass { get; set; } /// [kg/h] calculated from conventional true value public virtual float FlowVolume { get; set; } /// [l/h] calculated from conventional true value public virtual float VolumeCTV { get; set; } /// [l] Volume conventional true value public virtual float VolumeMaster { get; set; } /// [l] Volume from the master flow meter public virtual float Time { get; set; } /// [s] Measurement time in seconds public virtual float ErrorMaster { get; set; } /// [%] public virtual float PulsesMaster { get; set; } public virtual float ConstMaster { get; set; } /// [pls/l] Pulses per liter master flow meter public virtual float QRise { get; set; } /// Detected Q_rise of a composed meter public virtual float QFall { get; set; } /// Detected Q_fall of a composed meter public virtual float TimeDivStart0 { get; set; } public virtual float TimeDivStart1 { get; set; } public virtual float TimeDivStart2 { get; set; } public virtual float TimeDivStart3 { get; set; } public virtual float TimeDivStart4 { get; set; } public virtual float TimeDivStart5 { get; set; } public virtual float TimeDivEnd0 { get; set; } public virtual float TimeDivEnd1 { get; set; } public virtual float TimeDivEnd2 { get; set; } public virtual float TimeDivEnd3 { get; set; } public virtual float TimeDivEnd4 { get; set; } public virtual float TimeDivEnd5 { get; set; } public TestResult() { Meters = new List(); CombinedMeters = new List(); } public TestResult(MetersKind kind) : this() { MetersKind = kind; if (kind == MetersKind.Single) { for (int i = 0; i < Config.Data.WMsCount; i++) Meters.Add(new MeterTestResult(this)); } else if (kind == MetersKind.Combined) { for (int i = 0; i < 2 * Config.Data.CompoundWMsCount; i++) Meters.Add(new MeterTestResult(this)); for (int i = 0; i < Config.Data.CompoundWMsCount; i++) CombinedMeters.Add(new MeterTestResult(this)); } } public TestResult(Test test, int repetitionNr, MetersKind kind) : this(kind) { if (test.Repeats == 1) { Name = test.Name; } else { Name = string.Format("{0} ({1}/{2})", test.Name, repetitionNr, test.Repeats); } RepetitionNr = repetitionNr; /// Copy test parameters from Entities.Procedure object ProcedureName = test.Procedure.Name; ProtocolTitle = test.Procedure.ProtocolTitle; /// Copy test parameters from Entities.Test object TestId = test.Id; TestName = test.Name; Part = test.Part; Qfrom = test.Qfrom; Qto = test.Qto; Volume = test.Volume; TstTime = test.TstTime; Repeats = test.Repeats; Emptying = test.Emptying; Zeroing = test.Zeroing; PumpPower = PumpPower; Time2MassMsrmt = test.TimeStop2Mass; Method = test.Method; ErrLimLo = test.ErrLimLo; ErrLimHi = test.ErrLimHi; Uncertainty = test.Uncertainty; FeedingPath = test.FeedingPath; BenchPath = test.BenchPath; OutputPath = test.OutputPath; MetersPath = test.MetersPath; } public override string ToString() { return string.Format("batch={0}, procedure={1}, test={2}, {3} {4}", BatchNr, ProcedureName, TestName, TimeStart.ToShortDateString(), TimeStart.ToShortTimeString()); } } }