diff --git a/VECTO/Input Files/Engine.vb b/VECTO/Input Files/Engine.vb index 2231cd359a1777e630ae4d7c3bcfc9fa5feb8b7f..55aeba29ba861538151e9886954b20ca97fe7e0b 100644 --- a/VECTO/Input Files/Engine.vb +++ b/VECTO/Input Files/Engine.vb @@ -249,10 +249,10 @@ Public Class Engine .MaxTorque = New List(Of String), .GearRatios = New List(Of Double)() } - engineData = doa.CreateEngineData(engine, Nothing, dummyGearboxData, New List(Of ITorqueLimitInputData)) + engineData = doa.CreateEngineData(engine, Nothing, dummyGearboxData, New List(Of ITorqueLimitInputData), TankSystem.Compressed) Else Dim doa As EngineeringDataAdapter = New EngineeringDataAdapter() - engineData = doa.CreateEngineData(engine, Nothing, New List(Of ITorqueLimitInputData)) + engineData = doa.CreateEngineData(engine, Nothing, New List(Of ITorqueLimitInputData), TankSystem.Compressed) End If Dim result As IList(Of ValidationResult) = diff --git a/VECTO/Input Files/Gearbox.vb b/VECTO/Input Files/Gearbox.vb index b57974624124dff169d282b0c74ab0e2b31e06db..30fe86ad28a41d14a7437077a4bb9a8a61465dd6 100644 --- a/VECTO/Input Files/Gearbox.vb +++ b/VECTO/Input Files/Gearbox.vb @@ -217,7 +217,7 @@ Public Class Gearbox Try - engine = doa.CreateEngineData(inputData.JobInputData.Vehicle.EngineInputData, Nothing, gearbox, New List(Of ITorqueLimitInputData)) + engine = doa.CreateEngineData(inputData.JobInputData.Vehicle.EngineInputData, Nothing, gearbox, New List(Of ITorqueLimitInputData), TankSystem.Compressed) Catch engine = GetDefaultEngine(gearbox.Gears) End Try @@ -227,7 +227,7 @@ Public Class Gearbox Else Dim doa As EngineeringDataAdapter = New EngineeringDataAdapter() Try - engine = doa.CreateEngineData(inputData.JobInputData.Vehicle.EngineInputData, gearbox, New List(Of ITorqueLimitInputData)) + engine = doa.CreateEngineData(inputData.JobInputData.Vehicle.EngineInputData, gearbox, New List(Of ITorqueLimitInputData), TankSystem.Compressed) Catch engine = GetDefaultEngine(gearbox.Gears) End Try diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb index dac5eaf3da4917cee093240da2b483528afb7920..8de5d9ad4aac197fc14acff4a4c6e5d313ab30ef 100644 --- a/VECTO/Input Files/Vehicle.vb +++ b/VECTO/Input Files/Vehicle.vb @@ -664,9 +664,9 @@ Public Class Vehicle End Get End Property - Public ReadOnly Property TankSystem As NgTankSystem Implements IVehicleDeclarationInputData.TankSystem + Public ReadOnly Property TankSystem As TankSystem Implements IVehicleDeclarationInputData.TankSystem get - Return DeclarationData.Vehicle.NgTankSystemDefault + Return DeclarationData.Vehicle.TankSystemDefault End Get End Property diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index 466c963964fd45390148a78ddba6140c405f8cf7..a25dc6257750d6417d3e4b771ea625ddc66f297b 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -142,7 +142,7 @@ namespace TUGraz.VectoCommon.InputData bool SleeperCab { get; } - NgTankSystem TankSystem { get; } + TankSystem TankSystem { get; } IAdvancedDriverAssistantSystemDeclarationInputData ADAS { get; } @@ -198,7 +198,7 @@ namespace TUGraz.VectoCommon.InputData } - public enum NgTankSystem + public enum TankSystem { Liquefied, Compressed diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs index db46d56edb81012e8bd56568e926216c6a358198..09a6ad40fcbcf80ddab6a9b5b24e292d33b11f5b 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs @@ -304,7 +304,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public bool VocationalVehicle { get { return DeclarationData.Vehicle.VocationalVehicleDefault; } } public bool SleeperCab { get { return DeclarationData.Vehicle.SleeperCabDefault; } } - public NgTankSystem TankSystem { get { return DeclarationData.Vehicle.NgTankSystemDefault; } } + public TankSystem TankSystem { get { return DeclarationData.Vehicle.TankSystemDefault; } } public IAdvancedDriverAssistantSystemDeclarationInputData ADAS { get { return this; } } public bool ZeroEmissionVehicle { get { return DeclarationData.Vehicle.ZeroEmissionVehicleDefault; } } public bool HybridElectricHDV { get { return DeclarationData.Vehicle.HybridElectricHDVDefault; } } diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs index 5911f957e07869af03ca6a84ff9b9a6938eb882c..95e6262174547750f2064c43a42c91e88c2c205a 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs @@ -260,7 +260,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public bool SleeperCab { get { return DeclarationData.Vehicle.SleeperCabDefault; } } - public NgTankSystem TankSystem { get { return DeclarationData.Vehicle.NgTankSystemDefault; } } + public TankSystem TankSystem { get { return DeclarationData.Vehicle.TankSystemDefault; } } public IAdvancedDriverAssistantSystemDeclarationInputData ADAS { get { return this; } } public bool ZeroEmissionVehicle { get { return DeclarationData.Vehicle.ZeroEmissionVehicleDefault; } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs index 2e0e317e285f2e71eca32d8c5e70b6e310a0ceb0..fdaa2611b6c167285f8e488e81fbac43df913c3c 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs @@ -269,10 +269,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration ? XmlConvert.ToBoolean(GetElementValue(XMLNames.Vehicle_SleeperCab)) : DeclarationData.Vehicle.SleeperCabDefault; } } - public NgTankSystem TankSystem { get { + public TankSystem TankSystem { get { return ElementExists(XMLNames.Vehicle_NgTankSystem) - ? EnumHelper.ParseEnum<NgTankSystem>(GetElementValue(XMLNames.Vehicle_NgTankSystem)) - : DeclarationData.Vehicle.NgTankSystemDefault; + ? EnumHelper.ParseEnum<TankSystem>(GetElementValue(XMLNames.Vehicle_NgTankSystem)) + : DeclarationData.Vehicle.TankSystemDefault; } } public IAdvancedDriverAssistantSystemDeclarationInputData ADAS { get { return this; } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs index 43ef2dd192738e359d437132d2fae9e8cd8a38e7..7a7c704272bc162d3ca0bd19487a191b968d36d7 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs @@ -293,7 +293,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering public IPTOTransmissionInputData PTOTransmissionInputData { get; private set; } public bool VocationalVehicle { get { return false; } } public bool SleeperCab { get { return true; } } - public NgTankSystem TankSystem { get; } + public TankSystem TankSystem { get; } public IAdvancedDriverAssistantSystemDeclarationInputData ADAS { get { return null; } } public bool ZeroEmissionVehicle { get { return false; } } public bool HybridElectricHDV { get { return false; } } diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs index 0dd70cf75cdd0f058431b97364161a2a1578d2c0..bcfa174634a757eafed04c3cf15dd0afc59c8071 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs @@ -37,6 +37,7 @@ using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.Reader.ComponentData; +using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine; using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox; @@ -120,7 +121,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter } } - internal CombustionEngineData SetCommonCombustionEngineData(IEngineDeclarationInputData data) + internal CombustionEngineData SetCommonCombustionEngineData(IEngineDeclarationInputData data, TankSystem? tankSystem) { var retVal = new CombustionEngineData { SavedInDeclarationMode = data.SavedInDeclarationMode, @@ -135,7 +136,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter RatedPowerDeclared = data.RatedPowerDeclared, RatedSpeedDeclared = data.RatedSpeedDeclared, MaxTorqueDeclared = data.MaxTorqueDeclared, - FuelType = data.FuelType + FuelData = DeclarationData.FuelData.Lookup(data.FuelType, tankSystem) }; return retVal; } diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs index bfb163ad8bd48b068244d994d154dbd8ec326f28..04f843b30a24d57aff0d5fa97fd4e1d511b0b96c 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs @@ -185,13 +185,13 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter internal CombustionEngineData CreateEngineData(IEngineDeclarationInputData engine, PerSecond vehicleEngineIdleSpeed, - IGearboxDeclarationInputData gearbox, IEnumerable<ITorqueLimitInputData> torqueLimits) + IGearboxDeclarationInputData gearbox, IEnumerable<ITorqueLimitInputData> torqueLimits, TankSystem? tankSystem = null) { if (!engine.SavedInDeclarationMode) { WarnDeclarationMode("EngineData"); } - var retVal = SetCommonCombustionEngineData(engine); + var retVal = SetCommonCombustionEngineData(engine, tankSystem); retVal.IdleSpeed = VectoMath.Max(engine.IdleSpeed, vehicleEngineIdleSpeed); retVal.WHTCUrban = engine.WHTCUrban; retVal.WHTCMotorway = engine.WHTCMotorway; diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs index 4dc364224becf269ef458b8a5a6541c428af76f1..8270857d86c7dfcecf48cc7ddf951ca04d99e8f9 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs @@ -133,13 +133,13 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter } internal CombustionEngineData CreateEngineData(IEngineEngineeringInputData engine, IGearboxEngineeringInputData gbx, - IEnumerable<ITorqueLimitInputData> torqueLimits) + IEnumerable<ITorqueLimitInputData> torqueLimits, TankSystem? tankSystem = null) { if (engine.SavedInDeclarationMode) { WarnEngineeringMode("EngineData"); } - var retVal = SetCommonCombustionEngineData(engine); + var retVal = SetCommonCombustionEngineData(engine, tankSystem); retVal.Inertia = engine.Inertia + (gbx != null && gbx.Type.AutomaticTransmission() ? gbx.TorqueConverter.Inertia : 0.SI<KilogramSquareMeter>()); var limits = torqueLimits.ToDictionary(e => e.Gear); diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs index d224aa59a62094aff47cbe6a756309a2b2e8abe4..5b721125cc1654c5d802a1c21f57459edfb9cce2 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs @@ -111,7 +111,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl _segment.Missions.First(), _segment); _engineData = _dao.CreateEngineData(vehicle.EngineInputData, vehicle.EngineIdleSpeed, - vehicle.GearboxInputData, vehicle.TorqueLimits); + vehicle.GearboxInputData, vehicle.TorqueLimits, vehicle.TankSystem); _axlegearData = _dao.CreateAxleGearData(vehicle.AxleGearInputData, false); _angledriveData = _dao.CreateAngledriveData(vehicle.AngledriveInputData, false); _gearboxData = _dao.CreateGearboxData(vehicle.GearboxInputData, _engineData, @@ -228,7 +228,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl mission.MissionType.GetNonEMSMissionType(), _engineData.WHTCRural, _engineData.WHTCUrban, _engineData.WHTCMotorway) * _engineData.ColdHotCorrectionFactor * _engineData.CorrectionFactorRegPer; - simulationRunData.EngineData.NCVCorrectionFactor = DeclarationData.FuelData.Lookup(_engineData.FuelType).HeatingValueCorrection; + simulationRunData.EngineData.NCVCorrectionFactor = _engineData.FuelData.HeatingValueCorrection; simulationRunData.EngineData.ADASCorrectionFactor = DeclarationData.ADASBenefits.Lookup( _segment.VehicleClass, adasCombination, mission.MissionType, loading.Key); simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass; diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactory.cs index a77fec3a3782bde402e53400074bddcf3fb82779..56344120737e54195d63d71f48ddd5e629525f44 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactory.cs @@ -128,7 +128,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl _engineData = _dao.CreateEngineData( vehicle.EngineInputData, vehicle.EngineIdleSpeed, - vehicle.GearboxInputData, vehicle.TorqueLimits); + vehicle.GearboxInputData, vehicle.TorqueLimits, vehicle.TankSystem); _axlegearData = _dao.CreateAxleGearData(vehicle.AxleGearInputData, false); _angledriveData = _dao.CreateAngledriveData(vehicle.AngledriveInputData, false); _gearboxData = _dao.CreateGearboxData( diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/EngineOnlyVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/EngineOnlyVectoRunDataFactory.cs index e11c44afbda81ead8bc81fce17467d17f20990bd..66e2f23314ee93b7dadd7a54df5c429a0817838e 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/EngineOnlyVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/EngineOnlyVectoRunDataFactory.cs @@ -53,7 +53,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl foreach (var cycle in InputDataProvider.JobInputData.Cycles) { var simulationRunData = new VectoRunData { JobName = InputDataProvider.JobInputData.JobName, - EngineData = dao.CreateEngineData(InputDataProvider.JobInputData.EngineOnly, null, new List<ITorqueLimitInputData>()), + EngineData = dao.CreateEngineData(InputDataProvider.JobInputData.EngineOnly, null, new List<ITorqueLimitInputData>(), null), Cycle = new DrivingCycleProxy( DrivingCycleDataReader.ReadFromDataTable(cycle.CycleData, cycle.Name, false), cycle.Name), ExecutionMode = ExecutionMode.Engineering, diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs index e1397ab11bc7c68c7d9fe4abb523514ed32d8510..89c3119ec51bac43bb4572a6906370cb59c9fa2f 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs @@ -61,18 +61,19 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl { var dao = new EngineeringDataAdapter(); var driver = dao.CreateDriverData(InputDataProvider.DriverInputData); - var engineData = dao.CreateEngineData(InputDataProvider.JobInputData.Vehicle.EngineInputData, InputDataProvider.JobInputData.Vehicle.GearboxInputData, - InputDataProvider.JobInputData.Vehicle.TorqueLimits); + var vehicle = InputDataProvider.JobInputData.Vehicle; + var engineData = dao.CreateEngineData(vehicle.EngineInputData, vehicle.GearboxInputData, + vehicle.TorqueLimits, vehicle.TankSystem); - var tempVehicle = dao.CreateVehicleData(InputDataProvider.JobInputData.Vehicle); + var tempVehicle = dao.CreateVehicleData(vehicle); - var axlegearData = dao.CreateAxleGearData(InputDataProvider.JobInputData.Vehicle.AxleGearInputData, useEfficiencyFallback: true); - var gearboxData = dao.CreateGearboxData(InputDataProvider.JobInputData.Vehicle.GearboxInputData, engineData, axlegearData.AxleGear.Ratio, + var axlegearData = dao.CreateAxleGearData(vehicle.AxleGearInputData, useEfficiencyFallback: true); + var gearboxData = dao.CreateGearboxData(vehicle.GearboxInputData, engineData, axlegearData.AxleGear.Ratio, tempVehicle.DynamicTyreRadius,tempVehicle.VehicleCategory, useEfficiencyFallback: true); - var crossWindRequired = InputDataProvider.JobInputData.Vehicle.AirdragInputData.CrossWindCorrectionMode == + var crossWindRequired = vehicle.AirdragInputData.CrossWindCorrectionMode == CrossWindCorrectionMode.VAirBetaLookupTable; - var angledriveData = dao.CreateAngledriveData(InputDataProvider.JobInputData.Vehicle.AngledriveInputData, useEfficiencyFallback: true); - var ptoTransmissionData = dao.CreatePTOTransmissionData(InputDataProvider.JobInputData.Vehicle.PTOTransmissionInputData); + var angledriveData = dao.CreateAngledriveData(vehicle.AngledriveInputData, useEfficiencyFallback: true); + var ptoTransmissionData = dao.CreatePTOTransmissionData(vehicle.PTOTransmissionInputData); return InputDataProvider.JobInputData.Cycles.Select(cycle => { var drivingCycle = CyclesCache.ContainsKey(cycle.CycleData.Source) @@ -85,12 +86,12 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl GearboxData = gearboxData, AxleGearData = axlegearData, AngledriveData = angledriveData, - VehicleData = dao.CreateVehicleData(InputDataProvider.JobInputData.Vehicle), - AirdragData = dao.CreateAirdragData(InputDataProvider.JobInputData.Vehicle.AirdragInputData, InputDataProvider.JobInputData.Vehicle), + VehicleData = dao.CreateVehicleData(vehicle), + AirdragData = dao.CreateAirdragData(vehicle.AirdragInputData, vehicle), DriverData = driver, - Aux = dao.CreateAuxiliaryData(InputDataProvider.JobInputData.Vehicle.AuxiliaryInputData()), - AdvancedAux = dao.CreateAdvancedAuxData(InputDataProvider.JobInputData.Vehicle.AuxiliaryInputData()), - Retarder = dao.CreateRetarderData(InputDataProvider.JobInputData.Vehicle.RetarderInputData), + Aux = dao.CreateAuxiliaryData(vehicle.AuxiliaryInputData()), + AdvancedAux = dao.CreateAdvancedAuxData(vehicle.AuxiliaryInputData()), + Retarder = dao.CreateRetarderData(vehicle.RetarderInputData), PTO = ptoTransmissionData, Cycle = new DrivingCycleProxy(drivingCycle, cycle.Name), ExecutionMode = ExecutionMode.Engineering, diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs index 61ce2871c161fe1a2a783fc2519bfb2a09e8143a..7e070105961ed483f079aaee5088bdb446848095 100644 --- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs +++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs @@ -537,7 +537,7 @@ namespace TUGraz.VectoCore.Models.Declaration public const bool DualFuelVehicleDefault = false; public const bool HybridElectricHDVDefault = false; public const bool ZeroEmissionVehicleDefault = false; - public const NgTankSystem NgTankSystemDefault = NgTankSystem.Compressed; + public const TankSystem TankSystemDefault = TankSystem.Compressed; public const bool SleeperCabDefault = true; public const bool VocationalVehicleDefault = false; diff --git a/VectoCore/VectoCore/Models/Declaration/FuelData.cs b/VectoCore/VectoCore/Models/Declaration/FuelData.cs index 0299272460b1df8b371fe9dc0bc680d997947dd2..0094c831af5b244a93d08c5be2281ce4c8a3d4b5 100644 --- a/VectoCore/VectoCore/Models/Declaration/FuelData.cs +++ b/VectoCore/VectoCore/Models/Declaration/FuelData.cs @@ -30,18 +30,24 @@ */ using System; +using System.Collections; +using System.Collections.Generic; using System.Data; using System.Linq; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.Models.Declaration { - public sealed class FuelData : LookupData<FuelType, FuelData.Entry> + public sealed class FuelData : LookupData { private static FuelData _instance; + private List<Entry> _data = new List<Entry>(); + public static FuelData Instance() { return _instance ?? (_instance = new FuelData()); @@ -56,35 +62,56 @@ namespace TUGraz.VectoCore.Models.Declaration protected override string ErrorMessage { - get { throw new InvalidOperationException("ErrorMessage not applicable."); } + get { return "FuelType {0} {1} not found!"; } + } + + public Entry Lookup(FuelType fuelType, TankSystem? tankSystem = null) + { + var entries = _data.FindAll(x => x.FuelType == fuelType); + if (entries.Count == 0) { + throw new VectoException(ErrorMessage, fuelType.ToString(), tankSystem?.ToString() ?? ""); + } + + if (entries.Count > 1) { + entries = entries.FindAll(x => x.TankSystem == tankSystem); + } + if (entries.Count == 0) { + throw new VectoException(ErrorMessage, fuelType.ToString(), tankSystem?.ToString() ?? ""); + } + + return entries.First(); } public static Entry Diesel { - get { return Instance().Lookup(FuelType.DieselCI); } + get { return Instance().Lookup(FuelType.DieselCI, null); } } protected override void ParseData(DataTable table) { - Data = table.Rows.Cast<DataRow>() - .Select(r => { - var density = r.Field<string>("fueldensity"); - return new Entry( - r.Field<string>(0).ParseEnum<FuelType>(), + foreach (DataRow row in table.Rows) { + var density = row.Field<string>("fueldensity"); + var tankSystem = row.Field<string>("tanksystem"); + _data.Add( + new Entry( + row.Field<string>(0).ParseEnum<FuelType>(), + string.IsNullOrWhiteSpace(tankSystem) ? (TankSystem?)null : tankSystem.ParseEnum<TankSystem>(), string.IsNullOrWhiteSpace(density) ? null : density.ToDouble(0).SI<KilogramPerCubicMeter>(), - r.ParseDouble("co2perfuelweight"), - r.ParseDouble("ncv_stdvecto").SI(Unit.SI.Kilo.Joule.Per.Kilo.Gramm).Cast<JoulePerKilogramm>(), - r.ParseDouble("ncv_stdengine").SI(Unit.SI.Kilo.Joule.Per.Kilo.Gramm).Cast<JoulePerKilogramm>() - ); - }) - .ToDictionary(e => e.FuelType); + row.ParseDouble("co2perfuelweight"), + row.ParseDouble("ncv_stdvecto").SI(Unit.SI.Kilo.Joule.Per.Kilo.Gramm).Cast<JoulePerKilogramm>(), + row.ParseDouble("ncv_stdengine").SI(Unit.SI.Kilo.Joule.Per.Kilo.Gramm).Cast<JoulePerKilogramm>() + )); + } + + } public struct Entry { - public Entry(FuelType type, KilogramPerCubicMeter density, double weight, JoulePerKilogramm heatingValueVecto, JoulePerKilogramm heatingValueAnnex) : this() + public Entry(FuelType type, TankSystem? tankSystem, KilogramPerCubicMeter density, double weight, JoulePerKilogramm heatingValueVecto, JoulePerKilogramm heatingValueAnnex) : this() { FuelType = type; + TankSystem = tankSystem; FuelDensity = density; CO2PerFuelWeight = weight; LowerHeatingValueVecto = heatingValueVecto; @@ -94,6 +121,8 @@ namespace TUGraz.VectoCore.Models.Declaration public FuelType FuelType { get; } + public TankSystem? TankSystem { get; } + public KilogramPerCubicMeter FuelDensity { get; } public double CO2PerFuelWeight { get; } @@ -104,6 +133,11 @@ namespace TUGraz.VectoCore.Models.Declaration public double HeatingValueCorrection { get { return LowerHeatingValueVectoEngine / LowerHeatingValueVecto; } } + public string GetLabel() + { + return (TankSystem != null ? (TankSystem == VectoCommon.InputData.TankSystem.Liquefied ? "L" : "C") : "") + + FuelType.GetLabel(); + } } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/CombustionEngineData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/CombustionEngineData.cs index fc3ab6426a4b420fd83669ccf4c3d3b5b97ed181..be6fd63edf1176416e35fc9fe343d2d231ae76c4 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Data/CombustionEngineData.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/CombustionEngineData.cs @@ -34,6 +34,7 @@ using System.ComponentModel.DataAnnotations; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; +using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine; namespace TUGraz.VectoCore.Models.SimulationComponent.Data @@ -81,7 +82,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data public NewtonMeter MaxTorqueDeclared { get; internal set; } - public FuelType FuelType { get; internal set; } + public FuelData.Entry FuelData { get; internal set; } public double NCVCorrectionFactor { get; set; } public CombustionEngineData() @@ -114,7 +115,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data RatedPowerDeclared = RatedPowerDeclared, RatedSpeedDeclared = RatedSpeedDeclared, MaxTorqueDeclared = MaxTorqueDeclared, - FuelType = FuelType, + FuelData = FuelData, ADASCorrectionFactor = ADASCorrectionFactor, NCVCorrectionFactor = NCVCorrectionFactor }; diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs index 35966613d479ed84bd4746696d092493437ca516..d95c8ba170b4a62bb76cfc220c8c89ae5d7c85ba 100644 --- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs @@ -79,17 +79,17 @@ namespace TUGraz.VectoCore.OutputData public bool WriteAdvancedAux { get; set; } - public ModalDataContainer(string runName, FuelType fuel, IModalDataWriter writer, bool writeEngineOnly = false, params IModalDataFilter[] filters) + public ModalDataContainer(string runName, FuelData.Entry fuel, IModalDataWriter writer, bool writeEngineOnly = false, params IModalDataFilter[] filters) : this(0, runName, "", fuel, "", writer, _ => { }, writeEngineOnly, filters) {} public ModalDataContainer(VectoRunData runData, IModalDataWriter writer, Action<ModalDataContainer> addReportResult, bool writeEngineOnly, params IModalDataFilter[] filter) : this( - runData.JobRunId, runData.JobName, runData.Cycle.Name, runData.EngineData.FuelType, runData.ModFileSuffix, writer, + runData.JobRunId, runData.JobName, runData.Cycle.Name, runData.EngineData.FuelData, runData.ModFileSuffix, writer, addReportResult, writeEngineOnly, filter) {} - protected ModalDataContainer(int jobRunId, string runName, string cycleName, FuelType fuelType, string runSuffix, + protected ModalDataContainer(int jobRunId, string runName, string cycleName, FuelData.Entry fuelData, string runSuffix, IModalDataWriter writer, Action<ModalDataContainer> addReportResult, bool writeEngineOnly, params IModalDataFilter[] filters) { @@ -100,7 +100,7 @@ namespace TUGraz.VectoCore.OutputData JobRunId = jobRunId; _writer = writer; - FuelData = Models.Declaration.FuelData.Instance().Lookup(fuelType); + FuelData = fuelData; _writeEngineOnly = writeEngineOnly; _filters = filters ?? new IModalDataFilter[0]; diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs index 3d6f3a82acaa201842bd5270194311d773e00592..d4ba535181d1203f720547b24bef878d925f85f2 100644 --- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs @@ -536,7 +536,7 @@ namespace TUGraz.VectoCore.OutputData row[TOTAL_VEHICLE_MASS] = (ConvertedSI)runData.VehicleData.TotalVehicleWeight; row[ENGINE_MANUFACTURER] = runData.EngineData.Manufacturer; row[ENGINE_MODEL] = runData.EngineData.ModelName; - row[ENGINE_FUEL_TYPE] = runData.EngineData.FuelType.GetLabel(); + row[ENGINE_FUEL_TYPE] = runData.EngineData.FuelData.GetLabel(); row[ENGINE_RATED_POWER] = runData.EngineData.RatedPowerDeclared != null && runData.EngineData.RatedPowerDeclared > 0 ? runData.EngineData.RatedPowerDeclared.ConvertToKiloWatt() : runData.EngineData.FullLoadCurves[0].MaxPower.ConvertToKiloWatt(); diff --git a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs index 292bad1e92e3fabffdbdb5507703ef702d54cc9a..1aa6958174b8a6f23226a44cb9a12a6f580442a0 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs @@ -135,7 +135,7 @@ namespace TUGraz.VectoCore.OutputData.XML new XElement( tns + XMLNames.Report_Vehicle_EngineDisplacement, XMLHelper.ValueAsUnit(modelData.EngineData.Displacement, XMLNames.Unit_ltr, 1)), - new XElement(tns + XMLNames.Engine_FuelType, modelData.EngineData.FuelType.ToXMLFormat()), + new XElement(tns + XMLNames.Engine_FuelType, modelData.EngineData.FuelData.FuelType.ToXMLFormat()), new XElement( tns + XMLNames.Report_Vehicle_TransmissionCertificationMethod, modelData.GearboxData.CertificationMethod.ToXMLFormat()), @@ -198,7 +198,7 @@ namespace TUGraz.VectoCore.OutputData.XML { return new object[] { new XElement(tns + XMLNames.Report_Result_Payload, XMLHelper.ValueAsUnit(result.Payload, XMLNames.Unit_kg, 0)), - new XElement(tns + XMLNames.Report_Results_FuelType, result.FuelType.ToXMLFormat()), + new XElement(tns + XMLNames.Report_Results_FuelType, XMLHelper.ToXmlStr(result.FuelData)), new XElement(tns + XMLNames.Report_Results_AverageSpeed, XMLHelper.ValueAsUnit(result.AverageSpeed, XMLNames.Unit_kmph, 1)), XMLDeclarationReport.GetResults(result, tns, false).Cast<object>().ToArray() }; diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs index 73dddc3e53d6b5d0148c20482152a7e635edc44a..c4e1239a1d73d7d0316eaf861761fbec7a65ea23 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs @@ -38,6 +38,7 @@ using System.Text; using System.Xml; using System.Xml.Linq; using System.Xml.XPath; +using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; @@ -95,8 +96,9 @@ namespace TUGraz.VectoCore.OutputData.XML public string StackTrace { get; private set; } - public FuelType FuelType { get; private set; } + public FuelData.Entry FuelData { get; private set; } + public Kilogram Payload { get; private set; } public Kilogram TotalVehicleWeight { get; private set; } @@ -115,7 +117,8 @@ namespace TUGraz.VectoCore.OutputData.XML public virtual void SetResultData(VectoRunData runData, IModalDataContainer data, double weightingFactor) { - FuelType = data.FuelData.FuelType; + FuelData = data.FuelData; + Payload = runData.VehicleData.Loading; CargoVolume = runData.VehicleData.CargoVolume; TotalVehicleWeight = runData.VehicleData.TotalVehicleWeight; @@ -252,7 +255,7 @@ namespace TUGraz.VectoCore.OutputData.XML public static IEnumerable<XElement> GetResults(ResultEntry result, XNamespace tns, bool fullOutput) { - var fuel = FuelData.Instance().Lookup(result.FuelType); + var fuel = result.FuelData; var retVal = new List<XElement> { new XElement( tns + XMLNames.Report_Results_FuelConsumption, diff --git a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs index b862622df6d81800f53a08e349ae6d9172585f00..59c39dfb2b6b578839b28656143749a98c3be571 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs @@ -183,7 +183,7 @@ namespace TUGraz.VectoCore.OutputData.XML new XElement(tns + XMLNames.Engine_IdlingSpeed, XMLHelper.ValueAsUnit(engineData.IdleSpeed, XMLNames.Unit_RPM)), new XElement(tns + XMLNames.Engine_RatedSpeed, XMLHelper.ValueAsUnit(engineData.RatedSpeedDeclared, XMLNames.Unit_RPM)), new XElement(tns + XMLNames.Engine_Displacement, XMLHelper.ValueAsUnit(engineData.Displacement, XMLNames.Unit_ltr, 1)), - new XElement(tns + XMLNames.Engine_FuelType, engineData.FuelType.ToXMLFormat()) + new XElement(tns + XMLNames.Engine_FuelType, engineData.FuelData.FuelType.ToXMLFormat()) ); } @@ -356,7 +356,7 @@ namespace TUGraz.VectoCore.OutputData.XML new XElement(tns + XMLNames.Report_ResultEntry_SimulationParameters, new XElement(tns + XMLNames.Report_ResultEntry_TotalVehicleMass, XMLHelper.ValueAsUnit(result.TotalVehicleWeight, XMLNames.Unit_kg)), new XElement(tns + XMLNames.Report_ResultEntry_Payload, XMLHelper.ValueAsUnit(result.Payload, XMLNames.Unit_kg)), - new XElement(tns + XMLNames.Report_ResultEntry_FuelType, result.FuelType.ToXMLFormat()) + new XElement(tns + XMLNames.Report_ResultEntry_FuelType, XMLHelper.ToXmlStr(result.FuelData)) ), new XElement(tns + XMLNames.Report_ResultEntry_VehiclePerformance, new XElement(tns + XMLNames.Report_ResultEntry_AverageSpeed, XMLHelper.ValueAsUnit(result.AverageSpeed, XMLNames.Unit_kmph, 1)), diff --git a/VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs index a78c665bfb8ce757d0c93bd0779796cc102988df..314cce34dae3be1808fb48d0835be622d94c05ae 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs @@ -475,7 +475,7 @@ namespace TUGraz.VectoCore.OutputData.XML new XElement( tns + XMLNames.Engine_Displacement, engineData.Displacement.ConvertToCubicCentiMeter().ToXMLFormat(0)), - new XElement(tns + XMLNames.Engine_FuelType, engineData.FuelType.ToXMLFormat()) + new XElement(tns + XMLNames.Engine_FuelType, engineData.FuelData.FuelType.ToXMLFormat()) ); } diff --git a/VectoCore/VectoCore/Resources/Declaration/FuelTypes.csv b/VectoCore/VectoCore/Resources/Declaration/FuelTypes.csv index fed95303f4c9820b13f58998a51121340c615392..672b035c4ecf0bc5bd09e9773a3d81e77f7cd43f 100644 --- a/VectoCore/VectoCore/Resources/Declaration/FuelTypes.csv +++ b/VectoCore/VectoCore/Resources/Declaration/FuelTypes.csv @@ -1,8 +1,22 @@ -FuelType , FuelDensity [kg/m3] , CO2 per FuelWeight [kgCo2/kgFuel] , NCV_stdEngine [kJ/kg] , NCV_stdVecto [kJ/kg] -Diesel CI , 836 , 3.13 , 42700 , 42700 -Ethanol CI , 820 , 1.83 , 25700 , 25700 -Petrol PI , 750 , 3.04 , 41500 , 41500 -Ethanol PI , 786 , 2.09 , 29100 , 29100 -LPG PI , , 3.02 , 46000 , 46000 -NG PI , , 2.54 , 45100 , 45100 -NG CI , , 1000 , 100000 , 100000 \ No newline at end of file +FuelType , Tanksystem , FuelDensity [kg/m3] , CO2 per FuelWeight [kgCo2/kgFuel] , NCV_stdEngine [kJ/kg] , NCV_stdVecto [kJ/kg] +Diesel CI , , 836 , 3.13 , 42700 , 42700 +Ethanol CI , , 820 , 1.83 , 25700 , 25700 +Petrol PI , , 748 , 3.04 , 41500 , 41500 +Ethanol PI , , 786 , 2.09 , 29100 , 29100 +LPG PI , , , 3.02 , 46000 , 46000 +NG PI , compressed , , 2.54 , 45100 , 45100 +NG PI , liquefied , , 2.77 , 45100 , 45100 +NG CI , compressed , , 1000 , 100000 , 100000 +NG CI , liquefied , , 1000 , 100000 , 100000 + +##NEW +#FuelType , Tanksystem , FuelDensity [kg/m3] , CO2 per FuelWeight [kgCo2/kgFuel] , NCV_stdEngine [kJ/kg] , NCV_stdVecto [kJ/kg] +#Diesel CI , , 836 , 3.13 , 42700 , 42700 +#Ethanol CI , , 820 , 1.81 , 25700 , 25400 +#Petrol PI , , 748 , 3.04 , 41500 , 41500 +#Ethanol PI , , 786 , 2.10 , 29100 , 29300 +#LPG PI , , , 3.02 , 46000 , 46000 +#NG PI , compressed , , 2.69 , 45100 , 48000 +#NG PI , liquefied , , 2.77 , 45100 , 49100 +#NG CI , compressed , , 1000 , 100000 , 100000 +#NG CI , liquefied , , 1000 , 100000 , 100000 \ No newline at end of file diff --git a/VectoCore/VectoCore/Utils/XMLHelper.cs b/VectoCore/VectoCore/Utils/XMLHelper.cs index e266110265bb0d6ebb50dca596f54b4b0cc403e3..778baf28433ec8975aaecd65fb9ce80f7aa9315b 100644 --- a/VectoCore/VectoCore/Utils/XMLHelper.cs +++ b/VectoCore/VectoCore/Utils/XMLHelper.cs @@ -31,8 +31,12 @@ using System; using System.Xml.Linq; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Models.Declaration; namespace TUGraz.VectoCore.Utils { @@ -108,6 +112,17 @@ namespace TUGraz.VectoCore.Utils { }; } - + + public static string ToXmlStr(FuelData.Entry fuelData) + { + var prefix = ""; + if (fuelData.FuelType == FuelType.NGPI || fuelData.FuelType == FuelType.NGCI) { + if (fuelData.TankSystem == null) { + throw new VectoException("No TankSystem specified!"); + } + prefix = fuelData.TankSystem.Value == TankSystem.Liquefied ? "L" : "C"; + } + return prefix + fuelData.FuelType.ToXMLFormat(); + } } } \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs index 837a568ea814786a6129852569290799a6740918..b8af50e1c40bf54cfed197f16a2a47ec2b2b4caa 100644 --- a/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs +++ b/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs @@ -78,7 +78,7 @@ namespace TUGraz.VectoCore.Tests.Integration bool overspeed = false, KilogramSquareMeter gearBoxInertia = null) { var fileWriter = new FileOutputWriter(modFileName); - var modData = new ModalDataContainer(modFileName, FuelType.DieselCI, fileWriter) { + var modData = new ModalDataContainer(modFileName, FuelData.Diesel, fileWriter) { WriteModalResults = true, HasTorqueConverter = true }; diff --git a/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs b/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs index 3de184dd2d5530425eb1bc90950b03aaa4692de3..e85dda0689b2847f816e082ca53ed9c29fc39d4f 100644 --- a/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs +++ b/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs @@ -76,7 +76,7 @@ namespace TUGraz.VectoCore.Tests.Integration bool highEnginePower = true) { var fileWriter = new FileOutputWriter(modFileName); - var modData = new ModalDataContainer(modFileName, FuelType.DieselCI, fileWriter) { + var modData = new ModalDataContainer(modFileName, FuelData.Diesel, fileWriter) { WriteAdvancedAux = true, WriteModalResults = true }; diff --git a/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs index 6daeda68832d45d7e6b071f27941cc7e06f3fe96..296f6d4986e22d2f7bc64eaf4957aa962180a1da 100644 --- a/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs +++ b/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs @@ -76,7 +76,7 @@ namespace TUGraz.VectoCore.Tests.Integration KilogramSquareMeter gearBoxInertia = null, bool engineHighPower = true) { var fileWriter = new FileOutputWriter(modFileName); - var modData = new ModalDataContainer(modFileName, FuelType.DieselCI, fileWriter) { WriteModalResults = true }; + var modData = new ModalDataContainer(modFileName, FuelData.Diesel, fileWriter) { WriteModalResults = true }; var container = new VehicleContainer(ExecutionMode.Engineering, modData); var gearboxData = CreateGearboxData(); diff --git a/VectoCore/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs b/VectoCore/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs index 75560117a74f155d67f53b46e7cf72e4abb53d73..711dd86b4553fe9fc9d05ab2e3516f4c493761f6 100644 --- a/VectoCore/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs +++ b/VectoCore/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs @@ -95,7 +95,7 @@ namespace TUGraz.VectoCore.Tests.Integration.EngineOnlyCycle var modFile = Path.GetFileNameWithoutExtension(modalResultFile); //Path.GetFileNameWithoutExtension(Path.GetRandomFileName()); // + ".vmod"; var fileWriter = new FileOutputWriter(modFile); - var modData = new ModalDataContainer(modFile, FuelType.DieselCI, fileWriter, true) { WriteModalResults = true }; + var modData = new ModalDataContainer(modFile, FuelData.Diesel, fileWriter, true) { WriteModalResults = true }; modData.AddAuxiliary(Constants.Auxiliaries.Cycle); port.Initialize(data.Entries.First().Torque, data.Entries.First().AngularVelocity); foreach (var cycleEntry in data.Entries) { diff --git a/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs b/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs index dee862d16dfa04eb84086abc67dbe551d1f2ee95..0b3c3113a7cc9ff1f9faceef6b20d3b175362920 100644 --- a/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs +++ b/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs @@ -79,7 +79,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns public void Test_FullPowertrain_SimpleGearbox() { var fileWriter = new FileOutputWriter("Coach_FullPowertrain_SimpleGearbox"); - var modData = new ModalDataContainer("Coach_FullPowertrain_SimpleGearbox", FuelType.DieselCI, fileWriter); + var modData = new ModalDataContainer("Coach_FullPowertrain_SimpleGearbox", FuelData.Diesel, fileWriter); var container = new VehicleContainer(ExecutionMode.Engineering, modData); container.RunData = new VectoRunData() { SimulationType = SimulationType.DistanceCycle }; @@ -145,7 +145,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns public void Test_FullPowertrain() { var fileWriter = new FileOutputWriter("Coach_FullPowertrain"); - var modData = new ModalDataContainer("Coach_FullPowertrain", FuelType.DieselCI, fileWriter); + var modData = new ModalDataContainer("Coach_FullPowertrain", FuelData.Diesel, fileWriter); var container = new VehicleContainer(ExecutionMode.Engineering, modData); container.RunData = new VectoRunData() {SimulationType = SimulationType.DistanceCycle }; @@ -226,7 +226,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns public void Test_FullPowertrain_LowSpeed() { var fileWriter = new FileOutputWriter("Coach_FullPowertrain_LowSpeed"); - var modData = new ModalDataContainer("Coach_FullPowertrain_LowSpeed", FuelType.DieselCI, fileWriter); + var modData = new ModalDataContainer("Coach_FullPowertrain_LowSpeed", FuelData.Diesel, fileWriter); var container = new VehicleContainer(ExecutionMode.Engineering, modData); var gearboxData = CreateGearboxData(); diff --git a/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs b/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs index e467f1f3b9b33c7349679e7a0fab1c4b5a2f8d61..c88e835c071ef0a2cbc5cecc142f9b0ea119b7d6 100644 --- a/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs +++ b/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs @@ -83,7 +83,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns var driverData = CreateDriverData(AccelerationFile); var fileWriter = new FileOutputWriter("Coach_MinimalPowertrainOverload"); - var modData = new ModalDataContainer("Coach_MinimalPowertrainOverload", FuelType.DieselCI, fileWriter); + var modData = new ModalDataContainer("Coach_MinimalPowertrainOverload", FuelData.Diesel, fileWriter); var container = new VehicleContainer(ExecutionMode.Engineering, modData); var driver = new Driver(container, driverData, new DefaultDriverStrategy()); @@ -129,7 +129,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns var driverData = CreateDriverData(AccelerationFile); var fileWriter = new FileOutputWriter("Coach_MinimalPowertrain"); - var modData = new ModalDataContainer("Coach_MinimalPowertrain", FuelType.DieselCI, fileWriter); + var modData = new ModalDataContainer("Coach_MinimalPowertrain", FuelData.Diesel, fileWriter); var container = new VehicleContainer(ExecutionMode.Engineering, modData); var cycle = new DistanceBasedDrivingCycle(container, cycleData); @@ -201,7 +201,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns var driverData = CreateDriverData(AccelerationFile2); var fileWriter = new FileOutputWriter("Coach_MinimalPowertrainOverload"); - var modData = new ModalDataContainer("Coach_MinimalPowertrainOverload", FuelType.DieselCI, fileWriter); + var modData = new ModalDataContainer("Coach_MinimalPowertrainOverload", FuelData.Diesel, fileWriter); var container = new VehicleContainer(ExecutionMode.Engineering, modData); container.RunData = new VectoRunData() { SimulationType = SimulationType.DistanceCycle }; diff --git a/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs index f5b3c4a4dfd9efc0ffad4488cd95ce9105360eb3..04d78dd7ac58361016d99fed62e00da2fb1355b5 100644 --- a/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs +++ b/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs @@ -86,7 +86,7 @@ namespace TUGraz.VectoCore.Tests.Integration Kilogram massExtra, Kilogram loading, bool overspeed = false, GearboxType gbxType = GearboxType.AMT) { var fileWriter = new FileOutputWriter(modFileName); - var modData = new ModalDataContainer(Path.GetFileName(modFileName), FuelType.DieselCI, fileWriter) { + var modData = new ModalDataContainer(Path.GetFileName(modFileName), FuelData.Diesel, fileWriter) { WriteModalResults = true }; var container = new VehicleContainer(ExecutionMode.Engineering, modData); diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs index 25da7a2d99fc243ed0f0f973bcddc8cb1f7c2c4e..a9b44abd354bd7bbabf6d77620fb4c3290a05c86 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs @@ -2055,14 +2055,17 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration group, adasConfig, mission, loading, expectedBenefit, (factor - 1) * 100.0); } - [TestCase("Diesel CI", 1.0), - TestCase("Ethanol CI", 1.0), - TestCase("Ethanol PI", 1.0), - TestCase("NG PI", 1.0)] - public void TestNCVCorrection(string fuelTypeStr, double expectedCorrectionFactor) + [ + TestCase("Diesel CI", null, 1.0), + TestCase("Ethanol CI", null, 1.0), + TestCase("Ethanol PI", null, 1.0), + TestCase("NG PI", TankSystem.Liquefied, 1.0), + TestCase("NG PI", TankSystem.Compressed, 1.0) + ] + public void TestNCVCorrection(string fuelTypeStr, TankSystem? tankSystem, double expectedCorrectionFactor) { var fuelType = fuelTypeStr.ParseEnum<FuelType>(); - var cf = DeclarationData.FuelData.Lookup(fuelType).HeatingValueCorrection; + var cf = DeclarationData.FuelData.Lookup(fuelType, tankSystem).HeatingValueCorrection; Assert.AreEqual(expectedCorrectionFactor, cf, 1e-6); } diff --git a/VectoCore/VectoCoreTest/Models/Simulation/AuxTests.cs b/VectoCore/VectoCoreTest/Models/Simulation/AuxTests.cs index 3ada562901f4d4fd6c179d111a767eeb6009eae5..8fc5e0493c0401a5c6a8782d8b4ff001e618540c 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/AuxTests.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/AuxTests.cs @@ -70,7 +70,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation { var fileWriter = new FileOutputWriter("AuxWriteModFileSumFile"); - var modData = new ModalDataContainer("AuxWriteModFileSumFile", FuelType.DieselCI, fileWriter) { + var modData = new ModalDataContainer("AuxWriteModFileSumFile", FuelData.Diesel, fileWriter) { WriteModalResults = true }; modData.AddAuxiliary("FAN"); diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/DriverTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/DriverTest.cs index 7bb253f3ff4963eff8784c1de9d1f20fac061719..cf504246f238377e3086dba69e31cf463506bf5b 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponent/DriverTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/DriverTest.cs @@ -81,7 +81,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var driverData = CreateDriverData(); var fileWriter = new FileOutputWriter("Coach_MinimalPowertrain_Coasting"); - var modData = new ModalDataContainer("Coach_MinimalPowertrain_Coasting", FuelType.DieselCI, fileWriter); + var modData = new ModalDataContainer("Coach_MinimalPowertrain_Coasting", FuelData.Diesel, fileWriter); var vehicleContainer = new VehicleContainer(ExecutionMode.Engineering, modData); var mockCycle = new MockDrivingCycle(vehicleContainer, null); @@ -138,7 +138,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var driverData = CreateDriverData(); var fileWriter = new FileOutputWriter("Coach_MinimalPowertrain_Coasting"); - var modData = new ModalDataContainer("Coach_MinimalPowertrain_Coasting", FuelType.DieselCI, fileWriter); + var modData = new ModalDataContainer("Coach_MinimalPowertrain_Coasting", FuelData.Diesel, fileWriter); var vehicleContainer = new VehicleContainer(ExecutionMode.Engineering, modData); var mockCycle = new MockDrivingCycle(vehicleContainer, null); @@ -201,7 +201,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var driverData = CreateDriverData(); var fileWriter = new FileOutputWriter("Coach_MinimalPowertrain"); - var modData = new ModalDataContainer("Coach_MinimalPowertrain", FuelType.DieselCI, fileWriter); + var modData = new ModalDataContainer("Coach_MinimalPowertrain", FuelData.Diesel, fileWriter); var vehicleContainer = new VehicleContainer(ExecutionMode.Engineering, modData); var cycle = new MockDrivingCycle(vehicleContainer, null); diff --git a/VectoCore/VectoCoreTest/Reports/GearshiftCountTest.cs b/VectoCore/VectoCoreTest/Reports/GearshiftCountTest.cs index 57a39a7ddc7638015e8ffd28b827cc69c2de5eba..874c628e2a3465419b0464e77607196d9a79fa0d 100644 --- a/VectoCore/VectoCoreTest/Reports/GearshiftCountTest.cs +++ b/VectoCore/VectoCoreTest/Reports/GearshiftCountTest.cs @@ -32,6 +32,7 @@ using NUnit.Framework; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.OutputData; @@ -43,7 +44,7 @@ namespace TUGraz.VectoCore.Tests.Reports [TestCase()] public void TestGearshiftCountTractionInterruptionShiftup() { - var modData = new ModalDataContainer("GearshiftRun", FuelType.DieselCI, null); + var modData = new ModalDataContainer("GearshiftRun", FuelData.Diesel, null); var entries = new[] { new DummyEntry { v = 34, gear = 4u }, @@ -65,7 +66,7 @@ namespace TUGraz.VectoCore.Tests.Reports [TestCase()] public void TestGearshiftCountTractionInterruption() { - var modData = new ModalDataContainer("GearshiftRun", FuelType.DieselCI, null); + var modData = new ModalDataContainer("GearshiftRun", FuelData.Diesel, null); var entries = new[] { new DummyEntry { v = 34, gear = 4u }, @@ -87,7 +88,7 @@ namespace TUGraz.VectoCore.Tests.Reports [TestCase()] public void TestGearshiftCountTractionInterruptionShiftDown() { - var modData = new ModalDataContainer("GearshiftRun", FuelType.DieselCI, null); + var modData = new ModalDataContainer("GearshiftRun", FuelData.Diesel, null); var entries = new[] { new DummyEntry { v = 34, gear = 4u }, @@ -110,7 +111,7 @@ namespace TUGraz.VectoCore.Tests.Reports [TestCase()] public void TestGearshiftCountTractionInterruptionStop() { - var modData = new ModalDataContainer("GearshiftRun", FuelType.DieselCI, null); + var modData = new ModalDataContainer("GearshiftRun", FuelData.Diesel, null); var entries = new[] { new DummyEntry { v = 4, gear = 4u }, @@ -132,7 +133,7 @@ namespace TUGraz.VectoCore.Tests.Reports [TestCase()] public void TestGearshiftCountTractionInterruptionStopDriveOff() { - var modData = new ModalDataContainer("GearshiftRun", FuelType.DieselCI, null); + var modData = new ModalDataContainer("GearshiftRun", FuelData.Diesel, null); var entries = new[] { new DummyEntry { v = 4, gear = 4u }, @@ -156,7 +157,7 @@ namespace TUGraz.VectoCore.Tests.Reports [TestCase()] public void TestGearshiftCountTractionInterruptionShiftupAT() { - var modData = new ModalDataContainer("GearshiftRun", FuelType.DieselCI, null); + var modData = new ModalDataContainer("GearshiftRun", FuelData.Diesel, null); var entries = new[] { new DummyEntry { v = 34, gear = 4u }, @@ -179,7 +180,7 @@ namespace TUGraz.VectoCore.Tests.Reports [TestCase()] public void TestGearshiftCountTractionInterruptionShiftDownAT() { - var modData = new ModalDataContainer("GearshiftRun", FuelType.DieselCI, null); + var modData = new ModalDataContainer("GearshiftRun", FuelData.Diesel, null); var entries = new[] { new DummyEntry { v = 34, gear = 4u }, diff --git a/VectoCore/VectoCoreTest/Reports/ModDataTest.cs b/VectoCore/VectoCoreTest/Reports/ModDataTest.cs index a5b564cd665892655fda8c6877fbb7b29e09efb7..e6266d42c16d4326aca33976b6ad1f5d65999580 100644 --- a/VectoCore/VectoCoreTest/Reports/ModDataTest.cs +++ b/VectoCore/VectoCoreTest/Reports/ModDataTest.cs @@ -48,6 +48,7 @@ using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Tests.Integration; using TUGraz.VectoCore.Tests.Utils; using System.IO; +using TUGraz.VectoCore.Models.Declaration; namespace TUGraz.VectoCore.Tests.Reports { @@ -65,7 +66,7 @@ namespace TUGraz.VectoCore.Tests.Reports TestCase(10, 0.1)] public void SumDataTest(double initialSpeedVal, double accVal) { - var modData = new ModalDataContainer("sumDataTest", FuelType.DieselCI, null, false); + var modData = new ModalDataContainer("sumDataTest", FuelData.Diesel, null, false); var initalSpeed = initialSpeedVal.KMPHtoMeterPerSecond(); var speed = initalSpeed; var dist = 0.SI<Meter>(); diff --git a/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs b/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs index 55f65e631949f520a9ae96bd9caaf163edfd1220..ff2b9353c619775bc5b14b20f4b83104f73c38a0 100644 --- a/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs +++ b/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs @@ -43,6 +43,7 @@ using TUGraz.VectoCore.OutputData.XML; using TUGraz.VectoCore.Tests.Utils; using TUGraz.VectoCore.Utils; using NUnit.Framework; +using TUGraz.VectoCore.Models.Declaration; namespace TUGraz.VectoCore.Tests.Reports { @@ -61,7 +62,7 @@ namespace TUGraz.VectoCore.Tests.Reports var writer = new FileOutputWriter("testsumcalc_fixed"); var sumWriter = new SummaryDataContainer(writer); - var modData = new ModalDataContainer("testsumcalc_fixed", FuelType.DieselCI, writer); + var modData = new ModalDataContainer("testsumcalc_fixed", FuelData.Diesel, writer); modData.AddAuxiliary("FAN"); @@ -121,7 +122,7 @@ namespace TUGraz.VectoCore.Tests.Reports var writer = new FileOutputWriter("testsumcalc_var"); var sumWriter = new SummaryDataContainer(writer); - var modData = new ModalDataContainer("testsumcalc_var", FuelType.DieselCI, writer); + var modData = new ModalDataContainer("testsumcalc_var", FuelData.Diesel, writer); modData.AddAuxiliary("FAN"); var timeSteps = new[] diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj index be7531d8eceb50297735b8f690b61d4ff9a225c9..c49a63de9c32fe46bc3c4f5a611aa56cfd8d70c2 100644 --- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj @@ -85,6 +85,7 @@ <Compile Include="Integration\CoachPowerTrain.cs" /> <Compile Include="Integration\Declaration\ADASVehicleTest.cs" /> <Compile Include="Integration\Declaration\EngineInputDataTests.cs" /> + <Compile Include="Integration\Declaration\NaturalGasVehicles.cs" /> <Compile Include="Integration\DriverStrategy\SimpleCycles.cs" /> <Compile Include="Integration\Declaration\ExemptedVehicleTest.cs" /> <Compile Include="Integration\Declaration\VocationalVehicleTest.cs" /> @@ -2716,6 +2717,9 @@ <Content Include="TestData\Integration\DeclarationMode\Class5_ADAS\Tractor_4x2_vehicle-class-5_EURO6_2018.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> + <Content Include="TestData\Integration\DeclarationMode\Class5_NG\Tractor_4x2_vehicle-class-5_EURO6_2018.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> <Content Include="TestData\Integration\DeclarationMode\Class5_Vocational\Tractor_4x2_vehicle-class-5_EURO6_2018.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs index db7f7a7ee8391171faf0d32efbc693d5acd645c9..5a7c1398e6a3ab07139ee2e52c3b14df3bfafbc6 100644 --- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs @@ -983,7 +983,7 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual(false, vehicle.VocationalVehicle); Assert.AreEqual(true, vehicle.SleeperCab); - Assert.AreEqual(NgTankSystem.Compressed, vehicle.TankSystem); + Assert.AreEqual(TankSystem.Compressed, vehicle.TankSystem); Assert.AreEqual(false, adas.EngineStopStart); Assert.AreEqual(false, adas.EcoRollWitoutEngineStop);