diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs index 17fd58fa9018e5ff64a3141adff58c6234ecf1bd..ceffb5ad603acb4b18f6e844218ce2b936fa3bd2 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs @@ -51,7 +51,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl StatefulProviderComponent<SimpleComponentState, ISimulationOutPort, ITnInPort, ITnOutPort>, IDrivingCycleInfo, ISimulationOutPort, ITnInProvider, ITnInPort { - protected readonly IDrivingCycleData Data; + internal readonly IDrivingCycleData Data; protected internal readonly DrivingCycleEnumerator CycleIterator; protected Second AbsTime { get; set; } diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj index fe64d27b512965cd08fb755766b1bb8b34c169c5..858f6ac925714ee3bb24b1f643f165c7ed32f262 100644 --- a/VectoCore/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore/VectoCore.csproj @@ -340,11 +340,6 @@ </Compile> <Compile Include="Utils\XmlResourceResolver.cs" /> <Compile Include="Utils\XPathHelper.cs" /> - <Compile Include="VersionNumber1.cs"> - <AutoGen>True</AutoGen> - <DesignTime>True</DesignTime> - <DependentUpon>VersionNumber.t4</DependentUpon> - </Compile> </ItemGroup> <ItemGroup> <None Include="app.config" /> diff --git a/VectoCore/VectoCoreTest/Reports/ModDataTest.cs b/VectoCore/VectoCoreTest/Reports/ModDataTest.cs index 4336f8b271b557b8d2a189a1c1922d6c884270b8..e335e7c11680d6414b384ed856066fed818228e9 100644 --- a/VectoCore/VectoCoreTest/Reports/ModDataTest.cs +++ b/VectoCore/VectoCoreTest/Reports/ModDataTest.cs @@ -85,7 +85,7 @@ namespace TUGraz.VectoCore.Tests.Reports run.Run(); Assert.IsTrue(run.FinishedWithoutErrors); - AssertModDataIntegrity(modData, auxKeys, cycle.Entries.Last().Distance, engineData.ConsumptionMap); + AssertModDataIntegrity(modData, auxKeys, cycle.Entries.Last().Distance.Value(), engineData.ConsumptionMap, true); } [TestCase(@"TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2\Class2_RigidTruck_DECL.vecto")] @@ -113,6 +113,13 @@ namespace TUGraz.VectoCore.Tests.Reports RunSimulation(jobName, ExecutionMode.Engineering); } + + [TestCase(@"TestData\Integration\VTPMode\GenericVehicle\class_5_generic vehicle.vecto")] + public void TestVTPModeDataIntegrity(string jobName) + { + RunSimulation(jobName, ExecutionMode.Engineering); + } + private void AssertModDataFormat(string modFilename) { var lineCnt = 0; @@ -171,11 +178,17 @@ namespace TUGraz.VectoCore.Tests.Reports var runsFactory = new SimulatorFactory(mode, inputData, fileWriter) { WriteModalResults = true }; jobContainer.AddRuns(runsFactory); - var modData = new List<Tuple<ModalResults, Meter>>(); + var modData = new List<Tuple<ModalResults, double>>(); foreach (var run in jobContainer.Runs) { - modData.Add(Tuple.Create(((ModalDataContainer)run.Run.GetContainer().ModalData).Data, - ((DistanceBasedDrivingCycle)((VehicleContainer)run.Run.GetContainer()).DrivingCycle).Data.Entries.Last() - .Distance)); + var distanceCycle = ((VehicleContainer)run.Run.GetContainer()).DrivingCycle as DistanceBasedDrivingCycle; + if (distanceCycle != null) { + modData.Add(Tuple.Create(((ModalDataContainer)run.Run.GetContainer().ModalData).Data, + distanceCycle.Data.Entries.Last().Distance.Value())); + } + var cycle = ((VehicleContainer)run.Run.GetContainer()).DrivingCycle as PowertrainDrivingCycle; + if (cycle != null) + modData.Add(Tuple.Create(((ModalDataContainer)run.Run.GetContainer().ModalData).Data, + cycle.Data.Entries.Last().Time.Value())); } var auxKeys = new Dictionary<string, DataColumn>( @@ -188,9 +201,19 @@ namespace TUGraz.VectoCore.Tests.Reports //fileWriter.WriteModData(Path.GetFileName(jobName), "0", "0", modData[0].Item1); //fileWriter.WriteModData(Path.GetFileName(jobName), "1", "1", modData[1].Item1); + var engInput = inputData as IEngineeringInputDataProvider; + FuelConsumptionMap fcMap = null; + if (engInput != null) { + fcMap = FuelConsumptionMapReader.Create(engInput.JobInputData.Vehicle + .EngineInputData.FuelConsumptionMap); + } + var vtpInput = inputData as IVTPInputDataProvider; + if (vtpInput != null ) { + fcMap = FuelConsumptionMapReader.Create(vtpInput.JobInputData.Vehicle + .EngineInputData.FuelConsumptionMap); + } foreach (var modalResults in modData) { - AssertModDataIntegrity(modalResults.Item1, auxKeys, modalResults.Item2, - FuelConsumptionMapReader.Create(((IEngineeringInputDataProvider)inputData).JobInputData.Vehicle.EngineInputData.FuelConsumptionMap)); + AssertModDataIntegrity(modalResults.Item1, auxKeys, modalResults.Item2,fcMap, ((VehicleContainer)(jobContainer.Runs.First().Run.GetContainer())).DrivingCycle is DistanceBasedDrivingCycle); } AssertSumDataIntegrity(sumData, mode); @@ -294,7 +317,7 @@ namespace TUGraz.VectoCore.Tests.Reports } private static void AssertModDataIntegrity(ModalResults modData, Dictionary<string, DataColumn> auxKeys, - Meter totalDistance, FuelConsumptionMap consumptionMap) + double totalDistance, FuelConsumptionMap consumptionMap, bool distanceBased) { Assert.IsTrue(modData.Rows.Count > 0); @@ -305,20 +328,23 @@ namespace TUGraz.VectoCore.Tests.Reports ? auxKeys[Constants.Auxiliaries.IDs.PTOConsumer] : null; foreach (DataRow row in modData.Rows) { - if (totalDistance.IsEqual(((Meter)row[(int)ModalResultField.dist]))) { + if (distanceBased && totalDistance.IsEqual(((Meter)row[(int)ModalResultField.dist]).Value())) { continue; } var gear = (uint)row[(int)ModalResultField.Gear]; var time = (Second)row[(int)ModalResultField.time]; - var distance = (Meter)row[(int)ModalResultField.dist]; + Meter distance = 0.SI<Meter>(); + if (distanceBased) { + distance = (Meter)row[(int)ModalResultField.dist]; + } var tqEngFcmap = (NewtonMeter)row[(int)ModalResultField.T_eng_fcmap]; var nEngFcMap = (PerSecond)row[(int)ModalResultField.n_eng_avg]; // check fuel consumption interpolation var fuelConsumption = (SI)row[(int)ModalResultField.FCMap]; Assert.AreEqual(fuelConsumption.Value(), - consumptionMap.GetFuelConsumption(tqEngFcmap, nEngFcMap).Value.Value(), 1E-3, "time: {0} distance: {1}", + consumptionMap.GetFuelConsumption(tqEngFcmap, nEngFcMap,true).Value.Value(), 1E-3, "time: {0} distance: {1}", time, distance); // check P_eng_FCmap = T_eng_fcmap * n_eng @@ -327,11 +353,11 @@ namespace TUGraz.VectoCore.Tests.Reports distance); var pWheelIn = (Watt)row[(int)ModalResultField.P_wheel_in]; - var pAir = (Watt)row[(int)ModalResultField.P_air]; - var pRoll = (Watt)row[(int)ModalResultField.P_roll]; - var pGrad = (Watt)row[(int)ModalResultField.P_slope]; - var pVehInertia = (Watt)row[(int)ModalResultField.P_veh_inertia]; - var pTrac = (Watt)row[(int)ModalResultField.P_trac]; + var pAir = distanceBased ? (Watt)row[(int)ModalResultField.P_air] : 0.SI<Watt>(); + var pRoll = distanceBased ? (Watt)row[(int)ModalResultField.P_roll] : 0.SI<Watt>(); + var pGrad = distanceBased ? (Watt)row[(int)ModalResultField.P_slope] : 0.SI<Watt>(); + var pVehInertia = distanceBased ? (Watt)row[(int)ModalResultField.P_veh_inertia] : 0.SI<Watt>(); + var pTrac = distanceBased ? (Watt)row[(int)ModalResultField.P_trac] : 0.SI<Watt>(); // P_eng_out = P_wheel + P_lossgearbox + P_lossaxle + P_lossretarder + P_agbx + Pa_eng + P_aux - P_brake_loss var pEngOut = (Watt)row[(int)ModalResultField.P_eng_out]; @@ -351,10 +377,10 @@ namespace TUGraz.VectoCore.Tests.Reports var pEngInertia = (Watt)row[(int)ModalResultField.P_eng_inertia]; var pAux = (Watt)(row[(int)ModalResultField.P_aux] != DBNull.Value ? row[(int)ModalResultField.P_aux] : 0.SI<Watt>()); - var pBrakeLoss = (Watt)row[(int)ModalResultField.P_brake_loss]; - var pBrakeIn = (Watt)row[(int)ModalResultField.P_brake_in]; + var pBrakeLoss = distanceBased ? (Watt)row[(int)ModalResultField.P_brake_loss] : 0.SI<Watt>(); + var pBrakeIn = distanceBased ? (Watt)row[(int)ModalResultField.P_brake_in] : pWheelIn; - var pWheelInertia = (Watt)row[(int)ModalResultField.P_wheel_inertia]; + var pWheelInertia = distanceBased ? (Watt)row[(int)ModalResultField.P_wheel_inertia] : 0.SI<Watt>(); var pPTOconsumer = ptoConsumerColumn == null || row[ptoConsumerColumn.ColumnName] is DBNull ? 0.SI<Watt>() : (Watt)row[ptoConsumerColumn.ColumnName]; @@ -365,13 +391,14 @@ namespace TUGraz.VectoCore.Tests.Reports Assert.AreEqual(pTrac.Value(), (pAir + pRoll + pGrad + pVehInertia).Value(), 1E-3, "time: {0} distance: {1}", time, distance); - // P_wheel_in = P_trac + P_wheel_inertia - Assert.AreEqual(pWheelIn.Value(), (pTrac + pWheelInertia).Value(), 1E-3, "time: {0} distance: {1}", time, - distance); - + if (distanceBased) { + // P_wheel_in = P_trac + P_wheel_inertia + Assert.AreEqual(pWheelIn.Value(), (pTrac + pWheelInertia).Value(), 1E-3, "time: {0} distance: {1}", time, + distance); + } Assert.AreEqual(pBrakeIn.Value(), (pWheelIn + pBrakeLoss).Value(), 1E-3, "time: {0} distance: {1}", time, - distance); - + distance); + Assert.AreEqual(pAxleIn.Value(), (pBrakeIn + pLossAxle).Value(), 1E-3, "time: {0} distance: {1}", time, distance); Assert.AreEqual(pRetIn.Value(), (pAxleIn + pLossRet).Value(), 1E-3, "time: {0} distance: {1}", time, distance);