diff --git a/VECTO/GUI/VehicleForm.vb b/VECTO/GUI/VehicleForm.vb index 2b0f9763217a2423621d6d3cf2a1a9d440f5d394..671152777634fd165c8c73f2dae879ae910cb0a6 100644 --- a/VECTO/GUI/VehicleForm.vb +++ b/VECTO/GUI/VehicleForm.vb @@ -122,7 +122,8 @@ Public Class VehicleForm _changed = False cbEmPos.DataSource = EnumHelper.GetKeyValuePairs(Of PowertrainPosition)(Function(t) t.GetLabel(), - Function(x) x <> PowertrainPosition.GEN) + Function(x) x <> PowertrainPosition.GEN _ + AndAlso x <> PowertrainPosition.HybridP0) NewVehicle() End Sub diff --git a/VectoCommon/VectoCommon/Models/PowertrainPosition.cs b/VectoCommon/VectoCommon/Models/PowertrainPosition.cs index ae6edc8132e74b590969357b163d036327ac9377..8cbc8af4677028e516c70a5a6385b804364c2e5a 100644 --- a/VectoCommon/VectoCommon/Models/PowertrainPosition.cs +++ b/VectoCommon/VectoCommon/Models/PowertrainPosition.cs @@ -72,14 +72,20 @@ namespace TUGraz.VectoCommon.InputData public static bool IsBatteryElectric(this PowertrainPosition pos) { - return pos == PowertrainPosition.BatteryElectricE2 || pos == PowertrainPosition.BatteryElectricE3 || - pos == PowertrainPosition.BatteryElectricE4; + switch (pos) { + case PowertrainPosition.BatteryElectricE2: + case PowertrainPosition.BatteryElectricE3: + case PowertrainPosition.BatteryElectricE4: + return true; + default: + return false; + } } public static bool IsParallelHybrid(this PowertrainPosition pos) { switch (pos) { - case PowertrainPosition.HybridP0: + //case PowertrainPosition.HybridP0: // special case currently modelled in BusAuxiliary as SmartAlternator. case PowertrainPosition.HybridP1: case PowertrainPosition.HybridP2: case PowertrainPosition.HybridP2_5: diff --git a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs index bb57cfc4460acb55eeca049457e81f636147ab82..14e0216082301ea06f305e2be208d0d3813f34c9 100644 --- a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs +++ b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs @@ -235,6 +235,10 @@ namespace TUGraz.VectoCore.Models.Simulation.Data } } + if (runData.ElectricMachinesData?.Any(e => e.Item1 == PowertrainPosition.HybridP0) ?? false){ + return new ValidationResult("P0 Hybrids are modeled as SmartAlternator in the BusAuxiliary model."); + } + return ValidationResult.Success; } diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs index 96e80a328e1c6fc34a35d7c6e0fc92751502517c..719309b25a5bd78db4a083b723420cffeb17f803 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs @@ -412,6 +412,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl if (data.ElectricMachinesData.Count != 1) { throw new VectoException("ParallelHybrid needs exactly one electric motor."); } + if (data.ElectricMachinesData.Any(e => e.Item1 == PowertrainPosition.HybridP0)) { + throw new VectoException("P0 Hybrids are modeled as SmartAlternator in the BusAuxiliary model."); + } var container = new VehicleContainer(data.ExecutionMode, _modData, _sumWriter) { RunData = data }; var es = ConnectREESS(data, container); @@ -665,7 +668,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl if (data.ElectricMachinesData.Count != 1) { throw new VectoException("Battery electric vehicle needs exactly one electric motor."); } - + var container = new VehicleContainer(data.ExecutionMode, _modData, _sumWriter) { RunData = data }; var es = ConnectREESS(data, container); diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs index 1008e5710834063b6f7a61b844bca297a81a22a2..54955db39f6ae5d4f853fbce13c490398f3040a3 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs @@ -82,8 +82,12 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl if (operatingPointList.Count > 0) { operatingPoint = SelectOperatingPoint(operatingPointList); } else { - Log.Warn( - "TorqueConverter Initialize: No operating point found. Using output as input values as fallback for initialize."); + if (outTorque.IsEqual(0) && outAngularVelocity.IsEqual(0)) { + Log.Info("TorqueConverter Initialize: No operating point found. Using output as input values as fallback for initialize."); + } + else { + Log.Warn("TorqueConverter Initialize: No operating point found. Using output as input values as fallback for initialize."); + } var inAngularVelocity = outAngularVelocity.LimitTo(DataBus.EngineInfo.EngineIdleSpeed, DataBus.EngineInfo.EngineN95hSpeed); operatingPoint = new TorqueConverterOperatingPoint { OutAngularVelocity = outAngularVelocity, diff --git a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs index 7f184f692a90c50aaa16230ab24c60c0565a9692..d3d1e1f2871e74d26b87b45f9eba681b29515ed4 100644 --- a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs +++ b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs @@ -260,7 +260,7 @@ public class JSONFileWriter : IOutputFileWriter body.Add(JsonKeys.Gearbox_GearboxType, gbx.Type.ToString()); var torqueConverterDict = new Dictionary<string, object> { { "Enabled", torqueConverter != null && gbx.Type.AutomaticTransmission() } }; - if (gbx.Type.AutomaticTransmission() && torqueConverter != null) { + if (gbx.Type.AutomaticTransmission() && gbx.Type != GearboxType.APTN) { torqueConverterDict.Add("File", GetRelativePath(torqueConverter.TCData.Source, Path.GetDirectoryName(filename))); torqueConverterDict.Add(JsonKeys.Gearbox_TorqueConverter_ReferenceRPM, Math.Round(torqueConverter.ReferenceRPM.AsRPM, 4)); torqueConverterDict.Add(JsonKeys.Gearbox_TorqueConverter_Inertia, torqueConverter.Inertia.Value());