diff --git a/VectoCommon/VectoCommon/Utils/Validation.cs b/VectoCommon/VectoCommon/Utils/Validation.cs index 0f8a09e0fae001de5bdf70dfeae665e1deb77048..ebfe5f6b5d21df369c3ba563e091211e249aaae4 100644 --- a/VectoCommon/VectoCommon/Utils/Validation.cs +++ b/VectoCommon/VectoCommon/Utils/Validation.cs @@ -114,31 +114,19 @@ namespace TUGraz.VectoCommon.Utils const BindingFlags flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.FlattenHierarchy; - - if (m.MemberType == MemberTypes.Property) { - PropertyInfo prop = m as PropertyInfo ?? obj.GetProperty(m.Name, flags); - //var prop = obj.GetProperty(m.Name, flags); - if (prop != null) - { - //if (m is PropertyInfo prop) { - attributes = prop.GetCustomAttributes(typeof(T)) - .Cast<T>() - .Concat(obj.GetInterfaces().SelectMany(m.GetAttributes<T>)); - } + var prop = obj.GetProperty(m.Name, flags); + if (prop != null) { + attributes = prop.GetCustomAttributes(typeof(T)) + .Cast<T>() + .Concat(obj.GetInterfaces().SelectMany(m.GetAttributes<T>)); } - if (m.MemberType == MemberTypes.Field) { - FieldInfo field = m as FieldInfo ?? obj.GetField(m.Name, flags); - //var field = obj.GetField(m.Name, flags); - if (field != null) - { - //if (m is FieldInfo field) { - attributes = - attributes.Concat( - field.GetCustomAttributes(typeof(T)).Cast<T>().Concat(obj.GetInterfaces().SelectMany(m.GetAttributes<T>))); - } + var field = obj.GetField(m.Name, flags); + if (field != null) { + attributes = + attributes.Concat( + field.GetCustomAttributes(typeof(T)).Cast<T>().Concat(obj.GetInterfaces().SelectMany(m.GetAttributes<T>))); } - return attributes; } diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs b/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs index 452ffe4b465c6ce053736b34cfb22f25c69d8871..4b3973fa2a840e66bff85ed755ba63625c56e224 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs @@ -32,6 +32,7 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.ComponentModel.DataAnnotations; using System.Linq; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; @@ -249,7 +250,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl public virtual bool HasGearbox { get; private set; } - + [Required, ValidateObject] public virtual VectoRunData RunData { get; set; } public virtual ExecutionMode ExecutionMode { get; } diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs index 42ab3e035eaf0f5602dab383ca75efe89c42d179..027ee37c5867af81fe0e31d367ab8b75213c4d06 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs @@ -890,7 +890,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies // Tuple.Create((PerSecond)null, 0.SI<NewtonMeter>()); } var testRequest = RequestDryRun(absTime, dt, outTorque, outAngularVelocity, nextGear, emOff); - if (testRequest != null) { + if (testRequest != null && testRequest.Engine.EngineSpeed < ModelData.EngineData.FullLoadCurves[0].NTq99hSpeed) { var maxGbxTorque = StrategyParameters.MaxPropulsionTorque.FullLoadDriveTorque(testRequest.Gearbox.InputSpeed); candidates[nextGear] = Tuple.Create(maxGbxTorque * testRequest.Gearbox.InputSpeed, testRequest); } @@ -2123,10 +2123,12 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies if (resp.Source is TorqueConverter) { if (resp is ResponseUnderload) { + tmp.FuelCosts = double.NaN; tmp.IgnoreReason |= HybridConfigurationIgnoreReason.EngineTorqueDemandTooLow; } if (resp is ResponseOverload) { + tmp.FuelCosts = double.NaN; tmp.IgnoreReason |= HybridConfigurationIgnoreReason.EngineTorqueDemandTooHigh; } } diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs index 98f5a95bc26d54abe3d100286ee7caa3573543d3..9c79f3000afa2b66e3bb311cbea733a90ab8efee 100644 --- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs @@ -374,6 +374,7 @@ namespace TUGraz.VectoCore.OutputData } if (gearCount <= 0) { + AddResultRow(row); return; } @@ -660,7 +661,7 @@ namespace TUGraz.VectoCore.OutputData row[Fields.E_PS_CompressorOff] = modData.EnergyPneumaticCompressorPowerOff().ConvertToKiloWattHour(); row[Fields.E_PS_CompressorOn] = modData.EnergyPneumaticCompressorOn().ConvertToKiloWattHour(); - row[Fields.E_BusAux_ES_generated] = modData.EnergyBusAuxESGeneratedMech().ConvertToKiloWattHour(); + row[Fields.E_BusAux_ES_generated] = modData.EnergyBusAuxESGenerated().ConvertToKiloWattHour(); row[Fields.E_BusAux_ES_consumed] = modData.EnergyBusAuxESConsumed().ConvertToKiloWattHour(); row[Fields.Delta_E_BusAux_Battery] = (runData.BusAuxiliaries.ElectricalUserInputsConfig.AlternatorType == AlternatorType.Smart ? modData.DeltaSOCBusAuxBattery() * runData.BusAuxiliaries.ElectricalUserInputsConfig.ElectricStorageCapacity diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs index a1151ca3fa99b642a6ee5f0a593dfc0a4076fbb2..16602da9dbe35b5e12238133fd183d234bb87e5b 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs @@ -35,6 +35,7 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Data; using System.Diagnostics.CodeAnalysis; +using System.IO; using System.Linq; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; @@ -60,6 +61,12 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData [SuppressMessage("ReSharper", "UnusedMember.Local")] public class ValidationTestClass { + [OneTimeSetUp] + public void RunBeforeAnyTests() + { + Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); + } + /// <summary> /// VECTO-107 Check valid range of input parameters /// </summary>