diff --git a/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs b/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs index ed6f39ed1639b8d72bbaaa7d224cdf3c5674671f..d4bf8eb6fa037e8fd1bb1aeca819b6e874b570be 100644 --- a/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs +++ b/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs @@ -174,6 +174,10 @@ namespace TUGraz.VectoCommon.InputData /// cf. VECTO Input Parameters.xlsx /// </summary> ITorqueConverterInputData TorqueConverter { get; } + + Second DownshiftAferUpshiftDelay { get; } + Second UpshiftAfterDownshiftDelay { get; } + MeterPerSquareSecond UpshiftMinAcceleration { get; } } public interface IEngineEngineeringInputData : IEngineDeclarationInputData diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs index 45d91b729493ae514abf347b2d84bb77248a0992..e55d23d01d7dca5e806ff107b132dde28279c89a 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs @@ -209,6 +209,36 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON get { return this; } } + public Second DownshiftAferUpshiftDelay + { + get + { + return Body["DownshiftAferUpshiftDelay"] == null + ? 10.SI<Second>() + : Body.GetEx<double>("DownshiftAferUpshiftDelay").SI<Second>(); + } + } + + public Second UpshiftAfterDownshiftDelay + { + get + { + return Body["UpshiftAfterDownshiftDelay"] == null + ? 10.SI<Second>() + : Body.GetEx<double>("UpshiftAfterDownshiftDelay").SI<Second>(); + } + } + + public MeterPerSquareSecond UpshiftMinAcceleration + { + get + { + return Body["UpshiftMinAcceleration"] == null + ? 0.1.SI<MeterPerSquareSecond>() + : Body.GetEx<double>("UpshiftMinAcceleration").SI<MeterPerSquareSecond>(); + } + } + #endregion #region ITorqueConverterInputData diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs index 05ea9d3790bbd48074d8878db1695e6a5d18b7ee..1f5714cbc1187ac283170dcb5e4b28da7dae1420 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs @@ -193,8 +193,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdaper TransmissionLossMap gearLossMap; retVal.Gears = gears.Select((gear, i) => { try { - if (gear.LossMap == null) + if (gear.LossMap == null) { throw new InvalidFileFormatException(string.Format("LossMap for Gear {0} is missing.", i + 1)); + } gearLossMap = TransmissionLossMap.Create(gear.LossMap, gear.Ratio, string.Format("Gear {0}", i + 1)); } catch (InvalidFileFormatException) { if (useEfficiencyFallback) { @@ -220,6 +221,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdaper TorqueConverterActive = false }); }).ToDictionary(kv => kv.Key, kv => kv.Value); + + retVal.DownshiftAfterUpshiftDelay = 10.SI<Second>(); + retVal.UpshiftAfterDownshiftDelay = 10.SI<Second>(); + retVal.UpshiftMinAcceleration = 0.1.SI<MeterPerSquareSecond>(); return retVal; } @@ -320,8 +325,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdaper var cdA = aerodynamicDragAera + deltaCdA; var degreeShare = (double)alphaStep / maxAlpha; - if (alpha == 0 || alpha == maxAlpha) + if (alpha == 0 || alpha == maxAlpha) { degreeShare /= 2; + } cdASum += degreeShare * cdA * ((vAirX * vAirX + vAirY * vAirY) / (vVeh * vVeh)).Cast<Scalar>(); } diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs index 9ee6ed3f824fb674cab524e41993ef621ba7c1af..fd38c2c1c3f6fc3b16a7e530bddd5f6687674688 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs @@ -167,6 +167,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdaper TorqueConverterActive = gear.TorqueConverterActive }); }).ToDictionary(kv => kv.Key, kv => kv.Value); + + retVal.DownshiftAfterUpshiftDelay = gearbox.DownshiftAferUpshiftDelay; + retVal.UpshiftAfterDownshiftDelay = gearbox.UpshiftAfterDownshiftDelay; + retVal.UpshiftMinAcceleration = gearbox.UpshiftMinAcceleration; return retVal; }