diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/StrategyDataAdapter/HybridStrategyParameterDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/StrategyDataAdapter/HybridStrategyParameterDataAdapter.cs index 5a83a8bbf45288ab2d62a1f08863d0528307c1ee..1c0b18f08629a4bd8534d96d2bb60c537cee724f 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/StrategyDataAdapter/HybridStrategyParameterDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/StrategyDataAdapter/HybridStrategyParameterDataAdapter.cs @@ -81,13 +81,19 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen result.EquivalenceFactorDischarge = double.NaN; result.CostFactorSOCExponent = 5; + var tmpSystem = new BatterySystem(null, batterySystemData); + + SetGenericParameters(result, tmpSystem, superCapData, vehicleMass, out var deltaSoc); + switch (ovcMode) { case VectoRunData.OvcHevMode.NotApplicable: - SetGenericParameters(result, batterySystemData, superCapData, vehicleMass); + break; case VectoRunData.OvcHevMode.ChargeSustaining: + result.InitialSoc = (tmpSystem.MaxSoC + tmpSystem.MinSoC) / 2; break; case VectoRunData.OvcHevMode.ChargeDepleting: + result.InitialSoc = tmpSystem.MinSoC + deltaSoc; break; default: throw new ArgumentOutOfRangeException(nameof(ovcMode), ovcMode, null); @@ -100,10 +106,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen } - private void SetGenericParameters(HybridStrategyParameters result, BatterySystemData batterySystemData, - SuperCapData superCapData, Kilogram vehicleMass){ - var tmpSystem = new BatterySystem(null, batterySystemData); - var deltaSoc = CalculatedDeltaSocSHev(vehicleMass, batterySystemData, tmpSystem); + private void SetGenericParameters(HybridStrategyParameters result, BatterySystem tmpSystem, + SuperCapData superCapData, Kilogram vehicleMass, out double deltaSoc){ + + deltaSoc = CalculatedDeltaSocSHev(vehicleMass, tmpSystem); result.MinSoC = tmpSystem.MinSoC + 2 * deltaSoc; @@ -112,7 +118,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen if (result.MinSoC >= result.TargetSoC) { - deltaSoc = CalculatedDeltaSocSHev(vehicleMass, batterySystemData, tmpSystem, 50); + deltaSoc = CalculatedDeltaSocSHev(vehicleMass, tmpSystem, 50); //Small battery result.TargetSoC = tmpSystem.MaxSoC - 1 * deltaSoc; result.MinSoC = tmpSystem.MinSoC + 2 * deltaSoc; @@ -122,7 +128,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen } } - private double CalculatedDeltaSocSHev(Kilogram vehicleMass, BatterySystemData batterySystemData, + private double CalculatedDeltaSocSHev(Kilogram vehicleMass, BatterySystem tmpSystem, double kmph = 100) { diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/HybridStrategyParameters.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/HybridStrategyParameters.cs index 8be989c132b866ac889225214b7da7efef833f80..93c18b8c37ce1291cf1964cc324242b271246a99 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Data/HybridStrategyParameters.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/HybridStrategyParameters.cs @@ -32,5 +32,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data { // serial hybrid only: factor applied to the max propulsion power which the genset needs to provide in the optimal operating point public double GensetMinOptPowerFactor { get; set; } + + + public double InitialSoc { get; set; } } } \ No newline at end of file