diff --git a/VectoCore/Models/Simulation/Data/ISummaryDataWriter.cs b/VectoCore/Models/Simulation/Data/ISummaryDataWriter.cs index a86af5ca9bf3f9fc5c8f1ba9f4f79599f9deab73..a9db518834a22bfac44297234e33a9cc96657a16 100644 --- a/VectoCore/Models/Simulation/Data/ISummaryDataWriter.cs +++ b/VectoCore/Models/Simulation/Data/ISummaryDataWriter.cs @@ -2,7 +2,18 @@ namespace TUGraz.VectoCore.Models.Simulation.Data { public interface ISummaryDataWriter { + /// <summary> + /// Writes a single sum entry for the given modaldata of the job. + /// </summary> + /// <param name="data">The modal data.</param> + /// <param name="jobFileName">Name of the job file.</param> + /// <param name="jobName">Name of the job.</param> + /// <param name="cycleFileName">Name of the cycle file.</param> void Write(IModalDataWriter data, string jobFileName, string jobName, string cycleFileName); + + /// <summary> + /// Writes the data to the sum file. + /// </summary> void Finish(); } } \ No newline at end of file diff --git a/VectoCore/Models/Simulation/Data/SummaryFileWriter.cs b/VectoCore/Models/Simulation/Data/SummaryFileWriter.cs index 234677871d2d8cb507c8bf60762cd43377cc393d..639963b61668cf02da59d06b394439c242061fda 100644 --- a/VectoCore/Models/Simulation/Data/SummaryFileWriter.cs +++ b/VectoCore/Models/Simulation/Data/SummaryFileWriter.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Data; using System.Linq; using TUGraz.VectoCore.Utils; @@ -133,10 +132,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Data } } - row["pStop [%]"] = 100.0 * timeSum / (double)data.Compute("Max(time)", ""); - _table.ImportRow(row); + _table.Rows.Add(row); } public void Finish() diff --git a/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs index b93e57be160037941b678de2aaa114bdd8e09a6f..885dfd37107db9cdf8de33c3786c139c2b2ce52a 100644 --- a/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs +++ b/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.IO; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.SimulationComponent; using TUGraz.VectoCore.Models.SimulationComponent.Data; @@ -29,7 +30,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl for (var i = 0; i < data.Cycles.Count; i++) { var cycleFile = data.Cycles[i]; var jobName = string.Format("{0}-{1}", jobNumber, i); - var modFileName = string.Format("{0}_{1}.vmod", data.JobFileName, cycleFile); + var modFileName = string.Format("{0}_{1}.vmod", Path.GetFileNameWithoutExtension(data.JobFileName), + Path.GetFileNameWithoutExtension(cycleFile)); _dataWriter = new ModalDataWriter(modFileName); var builder = new SimulatorBuilder(_dataWriter, sumWriter, data.JobFileName, jobName, cycleFile, data.IsEngineOnly); diff --git a/VectoCore/Models/SimulationComponent/Data/Engine/FullLoadCurve.cs b/VectoCore/Models/SimulationComponent/Data/Engine/FullLoadCurve.cs index 0704829ed5219cb4461acb3adc2f73f78559757a..0d8ceaeca3ab5fde889224a590fb1ce96e363170 100644 --- a/VectoCore/Models/SimulationComponent/Data/Engine/FullLoadCurve.cs +++ b/VectoCore/Models/SimulationComponent/Data/Engine/FullLoadCurve.cs @@ -198,7 +198,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine // y = kx + d var k = (p2.TorqueFullLoad - p1.TorqueFullLoad) / (p2.EngineSpeed - p1.EngineSpeed); var d = p2.TorqueFullLoad - k * p2.EngineSpeed; - if (k == 0.0.SI()) { + if (k == 0.SI()) { return new Tuple<PerSecond, Watt>(p2.EngineSpeed, Formulas.TorqueToPower(p2.TorqueFullLoad, p2.EngineSpeed)); } var engineSpeedMaxPower = (-1 * d / (2 * k)).Cast<PerSecond>(); diff --git a/VectoCore/Models/SimulationComponent/Impl/Clutch.cs b/VectoCore/Models/SimulationComponent/Impl/Clutch.cs index 447b04450fa440f44f166df34aa3c5f5f0f1a7f0..5c378cf3cdbe49d82fe40f3765c9124c4422909c 100644 --- a/VectoCore/Models/SimulationComponent/Impl/Clutch.cs +++ b/VectoCore/Models/SimulationComponent/Impl/Clutch.cs @@ -60,7 +60,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl if (Cockpit.Gear() == 0) { _clutchState = ClutchState.ClutchOpened; engineSpeedIn = _idleSpeed; - torqueIn = 0.0.SI<NewtonMeter>(); + torqueIn = 0.SI<NewtonMeter>(); } else { var engineSpeedNorm = (angularVelocity - _idleSpeed) / (_ratedSpeed - _idleSpeed); diff --git a/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs b/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs index 26636b8f36614298f6b4a27e0db01e69b279dbf0..175a63a3871a5e173b95d09e5a5c9d19649d09e4 100644 --- a/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs +++ b/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs @@ -266,7 +266,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl protected Watt InertiaPowerLoss(NewtonMeter torque, PerSecond angularVelocity) { var deltaEngineSpeed = angularVelocity - _previousState.EngineSpeed; - var avgEngineSpeed = (_previousState.EngineSpeed + angularVelocity) / 2.0.SI<Second>(); + var avgEngineSpeed = (_previousState.EngineSpeed + angularVelocity) / 2.SI<Second>(); var result = _data.Inertia * deltaEngineSpeed * avgEngineSpeed; return result.Cast<Watt>(); } diff --git a/VectoCoreTest/Models/Simulation/DrivingCycleTests.cs b/VectoCoreTest/Models/Simulation/DrivingCycleTests.cs index d9ca3977666787d9cc91119042bf939ec82c8a8e..d92b22c2967edbe566e22df33841e6dff3e6ed90 100644 --- a/VectoCoreTest/Models/Simulation/DrivingCycleTests.cs +++ b/VectoCoreTest/Models/Simulation/DrivingCycleTests.cs @@ -41,7 +41,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation Assert.AreEqual(absTime, outPort.AbsTime); Assert.AreEqual(dt, outPort.Dt); - Assert.AreEqual(600.0.RPMtoRad(), outPort.AngularVelocity); + Assert.AreEqual(600.RPMtoRad(), outPort.AngularVelocity); Assert.AreEqual(0.SI<NewtonMeter>(), outPort.Torque); } @@ -68,7 +68,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation Assert.AreEqual(absTime, outPort.AbsTime); Assert.AreEqual(dt, outPort.Dt); - Assert.AreEqual(0.0.SI<MeterPerSecond>(), outPort.Velocity); + Assert.AreEqual(0.SI<MeterPerSecond>(), outPort.Velocity); Assert.AreEqual((-0.020237973).SI().GradientPercent.Cast<Radian>(), outPort.Gradient); } diff --git a/VectoCoreTest/Models/Simulation/SimulationTests.cs b/VectoCoreTest/Models/Simulation/SimulationTests.cs index 79ffffbf2df06233a7a14cdcd9f339cc0b14f463..aaba93a7c3957c9abd0b8e04444530ef065ff5cd 100644 --- a/VectoCoreTest/Models/Simulation/SimulationTests.cs +++ b/VectoCoreTest/Models/Simulation/SimulationTests.cs @@ -23,7 +23,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var container = job.GetContainer(); - Assert.AreEqual(560.0.RPMtoRad(), container.EngineSpeed()); + Assert.AreEqual(560.RPMtoRad(), container.EngineSpeed()); Assert.AreEqual(0U, container.Gear()); try { @@ -133,7 +133,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation }; var expectedSumFile = @"TestData\Results\EngineOnlyCycles\24t Coach.vsum"; - var sumFile = @"24t Coach.vsum"; + var sumFile = @"TestData\Jobs\24t Coach.vsum"; var resultFiles = expectedResultFiles.Select(x => Path.GetFileName(x)); Assert.IsTrue(File.Exists(sumFile), "sum file is missing: " + sumFile); @@ -141,8 +141,8 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation Assert.IsTrue(File.Exists(result), "vmod file is missing: " + result); } - //Assert.AreEqual(File.ReadAllLines(sumFile).Length, File.ReadAllLines(expectedSumFile).Length, - // "sum file row count differs."); + Assert.AreEqual(File.ReadAllLines(sumFile).Length, File.ReadAllLines(expectedSumFile).Length, + "sum file row count differs."); var resultFileIt = resultFiles.GetEnumerator(); @@ -153,9 +153,6 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation Assert.AreEqual(expectedResults.Rows.Count, results.Rows.Count, "Moddata: Row count differs."); } - - //todo compare sum file - Assert.Inconclusive("todo: compare sum file!!"); } } } \ No newline at end of file diff --git a/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs b/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs index 8091c1a9aaf96bc20691f6db0d191d2c062e4f64..cc6401a9900ce8798e2e88b6ef237db7054c1b4b 100644 --- a/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs +++ b/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs @@ -68,7 +68,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var absTime = new TimeSpan(seconds: 0, minutes: 0, hours: 0); var dt = new TimeSpan(seconds: 1, minutes: 0, hours: 0); var torque = 400.SI<NewtonMeter>(); - var engineSpeed = 1500.0.RPMtoRad(); + var engineSpeed = 1500.RPMtoRad(); port.Request(absTime, dt, torque, engineSpeed); } @@ -86,7 +86,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var dt = new TimeSpan(seconds: 1, minutes: 0, hours: 0); var torque = 0.SI<NewtonMeter>(); - var engineSpeed = 600.0.RPMtoRad(); + var engineSpeed = 600.RPMtoRad(); var dataWriter = new TestModalDataWriter(); for (var i = 0; i < 21; i++) { diff --git a/VectoCoreTest/Models/SimulationComponentData/FullLoadCurveTest.cs b/VectoCoreTest/Models/SimulationComponentData/FullLoadCurveTest.cs index 6de77a4a1bcf63188d7d469e5e159dad801fc411..7d0d7c77f93c1eac4ed87f91f525986408df34f3 100644 --- a/VectoCoreTest/Models/SimulationComponentData/FullLoadCurveTest.cs +++ b/VectoCoreTest/Models/SimulationComponentData/FullLoadCurveTest.cs @@ -16,9 +16,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData { var fldCurve = FullLoadCurve.ReadFromFile(CoachEngineFLD); - Assert.AreEqual(1180, (double) fldCurve.FullLoadStationaryTorque(560.0.RPMtoRad()), Tolerance); - Assert.AreEqual(1352, (double) fldCurve.FullLoadStationaryTorque(2000.0.RPMtoRad()), Tolerance); - Assert.AreEqual(1231, (double) fldCurve.FullLoadStationaryTorque(580.0.RPMtoRad()), Tolerance); + Assert.AreEqual(1180, (double) fldCurve.FullLoadStationaryTorque(560.RPMtoRad()), Tolerance); + Assert.AreEqual(1352, (double) fldCurve.FullLoadStationaryTorque(2000.RPMtoRad()), Tolerance); + Assert.AreEqual(1231, (double) fldCurve.FullLoadStationaryTorque(580.RPMtoRad()), Tolerance); } [TestMethod] @@ -33,9 +33,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData { var fldCurve = FullLoadCurve.ReadFromFile(CoachEngineFLD); - Assert.AreEqual(69198.814183, (double) fldCurve.FullLoadStationaryPower(560.0.RPMtoRad()), Tolerance); - Assert.AreEqual(283162.218372, (double) fldCurve.FullLoadStationaryPower(2000.0.RPMtoRad()), Tolerance); - Assert.AreEqual(74767.810760, (double) fldCurve.FullLoadStationaryPower(580.0.RPMtoRad()), Tolerance); + Assert.AreEqual(69198.814183, (double) fldCurve.FullLoadStationaryPower(560.RPMtoRad()), Tolerance); + Assert.AreEqual(283162.218372, (double) fldCurve.FullLoadStationaryPower(2000.RPMtoRad()), Tolerance); + Assert.AreEqual(74767.810760, (double) fldCurve.FullLoadStationaryPower(580.RPMtoRad()), Tolerance); } [TestMethod] @@ -43,11 +43,11 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData { var fldCurve = FullLoadCurve.ReadFromFile(CoachEngineFLD); - Assert.AreEqual(-149, (double) fldCurve.DragLoadStationaryTorque(560.0.RPMtoRad()), Tolerance); - Assert.AreEqual(-301, (double) fldCurve.DragLoadStationaryTorque(2000.0.RPMtoRad()), Tolerance); - Assert.AreEqual(-148.5, (double) fldCurve.DragLoadStationaryTorque(580.0.RPMtoRad()), Tolerance); - Assert.AreEqual(-150, (double) fldCurve.DragLoadStationaryTorque(520.0.RPMtoRad()), Tolerance); - Assert.AreEqual(-339, (double) fldCurve.DragLoadStationaryTorque(2200.0.RPMtoRad()), Tolerance); + Assert.AreEqual(-149, (double) fldCurve.DragLoadStationaryTorque(560.RPMtoRad()), Tolerance); + Assert.AreEqual(-301, (double) fldCurve.DragLoadStationaryTorque(2000.RPMtoRad()), Tolerance); + Assert.AreEqual(-148.5, (double) fldCurve.DragLoadStationaryTorque(580.RPMtoRad()), Tolerance); + Assert.AreEqual(-150, (double) fldCurve.DragLoadStationaryTorque(520.RPMtoRad()), Tolerance); + Assert.AreEqual(-339, (double) fldCurve.DragLoadStationaryTorque(2200.RPMtoRad()), Tolerance); } [TestMethod] @@ -55,9 +55,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData { var fldCurve = FullLoadCurve.ReadFromFile(CoachEngineFLD); - Assert.AreEqual(-8737.81636, (double) fldCurve.DragLoadStationaryPower(560.0.RPMtoRad()), Tolerance); - Assert.AreEqual(-63041.29254, (double) fldCurve.DragLoadStationaryPower(2000.0.RPMtoRad()), Tolerance); - Assert.AreEqual(-9019.51251, (double) fldCurve.DragLoadStationaryPower(580.0.RPMtoRad()), Tolerance); + Assert.AreEqual(-8737.81636, (double) fldCurve.DragLoadStationaryPower(560.RPMtoRad()), Tolerance); + Assert.AreEqual(-63041.29254, (double) fldCurve.DragLoadStationaryPower(2000.RPMtoRad()), Tolerance); + Assert.AreEqual(-9019.51251, (double) fldCurve.DragLoadStationaryPower(580.RPMtoRad()), Tolerance); } [TestMethod] @@ -65,9 +65,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData { var fldCurve = FullLoadCurve.ReadFromFile(CoachEngineFLD); - Assert.AreEqual(0.6, (double) fldCurve.PT1(560.0.RPMtoRad()), Tolerance); - Assert.AreEqual(0.25, (double) fldCurve.PT1(2000.0.RPMtoRad()), Tolerance); - Assert.AreEqual(0.37, (double) fldCurve.PT1(1700.0.RPMtoRad()), Tolerance); + Assert.AreEqual(0.6, (double) fldCurve.PT1(560.RPMtoRad()), Tolerance); + Assert.AreEqual(0.25, (double) fldCurve.PT1(2000.RPMtoRad()), Tolerance); + Assert.AreEqual(0.37, (double) fldCurve.PT1(1700.RPMtoRad()), Tolerance); } /// <summary> diff --git a/VectoCoreTest/Utils/DoubleExtensionMethodTest.cs b/VectoCoreTest/Utils/DoubleExtensionMethodTest.cs index fc28ed5b1acf0e6d34f0ebf6f32b420218ca22b0..aba3daa14437402ec31a2b6c5deda74168f33747 100644 --- a/VectoCoreTest/Utils/DoubleExtensionMethodTest.cs +++ b/VectoCoreTest/Utils/DoubleExtensionMethodTest.cs @@ -10,12 +10,12 @@ namespace TUGraz.VectoCore.Tests.Utils [TestMethod] public void DoubleExtensions_SI() { - var val = 600.0.RPMtoRad(); + var val = 600.RPMtoRad(); Assert.AreEqual(600 / 60 * 2 * Math.PI, val.Double()); - Assert.IsTrue(0.0.SI<PerSecond>().HasEqualUnit(val)); + Assert.IsTrue(0.SI<PerSecond>().HasEqualUnit(val)); - var val2 = 1200.0.SI().Rounds.Per.Minute.ConvertTo().Radian.Per.Second.Cast<PerSecond>(); + var val2 = 1200.SI().Rounds.Per.Minute.ConvertTo().Radian.Per.Second.Cast<PerSecond>(); val = val * 2; Assert.AreEqual(val, val2); diff --git a/VectoCoreTest/Utils/SITest.cs b/VectoCoreTest/Utils/SITest.cs index 5b89dd80ddb4e280bba615d7b4c352a04f74a3be..69f33eab2458c3d7e69bb9b0009cfb9b02aa53a7 100644 --- a/VectoCoreTest/Utils/SITest.cs +++ b/VectoCoreTest/Utils/SITest.cs @@ -105,7 +105,7 @@ namespace TUGraz.VectoCore.Tests.Utils Assert.AreEqual("0 [-]", si.ToString()); Assert.IsTrue(si.HasEqualUnit(new SI())); - var si2 = 5.0.SI().Watt; + var si2 = 5.SI().Watt; Assert.AreEqual("5 [W]", si2.ToString()); var si3 = 2.SI().Radian.Per.Second; @@ -117,7 +117,7 @@ namespace TUGraz.VectoCore.Tests.Utils Assert.AreEqual("10 [kgmm/ssss]", si4.ToBasicUnits().ToString()); - var kg = 5.0.SI().Kilo.Gramm; + var kg = 5.SI().Kilo.Gramm; Assert.AreEqual(5.0, kg.Double()); Assert.AreEqual("5 [kg]", kg.ToString());