diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs index af99cd376f0bdae41c28f18c999121df979f9a82..892ccdd565ea251fb3874aef7eefa5efbdbe7931 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.IO; using System.Linq; using Newtonsoft.Json.Linq; @@ -71,11 +72,17 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON // DoorActuationTimeSecond electricalUserInputsConfig.DoorActuationTimeSecond = elData.GetEx<double>("DoorActuationTimeSecond").SI<Second>(); + var averageCurrentDemandInclBaseLoad = elData["ElectricalConsumers"] + .GetEx<double>("AverageCurrentDemandInclBaseLoad").SI<Ampere>(); + var averageCurrentDemandWithoutBaseLoad = elData["ElectricalConsumers"] + .GetEx<double>("AverageCurrentDemandWithoutBaseLoad").SI<Ampere>(); - //electricalUserInputsConfig.AverageCurrentDemandInclBaseLoad = elData["ElectricalConsumers"] - // .GetEx<double>("AverageCurrentDemandInclBaseLoad").SI<Ampere>(); - //electricalUserInputsConfig.AverageCurrentDemandWithoutBaseLoad = elData["ElectricalConsumers"] - //.GetEx<double>("AverageCurrentDemandWithoutBaseLoad").SI<Ampere>(); + electricalUserInputsConfig.ElectricalConsumers = new Dictionary<string, Tuple<bool, Ampere>>(); + electricalUserInputsConfig.ElectricalConsumers["BaseLoad"] = + Tuple.Create(true, averageCurrentDemandInclBaseLoad - averageCurrentDemandWithoutBaseLoad); + + electricalUserInputsConfig.ElectricalConsumers["Consumers"] = + Tuple.Create(false, averageCurrentDemandWithoutBaseLoad); // PowerNetVoltage electricalUserInputsConfig.PowerNetVoltage = elData.GetEx<double>("PowerNetVoltage").SI<Volt>(); diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs index b4599d515eb95292102ba95db5f3750a2ba0debe..43bae875cf7f1f641cc5534f1548ff40df536072 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs @@ -65,6 +65,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter } var retVal = SetCommonAirdragData(completedVehicle.Components.AirdragInputData); + retVal.CrossWindCorrectionMode = CrossWindCorrectionMode.DeclarationModeCorrection; var aerodynamicDragArea = completedVehicle.Components.AirdragInputData.AirDragArea; retVal.DeclaredAirdragArea = aerodynamicDragArea; diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterHeavyLorry.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterHeavyLorry.cs index 31684aaf61db1cad621d99f156a77a00f3ffb0b8..e6cec6044e943a49b021f362b7982aa08ed98fed 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterHeavyLorry.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterHeavyLorry.cs @@ -655,7 +655,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter } var retVal = SetCommonAirdragData(airdragInputData); - + retVal.CrossWindCorrectionMode = CrossWindCorrectionMode.DeclarationModeCorrection; retVal.DeclaredAirdragArea = mission.MissionType == MissionType.Construction ? mission.DefaultCDxA : airdragInputData.AirDragArea; @@ -677,6 +677,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter return new AirdragData() { CertificationMethod = CertificationMethod.StandardValues, + CrossWindCorrectionMode = CrossWindCorrectionMode.DeclarationModeCorrection, DeclaredAirdragArea = mission.DefaultCDxA, CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup( aerodynamicDragArea, diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricsUserInputsConfig.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricsUserInputsConfig.cs index 2dac35a9430f15167987557adad4254c785b5715..0fe36a672b98ced73e4522f891197fe4bb963763 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricsUserInputsConfig.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricsUserInputsConfig.cs @@ -42,10 +42,10 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric get { return ElectricalConsumers.Select(x => $"{x.Key}: {x.Value.Item2} ({x.Value.Item1})").ToArray(); } } - public Ampere AverageCurrentDemandInclBaseLoad { get { return ElectricalConsumers.Select(x => x.Value.Item2).Sum().Cast<Ampere>(); } } + public Ampere AverageCurrentDemandInclBaseLoad { get { return ElectricalConsumers?.Select(x => x.Value.Item2).Sum().Cast<Ampere>() ?? 0.SI<Ampere>(); } } public Ampere AverageCurrentDemandWithoutBaseLoad { get { - return ElectricalConsumers.Where(x => !x.Value.Item1).Select(x => x.Value.Item2).Sum().Cast<Ampere>(); + return ElectricalConsumers?.Where(x => !x.Value.Item1).Select(x => x.Value.Item2).Sum().Cast<Ampere>() ?? 0.SI<Ampere>(); } } public Watt MaxAlternatorPower { get; set; } diff --git a/VectoCore/VectoCore/Models/Declaration/Fan.cs b/VectoCore/VectoCore/Models/Declaration/Fan.cs index aacbcb3dcc5094fded47f0d183af6f9681130223..95fe70f25df75342b289a63a8bf425b2ee625bef 100644 --- a/VectoCore/VectoCore/Models/Declaration/Fan.cs +++ b/VectoCore/VectoCore/Models/Declaration/Fan.cs @@ -48,6 +48,9 @@ namespace TUGraz.VectoCore.Models.Declaration public Watt LookupPowerDemand(VehicleClass vehicleClass, MissionType mission, string technology) { + if (string.IsNullOrWhiteSpace(technology)) { + technology = "Crankshaft mounted - Electronically controlled visco clutch"; + } if (!GetTechnologies().Contains(technology)) { throw new VectoException($"Auxiliary Lookup Error: Unknown Fan technology: '{technology}'"); } @@ -119,10 +122,7 @@ namespace TUGraz.VectoCore.Models.Declaration public override AuxDemandEntry Lookup(MissionType mission, string technology, bool electrical) { - if (string.IsNullOrWhiteSpace(technology)) - { - technology = "Crankshaft mounted - Electronically controlled visco clutch"; - } + var lookup = Tuple.Create(mission, technology, electrical); if (Data.ContainsKey(lookup)) { return Data[lookup]; diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj index 056d6e23614d598b2c05e310c8ab319259f2312d..a4318ff5dd357691598a3756241d46d248073275 100644 --- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj @@ -3565,6 +3565,9 @@ <Content Include="TestData\Integration\VTPMode\GenericVehicle\Tractor_4x2_vehicle-class-5_Generic vehicle.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> + <Content Include="TestData\Integration\VTPMode\MediumLorry\vecto_vehicle-medium_lorry_4x2F.RSLT_MANUFACTURER.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> <Content Include="TestData\Integration\VTPMode\MediumLorry\vecto_vehicle-medium_lorry_4x2F.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content>