From d9f1a17980401d6c2c05fa656381208223086a12 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Tue, 6 Aug 2019 14:44:43 +0200 Subject: [PATCH] adding correction for WHR power in vsum and declaration reports, adding whrtype to manufacturer report --- .../InputData/DeclarationInputData.cs | 1 + VectoCommon/VectoCommon/Models/WHRType.cs | 25 +++++++++++ .../Resources/XMLNames.Designer.cs | 9 ++++ .../VectoCommon/Resources/XMLNames.resx | 3 ++ .../XMLEngineeringEngineDataProvider.cs | 2 + .../AbstractSimulationDataAdapter.cs | 3 +- .../Simulation/Data/ModalResultField.cs | 2 + .../Data/CombustionEngineData.cs | 2 + .../Impl/CombustionEngine.cs | 25 +++++++++-- .../Impl/StopStartCombustionEngine.cs | 13 ++++++ .../OutputData/ModalDataContainer.cs | 6 ++- .../OutputData/SummaryDataContainer.cs | 23 ++++++++-- .../OutputData/XML/XMLDeclarationReport.cs | 17 ++++---- .../OutputData/XML/XMLManufacturerReport.cs | 3 +- VectoCore/VectoCore/VectoCore.csproj | 1 + .../vehicle_sampleDualModeDualFuel.xml | 42 ++++++++++++------- ...vehicle_sampleSingleModeSingleFuel_WHR.xml | 42 ++++++++++++------- 17 files changed, 169 insertions(+), 50 deletions(-) create mode 100644 VectoCommon/VectoCommon/Models/WHRType.cs diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index 9e42e515e5..960cedf42b 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -493,6 +493,7 @@ namespace TUGraz.VectoCommon.InputData NewtonMeter MaxTorqueDeclared { get; } IList<IEngineModeDeclarationInputData> EngineModes { get; } + WHRType WHRType{ get; } } public interface IEngineModeDeclarationInputData diff --git a/VectoCommon/VectoCommon/Models/WHRType.cs b/VectoCommon/VectoCommon/Models/WHRType.cs new file mode 100644 index 0000000000..50e7da217b --- /dev/null +++ b/VectoCommon/VectoCommon/Models/WHRType.cs @@ -0,0 +1,25 @@ +using System; + +namespace TUGraz.VectoCore.Models.Declaration { + public enum WHRType + { + None, + MechanicalOnly, + ElectricalOnly, + MechanicalAndElectrical + } + + public static class WHRTypeHelper + { + public static string ToXMLFormat(this WHRType whrType) + { + switch (whrType) { + case WHRType.None: return "none"; + case WHRType.MechanicalOnly: return "mechanical only"; + case WHRType.ElectricalOnly: return "electrical only"; + case WHRType.MechanicalAndElectrical: return "mechanical and electrical"; + default: throw new ArgumentOutOfRangeException(nameof(whrType), whrType, null); + } + } + } +} \ No newline at end of file diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs index 70741f6c65..ce02aa990a 100644 --- a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs +++ b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs @@ -1212,6 +1212,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to WHRType. + /// </summary> + public static string Engine_WHRType { + get { + return ResourceManager.GetString("Engine_WHRType", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to WHTCEngineering. /// </summary> diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.resx b/VectoCommon/VectoCommon/Resources/XMLNames.resx index 2ac518ece7..60c69fa803 100644 --- a/VectoCommon/VectoCommon/Resources/XMLNames.resx +++ b/VectoCommon/VectoCommon/Resources/XMLNames.resx @@ -1101,4 +1101,7 @@ <data name="Engine_WHRCorrectionFactors_CFRegPer" xml:space="preserve"> <value>CFRegPer</value> </data> + <data name="Engine_WHRType" xml:space="preserve"> + <value>WHRType</value> + </data> </root> \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringEngineDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringEngineDataProvider.cs index b99b975fdc..fe4d8e3273 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringEngineDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringEngineDataProvider.cs @@ -40,6 +40,7 @@ using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.XML.Engineering.Interfaces; +using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider @@ -174,6 +175,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider } public virtual IList<IEngineModeDeclarationInputData> EngineModes { get { return new[] { this }.Cast<IEngineModeDeclarationInputData>().ToList(); } } + public virtual WHRType WHRType { get { return WHRType.None; } } public virtual KilogramSquareMeter Inertia { diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs index 03c485a0a0..14414140cf 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs @@ -138,7 +138,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter RatedSpeedDeclared = data.RatedSpeedDeclared, MaxTorqueDeclared = data.MaxTorqueDeclared, //FuelData = DeclarationData.FuelData.Lookup(data.FuelType, tankSystem) - MultipleEngineFuelModes = data.EngineModes.Count > 1 + MultipleEngineFuelModes = data.EngineModes.Count > 1, + WHRType = data.WHRType, }; return retVal; } diff --git a/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs b/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs index dcfcc0e0ff..7e52b4201a 100644 --- a/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs +++ b/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs @@ -332,6 +332,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Data [ModalResultField(typeof(SI), caption: "AA_TotalCycleFuelConsumptionCompressorOff [g]", outputFactor: 1000)] AA_TotalCycleFuelConsumptionCompressorOff, [ModalResultField(typeof(SI), caption: "AA_TotalCycleFuelConsumptionCompressorOn [g]", outputFactor: 1000)] AA_TotalCycleFuelConsumptionCompressorOn, + [ModalResultField(typeof(SI), "P_WHR_el", outputFactor:1e-3)] P_WHR_el_map, + [ModalResultField(typeof(SI), "P_WHR_el_corr", outputFactor: 1e-3)] P_WHR_el_corr } [AttributeUsage(AttributeTargets.Field)] diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/CombustionEngineData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/CombustionEngineData.cs index 511a9140aa..8097184063 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Data/CombustionEngineData.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/CombustionEngineData.cs @@ -73,6 +73,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data public WHRData WHRData; + public WHRType WHRType; + // ReSharper disable once UnusedMember.Global -- used in CustomValidation public static ValidationResult ValidateData(CombustionEngineData data, ValidationContext context) diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs index 8a9a495ebb..18b479edad 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs @@ -374,6 +374,23 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl container[ModalResultField.Tq_drag] = CurrentState.FullDragTorque; container[ModalResultField.IgnitionOn] = CurrentState.IgnitionOn; + var pWHRelMap = 0.SI<Watt>(); + var pWHRelCorr = 0.SI<Watt>(); + if (ModelData.WHRData != null) { + var whrPwr = ModelData.WHRData.WHRMap.GetWHRPower( + CurrentState.EngineTorque, avgEngineSpeed, DataBus.ExecutionMode != ExecutionMode.Declaration); + if (DataBus.ExecutionMode != ExecutionMode.Declaration && whrPwr.Extrapolated) { + Log.Warn( + "Electric WHR power was extrapolated: range for WHR-Map is not sufficient: n: {0}, torque: {1}", + avgEngineSpeed.Value(), CurrentState.EngineTorque.Value()); + } + pWHRelMap = whrPwr.ElectricPower; + pWHRelCorr = pWHRelMap * ModelData.WHRData.WHRCorrectionFactor; + } + + container[ModalResultField.P_WHR_el_map] = pWHRelMap; + container[ModalResultField.P_WHR_el_corr] = pWHRelCorr; + foreach (var fuel in ModelData.Fuels) { var result = fuel.ConsumptionMap.GetFuelConsumption( CurrentState.EngineTorque, avgEngineSpeed, @@ -437,9 +454,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl throw new VectoException("ComputeFullLoadPower cannot compute for simulation interval length 0."); } - CurrentState.StationaryFullLoadTorque = - ModelData.FullLoadCurves[DataBus.Gear].FullLoadStationaryTorque(angularVelocity); - var stationaryFullLoadPower = CurrentState.StationaryFullLoadTorque * angularVelocity; + var tStatFull = ModelData.FullLoadCurves[DataBus.Gear].FullLoadStationaryTorque(angularVelocity); + var stationaryFullLoadPower = tStatFull * angularVelocity; + if (!dryRun) { + CurrentState.StationaryFullLoadTorque = tStatFull; + } Watt dynFullPowerCalculated; // disable pt1 behaviour if PT1Disabled is true, or if the previous enginepower is greater than the current stationary fullload power (in this case the pt1 calculation fails) diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/StopStartCombustionEngine.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/StopStartCombustionEngine.cs index 9a719eaba4..4538d008ed 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/StopStartCombustionEngine.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/StopStartCombustionEngine.cs @@ -112,6 +112,19 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl { container[ModalResultField.P_aux_ice_off] = (CurrentState.AuxPowerEngineOff ?? 0.SI<Watt>()) * EngineStopStartUtilityFactor; var auxDemand = EngineAux.PowerDemandEngineOn(ModelData.IdleSpeed) / ModelData.IdleSpeed; + + var pWHRelMap = 0.SI<Watt>(); + var pWHRelCorr = 0.SI<Watt>(); + + if (ModelData.WHRData != null) { + var whrPwr = ModelData.WHRData.WHRMap.GetWHRPower(auxDemand, ModelData.IdleSpeed, DataBus.ExecutionMode != ExecutionMode.Declaration); + + pWHRelMap = whrPwr.ElectricPower * (1 - EngineStopStartUtilityFactor); + pWHRelCorr = pWHRelMap * ModelData.WHRData.WHRCorrectionFactor; + } + container[ModalResultField.P_WHR_el_map] = pWHRelMap; + container[ModalResultField.P_WHR_el_corr] = pWHRelCorr; + foreach (var fuel in ModelData.Fuels) { var fc = 0.SI<KilogramPerSecond>(); var fcNCVcorr = fc * fuel.FuelData.HeatingValueCorrection; // TODO: wird fcNCVcorr diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs index 9d8b55c12a..f270c1dbbc 100644 --- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs @@ -164,7 +164,11 @@ namespace TUGraz.VectoCore.OutputData var strCols = dataColumns.Select(x => x.GetName()) .Concat(Auxiliaries.Values.Select(c => c.ColumnName)) - .Concat(new[] { ModalResultField.P_aux_ice_off, ModalResultField.P_ice_start }.Select(x => x.GetName())) + .Concat( + new[] { + ModalResultField.P_WHR_el_map, ModalResultField.P_WHR_el_corr, ModalResultField.P_aux_ice_off, + ModalResultField.P_ice_start + }.Select(x => x.GetName())) .Concat(FuelColumns.SelectMany(kv => kv.Value.Select(kv2 => kv2.Value.ColumnName))); #if TRACE diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs index ca44352f24..7ea53103e5 100644 --- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs @@ -135,6 +135,9 @@ namespace TUGraz.VectoCore.OutputData public const string FCESS_KM = "FC-ESS{0} [g/km]"; public const string FCESS_H_CORR = "FC-ESS_Corr{0} [g/h]"; public const string FCESS_KM_CORR = "FC-ESS_Corr{0} [g/km]"; + public const string FCWHR_H_CORR = "FC-WHR_Corr{0} [g/h]"; + public const string FCWHR_KM_CORR = "FC-WHR_Corr{0} [g/km]"; + public const string FCFINAL_H = "FC-Final{0} [g/h]"; public const string FCFINAL_KM = "FC-Final{0} [g/km]"; @@ -158,6 +161,9 @@ namespace TUGraz.VectoCore.OutputData public const string NUM_ICE_STARTS = "ice_starts [-]"; public const string K_VEHLINE = "k_vehline{0} [g/kWh]"; + public const string E_WHR_EL = "E_WHR_el [kWh]"; + + public const string E_AIR = "E_air [kWh]"; public const string E_ROLL = "E_roll [kWh]"; public const string E_GRAD = "E_grad [kWh]"; @@ -250,6 +256,7 @@ namespace TUGraz.VectoCore.OutputData FCWHTCC_H, FCWHTCC_KM, FCAAUX_H, FCAAUX_KM, FCESS_H, FCESS_KM, + FCWHR_H_CORR, FCWHR_KM_CORR, FCESS_H_CORR, FCESS_KM_CORR, FCFINAL_H, FCFINAL_KM, FCFINAL_LITERPER100KM, FCFINAL_LITERPER100TKM, FCFINAL_LiterPer100M3KM, @@ -367,7 +374,7 @@ namespace TUGraz.VectoCore.OutputData E_FCMAP_POS, E_FCMAP_NEG, E_POWERTRAIN_INERTIA, E_AUX, E_CLUTCH_LOSS, E_TC_LOSS, E_SHIFT_LOSS, E_GBX_LOSS, E_RET_LOSS, E_ANGLE_LOSS, E_AXL_LOSS, E_BRAKE, E_VEHICLE_INERTIA, E_WHEEL, E_AIR, E_ROLL, E_GRAD, - E_AUX_ESS_MECH, E_ICE_START, NUM_ICE_STARTS, + E_WHR_EL, E_AUX_ESS_MECH, E_ICE_START, NUM_ICE_STARTS, ACC, ACC_POS, ACC_NEG, ACC_TIMESHARE, DEC_TIMESHARE, CRUISE_TIMESHARE, MAX_SPEED, MAX_ACCELERATION, MAX_DECELERATION, AVG_ENGINE_SPEED, MAX_ENGINE_SPEED, NUM_GEARSHIFTS, STOP_TIMESHARE, ENGINE_FULL_LOAD_TIME_SHARE, COASTING_TIME_SHARE, BRAKING_TIME_SHARE @@ -516,12 +523,19 @@ namespace TUGraz.VectoCore.OutputData IModalDataContainer modData, DataRow row, Kilogram vehicleLoading, CubicMeter cargoVolume, bool multipleEngineModes, bool vtpCycle) { - var workESS = modData.TimeIntegral<WattSecond>(ModalResultField.P_aux_ice_off); + var workESS = modData.WorkAuxiliariesDuringEngineStop() + + modData.WorkEngineStart(); + + var workWHREl = modData.TimeIntegral<WattSecond>(ModalResultField.P_WHR_el_corr); + var workWhrMech = - workWHREl / DeclarationData.AlternaterEfficiency; + var distance = modData.Distance(); var duration = modData.Duration(); var kilogramCO2PerMeter = 0.SI<KilogramPerMeter>(); + row[E_WHR_EL] = workWHREl.ConvertToKiloWattHour(); + foreach (var fuel in modData.FuelData) { var suffix = modData.FuelData.Count <= 1 && !multipleEngineModes ? "" : "_" + fuel.FuelType.GetLabel(); @@ -566,15 +580,18 @@ namespace TUGraz.VectoCore.OutputData row[FcCol(K_VEHLINE, suffix)] = correction.ConvertToGramPerKiloWattHour(); - var fcEssCorr = fcModSum + correction * workESS; + var fcWHRCorr = fcModSum + correction * workWhrMech; + var fcEssCorr = fcWHRCorr + correction * workESS; row[FcCol(FCESS_H_CORR, suffix)] = duration != null ? (fcEssCorr / duration).ConvertToGrammPerHour() : null; + row[FcCol(FCWHR_H_CORR, suffix)] = duration != null ? (fcWHRCorr / duration).ConvertToGrammPerHour() : null; var fcFinal = fcEssCorr; row[FcCol(FCFINAL_H, suffix)] = (fcFinal / duration).ConvertToGrammPerHour(); if (distance != null && distance.IsGreater(0)) { + row[FcCol(FCWHR_KM_CORR, suffix)] = (fcWHRCorr / distance).ConvertToGrammPerKiloMeter(); row[FcCol(FCESS_KM_CORR, suffix)] = (fcEssCorr / distance).ConvertToGrammPerKiloMeter(); row[FcCol(FCFINAL_KM, suffix)] = (fcFinal / distance).ConvertToGrammPerKiloMeter(); diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs index 256a37cbeb..9ccb650719 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs @@ -116,11 +116,6 @@ namespace TUGraz.VectoCore.OutputData.XML public virtual void SetResultData(VectoRunData runData, IModalDataContainer data, double weightingFactor) { - //FuelData = data.FuelData; - - //Payload = runData.VehicleData.Loading; - //CargoVolume = runData.VehicleData.CargoVolume; - //TotalVehicleWeight = runData.VehicleData.TotalVehicleWeight; Status = data.RunStatus; Error = data.Error; StackTrace = data.StackTrace; @@ -147,7 +142,10 @@ namespace TUGraz.VectoCore.OutputData.XML EngineSpeedDrivingMax = entriesDriving.Max(x => x.nEng); Distance = data.Distance(); - var workESS = data.TimeIntegral<WattSecond>(ModalResultField.P_aux_ice_off); + var workESS = data.WorkAuxiliariesDuringEngineStop() + data.WorkEngineStart(); + var workWHRel = data.TimeIntegral<WattSecond>(ModalResultField.P_WHR_el_corr); + var workWhrMech = -workWHRel / DeclarationData.AlternaterEfficiency; + FuelConsumptionFinal = new Dictionary<FuelType, Kilogram>(); CO2Total = 0.SI<Kilogram>(); EnergyConsumptionTotal = 0.SI<Joule>(); @@ -163,9 +161,10 @@ namespace TUGraz.VectoCore.OutputData.XML x.Field<SI>(ModalResultField.P_eng_fcmap.GetName()).Value(), x.Field<SI>(data.GetColumnName(entry, ModalResultField.FCFinal)).Value()) : null).Where(x => x != null && x.Y > 0), out k, out d, out s); var correction = k.SI<KilogramPerWattSecond>(); - FuelConsumptionFinal[entry.FuelType] = fcSum + correction * workESS; - CO2Total += fcSum * entry.CO2PerFuelWeight; - EnergyConsumptionTotal += fcSum * entry.LowerHeatingValueVecto; + var fcTotalcorr = fcSum + correction * (workESS + workWhrMech); + FuelConsumptionFinal[entry.FuelType] = fcTotalcorr; + CO2Total += fcTotalcorr * entry.CO2PerFuelWeight; + EnergyConsumptionTotal += fcTotalcorr * entry.LowerHeatingValueVecto; } var gbxOutSignal = runData.Retarder.Type == RetarderType.TransmissionOutputRetarder diff --git a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs index 0d89719410..58ea0ac5ca 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs @@ -182,7 +182,8 @@ namespace TUGraz.VectoCore.OutputData.XML new XElement(tns + XMLNames.Engine_RatedPower, XMLHelper.ValueAsUnit(engineData.RatedPowerDeclared, XMLNames.Unit_kW)), 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_Displacement, XMLHelper.ValueAsUnit(engineData.Displacement, XMLNames.Unit_ltr, 1)), + new XElement(tns + XMLNames.Engine_WHRType, engineData.WHRType.ToXMLFormat()), fuelModes.Select(x => new XElement(tns + XMLNames.Report_Engine_FuelMode, x.Select(f => new XElement(tns + XMLNames.Engine_FuelType, f.FuelType.ToXMLFormat())))) ); } diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj index e2ff058383..a11f39c61d 100644 --- a/VectoCore/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore/VectoCore.csproj @@ -254,6 +254,7 @@ <Compile Include="InputData\FileIO\XML\Declaration\IXMLDeclarationInputDataReader.cs" /> <Compile Include="InputData\FileIO\XML\IXMLInputDataReader.cs" /> <Compile Include="InputData\FileIO\XML\XMLInputDataNinjectModule.cs" /> + <Compile Include="Models\Declaration\WHRType.cs" /> <Compile Include="Models\SimulationComponent\Data\Engine\WHRPowerMap.cs" /> <Compile Include="InputData\Reader\ComponentData\WHRPowerReader.cs" /> <Compile Include="Models\SimulationComponent\Impl\StopStartCombustionEngine.cs" /> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleDualModeDualFuel.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleDualModeDualFuel.xml index b36f5a4de3..580269b354 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleDualModeDualFuel.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleDualModeDualFuel.xml @@ -5,11 +5,12 @@ xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" + xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3_DF" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_FurtherDev\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" > - <Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> @@ -24,17 +25,26 @@ <RetarderType>Transmission Output Retarder</RetarderType> <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> - <PTO xsi:type="PTOType"> + <v2.1:PTO xsi:type="PTOType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <PTOShaftsGearWheels>only the drive shaft of the PTO</PTOShaftsGearWheels> <PTOOtherElements>multi-disc clutch</PTOOtherElements> - </PTO> - <TorqueLimits xsi:type="TorqueLimitsType"> + </v2.1:PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <SleeperCab>false</SleeperCab> + <v2.1:ADAS xsi:type="AdvancedDriverAssistantSystemsType"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </v2.1:ADAS> + <v2.1:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800" /> <Entry gear="1" maxTorque="2500" /> <Entry gear="12" maxTorque="1900" /> - </TorqueLimits> - <Components xsi:type="VehicleComponentsType"> - <Engine> + </v2.1:TorqueLimits> + <Components xsi:type="v2.0:VehicleComponentsType"> + <Engine xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="EngineComponentDeclarationType"> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3_DF"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> @@ -454,7 +464,7 @@ </di:Reference> </Signature> </Engine> - <Gearbox> + <Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> @@ -2854,7 +2864,7 @@ </di:Reference> </Signature> </Gearbox> - <TorqueConverter> + <TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> <Data id="tc-123xyz" xsi:type="v2.0:TorqueConverterDataDeclarationType"> <v2.0:Manufacturer>Some Manufacturer</v2.0:Manufacturer> <v2.0:Model>Some Model</v2.0:Model> @@ -2875,7 +2885,7 @@ </di:Reference> </Signature> </TorqueConverter> - <Angledrive> + <Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> @@ -2904,7 +2914,7 @@ </di:Reference> </Signature> </Angledrive> - <Retarder> + <Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> @@ -2950,7 +2960,7 @@ </di:Reference> </Signature> </Retarder> - <Axlegear> + <Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v1.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> @@ -3466,7 +3476,7 @@ </di:Reference> </Signature> </Axlegear> - <AxleWheels> + <AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> <Data xsi:type="AxleWheelsDataDeclarationType"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> @@ -3526,7 +3536,7 @@ </Axles> </Data> </AxleWheels> - <Auxiliaries> + <Auxiliaries xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AuxiliariesComponentDeclarationType"> <Data xsi:type="AuxiliariesDataDeclarationType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> @@ -3545,7 +3555,7 @@ </HVAC> </Data> </Auxiliaries> - <AirDrag> + <AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AirDragComponentDeclarationType"> <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType"> <Manufacturer>Generic Manufacturer</Manufacturer> <Model>Generic Model</Model> @@ -3568,5 +3578,5 @@ </Signature> </AirDrag> </Components> - </Vehicle> + </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleSingleModeSingleFuel_WHR.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleSingleModeSingleFuel_WHR.xml index 27c1ad3bbd..208680fe55 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleSingleModeSingleFuel_WHR.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleSingleModeSingleFuel_WHR.xml @@ -5,11 +5,12 @@ xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" + xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3_DF" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_FurtherDev\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" > - <Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> @@ -24,17 +25,26 @@ <RetarderType>Transmission Output Retarder</RetarderType> <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> - <PTO xsi:type="PTOType"> + <v2.1:PTO xsi:type="PTOType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <PTOShaftsGearWheels>only the drive shaft of the PTO</PTOShaftsGearWheels> <PTOOtherElements>multi-disc clutch</PTOOtherElements> - </PTO> - <TorqueLimits xsi:type="TorqueLimitsType"> + </v2.1:PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <SleeperCab>false</SleeperCab> + <v2.1:ADAS xsi:type="AdvancedDriverAssistantSystemsType"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </v2.1:ADAS> + <v2.1:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800" /> <Entry gear="1" maxTorque="2500" /> <Entry gear="12" maxTorque="1900" /> - </TorqueLimits> - <Components xsi:type="VehicleComponentsType"> - <Engine> + </v2.1:TorqueLimits> + <Components xsi:type="v2.0:VehicleComponentsType"> + <Engine xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="EngineComponentDeclarationType"> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3_DF"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> @@ -202,7 +212,7 @@ </di:Reference> </Signature> </Engine> - <Gearbox> + <Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> @@ -2602,7 +2612,7 @@ </di:Reference> </Signature> </Gearbox> - <TorqueConverter> + <TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> <Data id="tc-123xyz" xsi:type="v2.0:TorqueConverterDataDeclarationType"> <v2.0:Manufacturer>Some Manufacturer</v2.0:Manufacturer> <v2.0:Model>Some Model</v2.0:Model> @@ -2623,7 +2633,7 @@ </di:Reference> </Signature> </TorqueConverter> - <Angledrive> + <Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> @@ -2652,7 +2662,7 @@ </di:Reference> </Signature> </Angledrive> - <Retarder> + <Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> @@ -2698,7 +2708,7 @@ </di:Reference> </Signature> </Retarder> - <Axlegear> + <Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v1.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> @@ -3214,7 +3224,7 @@ </di:Reference> </Signature> </Axlegear> - <AxleWheels> + <AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> <Data xsi:type="AxleWheelsDataDeclarationType"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> @@ -3274,7 +3284,7 @@ </Axles> </Data> </AxleWheels> - <Auxiliaries> + <Auxiliaries xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AuxiliariesComponentDeclarationType"> <Data xsi:type="AuxiliariesDataDeclarationType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> @@ -3293,7 +3303,7 @@ </HVAC> </Data> </Auxiliaries> - <AirDrag> + <AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AirDragComponentDeclarationType"> <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType"> <Manufacturer>Generic Manufacturer</Manufacturer> <Model>Generic Model</Model> @@ -3316,5 +3326,5 @@ </Signature> </AirDrag> </Components> - </Vehicle> + </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file -- GitLab