diff --git a/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs b/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs index f9447675dd07f9e49104429d54cc89f970a6c581..e1186ba9f1a2045de8e6988fd1cc6cf95e2448cf 100644 --- a/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs +++ b/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs @@ -115,32 +115,32 @@ namespace TUGraz.VectoCore.Models.Simulation.Data /// <summary> /// [g/h] Fuel consumption from FC map.. /// </summary> - [ModalResultField(typeof(SI), name: "FC-Map", caption: "FC-Map [g/h]", outputFactor: 3600 * 1000)] FCMap, + [ModalResultField(typeof(SI), name: "FC-Map", caption: "FC-Map{0} [g/h]", outputFactor: 3600 * 1000)] FCMap, /// <summary> /// [g/h] Fuel consumption after correction for different NCV in VECTO Engine and VECTO sim. (Based on FC.) /// </summary> - [ModalResultField(typeof(SI), name: "FC-NCVc", caption: "FC-NCVc [g/h]", outputFactor: 3600 * 1000)] FCNCVc, + [ModalResultField(typeof(SI), name: "FC-NCVc", caption: "FC-NCVc{0} [g/h]", outputFactor: 3600 * 1000)] FCNCVc, /// <summary> /// [g/h] Fuel consumption after WHTC Correction. (Based on FC-AUXc.) /// </summary> - [ModalResultField(typeof(SI), name: "FC-WHTCc", caption: "FC-WHTCc [g/h]", outputFactor: 3600 * 1000)] FCWHTCc, + [ModalResultField(typeof(SI), name: "FC-WHTCc", caption: "FC-WHTCc{0} [g/h]", outputFactor: 3600 * 1000)] FCWHTCc, /// <summary> /// [g/h] Fuel consumption after smart auxiliary correction. /// </summary> - [ModalResultField(typeof(SI), name: "FC-AAUX", caption: "FC-AAUX [g/h]", outputFactor: 3600 * 1000)] FCAAUX, + [ModalResultField(typeof(SI), name: "FC-AAUX", caption: "FC-AAUX{0} [g/h]", outputFactor: 3600 * 1000)] FCAAUX, - /// <summary> - /// [g/h] Fuel consumption after correction for ADAS technologies. (Based on FC-AAUXc.) - /// </summary> - [ModalResultField(typeof(SI), name: "FC-ADAS", caption: "FC-ADAS [g/h]", outputFactor: 3600 * 1000)] FCADAS, + ///// <summary> + ///// [g/h] Fuel consumption after correction for ADAS technologies. (Based on FC-AAUXc.) + ///// </summary> + //[ModalResultField(typeof(SI), name: "FC-ADAS", caption: "FC-ADAS{0} [g/h]", outputFactor: 3600 * 1000)] FCADAS, /// <summary> /// [g/h] Fuel consumption after WHTC Correction. (Based on FC-ADAS.) /// </summary> - [ModalResultField(typeof(SI), name: "FC-Final", caption: "FC-Final [g/h]", outputFactor: 3600 * 1000)] FCFinal, + [ModalResultField(typeof(SI), name: "FC-Final_mod", caption: "FC-Final_mod{0} [g/h]", outputFactor: 3600 * 1000)] FCFinal, /// <summary> /// [km] Travelled distance. diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs index 2e46a8ae6a8bd48a1b8055d9a0183e19144332cc..6718120f00f6ba3a52f278f652e661b0594bd517 100644 --- a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs @@ -155,6 +155,7 @@ namespace TUGraz.VectoCore.OutputData public interface ICorrectedModalData { + WattSecond WorkESSMissing { get; } WattSecond WorkWHREl { get; } WattSecond WorkWHRElMech { get; } WattSecond WorkWHRMech { get; } @@ -185,16 +186,16 @@ namespace TUGraz.VectoCore.OutputData KilogramPerSecond FC_WHR_CORR_H { get; } KilogramPerSecond FC_AUXHTR_H { get; } KilogramPerSecond FC_AUXHTR_H_CORR { get; } - KilogramPerSecond FC_REESS_SOC_H { get; } - KilogramPerSecond FC_REESS_SOC_CORR_H { get; } + //KilogramPerSecond FC_REESS_SOC_H { get; } + //KilogramPerSecond FC_REESS_SOC_CORR_H { get; } KilogramPerSecond FC_FINAL_H { get; } KilogramPerMeter FC_WHR_CORR_KM { get; } KilogramPerMeter FC_BusAux_PS_CORR_KM { get; } KilogramPerMeter FC_BusAux_ES_CORR_KM { get; } KilogramPerMeter FC_AUXHTR_KM { get; } KilogramPerMeter FC_AUXHTR_KM_CORR { get; } - KilogramPerMeter FC_REESS_SOC_KM { get; } - KilogramPerMeter FC_REESS_SOC_CORR_KM { get; } + //KilogramPerMeter FC_REESS_SOC_KM { get; } + //KilogramPerMeter FC_REESS_SOC_CORR_KM { get; } KilogramPerMeter FC_ESS_KM { get; } KilogramPerMeter FC_ESS_CORR_KM { get; } diff --git a/VectoCore/VectoCore/OutputData/ModalDataPostprocessingCorrection.cs b/VectoCore/VectoCore/OutputData/ModalDataPostprocessingCorrection.cs index ce88b23aa11df172a8ade5bb295acc2403e2ea79..c92c7c955b1c4b3bc0766033b5f00d1a356349ab 100644 --- a/VectoCore/VectoCore/OutputData/ModalDataPostprocessingCorrection.cs +++ b/VectoCore/VectoCore/OutputData/ModalDataPostprocessingCorrection.cs @@ -20,7 +20,12 @@ namespace TUGraz.VectoCore.OutputData public ICorrectedModalData ApplyCorrection(IModalDataContainer modData, VectoRunData runData) { - var r = new CorrectedModalData(); + var essParams = runData.DriverData.EngineStopStart; + var r = new CorrectedModalData { + UtilityFactorDriving = essParams.UtilityFactorDriving, + UtilityFactorStandstill = essParams.UtilityFactorStandstill + }; + var duration = modData.Duration; var distance = modData.Distance; @@ -49,7 +54,7 @@ namespace TUGraz.VectoCore.OutputData SetAuxHeaterDemand(modData, r, duration); - r.DeltaEReessMech = 0.SI<WattSecond>(); + //r.DeltaEReessMech = 0.SI<WattSecond>(); //SetReesCorrectionDemand(modData, runData, r); var kilogramCO2PerMeter = 0.SI<KilogramPerMeter>(); @@ -80,7 +85,7 @@ namespace TUGraz.VectoCore.OutputData { var duration = modData.Duration; var distance = modData.Distance; - var essParams = runData.DriverData.EngineStopStart; + //var essParams = runData.DriverData.EngineStopStart; var engFuel = runData.EngineData.Fuels.First(x => x.FuelData.Equals(fuel)); var fcIceIdle = engFuel.ConsumptionMap.GetFuelConsumptionValue( @@ -94,8 +99,6 @@ namespace TUGraz.VectoCore.OutputData runData.BusAuxiliaries?.PneumaticUserInputsConfig.CompressorMap .Interpolate(runData.EngineData.IdleSpeed); - - var f = new FuelConsumptionCorrection { Fuel = fuel, Distance = distance != null && distance.IsGreater(0) ? distance : null, @@ -105,26 +108,24 @@ namespace TUGraz.VectoCore.OutputData FcModSum = modData.TotalFuelConsumption(ModalResultField.FCFinal, fuel), FcESS_EngineStart = engLine * modData.WorkEngineStart(), - FcESS_AuxStandstill_ICEOff = r.EnergyAuxICEOffStandstill * engLine * - essParams.UtilityFactorStandstill, - FcESS_AuxStandstill_ICEOn = - r.EnergyAuxICEOnStandstill * engLine * (1 - essParams.UtilityFactorStandstill) + - fcIceIdle * r.ICEOffTimeStandstill * (1 - essParams.UtilityFactorStandstill), + FcESS_AuxStandstill_ICEOff = r.EnergyAuxICEOffStandstill_UF * engLine , + FcESS_AuxStandstill_ICEOn = r.EnergyAuxICEOnStandstill_UF * engLine + + fcIceIdle * r.ICEOffTimeStandstill * (1 - r.UtilityFactorStandstill), - FcESS_AuxDriving_ICEOff = r.EnergyAuxICEOffDriving * engLine * essParams.UtilityFactorDriving, - FcESS_AuxDriving_ICEOn = r.EnergyAuxICEOnDriving * engLine * (1 - essParams.UtilityFactorDriving) + - fcIceIdle * r.ICEOffTimeDriving * (1 - essParams.UtilityFactorDriving), + FcESS_AuxDriving_ICEOff = r.EnergyAuxICEOffDriving_UF * engLine, + FcESS_AuxDriving_ICEOn = r.EnergyAuxICEOnDriving_UF * engLine + + fcIceIdle * r.ICEOffTimeDriving * (1 - r.UtilityFactorDriving), FcESS_DCDCMissing = r.EnergyDCDCMissing * engLine, FcBusAuxPSAirDemand = engLine * r.WorkBusAuxPSCorr, FcBusAuxPSDragICEOffStandstill = comp == null ? 0.SI<Kilogram>() - : comp.PowerOff * r.ICEOffTimeStandstill * engLine * (1 - essParams.UtilityFactorStandstill), + : comp.PowerOff * r.ICEOffTimeStandstill * engLine * (1 - r.UtilityFactorStandstill), FcBusAuxPSDragICEOffDriving = comp == null ? 0.SI<Kilogram>() - : comp.PowerOff * r.ICEOffTimeDriving * engLine * (1 - essParams.UtilityFactorDriving), - FcREESSSoc = r.DeltaEReessMech * engLine, + : comp.PowerOff * r.ICEOffTimeDriving * engLine * (1 - r.UtilityFactorDriving), + //FcREESSSoc = r.DeltaEReessMech * engLine, FcBusAuxEs = engLine * r.WorkBusAuxESMech, FcWHR = engLine * r.WorkWHR, FcAuxHtr = 0.SI<Kilogram>() @@ -247,6 +248,14 @@ namespace TUGraz.VectoCore.OutputData } //public WattSecond WorkESS { get; set; } + public WattSecond WorkESSMissing + { + get + { + return EnergyAuxICEOffStandstill_UF + EnergyAuxICEOffDriving_UF + EnergyAuxICEOnDriving_UF + + EnergyAuxICEOnStandstill_UF; + } + } public WattSecond WorkWHREl { get; set; } public WattSecond WorkWHRElMech { get; set; } public WattSecond WorkWHRMech { get; set; } @@ -286,19 +295,40 @@ namespace TUGraz.VectoCore.OutputData public Second ICEOffTimeStandstill { get; set; } public WattSecond EnergyAuxICEOffStandstill { get; set; } + + public WattSecond EnergyAuxICEOffStandstill_UF {get + { + return EnergyAuxICEOffStandstill * UtilityFactorStandstill; + } } + + public double UtilityFactorStandstill { get; set; } + public WattSecond EnergyAuxICEOnStandstill { get; set; } + + public WattSecond EnergyAuxICEOnStandstill_UF + { + get { return EnergyAuxICEOnStandstill * (1 - UtilityFactorStandstill); } + } + public Watt AvgAuxPowerICEOnStandstill => ICEOffTimeStandstill.IsEqual(0) ? 0.SI<Watt>() : EnergyAuxICEOnStandstill / ICEOffTimeStandstill; public Second ICEOffTimeDriving { get; set; } public WattSecond EnergyAuxICEOffDriving { get; set; } + public WattSecond EnergyAuxICEOffDriving_UF { get { return EnergyAuxICEOffDriving * UtilityFactorDriving; } } + public double UtilityFactorDriving { get; set; } + public WattSecond EnergyAuxICEOnDriving { get; set; } + public WattSecond EnergyAuxICEOnDriving_UF { get + { + return EnergyAuxICEOnDriving * (1 - UtilityFactorDriving); + } } public Watt AvgAuxPowerICEOnDriving => ICEOffTimeDriving.IsEqual(0) ? 0.SI<Watt>() : EnergyAuxICEOnDriving / ICEOffTimeDriving; public WattSecond EnergyDCDCMissing { get; set; } public NormLiter CorrectedAirDemand { get; set; } public NormLiter DeltaAir { get; set; } - public WattSecond DeltaEReessMech { get; set; } + //public WattSecond DeltaEReessMech { get; set; } #endregion } @@ -334,7 +364,7 @@ namespace TUGraz.VectoCore.OutputData } public Kilogram FcBusAuxEs { get; set; } public Kilogram FcWHR { get; set; } - public Kilogram FcREESSSoc { get; set; } + //public Kilogram FcREESSSoc { get; set; } public Kilogram FcAuxHtr { get; set; } @@ -343,9 +373,9 @@ namespace TUGraz.VectoCore.OutputData public Kilogram FcBusAuxPsCorr => FcEssCorr + FcBusAuxPs; public Kilogram FcBusAuxEsCorr => FcBusAuxPsCorr + FcBusAuxEs; public Kilogram FcWHRCorr => FcBusAuxEsCorr + FcWHR; - public Kilogram FcREESSSoCCorr => FcWHRCorr + FcREESSSoc; + //public Kilogram FcREESSSoCCorr => FcWHRCorr + FcREESSSoc; - public Kilogram FcAuxHtrCorr => FcREESSSoCCorr + FcAuxHtr; + public Kilogram FcAuxHtrCorr => FcWHRCorr + FcAuxHtr; public Kilogram FcFinal => FcAuxHtrCorr; @@ -360,12 +390,12 @@ namespace TUGraz.VectoCore.OutputData public KilogramPerSecond FC_WHR_CORR_H => Duration != null ? (FcWHRCorr / Duration) : null; public KilogramPerSecond FC_AUXHTR_H => Duration != null ? (FcAuxHtr / Duration) : null; public KilogramPerSecond FC_AUXHTR_H_CORR => Duration != null ? (FcAuxHtrCorr / Duration) : null; - public KilogramPerSecond FC_REESS_SOC_H => Duration != null ? FcREESSSoc / Duration : null; - public KilogramPerSecond FC_REESS_SOC_CORR_H => Duration != null ? (FcREESSSoCCorr / Duration) : null; + //public KilogramPerSecond FC_REESS_SOC_H => Duration != null ? FcREESSSoc / Duration : null; + //public KilogramPerSecond FC_REESS_SOC_CORR_H => Duration != null ? (FcREESSSoCCorr / Duration) : null; public KilogramPerSecond FC_FINAL_H => Duration != null ? FcFinal / Duration : null; - public KilogramPerMeter FC_REESS_SOC_KM => Distance != null ? FcREESSSoc / Distance : null; - public KilogramPerMeter FC_REESS_SOC_CORR_KM => Distance != null ? (FcREESSSoCCorr / Distance) : null; + //public KilogramPerMeter FC_REESS_SOC_KM => Distance != null ? FcREESSSoc / Distance : null; + //public KilogramPerMeter FC_REESS_SOC_CORR_KM => Distance != null ? (FcREESSSoCCorr / Distance) : null; public KilogramPerMeter FC_ESS_KM => Distance != null ? (FcESS / Distance) : null; public KilogramPerMeter FC_ESS_CORR_KM => Distance != null ? (FcEssCorr / Distance) : null; public KilogramPerMeter FC_WHR_CORR_KM => Distance != null ? (FcWHRCorr / Distance) : null; diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs index cd780a1d8d9b567017c8d0cbab4a58d871f1ccb8..b811d6d6244d047c2a6d7be97d0425705af47f12 100644 --- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs @@ -64,8 +64,8 @@ namespace TUGraz.VectoCore.OutputData Fields.FC_BusAux_PS_CORR_H, Fields.FC_BusAux_PS_CORR_KM, Fields.FC_BusAux_ES_CORR_H, Fields.FC_BusAux_ES_CORR_KM, Fields.FCWHR_H_CORR, Fields.FCWHR_KM_CORR, - Fields.FC_HEV_SOC_H, Fields.FC_HEV_SOC_KM, - Fields.FC_HEV_SOC_CORR_H, Fields.FC_HEV_SOC_CORR_KM, + //Fields.FC_HEV_SOC_H, Fields.FC_HEV_SOC_KM, + //Fields.FC_HEV_SOC_CORR_H, Fields.FC_HEV_SOC_CORR_KM, Fields.FC_AUXHTR_H, Fields.FC_AUXHTR_KM, Fields.FC_AUXHTR_H_CORR, Fields.FC_AUXHTR_KM_CORR, Fields.FCFINAL_H, Fields.FCFINAL_KM, Fields.FCFINAL_LITERPER100KM, Fields.FCFINAL_LITERPER100TKM, @@ -166,7 +166,7 @@ namespace TUGraz.VectoCore.OutputData Tuple.Create(Fields.TCU_MODEL, typeof(string)), Tuple.Create(Fields.ADAS_TECHNOLOGY_COMBINATION, typeof(string)), Tuple.Create(Fields.PTO_TECHNOLOGY, typeof(string)), - Tuple.Create(Fields.REESS_CAPACITY, typeof(string)), + //Tuple.Create(Fields.REESS_CAPACITY, typeof(string)), //Tuple.Create(PTO_OTHER_ELEMENTS, typeof(string)), }.Select(x => new DataColumn(x.Item1, x.Item2)).ToArray()); @@ -179,9 +179,9 @@ namespace TUGraz.VectoCore.OutputData Table.Columns.AddRange( new[] { Fields.CO2_KM, Fields.CO2_TKM, Fields.CO2_M3KM, /*Fields.CO2_PKM, */ Fields.P_WHEEL, Fields.P_WHEEL_POS, Fields.P_FCMAP, Fields.P_FCMAP_POS, - Fields.E_FCMAP_POS, Fields.E_FCMAP_NEG, Fields.E_POWERTRAIN_INERTIA, Fields.E_AUX, Fields.E_AUX_EL_HV, Fields.E_CLUTCH_LOSS, + Fields.E_FCMAP_POS, Fields.E_FCMAP_NEG, Fields.E_POWERTRAIN_INERTIA, Fields.E_AUX, /*Fields.E_AUX_EL_HV,*/ Fields.E_CLUTCH_LOSS, Fields.E_TC_LOSS, Fields.E_SHIFT_LOSS, Fields.E_GBX_LOSS, Fields.E_RET_LOSS, Fields.E_ANGLE_LOSS, - Fields.E_AXL_LOSS, Fields.E_BRAKE, Fields.E_VEHICLE_INERTIA, Fields.E_WHEEL, Fields.E_AIR, Fields.E_ROLL, Fields.E_GRAD, + Fields.E_AXL_LOSS, Fields.E_BRAKE, Fields.E_VEHICLE_INERTIA, Fields.E_WHEEL, Fields.E_AIR, Fields.E_ROLL, Fields.E_GRAD, Fields.E_AUX_ESS_missing, Fields.AirConsumed, Fields.AirGenerated, Fields.E_PS_CompressorOff, Fields.E_PS_CompressorOn, Fields.E_BusAux_ES_consumed, Fields.E_BusAux_ES_generated, Fields.Delta_E_BusAux_Battery, Fields.E_BusAux_PS_corr, Fields.E_BusAux_ES_mech_corr, @@ -436,9 +436,9 @@ namespace TUGraz.VectoCore.OutputData row[FcCol(Fields.FC_BusAux_PS_CORR_H, suffix)] = fuelConsumption.FC_BusAux_PS_CORR_H?.ConvertToGrammPerHour(); row[FcCol(Fields.FC_BusAux_ES_CORR_H, suffix)] = fuelConsumption.FC_BusAux_ES_CORR_H?.ConvertToGrammPerHour(); row[FcCol(Fields.FCWHR_H_CORR, suffix)] = fuelConsumption.FC_WHR_CORR_H?.ConvertToGrammPerHour(); - row[FcCol(Fields.FC_HEV_SOC_CORR_H, suffix)] = fuelConsumption.FC_REESS_SOC_CORR_H?.ConvertToGrammPerHour(); - row[FcCol(Fields.FC_HEV_SOC_H, suffix)] = fuelConsumption.FC_REESS_SOC_H?.ConvertToGrammPerHour(); - row[FcCol(Fields.FC_AUXHTR_H, suffix)] = fuelConsumption.FC_AUXHTR_H?.ConvertToGrammPerHour(); + //row[FcCol(Fields.FC_HEV_SOC_CORR_H, suffix)] = fuelConsumption.FC_REESS_SOC_CORR_H?.ConvertToGrammPerHour(); + //row[FcCol(Fields.FC_HEV_SOC_H, suffix)] = fuelConsumption.FC_REESS_SOC_H?.ConvertToGrammPerHour(); + row[FcCol(Fields.FC_AUXHTR_H, suffix)] = fuelConsumption.FC_AUXHTR_H?.ConvertToGrammPerHour(); row[FcCol(Fields.FC_AUXHTR_H_CORR, suffix)] = fuelConsumption.FC_AUXHTR_H_CORR?.ConvertToGrammPerHour(); row[FcCol(Fields.FCFINAL_H, suffix)] = fuelConsumption.FC_FINAL_H?.ConvertToGrammPerHour(); @@ -446,8 +446,8 @@ namespace TUGraz.VectoCore.OutputData row[FcCol(Fields.FCWHR_KM_CORR, suffix)] = fuelConsumption.FC_WHR_CORR_KM?.ConvertToGrammPerKiloMeter(); row[FcCol(Fields.FC_BusAux_PS_CORR_KM, suffix)] = fuelConsumption.FC_BusAux_PS_CORR_KM?.ConvertToGrammPerKiloMeter(); row[FcCol(Fields.FC_BusAux_ES_CORR_KM, suffix)] = fuelConsumption.FC_BusAux_ES_CORR_KM?.ConvertToGrammPerKiloMeter(); - row[FcCol(Fields.FC_HEV_SOC_CORR_KM, suffix)] = fuelConsumption.FC_REESS_SOC_CORR_KM?.ConvertToGrammPerKiloMeter(); - row[FcCol(Fields.FC_HEV_SOC_KM, suffix)] = fuelConsumption.FC_REESS_SOC_KM?.ConvertToGrammPerKiloMeter(); + //row[FcCol(Fields.FC_HEV_SOC_CORR_KM, suffix)] = fuelConsumption.FC_REESS_SOC_CORR_KM?.ConvertToGrammPerKiloMeter(); + //row[FcCol(Fields.FC_HEV_SOC_KM, suffix)] = fuelConsumption.FC_REESS_SOC_KM?.ConvertToGrammPerKiloMeter(); row[FcCol(Fields.FC_AUXHTR_KM, suffix)] = fuelConsumption.FC_AUXHTR_KM?.ConvertToGrammPerKiloMeter(); row[FcCol(Fields.FC_AUXHTR_KM_CORR, suffix)] = fuelConsumption.FC_AUXHTR_KM_CORR?.ConvertToGrammPerKiloMeter(); @@ -648,6 +648,7 @@ namespace TUGraz.VectoCore.OutputData row[Fields.E_AIR] = modData.WorkAirResistance().ConvertToKiloWattHour(); row[Fields.E_ROLL] = modData.WorkRollingResistance().ConvertToKiloWattHour(); row[Fields.E_GRAD] = modData.WorkRoadGradientResistance().ConvertToKiloWattHour(); + row[Fields.E_AUX_ESS_missing] = modData.CorrectedModalData.WorkESSMissing.ConvertToKiloWattHour(); if (runData.Cycle.CycleType == CycleType.VTP) { row[Fields.E_WHEEL] = modData.WorkWheels().ConvertToKiloWattHour(); } @@ -732,10 +733,8 @@ namespace TUGraz.VectoCore.OutputData row[Fields.ADAS_TECHNOLOGY_COMBINATION] = data.ADAS != null ? DeclarationData.ADASCombinations.Lookup(data.ADAS, gbxType).ID : ""; - var cap = ""; - - - row[Fields.REESS_CAPACITY] = cap; + //var cap = ""; + //row[Fields.REESS_CAPACITY] = cap; } private static void WriteAirdragData(AirdragData data, DataRow row) @@ -1028,10 +1027,10 @@ namespace TUGraz.VectoCore.OutputData 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 FC_HEV_SOC_H = "FC-SoC{0} [g/h]"; - public const string FC_HEV_SOC_KM = "FC-SoC{0} [g/km]"; - public const string FC_HEV_SOC_CORR_H = "FC-SoC_Corr{0} [g/h]"; - public const string FC_HEV_SOC_CORR_KM = "FC-SoC_Corr{0} [g/km]"; + //public const string FC_HEV_SOC_H = "FC-SoC{0} [g/h]"; + //public const string FC_HEV_SOC_KM = "FC-SoC{0} [g/km]"; + //public const string FC_HEV_SOC_CORR_H = "FC-SoC_Corr{0} [g/h]"; + //public const string FC_HEV_SOC_CORR_KM = "FC-SoC_Corr{0} [g/km]"; public const string FC_BusAux_PS_CORR_H = "FC-BusAux_PS_Corr{0} [g/h]"; @@ -1067,7 +1066,7 @@ namespace TUGraz.VectoCore.OutputData public const string E_AUX_FORMAT = "E_aux_{0} [kWh]"; public const string E_AUX = "E_aux_sum [kWh]"; - public const string E_AUX_EL_HV = "E_aux_el(HV) [kWh]"; + //public const string E_AUX_EL_HV = "E_aux_el(HV) [kWh]"; public const string E_ICE_START = "E_ice_start [kWh]"; public const string NUM_ICE_STARTS = "ice_starts [-]"; @@ -1110,6 +1109,8 @@ namespace TUGraz.VectoCore.OutputData public const string E_BusAux_HVAC_Mech = "E_BusAux_HVAC_mech [kWh]"; public const string E_BusAux_HVAC_El = "E_BusAux_HVAC_el [kWh]"; + public const string E_AUX_ESS_missing = "E_aux_ESS_missing [kWh]"; + public const string SPECIFIC_FC = "Specific FC{0} [g/kWh] wheel pos."; public const string ACC = "a [m/s^2]"; @@ -1184,34 +1185,34 @@ namespace TUGraz.VectoCore.OutputData public const string AVERAGE_POS_ACC = "a_avg_acc"; - public const string E_EM_DRIVE_FORMAT = "E_EM_{0}_drive [kWh]"; - public const string E_EM_GENERATE_FORMAT = "E_EM_{0}_gen [kWh]"; - public const string ETA_EM_DRIVE_FORMAT = "η_EM_{0}_drive"; - public const string ETA_EM_GEN_FORMAT = "η_EM_{0}_gen"; - - public const string E_EM_Mot_DRIVE_FORMAT = "E_EM_{0}-em_drive [kWh]"; - public const string E_EM_Mot_GENERATE_FORMAT = "E_EM_{0}-em_gen [kWh]"; - public const string ETA_EM_Mot_DRIVE_FORMAT = "η_EM_{0}-em_drive"; - public const string ETA_EM_Mot_GEN_FORMAT = "η_EM_{0}-em_gen"; - - public const string EM_AVG_SPEED_FORMAT = "n_EM_{0}-em_avg [rpm]"; - - public const string E_EM_OFF_Loss_Format = "E_EM_{0}_off_loss [kWh]"; - public const string E_EM_LOSS_TRANSM_FORMAT = "E_EM_{0}_transm_loss [kWh]"; - public const string E_EM_Mot_LOSS_FORMAT = "E_EM_{0}-em_loss [kWh]"; - public const string E_EM_LOSS_FORMAT = "E_EM_{0}_loss [kWh]"; - public const string E_EM_OFF_TIME_SHARE = "EM {0} off time share [%]"; - - public const string REESS_CAPACITY = "REESS Capacity"; - public const string REESS_StartSoC = "REESS Start SoC [%]"; - public const string REESS_EndSoC = "REESS End SoC [%]"; - public const string REESS_DeltaEnergy = "ΔE_REESS [kWh]"; - - public const string E_REESS_LOSS = "E_REESS_loss [kWh]"; - public const string E_REESS_T_chg = "E_REESS_T_chg [kWh]"; - public const string E_REESS_T_dischg = "E_REESS_T_dischg [kWh]"; - public const string E_REESS_int_chg = "E_REESS_int_chg [kWh]"; - public const string E_REESS_int_dischg = "E_REESS_int_dischg [kWh]"; + //public const string E_EM_DRIVE_FORMAT = "E_EM_{0}_drive [kWh]"; + //public const string E_EM_GENERATE_FORMAT = "E_EM_{0}_gen [kWh]"; + //public const string ETA_EM_DRIVE_FORMAT = "η_EM_{0}_drive"; + //public const string ETA_EM_GEN_FORMAT = "η_EM_{0}_gen"; + + //public const string E_EM_Mot_DRIVE_FORMAT = "E_EM_{0}-em_drive [kWh]"; + //public const string E_EM_Mot_GENERATE_FORMAT = "E_EM_{0}-em_gen [kWh]"; + //public const string ETA_EM_Mot_DRIVE_FORMAT = "η_EM_{0}-em_drive"; + //public const string ETA_EM_Mot_GEN_FORMAT = "η_EM_{0}-em_gen"; + + //public const string EM_AVG_SPEED_FORMAT = "n_EM_{0}-em_avg [rpm]"; + + //public const string E_EM_OFF_Loss_Format = "E_EM_{0}_off_loss [kWh]"; + //public const string E_EM_LOSS_TRANSM_FORMAT = "E_EM_{0}_transm_loss [kWh]"; + //public const string E_EM_Mot_LOSS_FORMAT = "E_EM_{0}-em_loss [kWh]"; + //public const string E_EM_LOSS_FORMAT = "E_EM_{0}_loss [kWh]"; + //public const string E_EM_OFF_TIME_SHARE = "EM {0} off time share [%]"; + + //public const string REESS_CAPACITY = "REESS Capacity"; + //public const string REESS_StartSoC = "REESS Start SoC [%]"; + //public const string REESS_EndSoC = "REESS End SoC [%]"; + //public const string REESS_DeltaEnergy = "ΔE_REESS [kWh]"; + + //public const string E_REESS_LOSS = "E_REESS_loss [kWh]"; + //public const string E_REESS_T_chg = "E_REESS_T_chg [kWh]"; + //public const string E_REESS_T_dischg = "E_REESS_T_dischg [kWh]"; + //public const string E_REESS_int_chg = "E_REESS_int_chg [kWh]"; + //public const string E_REESS_int_dischg = "E_REESS_int_dischg [kWh]"; } } } diff --git a/VectoCore/VectoCoreTest/Integration/FullCycleDeclarationTest.cs b/VectoCore/VectoCoreTest/Integration/FullCycleDeclarationTest.cs index 119cd4c37b019526c70759048350143331df2f63..e23183419a8d61625ed910ff586bb1f9a3f71a91 100644 --- a/VectoCore/VectoCoreTest/Integration/FullCycleDeclarationTest.cs +++ b/VectoCore/VectoCoreTest/Integration/FullCycleDeclarationTest.cs @@ -287,7 +287,7 @@ namespace TUGraz.VectoCore.Tests.Integration // test fuel consumption not negative Assert.IsTrue( modFile1Hz.Rows.Cast<DataRow>() - .All(r => r.ParseDouble(ModalResultField.FCWHTCc.GetShortCaption()).IsGreaterOrEqual(0)), + .All(r => r.ParseDouble(string.Format(ModalResultField.FCWHTCc.GetShortCaption(), "")).IsGreaterOrEqual(0)), "fuel consumption must not be negative."); // last v_act entry must be the same as original diff --git a/VectoCore/VectoCoreTest/Integration/TorqueLimitsTest.cs b/VectoCore/VectoCoreTest/Integration/TorqueLimitsTest.cs index 050b78b44949744d5348e703978df84efd3f887c..381985ffabdbd3ab5d180fdbac00c0de3632a5ce 100644 --- a/VectoCore/VectoCoreTest/Integration/TorqueLimitsTest.cs +++ b/VectoCore/VectoCoreTest/Integration/TorqueLimitsTest.cs @@ -228,18 +228,20 @@ namespace TUGraz.VectoCore.Tests.Integration var inputDataProvider = JSONInputDataFactory.ReadJsonJob(file); var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, fileWriter) { WriteModalResults = true, - ActualModalData = true + //ActualModalData = true }; var jobContainer = new JobContainer(sumData); jobContainer.AddRuns(factory); - jobContainer.Execute(); - jobContainer.WaitFinished(); + //jobContainer.Runs[4].RunWorkerAsync().Wait(); - Assert.IsTrue(jobContainer.Runs.All(r => r.Success), string.Concat(jobContainer.Runs.Select(r => r.ExecException))); - } + jobContainer.Execute(); + jobContainer.WaitFinished(); + + Assert.IsTrue(jobContainer.Runs.All(r => r.Success), string.Concat(jobContainer.Runs.Select(r => r.ExecException))); + } [TestCase(EngineSpeedLimitJobDecl), Category("LongRunning")] public void TestRunEngineSpeedLimitedSimulations(string file) diff --git a/VectoCore/VectoCoreTest/Reports/ModDataPostprocessingTest.cs b/VectoCore/VectoCoreTest/Reports/ModDataPostprocessingTest.cs index 81b7030d6e6b6145abe0c90a78de6036b8548f04..d124f005131a1d54b1f89315eec0ee08798f8e23 100644 --- a/VectoCore/VectoCoreTest/Reports/ModDataPostprocessingTest.cs +++ b/VectoCore/VectoCoreTest/Reports/ModDataPostprocessingTest.cs @@ -171,6 +171,8 @@ namespace TUGraz.VectoCore.Tests.Reports var E_auxICEOnStandstill = (P_on * T2).Value(); // 46054.609042105534 var E_auxICEOffStandstill = (P_off * T2).Value(); // 15351.536347368512 + var E_auxESSMissing = E_auxICEOnStandstill * (1 - UF_ESS_Standstill) + E_auxICEOffStandstill * UF_ESS_Standstill; + var fcEssStandStillOff = E_auxICEOffStandstill * k_engline * UF_ESS_Standstill; // 0.0003034945726763096 var fcEssStandStillOn = (E_auxICEOnStandstill * k_engline + (fcIdle * T2).Value()) * (1 - UF_ESS_Standstill); // 0.00400097222027925 @@ -185,6 +187,8 @@ namespace TUGraz.VectoCore.Tests.Reports Assert.AreEqual(E_auxICEOnStandstill, corr.EnergyAuxICEOnStandstill.Value(), 1e-3); Assert.AreEqual(E_auxICEOffStandstill, corr.EnergyAuxICEOffStandstill.Value(), 1e-3); + Assert.AreEqual(E_auxESSMissing, corr.WorkESSMissing.Value(), 1e-3); + Assert.AreEqual(0, corr.EnergyAuxICEOnDriving.Value(), 1e-3); Assert.AreEqual(0, corr.EnergyAuxICEOffDriving.Value(), 1e-3); @@ -324,6 +328,8 @@ namespace TUGraz.VectoCore.Tests.Reports var E_auxICEOnDriving = (P_on * T2).Value(); // 46054.609042105534; var E_auxICEOffDriving = (P_off * T2).Value(); // 15351.536347368512 + var E_auxESSMissing = E_auxICEOnDriving * (1 - UF_ESS_Driving) + E_auxICEOffDriving * UF_ESS_Driving; + var fcIdle = fuel.ConsumptionMap.GetFuelConsumption(0.SI<NewtonMeter>(), runData.EngineData.IdleSpeed).Value .Value() * fuel.FuelConsumptionCorrectionFactor; // 0.0002929177777777778 @@ -344,6 +350,8 @@ namespace TUGraz.VectoCore.Tests.Reports Assert.AreEqual(E_auxICEOnDriving, corr.EnergyAuxICEOnDriving.Value(), 1e-3); Assert.AreEqual(E_auxICEOffDriving, corr.EnergyAuxICEOffDriving.Value(), 1e-3); + Assert.AreEqual(E_auxESSMissing, corr.WorkESSMissing.Value(), 1e-3); + var f = corr.FuelCorrection[fuel.FuelData.FuelType] as FuelConsumptionCorrection; Assert.AreEqual(0, f.FcESS_AuxStandstill_ICEOff.Value(), 1e-12); @@ -486,6 +494,7 @@ namespace TUGraz.VectoCore.Tests.Reports var E_auxICEOffStandstill = (P_off * T2).Value(); // 15351.536347368512 var E_ICEStart = (P_ICEStart * tStart).Value(); // 11525.53891554733 + var E_auxESSMissing = E_auxICEOnStandstill * (1 - UF_ESS_Standstill) + E_auxICEOffStandstill * UF_ESS_Standstill; var fcEssStandStillOff = E_auxICEOffStandstill * k_engline * UF_ESS_Standstill; // 0.0003034945726763096 var fcEssStandStillOn = @@ -503,6 +512,8 @@ namespace TUGraz.VectoCore.Tests.Reports Assert.AreEqual(E_auxICEOffStandstill, corr.EnergyAuxICEOffStandstill.Value(), 1e-3); Assert.AreEqual(E_ICEStart, modData.WorkEngineStart().Value()); + Assert.AreEqual(E_auxESSMissing, corr.WorkESSMissing.Value(), 1e-3); + Assert.AreEqual(0, corr.EnergyAuxICEOnDriving.Value(), 1e-3); Assert.AreEqual(0, corr.EnergyAuxICEOffDriving.Value(), 1e-3);