diff --git a/VectoCore/InputData/Reader/DataObjectAdaper/DeclarationDataAdapter.cs b/VectoCore/InputData/Reader/DataObjectAdaper/DeclarationDataAdapter.cs index f44fbd9dbff8d0496834daf46be738072d08f30f..ad1a7418d088abac5d742807435179f3ffa6d99b 100644 --- a/VectoCore/InputData/Reader/DataObjectAdaper/DeclarationDataAdapter.cs +++ b/VectoCore/InputData/Reader/DataObjectAdaper/DeclarationDataAdapter.cs @@ -100,6 +100,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdaper ? data.AirDragAreaRigidTruck : data.AirDragArea; + retVal.CrossWindCorrectionMode = data.CrossWindCorrectionMode; retVal.CrossWindCorrectionCurve = GetDeclarationAirResistanceCurve(retVal.VehicleCategory, aerodynamicDragAera); var axles = data.Axles; if (axles.Count < mission.AxleWeightDistribution.Length) { diff --git a/VectoCore/InputData/Reader/DataObjectAdaper/EngineeringDataAdapter.cs b/VectoCore/InputData/Reader/DataObjectAdaper/EngineeringDataAdapter.cs index cd874d2cff7e856f261e9ba16dff093f0194a8ce..d07e06f2eeacc855edb563fad11b645cebef41eb 100644 --- a/VectoCore/InputData/Reader/DataObjectAdaper/EngineeringDataAdapter.cs +++ b/VectoCore/InputData/Reader/DataObjectAdaper/EngineeringDataAdapter.cs @@ -58,6 +58,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdaper retVal.CurbWeigthExtra = data.CurbWeightExtra; retVal.Loading = data.Loading; retVal.DynamicTyreRadius = data.DynamicTyreRadius; + retVal.CrossWindCorrectionMode = data.CrossWindCorrectionMode; switch (data.CrossWindCorrectionMode) { case CrossWindCorrectionMode.NoCorrection: retVal.CrossWindCorrectionCurve = CrossWindCorrectionCurve.GetNoCorrectionCurve(data.AirDragArea); diff --git a/VectoCore/InputData/Reader/DrivingCycleDataReader.cs b/VectoCore/InputData/Reader/DrivingCycleDataReader.cs index a7dee40f9cd611a8e58b7a76fccba5a9ecf51524..1a4f90c5e848155d5c933342c009d0a8f04dd79b 100644 --- a/VectoCore/InputData/Reader/DrivingCycleDataReader.cs +++ b/VectoCore/InputData/Reader/DrivingCycleDataReader.cs @@ -100,13 +100,14 @@ namespace TUGraz.VectoCore.InputData.Reader /// </summary> /// <param name="fileName">Name of the file.</param> /// <param name="type">The type.</param> + /// <param name="crossWindRequired"></param> /// <returns></returns> /// <exception cref="VectoException">ERROR while reading DrivingCycle File: + ex.Message</exception> - public static DrivingCycleData ReadFromFile(string fileName, CycleType type) + public static DrivingCycleData ReadFromFile(string fileName, CycleType type, bool crossWindRequired) { try { var stream = File.OpenRead(fileName); - return ReadFromStream(stream, type, Path.GetFileNameWithoutExtension(fileName)); + return ReadFromStream(stream, type, Path.GetFileNameWithoutExtension(fileName), crossWindRequired); } catch (Exception ex) { throw new VectoException("ERROR while opening DrivingCycle File: " + ex.Message); } @@ -117,12 +118,13 @@ namespace TUGraz.VectoCore.InputData.Reader /// </summary> /// <param name="stream">The stream.</param> /// <param name="type">The type.</param> + /// <param name="crossWindRequired"></param> /// <param name="name">the name of the cycle</param> /// <returns></returns> - public static DrivingCycleData ReadFromStream(Stream stream, CycleType type, string name = null) + public static DrivingCycleData ReadFromStream(Stream stream, CycleType type, string name, bool crossWindRequired) { try { - return ReadFromDataTable(VectoCSVFile.ReadStream(stream), type, name); + return ReadFromDataTable(VectoCSVFile.ReadStream(stream), type, name, crossWindRequired); } catch (Exception ex) { throw new VectoException("ERROR while reading DrivingCycle Stream: " + ex.Message); } @@ -133,14 +135,15 @@ namespace TUGraz.VectoCore.InputData.Reader /// </summary> /// <param name="data">The cycle data.</param> /// <param name="name">The name.</param> + /// <param name="crossWindRequired"></param> /// <returns></returns> - public static DrivingCycleData ReadFromDataTable(DataTable data, string name) + public static DrivingCycleData ReadFromDataTable(DataTable data, string name, bool crossWindRequired) { if (data == null) { Logger<DistanceBasedCycleDataParser>().Warn("Invalid data for DrivingCycle -- dataTable is null"); throw new VectoException("Invalid data for DrivingCycle -- dataTable is null"); } - return ReadFromDataTable(data, GetCycleType(data), name); + return ReadFromDataTable(data, GetCycleType(data), name, crossWindRequired); } /// <summary> @@ -149,14 +152,15 @@ namespace TUGraz.VectoCore.InputData.Reader /// <param name="data">The cycle data.</param> /// <param name="type">The type.</param> /// <param name="name">The name.</param> + /// <param name="crossWindRequired"></param> /// <returns></returns> - public static DrivingCycleData ReadFromDataTable(DataTable data, CycleType type, string name) + public static DrivingCycleData ReadFromDataTable(DataTable data, CycleType type, string name, bool crossWindRequired) { if (data == null) { Logger<DistanceBasedCycleDataParser>().Warn("Invalid data for DrivingCycle -- dataTable is null"); throw new VectoException("Invalid data for DrivingCycle -- dataTable is null"); } - var entries = GetDataParser(type).Parse(data).ToList(); + var entries = GetDataParser(type).Parse(data, crossWindRequired).ToList(); if (type == CycleType.DistanceBased) { entries = FilterDrivingCycleEntries(entries); @@ -293,7 +297,13 @@ namespace TUGraz.VectoCore.InputData.Reader private interface ICycleDataParser { - IEnumerable<DrivingCycleData.DrivingCycleEntry> Parse(DataTable table); + /// <summary> + /// Parses a datatable to a list of drivingcycleentries for the current implementation. + /// </summary> + /// <param name="table"></param> + /// <param name="crossWindRequired"></param> + /// <returns></returns> + IEnumerable<DrivingCycleData.DrivingCycleEntry> Parse(DataTable table, bool crossWindRequired); } private abstract class AbstractCycleDataParser : ICycleDataParser @@ -336,12 +346,12 @@ namespace TUGraz.VectoCore.InputData.Reader return true; } - public abstract IEnumerable<DrivingCycleData.DrivingCycleEntry> Parse(DataTable table); + public abstract IEnumerable<DrivingCycleData.DrivingCycleEntry> Parse(DataTable table, bool crossWindRequired); } private class DistanceBasedCycleDataParser : AbstractCycleDataParser { - public override IEnumerable<DrivingCycleData.DrivingCycleEntry> Parse(DataTable table) + public override IEnumerable<DrivingCycleData.DrivingCycleEntry> Parse(DataTable table, bool crossWindRequired) { ValidateHeader(table.Columns.Cast<DataColumn>().Select(col => col.ColumnName).ToArray()); @@ -354,8 +364,9 @@ namespace TUGraz.VectoCore.InputData.Reader AdditionalAuxPowerDemand = row.ParseDoubleOrGetDefault(Fields.AdditionalAuxPowerDemand).SI().Kilo.Watt.Cast<Watt>(), AngularVelocity = row.ParseDoubleOrGetDefault(Fields.EngineSpeed).RPMtoRad(), Gear = (uint)row.ParseDoubleOrGetDefault(Fields.Gear), - AirSpeedRelativeToVehicle = row.ParseDoubleOrGetDefault(Fields.AirSpeedRelativeToVehicle).KMPHtoMeterPerSecond(), - WindYawAngle = row.ParseDoubleOrGetDefault(Fields.WindYawAngle), + AirSpeedRelativeToVehicle = + crossWindRequired ? row.ParseDouble(Fields.AirSpeedRelativeToVehicle).KMPHtoMeterPerSecond() : null, + WindYawAngle = crossWindRequired ? row.ParseDoubleOrGetDefault(Fields.WindYawAngle) : 0, AuxiliarySupplyPower = row.GetAuxiliaries() }); } @@ -387,7 +398,7 @@ namespace TUGraz.VectoCore.InputData.Reader private class TimeBasedCycleDataParser : DistanceBasedCycleDataParser { - public override IEnumerable<DrivingCycleData.DrivingCycleEntry> Parse(DataTable table) + public override IEnumerable<DrivingCycleData.DrivingCycleEntry> Parse(DataTable table, bool crossWindRequired) { ValidateHeader(table.Columns.Cast<DataColumn>().Select(col => col.ColumnName).ToArray()); @@ -399,8 +410,9 @@ namespace TUGraz.VectoCore.InputData.Reader AdditionalAuxPowerDemand = row.ParseDoubleOrGetDefault(Fields.AdditionalAuxPowerDemand).SI().Kilo.Watt.Cast<Watt>(), Gear = (uint)row.ParseDoubleOrGetDefault(Fields.Gear), AngularVelocity = row.ParseDoubleOrGetDefault(Fields.EngineSpeed).RPMtoRad(), - AirSpeedRelativeToVehicle = row.ParseDoubleOrGetDefault(Fields.AirSpeedRelativeToVehicle).KMPHtoMeterPerSecond(), - WindYawAngle = row.ParseDoubleOrGetDefault(Fields.WindYawAngle), + AirSpeedRelativeToVehicle = + crossWindRequired ? row.ParseDouble(Fields.AirSpeedRelativeToVehicle).KMPHtoMeterPerSecond() : null, + WindYawAngle = crossWindRequired ? row.ParseDouble(Fields.WindYawAngle) : 0, AuxiliarySupplyPower = row.GetAuxiliaries() }).ToArray(); @@ -431,7 +443,7 @@ namespace TUGraz.VectoCore.InputData.Reader private class EngineOnlyCycleDataParser : AbstractCycleDataParser { - public override IEnumerable<DrivingCycleData.DrivingCycleEntry> Parse(DataTable table) + public override IEnumerable<DrivingCycleData.DrivingCycleEntry> Parse(DataTable table, bool crossWindRequired) { ValidateHeader(table.Columns.Cast<DataColumn>().Select(col => col.ColumnName).ToArray()); @@ -505,7 +517,7 @@ namespace TUGraz.VectoCore.InputData.Reader // <t>, <Pwheel>, <Gear>, <n>, <Padd> private class PWheelCycleDataParser : AbstractCycleDataParser { - public override IEnumerable<DrivingCycleData.DrivingCycleEntry> Parse(DataTable table) + public override IEnumerable<DrivingCycleData.DrivingCycleEntry> Parse(DataTable table, bool crossWindRequired) { ValidateHeader(table.Columns.Cast<DataColumn>().Select(col => col.ColumnName).ToArray()); @@ -541,7 +553,7 @@ namespace TUGraz.VectoCore.InputData.Reader // <t>, <v>, <grad>, <Padd>[, <vair_res>, <vair_beta>][, Aux_...] private class MeasuredSpeedDataParser : AbstractCycleDataParser { - public override IEnumerable<DrivingCycleData.DrivingCycleEntry> Parse(DataTable table) + public override IEnumerable<DrivingCycleData.DrivingCycleEntry> Parse(DataTable table, bool crossWindRequired) { ValidateHeader(table.Columns.Cast<DataColumn>().Select(col => col.ColumnName).ToArray()); @@ -550,8 +562,10 @@ namespace TUGraz.VectoCore.InputData.Reader VehicleTargetSpeed = row.ParseDouble(Fields.VehicleSpeed).KMPHtoMeterPerSecond(), RoadGradient = VectoMath.InclinationToAngle(row.ParseDoubleOrGetDefault(Fields.RoadGradient) / 100.0), AdditionalAuxPowerDemand = row.ParseDouble(Fields.AdditionalAuxPowerDemand).SI().Kilo.Watt.Cast<Watt>(), - AirSpeedRelativeToVehicle = row.ParseDoubleOrGetDefault(Fields.AirSpeedRelativeToVehicle).KMPHtoMeterPerSecond(), - WindYawAngle = row.ParseDoubleOrGetDefault(Fields.WindYawAngle), + // todo mk-2016-02-25 decide if null or 0.SI<MeterPerSecond>()? + AirSpeedRelativeToVehicle = + crossWindRequired ? row.ParseDouble(Fields.AirSpeedRelativeToVehicle).KMPHtoMeterPerSecond() : null, + WindYawAngle = crossWindRequired ? row.ParseDouble(Fields.WindYawAngle) : 0, AuxiliarySupplyPower = row.GetAuxiliaries() }).ToArray(); @@ -588,7 +602,7 @@ namespace TUGraz.VectoCore.InputData.Reader // <t>, <v>, <grad>, <Padd>, <n>, <gear>[, <vair_res>, <vair_beta>][, Aux_...] private class MeasuredSpeedGearDataParser : AbstractCycleDataParser { - public override IEnumerable<DrivingCycleData.DrivingCycleEntry> Parse(DataTable table) + public override IEnumerable<DrivingCycleData.DrivingCycleEntry> Parse(DataTable table, bool crossWindRequired) { ValidateHeader(table.Columns.Cast<DataColumn>().Select(col => col.ColumnName).ToArray()); @@ -599,8 +613,9 @@ namespace TUGraz.VectoCore.InputData.Reader AdditionalAuxPowerDemand = row.ParseDouble(Fields.AdditionalAuxPowerDemand).SI().Kilo.Watt.Cast<Watt>(), AngularVelocity = row.ParseDouble(Fields.EngineSpeed).RPMtoRad(), Gear = (uint)row.ParseDouble(Fields.Gear), - AirSpeedRelativeToVehicle = row.ParseDoubleOrGetDefault(Fields.AirSpeedRelativeToVehicle).KMPHtoMeterPerSecond(), - WindYawAngle = row.ParseDoubleOrGetDefault(Fields.WindYawAngle), + AirSpeedRelativeToVehicle = + crossWindRequired ? row.ParseDouble(Fields.AirSpeedRelativeToVehicle).KMPHtoMeterPerSecond() : null, + WindYawAngle = crossWindRequired ? row.ParseDoubleOrGetDefault(Fields.WindYawAngle) : 0, AuxiliarySupplyPower = row.GetAuxiliaries() }).ToArray(); diff --git a/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs b/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs index f1eeeae1033295696eee35362a96534ecca2e465..2311aa3cd76f6772b7e781d1187babf09217f686 100644 --- a/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs +++ b/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs @@ -91,7 +91,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl if (CyclesCache.ContainsKey(mission.MissionType)) { cycle = CyclesCache[mission.MissionType]; } else { - cycle = DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased); + cycle = DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "", false); CyclesCache.Add(mission.MissionType, cycle); } foreach (var loading in mission.Loadings) { diff --git a/VectoCore/InputData/Reader/Impl/EngineOnlyVectoRunDataFactory.cs b/VectoCore/InputData/Reader/Impl/EngineOnlyVectoRunDataFactory.cs index a46bb5ece40732737b40e23c690d907b20785320..37876ecd56f68e7552673e39490c94215f1e0e5e 100644 --- a/VectoCore/InputData/Reader/Impl/EngineOnlyVectoRunDataFactory.cs +++ b/VectoCore/InputData/Reader/Impl/EngineOnlyVectoRunDataFactory.cs @@ -51,7 +51,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl var simulationRunData = new VectoRunData { JobName = InputDataProvider.JobInputData().JobName, EngineData = dao.CreateEngineData(InputDataProvider.EngineInputData), - Cycle = DrivingCycleDataReader.ReadFromDataTable(cycle.CycleData, CycleType.EngineOnly, cycle.Name), + Cycle = DrivingCycleDataReader.ReadFromDataTable(cycle.CycleData, CycleType.EngineOnly, cycle.Name, false), IsEngineOnly = IsEngineOnly }; yield return simulationRunData; diff --git a/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs b/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs index 2bf77413797628976dcbd3935e27da47e6e433e9..a80dccffa5d19204ac41e78bb7598f5bad8a774a 100644 --- a/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs +++ b/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs @@ -62,16 +62,20 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl var driver = dao.CreateDriverData(InputDataProvider.DriverInputData); var engineData = dao.CreateEngineData(InputDataProvider.EngineInputData); + var vehicleInputData = InputDataProvider.VehicleInputData; + return InputDataProvider.JobInputData().Cycles.Select(cycle => new VectoRunData { JobName = InputDataProvider.JobInputData().JobName, EngineData = engineData, GearboxData = dao.CreateGearboxData(InputDataProvider.GearboxInputData, engineData), AxleGearData = dao.CreateAxleGearData(InputDataProvider.AxleGearInputData), - VehicleData = dao.CreateVehicleData(InputDataProvider.VehicleInputData), + VehicleData = dao.CreateVehicleData(vehicleInputData), DriverData = driver, Aux = dao.CreateAuxiliaryData(InputDataProvider.AuxiliaryInputData()), Retarder = dao.CreateRetarderData(InputDataProvider.RetarderInputData, InputDataProvider.VehicleInputData), - Cycle = DrivingCycleDataReader.ReadFromDataTable(cycle.CycleData, cycle.Name), + Cycle = + DrivingCycleDataReader.ReadFromDataTable(cycle.CycleData, cycle.Name, + vehicleInputData.CrossWindCorrectionMode == CrossWindCorrectionMode.VAirBetaLookupTable), IsEngineOnly = InputDataProvider.JobInputData().EngineOnlyMode }); } diff --git a/VectoCore/Models/SimulationComponent/Data/ICrossWindCorrection.cs b/VectoCore/Models/SimulationComponent/Data/ICrossWindCorrection.cs index 14172405038ac534ad816546052338e1a569ad5d..8256920ed72e795337652b56e14194f9689fb0fd 100644 --- a/VectoCore/Models/SimulationComponent/Data/ICrossWindCorrection.cs +++ b/VectoCore/Models/SimulationComponent/Data/ICrossWindCorrection.cs @@ -1,3 +1,34 @@ +/* +* This file is part of VECTO. +* +* Copyright © 2012-2016 European Union +* +* Developed by Graz University of Technology, +* Institute of Internal Combustion Engines and Thermodynamics, +* Institute of Technical Informatics +* +* VECTO is licensed under the EUPL, Version 1.1 or - as soon they will be approved +* by the European Commission - subsequent versions of the EUPL (the "Licence"); +* You may not use VECTO except in compliance with the Licence. +* You may obtain a copy of the Licence at: +* +* https://joinup.ec.europa.eu/community/eupl/og_page/eupl +* +* Unless required by applicable law or agreed to in writing, VECTO +* distributed under the Licence is distributed on an "AS IS" basis, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the Licence for the specific language governing permissions and +* limitations under the Licence. +* +* Authors: +* Stefan Hausberger, hausberger@ivt.tugraz.at, IVT, Graz University of Technology +* Christian Kreiner, christian.kreiner@tugraz.at, ITI, Graz University of Technology +* Michael Krisper, michael.krisper@tugraz.at, ITI, Graz University of Technology +* Raphael Luz, luz@ivt.tugraz.at, IVT, Graz University of Technology +* Markus Quaritsch, markus.quaritsch@tugraz.at, IVT, Graz University of Technology +* Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology +*/ + using System.Dynamic; using TUGraz.VectoCore.Models.Simulation.DataBus; using TUGraz.VectoCore.Utils; diff --git a/VectoCore/Models/SimulationComponent/Data/VAirBetaCrosswindCorrection.cs b/VectoCore/Models/SimulationComponent/Data/VAirBetaCrosswindCorrection.cs index 91d92679f6b5fb1274c38eaeb2edb8151abe716d..fd95db64efd7efd59401c5cf1e11f59d2a608e60 100644 --- a/VectoCore/Models/SimulationComponent/Data/VAirBetaCrosswindCorrection.cs +++ b/VectoCore/Models/SimulationComponent/Data/VAirBetaCrosswindCorrection.cs @@ -1,3 +1,34 @@ +/* +* This file is part of VECTO. +* +* Copyright © 2012-2016 European Union +* +* Developed by Graz University of Technology, +* Institute of Internal Combustion Engines and Thermodynamics, +* Institute of Technical Informatics +* +* VECTO is licensed under the EUPL, Version 1.1 or - as soon they will be approved +* by the European Commission - subsequent versions of the EUPL (the "Licence"); +* You may not use VECTO except in compliance with the Licence. +* You may obtain a copy of the Licence at: +* +* https://joinup.ec.europa.eu/community/eupl/og_page/eupl +* +* Unless required by applicable law or agreed to in writing, VECTO +* distributed under the Licence is distributed on an "AS IS" basis, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the Licence for the specific language governing permissions and +* limitations under the Licence. +* +* Authors: +* Stefan Hausberger, hausberger@ivt.tugraz.at, IVT, Graz University of Technology +* Christian Kreiner, christian.kreiner@tugraz.at, ITI, Graz University of Technology +* Michael Krisper, michael.krisper@tugraz.at, ITI, Graz University of Technology +* Raphael Luz, luz@ivt.tugraz.at, IVT, Graz University of Technology +* Markus Quaritsch, markus.quaritsch@tugraz.at, IVT, Graz University of Technology +* Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology +*/ + using System.Collections.Generic; using System.Data; using System.Linq; diff --git a/VectoCore/Models/SimulationComponent/Data/VehicleData.cs b/VectoCore/Models/SimulationComponent/Data/VehicleData.cs index 5e4391c0df92a868ad5cd456d425067c33392721..0a03f0997633cba4e2b834c087e0741e85dc0546 100644 --- a/VectoCore/Models/SimulationComponent/Data/VehicleData.cs +++ b/VectoCore/Models/SimulationComponent/Data/VehicleData.cs @@ -72,6 +72,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data // public Kilogram ReducedMassWheels { get; private set; } public string Rim { get; internal set; } public double TotalRollResistanceCoefficient { get; private set; } + public CrossWindCorrectionMode CrossWindCorrectionMode { get; set; } public Kilogram TotalVehicleWeight() { diff --git a/VectoCore/Utils/VectoCSVFile.cs b/VectoCore/Utils/VectoCSVFile.cs index 0d5b91b61f84dd7f39b3de7c371e6887eed32dad..8bf819c42ab44c563e29f9cb37147f979f0b7cb6 100644 --- a/VectoCore/Utils/VectoCSVFile.cs +++ b/VectoCore/Utils/VectoCSVFile.cs @@ -36,7 +36,6 @@ using System.Diagnostics.Contracts; using System.Globalization; using System.IO; using System.Linq; -using System.Text; using System.Text.RegularExpressions; using TUGraz.VectoCore.Exceptions; using TUGraz.VectoCore.Models; diff --git a/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs b/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs index 310a0d320b361672a4f8bd49474d19f8cdba27bc..7689bfd216603ea5b0fb44086149820f3f520339 100644 --- a/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs +++ b/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs @@ -57,7 +57,7 @@ namespace TUGraz.VectoCore.Tests.Integration.EngineOnlyCycle [TestMethod] public void TestEngineOnlyDrivingCycle() { - var data = DrivingCycleDataReader.ReadFromFile(TestContext.DataRow["CycleFile"].ToString(), CycleType.EngineOnly); + var data = DrivingCycleDataReader.ReadFromFile(TestContext.DataRow["CycleFile"].ToString(), CycleType.EngineOnly, false); var vehicle = new VehicleContainer(); var cycle = new MockDrivingCycle(vehicle, data); var engineData = diff --git a/VectoCoreTest/Integration/SimpleDrivingCycles.cs b/VectoCoreTest/Integration/SimpleDrivingCycles.cs index c9158ff82c8bbe1f3f5a495f6fe44188db5eeef1..6fb684c05e0b50389a42eb7fe28832d034f38943 100644 --- a/VectoCoreTest/Integration/SimpleDrivingCycles.cs +++ b/VectoCoreTest/Integration/SimpleDrivingCycles.cs @@ -44,11 +44,9 @@ namespace TUGraz.VectoCore.Tests.Integration public static DrivingCycleData CreateCycleData(string[] entries) { var cycleData = InputDataHelper.InputDataAsStream("<s>,<v>,<grad>,<stop>", entries); - return DrivingCycleDataReader.ReadFromStream(cycleData, CycleType.DistanceBased); + return DrivingCycleDataReader.ReadFromStream(cycleData, CycleType.DistanceBased, "", false); } - - #region Accelerate public static readonly string[] CycleAccelerate_20_60_Level = { @@ -685,7 +683,7 @@ namespace TUGraz.VectoCore.Tests.Integration public static DrivingCycleData ReadDeclarationCycle(string missionType) { var cycleData = RessourceHelper.ReadStream(RessourceHelper.Namespace + "MissionCycles." + missionType + ".vdri"); - var cycle = DrivingCycleDataReader.ReadFromStream(cycleData, CycleType.DistanceBased); + var cycle = DrivingCycleDataReader.ReadFromStream(cycleData, CycleType.DistanceBased, "", false); return cycle; } } diff --git a/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs b/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs index e2f63e54689013c7b47c7582e7f01022aaa7636c..c976b1c617ce8b7105898d52ae6353dd78ec0d9b 100644 --- a/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs +++ b/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs @@ -75,7 +75,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns var container = new VehicleContainer(modData); var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile); - var cycleData = DrivingCycleDataReader.ReadFromFile(CycleFile, CycleType.DistanceBased); + var cycleData = DrivingCycleDataReader.ReadFromFile(CycleFile, CycleType.DistanceBased, false); var axleGearData = CreateAxleGearData(); var gearboxData = CreateSimpleGearboxData(); var vehicleData = CreateVehicleData(3300.SI<Kilogram>()); @@ -134,7 +134,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns var container = new VehicleContainer(modData); var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile); - var cycleData = DrivingCycleDataReader.ReadFromFile(CoachCycleFile, CycleType.DistanceBased); + var cycleData = DrivingCycleDataReader.ReadFromFile(CoachCycleFile, CycleType.DistanceBased, false); var axleGearData = CreateAxleGearData(); var gearboxData = CreateGearboxData(); var vehicleData = CreateVehicleData(3300.SI<Kilogram>()); @@ -208,7 +208,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns var container = new VehicleContainer(modData); var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile); - var cycleData = DrivingCycleDataReader.ReadFromFile(CycleFile, CycleType.DistanceBased); + var cycleData = DrivingCycleDataReader.ReadFromFile(CycleFile, CycleType.DistanceBased, false); var axleGearData = CreateAxleGearData(); var gearboxData = CreateGearboxData(); var vehicleData = CreateVehicleData(3300.SI<Kilogram>()); diff --git a/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs b/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs index f8555351fecee3fbd764f0ab976738ce99b8422e..d933eb49dd3c82c603daea63b5ed5061da1662f4 100644 --- a/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs +++ b/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs @@ -114,7 +114,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns public void TestWheelsAndEngine() { var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile); - var cycleData = DrivingCycleDataReader.ReadFromFile(CycleFile, CycleType.DistanceBased); + var cycleData = DrivingCycleDataReader.ReadFromFile(CycleFile, CycleType.DistanceBased, false); var axleGearData = CreateAxleGearData(); @@ -186,7 +186,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns public void TestWheelsAndEngineLookahead() { var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile); - var cycleData = DrivingCycleDataReader.ReadFromFile(CycleFileStop, CycleType.DistanceBased); + var cycleData = DrivingCycleDataReader.ReadFromFile(CycleFileStop, CycleType.DistanceBased, false); var axleGearData = CreateAxleGearData(); diff --git a/VectoCoreTest/Models/Simulation/AuxTests.cs b/VectoCoreTest/Models/Simulation/AuxTests.cs index 4988002a854d957fc6b2ac6be7b38aa7d2e46fdb..238a197802fa0a87032adc50cd833e3f08030d49 100644 --- a/VectoCoreTest/Models/Simulation/AuxTests.cs +++ b/VectoCoreTest/Models/Simulation/AuxTests.cs @@ -64,7 +64,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var sumWriter = new SummaryDataContainer(fileWriter); var container = new VehicleContainer(modData, (writer, mass, loading) => sumWriter.WriteFullPowertrain(modData, "", "", "", null, null)); - var data = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\LongHaul_short.vdri", CycleType.DistanceBased); + var data = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\LongHaul_short.vdri", CycleType.DistanceBased, false); var mockcycle = new MockDrivingCycle(container, data); var aux = new EngineAuxiliary(container); @@ -144,7 +144,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation { var dataWriter = new MockModalDataContainer(); var container = new VehicleContainer(dataWriter); - var data = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\Coach time based short.vdri", CycleType.TimeBased); + var data = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\Coach time based short.vdri", CycleType.TimeBased, false); var cycle = new MockDrivingCycle(container, data); var aux = new EngineAuxiliary(container); @@ -174,7 +174,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation dataWriter.AddAuxiliary("CONSTANT"); var container = new VehicleContainer(dataWriter); - var data = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\Coach time based short.vdri", CycleType.TimeBased); + var data = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\Coach time based short.vdri", CycleType.TimeBased, false); // cycle ALT1 is set to values to equal the first few fixed points in the auxiliary file. // ALT1.aux file: nAuxiliary speed 2358: 0, 0.38, 0.49, 0.64, ... // ALT1 in cycle file: 0, 0.3724 (=0.38*0.96), 0.4802 (=0.49*0.96), 0.6272 (0.64*0.96), ... @@ -231,7 +231,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation dataWriter.AddAuxiliary(auxId); var container = new VehicleContainer(dataWriter); - var data = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\Coach time based short.vdri", CycleType.TimeBased); + var data = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\Coach time based short.vdri", CycleType.TimeBased, false); // cycle ALT1 is set to values to equal the first few fixed points in the auxiliary file. // ALT1.aux file: nAuxiliary speed 2358: 0, 0.38, 0.49, 0.64, ... // ALT1 in cycle file: 0, 0.3724 (=0.38*0.96), 0.4802 (=0.49*0.96), 0.6272 (0.64*0.96), ... @@ -280,7 +280,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation public void AuxColumnMissing() { var container = new VehicleContainer(); - var data = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\Coach time based short.vdri", CycleType.TimeBased); + var data = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\Coach time based short.vdri", CycleType.TimeBased, false); var cycle = new MockDrivingCycle(container, data); var aux = new EngineAuxiliary(container); diff --git a/VectoCoreTest/Models/Simulation/DrivingCycleTests.cs b/VectoCoreTest/Models/Simulation/DrivingCycleTests.cs index 41e7e2cc483c86e9659203b748d1bc9b5ce90352..1194256bece958642282205b72ccda3a4bc7a789 100644 --- a/VectoCoreTest/Models/Simulation/DrivingCycleTests.cs +++ b/VectoCoreTest/Models/Simulation/DrivingCycleTests.cs @@ -50,7 +50,8 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var dataWriter = new MockModalDataContainer(); var container = new VehicleContainer(dataWriter); - var cycleData = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\Coach Engine Only.vdri", CycleType.EngineOnly); + var cycleData = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\Coach Engine Only.vdri", CycleType.EngineOnly, + false); var cycle = new PowertrainDrivingCycle(container, cycleData); var outPort = new MockTnOutPort(); @@ -81,7 +82,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var container = new VehicleContainer(); var cycleData = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\Coach Engine Only Paux_var-dt.vdri", - CycleType.EngineOnly); + CycleType.EngineOnly, false); var cycle = new PowertrainDrivingCycle(container, cycleData); var outPort = new MockTnOutPort(); @@ -141,7 +142,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var container = new VehicleContainer(); var cycleData = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\Coach First Cycle only.vdri", - CycleType.TimeBased); + CycleType.TimeBased, false); var cycle = new TimeBasedDrivingCycle(container, cycleData); var outPort = new MockDrivingCycleOutPort(); @@ -168,7 +169,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var container = new VehicleContainer(new MockModalDataContainer()); var cycleData = DrivingCycleDataReader.ReadFromFile(@"TestData\Cycles\Cycle time field missing.vdri", - CycleType.TimeBased); + CycleType.TimeBased, false); var cycle = new TimeBasedDrivingCycle(container, cycleData); var outPort = new MockDrivingCycleOutPort(); diff --git a/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs b/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs index 77f3ab2660e72a25e876f2737dac81c97f6ac92b..2bfc0d6a765a9213d93803cdd35038a4c40dd2c0 100644 --- a/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs +++ b/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs @@ -166,7 +166,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var cycleTypeCalc = DrivingCycleDataReader.GetCycleType(VectoCSVFile.ReadStream(inputData.GetStream())); Assert.AreEqual(cycleType, cycleTypeCalc); } - var drivingCycle = DrivingCycleDataReader.ReadFromStream(inputData.GetStream(), cycleType); + var drivingCycle = DrivingCycleDataReader.ReadFromStream(inputData.GetStream(), cycleType, "", false); Assert.AreEqual(cycleType, drivingCycle.CycleType); var cycle = new MeasuredSpeedDrivingCycle(container, drivingCycle); @@ -187,7 +187,8 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation 3 ,5.2782 ,-0.041207832,2.453370264,723.75 ,1 4 ,10.5768,-0.049730127,3.520827362,1223.25,1"; - var drivingCycle = DrivingCycleDataReader.ReadFromStream(inputData.GetStream(), CycleType.MeasuredSpeedGear); + var drivingCycle = DrivingCycleDataReader.ReadFromStream(inputData.GetStream(), CycleType.MeasuredSpeedGear, "", + false); var fuelConsumption = new DataTable(); fuelConsumption.Columns.Add(""); @@ -239,7 +240,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation 3 ,5.2782 ,-0.041207832,2.453370264 4 ,10.5768,-0.049730127,3.520827362"; - var drivingCycle = DrivingCycleDataReader.ReadFromStream(inputData.GetStream(), CycleType.MeasuredSpeed); + var drivingCycle = DrivingCycleDataReader.ReadFromStream(inputData.GetStream(), CycleType.MeasuredSpeed, "", false); var fuelConsumption = new DataTable(); fuelConsumption.Columns.Add(""); diff --git a/VectoCoreTest/Models/Simulation/PwheelModeTests.cs b/VectoCoreTest/Models/Simulation/PwheelModeTests.cs index c37b95f53869b300ca42bd5eb852ae241e049a11..df235beeb40a2ab30e7944adc5d91ab04860b0c3 100644 --- a/VectoCoreTest/Models/Simulation/PwheelModeTests.cs +++ b/VectoCoreTest/Models/Simulation/PwheelModeTests.cs @@ -66,7 +66,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation 2,120,2,1400,0.4"; var cycleFile = new MemoryStream(Encoding.UTF8.GetBytes(inputData)); - var drivingCycle = DrivingCycleDataReader.ReadFromStream(cycleFile, CycleType.PWheel); + var drivingCycle = DrivingCycleDataReader.ReadFromStream(cycleFile, CycleType.PWheel, "", false); var gearbox = new CycleGearbox(container, new GearboxData { @@ -108,7 +108,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation 2, 120, 2, 1400, 0.4"; var cycleFile = new MemoryStream(Encoding.UTF8.GetBytes(inputData)); - var drivingCycle = DrivingCycleDataReader.ReadFromStream(cycleFile, CycleType.PWheel); + var drivingCycle = DrivingCycleDataReader.ReadFromStream(cycleFile, CycleType.PWheel, "", false); var fuelConsumption = new DataTable(); fuelConsumption.Columns.Add(""); diff --git a/VectoCoreTest/Models/SimulationComponent/DistanceBasedDrivingCycleTest.cs b/VectoCoreTest/Models/SimulationComponent/DistanceBasedDrivingCycleTest.cs index 58c933f85cd7ce1b8d69eb49f02771f444b20cab..edca85cdce9a2cfa2433e831ca3fdd71c98d8945 100644 --- a/VectoCoreTest/Models/SimulationComponent/DistanceBasedDrivingCycleTest.cs +++ b/VectoCoreTest/Models/SimulationComponent/DistanceBasedDrivingCycleTest.cs @@ -144,7 +144,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent [TestMethod] public void TestDistanceRequest() { - var cycleData = DrivingCycleDataReader.ReadFromFile(ShortCycle, CycleType.DistanceBased); + var cycleData = DrivingCycleDataReader.ReadFromFile(ShortCycle, CycleType.DistanceBased, false); var container = new VehicleContainer(); var cycle = new DistanceBasedDrivingCycle(container, cycleData); diff --git a/VectoCoreTest/Models/SimulationComponentData/DistanceCycleDataTest.cs b/VectoCoreTest/Models/SimulationComponentData/DistanceCycleDataTest.cs index 14e90870a457c17fdc2239b3ec565999a0c7b875..a82604b9ddef0f439f10583ab108162a09fcd138 100644 --- a/VectoCoreTest/Models/SimulationComponentData/DistanceCycleDataTest.cs +++ b/VectoCoreTest/Models/SimulationComponentData/DistanceCycleDataTest.cs @@ -129,7 +129,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData var missionType = "LongHaul"; var stream = RessourceHelper.ReadStream(ResourceNamespace + "MissionCycles." + missionType + ".vdri"); - var cycleData = DrivingCycleDataReader.ReadFromStream(stream, CycleType.DistanceBased); + var cycleData = DrivingCycleDataReader.ReadFromStream(stream, CycleType.DistanceBased, "", false); foreach (var entry in cycleData.Entries) { var tmp = entry.Altitude; } diff --git a/VectoCoreTest/TestData/MeasuredSpeed/MeasuredSpeedGearVair.vecto b/VectoCoreTest/TestData/MeasuredSpeed/MeasuredSpeedGearVair.vecto index c81eca06bbaf5c6b0a3c4ffe45b88a7dfd641f39..470dd9a9eba6fd885c66179c1cdefae828715aeb 100644 --- a/VectoCoreTest/TestData/MeasuredSpeed/MeasuredSpeedGearVair.vecto +++ b/VectoCoreTest/TestData/MeasuredSpeed/MeasuredSpeedGearVair.vecto @@ -12,7 +12,7 @@ "EngineFile": "Engine.veng", "GearboxFile": "Gearbox.vgbx", "Cycles": [ - "MeasuredSpeed_Gear_Rural_Vair.vdri" + "MeasuredSpeed_Gear_Rural.vdri" ], "VACC": "Driver.vacc", "StartStop": {