diff --git a/VectoCoreTest/Integration/CoachPowerTrain.cs b/VectoCoreTest/Integration/CoachPowerTrain.cs index f0c74c0c808b09089efc5f9cea33f6a81ad7ac78..91dcbeaea1d845ca86dc42d2a485941e46a09f3c 100644 --- a/VectoCoreTest/Integration/CoachPowerTrain.cs +++ b/VectoCoreTest/Integration/CoachPowerTrain.cs @@ -78,10 +78,10 @@ namespace TUGraz.VectoCore.Tests.Integration new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container))); tmp = Port.AddComponent(tmp, clutch); - var aux = new Auxiliary(container); + var aux = new EngineAuxiliary(container); aux.AddConstant("", 0.SI<Watt>()); - tmp = Port.AddComponent(tmp, aux); + engine.Connect(aux.Port()); Port.AddComponent(tmp, engine); diff --git a/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs b/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs index a4243448546c9539e480b0c73f351f918f909f2a..0f4d827fd0a8ff74264b8db65ae192dcb1ffccc2 100644 --- a/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs +++ b/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs @@ -49,13 +49,14 @@ namespace TUGraz.VectoCore.Tests.Integration.EngineOnlyCycle var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(TestContext.DataRow["EngineFile"].ToString()); - var aux = new Auxiliary(vehicle); + var aux = new EngineAuxiliary(vehicle); aux.AddDirect(); var engine = new EngineOnlyCombustionEngine(vehicle, engineData); + engine.Connect(aux); - aux.InPort().Connect(engine.OutPort()); - var port = aux.OutPort(); + //aux.InPort().Connect(engine.OutPort()); + var port = engine.OutPort(); var absTime = 0.SI<Second>(); var dt = 1.SI<Second>(); diff --git a/VectoCoreTest/Integration/Truck40tPowerTrain.cs b/VectoCoreTest/Integration/Truck40tPowerTrain.cs index 71cd2261d37e49696861367da8d2f8207b0e4e85..217586646fa5da1c2dc96556743ab494743b5c4e 100644 --- a/VectoCoreTest/Integration/Truck40tPowerTrain.cs +++ b/VectoCoreTest/Integration/Truck40tPowerTrain.cs @@ -89,10 +89,10 @@ namespace TUGraz.VectoCore.Tests.Integration new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container))); tmp = Port.AddComponent(tmp, clutch); - var aux = new Auxiliary(container); + var aux = new EngineAuxiliary(container); aux.AddConstant("", 0.SI<Watt>()); + engine.Connect(aux.Port()); - tmp = Port.AddComponent(tmp, aux); Port.AddComponent(tmp, engine); engine.IdleController.RequestPort = clutch.IdleControlPort; diff --git a/VectoCoreTest/Models/Simulation/AuxTests.cs b/VectoCoreTest/Models/Simulation/AuxTests.cs index 711258af2393fc87815a9c6022333262f77dcaa9..3aa20918d2156a0d3090a3ad0c8d36335049713f 100644 --- a/VectoCoreTest/Models/Simulation/AuxTests.cs +++ b/VectoCoreTest/Models/Simulation/AuxTests.cs @@ -52,10 +52,8 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation (writer, mass, loading) => sumWriter.WriteFullPowertrain(modData, "", "", "", null, null)); var data = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\LongHaul_short.vdri", CycleType.DistanceBased); var mockcycle = new MockDrivingCycle(container, data); - var port = new MockTnOutPort(); - var aux = new Auxiliary(container); - aux.InPort().Connect(port); + var aux = new EngineAuxiliary(container); var hdvClass = VehicleClass.Class5; var mission = MissionType.LongHaul; @@ -74,8 +72,9 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var t = 0.SI<Second>(); var dt = 1.SI<Second>(); + aux.Initialize(torque, speed); for (var i = 0; i < 11; i++) { - aux.OutPort().Request(t, dt, torque, speed); + aux.PowerDemand(t, dt, torque, speed); modData[ModalResultField.dist] = i.SI<Meter>(); modData[ModalResultField.Pe_eng] = 0.SI<Watt>(); modData[ModalResultField.acc] = 0.SI<MeterPerSquareSecond>(); @@ -99,9 +98,8 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation { var dataWriter = new MockModalDataContainer(); var container = new VehicleContainer(dataWriter); - var port = new MockTnOutPort(); - var aux = new Auxiliary(container); - aux.InPort().Connect(port); + //var port = new MockTnOutPort(); + var aux = new EngineAuxiliary(container); var constPower = 1200.SI<Watt>(); aux.AddConstant("CONSTANT", constPower); @@ -109,24 +107,22 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var speed = 2358.RPMtoRad(); var torque = 500.SI<NewtonMeter>(); var t = 0.SI<Second>(); - aux.OutPort().Request(t, t, torque, speed); - Assert.AreEqual(speed, port.AngularVelocity); - var newTorque = torque + constPower / speed; - AssertHelper.AreRelativeEqual(port.Torque, newTorque); + + aux.Initialize(torque, speed); + var auxDemand = aux.PowerDemand(t, t, torque, speed); + AssertHelper.AreRelativeEqual(constPower / speed, auxDemand); speed = 2358.RPMtoRad(); torque = 1500.SI<NewtonMeter>(); - aux.OutPort().Request(t, t, torque, speed); - Assert.AreEqual(speed, port.AngularVelocity); - newTorque = torque + constPower / speed; - AssertHelper.AreRelativeEqual(port.Torque, newTorque); + aux.Initialize(torque, speed); + auxDemand = aux.PowerDemand(t, t, torque, speed); + AssertHelper.AreRelativeEqual(constPower / speed, auxDemand); speed = 1500.RPMtoRad(); torque = 1500.SI<NewtonMeter>(); - aux.OutPort().Request(t, t, torque, speed); - Assert.AreEqual(speed, port.AngularVelocity); - newTorque = torque + constPower / speed; - AssertHelper.AreRelativeEqual(port.Torque, newTorque); + aux.Initialize(torque, speed); + auxDemand = aux.PowerDemand(t, t, torque, speed); + AssertHelper.AreRelativeEqual(constPower / speed, auxDemand); } [TestMethod] @@ -136,9 +132,8 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var container = new VehicleContainer(dataWriter); var data = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\Coach time based short.vdri", CycleType.TimeBased); var cycle = new MockDrivingCycle(container, data); - var port = new MockTnOutPort(); - var aux = new Auxiliary(container); - aux.InPort().Connect(port); + + var aux = new EngineAuxiliary(container); aux.AddDirect(); @@ -149,11 +144,10 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var expected = new[] { 6100, 3100, 2300, 4500, 6100 }; foreach (var e in expected) { - aux.OutPort().Request(t, t, torque, speed); - Assert.AreEqual(speed, port.AngularVelocity); - var newTorque = torque + e.SI<Watt>() / speed; - AssertHelper.AreRelativeEqual(port.Torque, newTorque); + aux.Initialize(torque, speed); + var auxDemand = aux.PowerDemand(t, t, torque, speed); + AssertHelper.AreRelativeEqual((e.SI<Watt>() / speed).Value(), auxDemand.Value()); cycle.CommitSimulationStep(null); } } @@ -172,10 +166,8 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation // ALT1 in cycle file: 0, 0.3724 (=0.38*0.96), 0.4802 (=0.49*0.96), 0.6272 (0.64*0.96), ... var cycle = new MockDrivingCycle(container, data); - var port = new MockTnOutPort(); - var aux = new Auxiliary(container); - aux.InPort().Connect(port); + var aux = new EngineAuxiliary(container); var auxData = AuxiliaryData.ReadFromFile(@"TestData\Components\24t_Coach_ALT.vaux"); // ratio = 4.078 @@ -208,10 +200,10 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation }; foreach (var e in expected) { - aux.OutPort().Request(t, t, torque, speed); - Assert.AreEqual(speed, port.AngularVelocity); + aux.Initialize(torque, speed); + var auxDemand = aux.PowerDemand(t, t, torque, speed); - AssertHelper.AreRelativeEqual(port.Torque, torque + e.SI<Watt>() / speed); + AssertHelper.AreRelativeEqual((e.SI<Watt>() / speed).Value(), auxDemand.Value()); cycle.CommitSimulationStep(null); } @@ -233,8 +225,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var cycle = new MockDrivingCycle(container, data); var port = new MockTnOutPort(); - var aux = new Auxiliary(container); - aux.InPort().Connect(port); + var aux = new EngineAuxiliary(container); var auxData = AuxiliaryData.ReadFromFile(@"TestData\Components\24t_Coach_ALT.vaux"); // ratio = 4.078 @@ -262,10 +253,10 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation }; foreach (var e in expected) { - aux.OutPort().Request(t, t, torque, speed); - Assert.AreEqual(speed, port.AngularVelocity); + aux.Initialize(torque, speed); + var auxDemand = aux.PowerDemand(t, t, torque, speed); - AssertHelper.AreRelativeEqual(port.Torque, torque + e.SI<Watt>() / speed); + AssertHelper.AreRelativeEqual((e.SI<Watt>() / speed).Value(), auxDemand); cycle.CommitSimulationStep(null); } @@ -278,7 +269,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var data = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\Coach time based short.vdri", CycleType.TimeBased); var cycle = new MockDrivingCycle(container, data); - var aux = new Auxiliary(container); + var aux = new EngineAuxiliary(container); AssertHelper.Exception<VectoException>(() => aux.AddMapping("NONEXISTING_AUX", null), "driving cycle does not contain column for auxiliary: NONEXISTING_AUX"); } @@ -341,13 +332,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var inputData = JSONInputDataFactory.ReadJsonJob(@"TestData\Jobs\40t_Long_Haul_Truck_wrong_AUX.vecto"); var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); - jobContainer.AddRuns(runsFactory); - jobContainer.Execute(); - - ResultFileHelper.TestSumFile(@"TestData\Results\Declaration\40t_Long_Haul_Truck.vsum", - @"AuxReadJobFileDeclarationMode.vsum"); - - Assert.Inconclusive(); + AssertHelper.Exception<VectoException>(() => jobContainer.AddRuns(runsFactory)); } } } \ No newline at end of file diff --git a/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs b/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs index 8287214c48bd144abbc1cfbe41c0998f80c42297..80212576026ba87650d5783f450d58848c2ea4c4 100644 --- a/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs +++ b/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs @@ -223,15 +223,15 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var driver = new MockDriver(container); - var aux = new Auxiliary(container); + var aux = new EngineAuxiliary(container); aux.AddConstant("", 5000.SI<Watt>()); gearbox.Gear = 1; //gearbox.InPort().Connect(engine.OutPort()); gearbox.InPort().Connect(clutch.OutPort()); - clutch.InPort().Connect(aux.OutPort()); - aux.InPort().Connect(engine.OutPort()); + clutch.InPort().Connect(engine.OutPort()); + engine.Connect(aux.Port()); engine.IdleController.RequestPort = clutch.IdleControlPort; // var expectedResults = VectoCSVFile.Read(TestContext.DataRow["ResultFile"].ToString()); @@ -314,8 +314,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent absTime += dt; Assert.IsInstanceOfType(response, typeof(ResponseSuccess)); - Assert.AreEqual(engineSpeed[i].Value(), engine.PreviousState.EngineSpeed.Value(), Tolerance); - Assert.AreEqual(enginePower[i].Value(), engine.PreviousState.EnginePower.Value(), Tolerance); + Assert.AreEqual(engineSpeed[i].Value(), engine.PreviousState.EngineSpeed.Value(), Tolerance, "i: {0}", i); + Assert.AreEqual(enginePower[i].Value(), engine.PreviousState.EnginePower.Value(), Tolerance, "i: {0}", i); } } @@ -510,15 +510,15 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var driver = new MockDriver(container); - var aux = new Auxiliary(container); + var aux = new EngineAuxiliary(container); aux.AddConstant("", 5000.SI<Watt>()); gearbox.Gear = 1; //gearbox.InPort().Connect(engine.OutPort()); gearbox.InPort().Connect(clutch.OutPort()); - clutch.InPort().Connect(aux.OutPort()); - aux.InPort().Connect(engine.OutPort()); + clutch.InPort().Connect(engine.OutPort()); + engine.Connect(aux.Port()); // has to be done after connecting components! engine.IdleController.RequestPort = clutch.IdleControlPort; diff --git a/VectoCoreTest/TestData/Jobs/12t Delivery Truck.vecto b/VectoCoreTest/TestData/Jobs/12t Delivery Truck.vecto index bee5ae049e4eb564ea8e058b0d19eb57529d4bed..d9a0f98fd634bc2df57e4ad53a4138e002b8fb52 100644 --- a/VectoCoreTest/TestData/Jobs/12t Delivery Truck.vecto +++ b/VectoCoreTest/TestData/Jobs/12t Delivery Truck.vecto @@ -20,32 +20,32 @@ "ID": "FAN", "Type": "Fan", "Path": "<NOFILE>", - "Technology": "" + "Technology": "Belt driven or driven via transm. - Discrete step clutch" }, { "ID": "STP", "Type": "Steering pump", "Path": "<NOFILE>", - "Technology": "" + "Technology": "Variable displacement" }, { "ID": "AC", "Type": "HVAC", "Path": "<NOFILE>", - "Technology": "" + "Technology": "Default" }, { "ID": "ES", "Type": "Electric System", "Path": "<NOFILE>", - "Technology": "", + "Technology": "Custom Technology List", "TechList": [] }, { "ID": "PS", "Type": "Pneumatic System", "Path": "<NOFILE>", - "Technology": "" + "Technology": "Default" } ], "VACC": "<NOFILE>", diff --git a/VectoCoreTest/TestData/Jobs/40t_Long_Haul_Truck_wrong_AUX.vecto b/VectoCoreTest/TestData/Jobs/40t_Long_Haul_Truck_wrong_AUX.vecto new file mode 100644 index 0000000000000000000000000000000000000000..47373f2a7ecde271757f945d79202bfc094353d6 --- /dev/null +++ b/VectoCoreTest/TestData/Jobs/40t_Long_Haul_Truck_wrong_AUX.vecto @@ -0,0 +1,71 @@ +{ + "Header": { + "CreatedBy": "Raphael Luz IVT TU-Graz (85407225-fc3f-48a8-acda-c84a05df6837)", + "Date": "29.07.2014 16:59:08", + "AppVersion": "2.0.4-beta", + "FileVersion": 2 + }, + "Body": { + "SavedInDeclMode": true, + "VehicleFile": "../Components/40t_Long_Haul_Truck.vveh", + "EngineFile": "../Components/40t_Long_Haul_Truck.veng", + "GearboxFile": "../Components/40t_Long_Haul_Truck.vgbx", + "Cycles": [ + "Long Haul", + "Regional Delivery" + ], + "Aux": [ + { + "ID": "FAN", + "Type": "Fan", + "Path": "<NOFILE>", + "Technology": "Hydraulic driven - Constant displacement pump" + }, + { + "ID": "STP", + "Type": "Steering pump", + "Path": "<NOFILE>", + "Technology": "Variable displacement" + }, + { + "ID": "ACA", + "Type": "HVAC", + "Path": "<NOFILE>", + "Technology": "Default" + }, + { + "ID": "LIP", + "Type": "Electric System", + "Path": "<NOFILE>", + "Technology": "Custom Technology List", + "TechList": [ ] + }, + { + "ID": "LIP", + "Type": "Electric System", + "Path": "<NOFILE>", + "Technology": "Custom Technology List", + "TechList": [] + } + ], + "VACC": "<NOFILE>", + "EngineOnlyMode": false, + "StartStop": { + "Enabled": false, + "MaxSpeed": 5.0, + "MinTime": 5.0, + "Delay": 5 + }, + "LAC": { + "Enabled": true, + "Dec": -0.5, + "MinSpeed": 50.0 + }, + "OverSpeedEcoRoll": { + "Mode": "OverSpeed", + "MinSpeed": 50.0, + "OverSpeed": 5.0, + "UnderSpeed": 5.0 + } + } +} \ No newline at end of file diff --git a/VectoCoreTest/VectoCoreTest.csproj b/VectoCoreTest/VectoCoreTest.csproj index b9cfdd07436a12f98b800f76c164a8c5ccae1d59..544cae4a103b436149a07b1a48feace49ac2da46 100644 --- a/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCoreTest/VectoCoreTest.csproj @@ -720,6 +720,9 @@ <None Include="TestData\Jobs\40t_Long_Haul_Truck_invalid-JSON.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> + <None Include="TestData\Jobs\40t_Long_Haul_Truck_wrong_AUX.vecto"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> <None Include="TestData\Jobs\job-report.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None>