diff --git a/VectoCore/VectoCore/OutputData/ModalDataPostprocessingCorrection.cs b/VectoCore/VectoCore/OutputData/ModalDataPostprocessingCorrection.cs index e0aa4832bcdedac3fefe2ea5fe2bc21f66e9c994..9fe67fbc2dd5474e809a282cf6b785cf54a5e509 100644 --- a/VectoCore/VectoCore/OutputData/ModalDataPostprocessingCorrection.cs +++ b/VectoCore/VectoCore/OutputData/ModalDataPostprocessingCorrection.cs @@ -309,7 +309,7 @@ namespace TUGraz.VectoCore.OutputData var workBusAuxPSCompOff = nonSmartAirGen.Sum(x => x.P_compOff * x.dt); var workBusAuxPSCompOn = nonSmartAirGen.Sum(x => x.P_compOn * x.dt); - var airBusAuxPSON = nonSmartAirGen.Sum(x => x.Nl_alwaysOn); + var airBusAuxPSON = nonSmartAirGen.Sum(x => x.Nl_alwaysOn) ?? 0.SI<NormLiter>(); r.kAir = airBusAuxPSON.IsEqual(0) ? 0.SI(Unit.SI.Watt.Second.Per.Cubic.Meter) diff --git a/VectoCore/VectoCoreTest/Models/Declaration/BusAux/SSMBusAuxModelParameters.cs b/VectoCore/VectoCoreTest/Models/Declaration/BusAux/SSMBusAuxModelParameters.cs new file mode 100644 index 0000000000000000000000000000000000000000..46eaba35fcb741552583fc740629f25689110dd3 --- /dev/null +++ b/VectoCore/VectoCoreTest/Models/Declaration/BusAux/SSMBusAuxModelParameters.cs @@ -0,0 +1,122 @@ +using System.Collections.Generic; +using System.Linq; +using Moq; +using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.Impl; +using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents; +using TUGraz.VectoCore.Models.Declaration; +using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Models.SimulationComponent.Data; + +namespace TUGraz.VectoCore.Tests.Models.Declaration.BusAux; + +static internal class SSMBusAuxModelParameters +{ + public static IAuxiliaryConfig CreateBusAuxInputParameters(MissionType missionType, VehicleClass vehicleClass, + VectoSimulationJobType vehicleType, + VehicleCode vehicleCode, RegistrationClass registrationClass, + AxleConfiguration axleconfiguration, bool articulated, + bool lowEntry, Meter length, + Meter height, Meter width, int numPassengersLowerdeck, int numPassengersUpperdeck, + HeatPumpType hpHeatingDriver, HeatPumpType hpCoolingDriver, HeatPumpType hpHeatingPassenger, + HeatPumpType hpCoolingPassenger, Watt auxHeaterPower, + bool airElectricHeater, bool waterElectricHeater, bool otherElectricHeater, + BusHVACSystemConfiguration hvacConfig, bool doubleGlazing, bool adjustableAuxHeater, + bool separateAirdistributionDicts, bool adjustableCoolantThermostat, bool engineWasteGasHeatExchanger, + string[] steeringpumps, string fanTech, AlternatorType alternatorTech, Meter entranceHeight) + { + var dao = new SpecificCompletedBusAuxiliaryDataAdapter(new PrimaryBusAuxiliaryDataAdapter()); + + var segment = DeclarationData.CompletedBusSegments.Lookup(axleconfiguration.NumAxles(), + vehicleCode, registrationClass, numPassengersLowerdeck, height, lowEntry); + var mission = segment.Missions.FirstOrDefault(); + + var primaryVehicle = new Mock<IVehicleDeclarationInputData>(); + primaryVehicle.Setup(p => p.VehicleType).Returns(vehicleType); + primaryVehicle.Setup(p => p.AxleConfiguration).Returns(axleconfiguration); + primaryVehicle.Setup(p => p.Articulated).Returns(articulated); + + var primaryComponents = new Mock<IVehicleComponentsDeclaration>(); + var primaryBusAux = new Mock<IBusAuxiliariesDeclarationData>(); + var primaryBusAuxPS_S = new Mock<IPneumaticSupplyDeclarationData>(); + var primaryBusAuxPS_C = new Mock<IPneumaticConsumersDeclarationData>(); + var primaryBusAuxHVAC = new Mock<IHVACBusAuxiliariesDeclarationData>(); + var primaryBusAuxES = new Mock<IElectricSupplyDeclarationData>(); + primaryVehicle.Setup(p => p.Components).Returns(primaryComponents.Object); + primaryComponents.Setup(p => p.BusAuxiliaries).Returns(primaryBusAux.Object); + primaryBusAux.Setup(p => p.PneumaticSupply).Returns(primaryBusAuxPS_S.Object); + primaryBusAux.Setup(p => p.PneumaticConsumers).Returns(primaryBusAuxPS_C.Object); + primaryBusAux.Setup(p => p.HVACAux).Returns(primaryBusAuxHVAC.Object); + primaryBusAux.Setup(p => p.ElectricSupply).Returns(primaryBusAuxES.Object); + + primaryBusAux.Setup(p => p.FanTechnology).Returns(fanTech); + primaryBusAux.Setup(p => p.SteeringPumpTechnology).Returns(steeringpumps.ToList); + + primaryBusAuxPS_S.Setup(p => p.CompressorDrive).Returns(CompressorDrive.electrically); + primaryBusAuxPS_S.Setup(p => p.CompressorSize).Returns("Medium Supply 2-stage"); + primaryBusAuxPS_S.Setup(p => p.SmartAirCompression).Returns(false); + primaryBusAuxPS_S.Setup(p => p.SmartRegeneration).Returns(false); + + primaryBusAuxES.Setup(p => p.AlternatorTechnology).Returns(alternatorTech); + primaryBusAuxES.Setup(p => p.Alternators).Returns(new[] { new AlternatorInputData(28.3.SI<Volt>(), 50.SI<Ampere>()) }.Cast<IAlternatorDeclarationInputData>().ToList()); + primaryBusAuxES.Setup(p => p.ElectricStorage).Returns(new List<IBusAuxElectricStorageDeclarationInputData>()); + + primaryBusAuxPS_C.Setup(p => p.AdBlueDosing).Returns(ConsumerTechnology.Mechanically); + primaryBusAuxPS_C.Setup(p => p.AirsuspensionControl).Returns(ConsumerTechnology.Electrically); + primaryBusAuxHVAC.Setup(p => p.DoubleGlazing).Returns(doubleGlazing); + primaryBusAuxHVAC.Setup(p => p.AdjustableAuxiliaryHeater).Returns(adjustableAuxHeater); + primaryBusAuxHVAC.Setup(p => p.SeparateAirDistributionDucts).Returns(separateAirdistributionDicts); + primaryBusAuxHVAC.Setup(p => p.AdjustableCoolantThermostat).Returns(adjustableCoolantThermostat); + primaryBusAuxHVAC.Setup(p => p.EngineWasteGasHeatExchanger).Returns(engineWasteGasHeatExchanger); + + var completedVehicle = new Mock<IVehicleDeclarationInputData>(); + completedVehicle.Setup(c => c.VehicleCode).Returns(vehicleCode); + completedVehicle.Setup(c => c.Length).Returns(length); + completedVehicle.Setup(c => c.Height).Returns(height); + completedVehicle.Setup(c => c.Width).Returns(width); + completedVehicle.Setup(c => c.NumberPassengerSeatsLowerDeck).Returns(numPassengersLowerdeck); + completedVehicle.Setup(c => c.NumberPassengersStandingLowerDeck).Returns(0); + completedVehicle.Setup(c => c.NumberPassengerSeatsUpperDeck).Returns(numPassengersUpperdeck); + completedVehicle.Setup(c => c.NumberPassengersStandingUpperDeck).Returns(0); + completedVehicle.Setup(c => c.RegisteredClass).Returns(registrationClass); + completedVehicle.Setup(c => c.LowEntry).Returns(lowEntry); + completedVehicle.Setup(c => c.EntranceHeight).Returns(entranceHeight); + + var completedComponents = new Mock<IVehicleComponentsDeclaration>(); + var completedBusAux = new Mock<IBusAuxiliariesDeclarationData>(); + var completedHVACAux = new Mock<IHVACBusAuxiliariesDeclarationData>(); + completedBusAux.Setup(c => c.HVACAux).Returns(completedHVACAux.Object); + completedComponents.Setup(c => c.BusAuxiliaries).Returns(completedBusAux.Object); + completedVehicle.Setup(c => c.Components).Returns(completedComponents.Object); + + completedHVACAux.Setup(c => c.SystemConfiguration).Returns(hvacConfig); + completedHVACAux.Setup(c => c.AuxHeaterPower).Returns(auxHeaterPower); + completedHVACAux.Setup(c => c.SeparateAirDistributionDucts).Returns(mission.BusParameter.SeparateAirDistributionDuctsHVACCfg.Contains(hvacConfig)); + completedHVACAux.Setup(c => c.HeatPumpTypeHeatingDriverCompartment).Returns(hpHeatingDriver); + completedHVACAux.Setup(c => c.HeatPumpTypeHeatingPassengerCompartment).Returns(hpHeatingPassenger); + completedHVACAux.Setup(c => c.HeatPumpTypeCoolingDriverCompartment).Returns(hpCoolingDriver); + completedHVACAux.Setup(c => c.HeatPumpTypeCoolingPassengerCompartment).Returns(hpCoolingPassenger); + completedHVACAux.Setup(c => c.AirElectricHeater).Returns(airElectricHeater); + completedHVACAux.Setup(c => c.WaterElectricHeater).Returns(waterElectricHeater); + completedHVACAux.Setup(c => c.OtherHeatingTechnology).Returns(otherElectricHeater); + + + var runData = new VectoRunData() { + Mission = mission, + Loading = LoadingType.ReferenceLoad, + VehicleData = new VehicleData() { + VehicleClass = vehicleClass, + }, + Retarder = new RetarderData() { + Type = RetarderType.None + } + }; + + var retVal = dao.CreateBusAuxiliariesData(mission, primaryVehicle.Object, completedVehicle.Object, runData); + + return retVal; + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/Models/Declaration/BusAux/SSMHeatingPostProcessingCorrection.cs b/VectoCore/VectoCoreTest/Models/Declaration/BusAux/SSMHeatingPostProcessingCorrection.cs new file mode 100644 index 0000000000000000000000000000000000000000..e4bbe241ccda28c75e64aea23859f19078358be9 --- /dev/null +++ b/VectoCore/VectoCoreTest/Models/Declaration/BusAux/SSMHeatingPostProcessingCorrection.cs @@ -0,0 +1,176 @@ +using System; +using System.Linq; +using Moq; +using NUnit.Framework; +using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.Reader.ComponentData; +using TUGraz.VectoCore.Models.Declaration; +using TUGraz.VectoCore.Models.Simulation; +using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Models.Simulation.DataBus; +using TUGraz.VectoCore.Models.SimulationComponent.Data; +using TUGraz.VectoCore.Models.SimulationComponent.Impl; +using TUGraz.VectoCore.OutputData; + +namespace TUGraz.VectoCore.Tests.Models.Declaration.BusAux; + +[TestFixture, Parallelizable(ParallelScope.All)] +public class SSMHeatingPostProcessingCorrection +{ + private const BusHVACSystemConfiguration CFG1 = BusHVACSystemConfiguration.Configuration1; + private const BusHVACSystemConfiguration CFG2 = BusHVACSystemConfiguration.Configuration2; + private const BusHVACSystemConfiguration CFG3 = BusHVACSystemConfiguration.Configuration3; + private const BusHVACSystemConfiguration CFG4 = BusHVACSystemConfiguration.Configuration4; + private const BusHVACSystemConfiguration CFG5 = BusHVACSystemConfiguration.Configuration5; + private const BusHVACSystemConfiguration CFG6 = BusHVACSystemConfiguration.Configuration6; + private const BusHVACSystemConfiguration CFG7 = BusHVACSystemConfiguration.Configuration7; + private const BusHVACSystemConfiguration CFG8 = BusHVACSystemConfiguration.Configuration8; + private const BusHVACSystemConfiguration CFG9 = BusHVACSystemConfiguration.Configuration9; + private const BusHVACSystemConfiguration CFG10 = BusHVACSystemConfiguration.Configuration10; + + private const HeatPumpType HeatPumpNone = HeatPumpType.none; + private const HeatPumpType HeatPumpR744 = HeatPumpType.R_744; + private const HeatPumpType HeatPump2Stage = HeatPumpType.non_R_744_2_stage; + private const HeatPumpType HeatPump3Stage = HeatPumpType.non_R_744_3_stage; + private const HeatPumpType HeatPumpCont = HeatPumpType.non_R_744_continuous; + private const HeaterType NoElHtr = HeaterType.None; + private const HeaterType AirElHtr = HeaterType.AirElectricHeater; + private const HeaterType WaterElHtr = HeaterType.WaterElectricHeater; + private const HeaterType OthrElHtr = HeaterType.OtherElectricHeating; + + private const double AuxHtrPwr0 = 0.0; + private const double AuxHtrPwr30 = 30.0e3; + + private const string FuelMap = "engine speed, torque, fuel consumption\n" + + "500,-31,0\n" + + "500,0,500\n" + + "500,1000,24000\n" + + "2500,-109,0\n" + + "2500,0,3800\n" + + "2500,1000,32000\n"; + + protected static readonly FuelData.Entry Fuel = FuelData.Diesel; + + [ + TestCase("a", CFG1, HeatPumpNone, HeatPumpNone, 0, AuxHtrPwr0, 0, 0), + TestCase("b", CFG1, HeatPumpNone, HeatPumpNone, 0, AuxHtrPwr30, 6685488.8606, 0.1565688), + TestCase("c", CFG1, HeatPumpNone, HeatPumpNone, 4, AuxHtrPwr30, 205671.4565, 0.0048166), + ] + public void TestModDataPostprocessing_Conventional(string sort, BusHVACSystemConfiguration cfg, HeatPumpType driverHpHeating, HeatPumpType passengerHpHeating, + double fuelConsumptionKg, double auxhHeaterPwr, double expectedAuxHeatingDemandJ, double expectedFcAuxHeaterKg) + { + var correction = new ModalDataPostprocessingCorrection(); + var busAux = GetAuxParametersConventionalSingleDeckForTest(cfg, driverHeatPumpHeating: driverHpHeating, passengerHeatPumpHeating: passengerHpHeating, auxHeaterPower: auxhHeaterPwr.SI<Watt>()); + var runData = GetVectoRunDataConventional(busAux); + var mockModData = GetConventionalMockModData(runData, fuelConsumptionKg.SI<Kilogram>()); + + var corrected = correction.ApplyCorrection(mockModData, runData); + + Assert.NotNull(corrected); + var fcCorr = corrected.FuelConsumptionCorrection(Fuel) as FuelConsumptionCorrection; + Assert.NotNull(fcCorr); + + Console.WriteLine($"{corrected.AuxHeaterDemand.Value()}, {fcCorr.FcAuxHtr.Value()}"); + + Assert.AreEqual(expectedAuxHeatingDemandJ, corrected.AuxHeaterDemand.Value(), 1e-3, "expectedAuxHeatingDemand"); + Assert.AreEqual(expectedFcAuxHeaterKg, fcCorr.FcAuxHtr.Value(), 1e-6, "expectedFcAuxHeater"); + } + + protected VectoRunData GetVectoRunDataConventional(IAuxiliaryConfig busAux) + { + + var runData = new VectoRunData() { + DriverData = new DriverData() { + EngineStopStart = new DriverData.EngineStopStartData() { + UtilityFactorDriving = 0.8, + UtilityFactorStandstill = 0.8 + } + }, + EngineData = new CombustionEngineData() { + WHRType = WHRType.None, + IdleSpeed = 600.RPMtoRad(), + Fuels = new[] { new CombustionEngineFuelData() { + FuelData =Fuel, + ConsumptionMap = FuelConsumptionMapReader.ReadFromStream(FuelMap.ToStream()), + }}.ToList(), + }, + BusAuxiliaries = busAux + }; + return runData; + } + + protected IModalDataContainer GetConventionalMockModData(VectoRunData runData, Kilogram totalFuelConsumption) + { + var mockContainer = new Mock<IVehicleContainer>(); + var eng = new Mock<IEngineInfo>(); + + eng.Setup(e => e.EngineIdleSpeed).Returns(runData.EngineData.IdleSpeed); + + //mockContainer.Setup(c => c.ModalData).Returns(m.Object); + mockContainer.Setup(c => c.EngineInfo).Returns(eng.Object); + + var busAux = new BusAuxiliariesAdapter(mockContainer.Object, runData.BusAuxiliaries); + + var m = new Mock<IModalDataContainer>(); + m.Setup(x => x.Duration).Returns(3600.SI<Second>()); + m.Setup(x => x.Distance).Returns(30000.SI<Meter>()); + m.Setup(x => x.TimeIntegral<WattSecond>(ModalResultField.P_WHR_el_corr, null)).Returns(0.SI<WattSecond>()); + m.Setup(x => x.TimeIntegral<WattSecond>(ModalResultField.P_WHR_mech_corr, null)).Returns(0.SI<WattSecond>()); + m.Setup(x => x.TimeIntegral<WattSecond>(ModalResultField.P_busAux_ES_consumer_sum, null)) + .Returns(0.SI<WattSecond>()); + m.Setup(x => x.TimeIntegral<WattSecond>(ModalResultField.P_busAux_ES_generated, null)) + .Returns(0.SI<WattSecond>()); + m.Setup(x => x.TimeIntegral<WattSecond>(ModalResultField.P_ice_start, null)).Returns(0.SI<WattSecond>()); + m.Setup(x => x.GetValues<NormLiter>(ModalResultField.Nl_busAux_PS_generated)).Returns(new[] { 2470.5180.SI<NormLiter>() }); + m.Setup(x => x.FuelData).Returns(new IFuelProperties[] { Fuel }); + m.Setup(x => x.TimeIntegral<Kilogram>(It.IsIn(Fuel.FuelType.GetLabel()), null)).Returns<string, Func<SI, bool>>((f,_) => totalFuelConsumption); + m.Setup(x => x.GetColumnName(It.IsNotNull<IFuelProperties>(), It.IsNotNull<ModalResultField>())) + .Returns<IFuelProperties, ModalResultField>((f, m) => f.GetLabel()); + m.Setup(x => x.EngineLineCorrectionFactor(It.IsIn(Fuel))) + .Returns(200.SI(Unit.SI.Kilo.Gramm.Per.Kilo.Watt.Hour).Cast<KilogramPerWattSecond>()); + m.Setup(x => x.AuxHeaterDemandCalc).Returns(busAux.AuxHeaterDemandCalculation); + + return m.Object; + } + + + protected IAuxiliaryConfig GetAuxParametersConventionalSingleDeckForTest(BusHVACSystemConfiguration hvacConfig, HeatPumpType? driverHeatpumpCooling = null, + HeatPumpType? passengerHeatpumpCooling = null, HeatPumpType? driverHeatPumpHeating = null, HeatPumpType? passengerHeatPumpHeating = null, + Watt auxHeaterPower = null, HeaterType? electricHeater = null, int passengerCount = 40, double length = 12, double height = 3) + { + return SSMBusAuxModelParameters.CreateBusAuxInputParameters(MissionType.Urban, + VehicleClass.Class31a, + VectoSimulationJobType.ConventionalVehicle, + VehicleCode.CA, + RegistrationClass.II, + AxleConfiguration.AxleConfig_4x2, + articulated: false, + lowEntry: false, + length: length.SI<Meter>(), + height: height.SI<Meter>(), + width: 2.55.SI<Meter>(), + numPassengersLowerdeck: passengerCount, + numPassengersUpperdeck: 0, + hpHeatingDriver: driverHeatPumpHeating ?? HeatPumpType.none, + hpCoolingDriver: driverHeatpumpCooling ?? HeatPumpType.none, + hpHeatingPassenger: passengerHeatPumpHeating ?? HeatPumpType.none, + hpCoolingPassenger: passengerHeatpumpCooling ?? HeatPumpType.none, + auxHeaterPower: auxHeaterPower ?? 0.SI<Watt>(), + airElectricHeater: electricHeater != null && (electricHeater & HeaterType.AirElectricHeater) != 0, + waterElectricHeater: electricHeater != null && (electricHeater & HeaterType.WaterElectricHeater) != 0, + otherElectricHeater: electricHeater != null && (electricHeater & HeaterType.OtherElectricHeating) != 0, + hvacConfig, + doubleGlazing: false, + adjustableAuxHeater: false, + separateAirdistributionDicts: false, + adjustableCoolantThermostat: false, + engineWasteGasHeatExchanger: false, + steeringpumps: new[] { "Dual displacement" }, + fanTech: "Crankshaft mounted - Discrete step clutch", + alternatorTech: AlternatorType.Conventional, entranceHeight: 0.3.SI<Meter>()); + + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/Models/Declaration/BusAux/SSMTestHeatingCooling.cs b/VectoCore/VectoCoreTest/Models/Declaration/BusAux/SSMTestHeatingCooling.cs index 5d4ab050061e45434cd6a1a21da4a511146cba2e..4a892800f96e98288316275524b397d25b3891dd 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/BusAux/SSMTestHeatingCooling.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/BusAux/SSMTestHeatingCooling.cs @@ -1576,19 +1576,11 @@ public class SSMTestHeatingCooling } - //public void SSMTest_HeatingDistribution_SingleEnvironment(BusHVACSystemConfiguration cfg, int envId, - // HeatPumpType driverHeatpump, - // HeatPumpType passengerHeatpump, HeaterType electricHeater, double auxHeaterPwr, - // HeatingDistributionCase expectedHeatingDistributionCaseDriver, - // HeatingDistributionCase expectedHeatingDistributionCasePassenger, - // double expectedHPElPwrW, double expectedHPMechPwrW, double expecetdElecricPowerElHeater, - // double expectedAuxHeater) { } - - private IAuxiliaryConfig GetAuxParametersConventionalSingleDeckForTest(BusHVACSystemConfiguration hvacConfig, HeatPumpType? driverHeatpumpCooling = null, + protected IAuxiliaryConfig GetAuxParametersConventionalSingleDeckForTest(BusHVACSystemConfiguration hvacConfig, HeatPumpType? driverHeatpumpCooling = null, HeatPumpType? passengerHeatpumpCooling = null, HeatPumpType? driverHeatPumpHeating = null, HeatPumpType? passengerHeatPumpHeating = null, Watt auxHeaterPower = null, HeaterType? electricHeater = null, int passengerCount = 40, double length = 12, double height = 3) { - return CreateBusAuxInputParameters(MissionType.Urban, + return SSMBusAuxModelParameters.CreateBusAuxInputParameters(MissionType.Urban, VehicleClass.Class31a, VectoSimulationJobType.ConventionalVehicle, VehicleCode.CA, @@ -1621,108 +1613,4 @@ public class SSMTestHeatingCooling } - private IAuxiliaryConfig CreateBusAuxInputParameters(MissionType missionType, VehicleClass vehicleClass, - VectoSimulationJobType vehicleType, - VehicleCode vehicleCode, RegistrationClass registrationClass, - AxleConfiguration axleconfiguration, bool articulated, - bool lowEntry, Meter length, - Meter height, Meter width, int numPassengersLowerdeck, int numPassengersUpperdeck, - HeatPumpType hpHeatingDriver, HeatPumpType hpCoolingDriver, HeatPumpType hpHeatingPassenger, - HeatPumpType hpCoolingPassenger, Watt auxHeaterPower, - bool airElectricHeater, bool waterElectricHeater, bool otherElectricHeater, - BusHVACSystemConfiguration hvacConfig, bool doubleGlazing, bool adjustableAuxHeater, - bool separateAirdistributionDicts, bool adjustableCoolantThermostat, bool engineWasteGasHeatExchanger, - string[] steeringpumps, string fanTech, AlternatorType alternatorTech, Meter entranceHeight) - { - var dao = new SpecificCompletedBusAuxiliaryDataAdapter(new PrimaryBusAuxiliaryDataAdapter()); - - var segment = DeclarationData.CompletedBusSegments.Lookup(axleconfiguration.NumAxles(), - vehicleCode, registrationClass, numPassengersLowerdeck, height, lowEntry); - var mission = segment.Missions.FirstOrDefault(); - - var primaryVehicle = new Mock<IVehicleDeclarationInputData>(); - primaryVehicle.Setup(p => p.VehicleType).Returns(vehicleType); - primaryVehicle.Setup(p => p.AxleConfiguration).Returns(axleconfiguration); - primaryVehicle.Setup(p => p.Articulated).Returns(articulated); - - var primaryComponents = new Mock<IVehicleComponentsDeclaration>(); - var primaryBusAux = new Mock<IBusAuxiliariesDeclarationData>(); - var primaryBusAuxPS_S = new Mock<IPneumaticSupplyDeclarationData>(); - var primaryBusAuxPS_C = new Mock<IPneumaticConsumersDeclarationData>(); - var primaryBusAuxHVAC = new Mock<IHVACBusAuxiliariesDeclarationData>(); - var primaryBusAuxES = new Mock<IElectricSupplyDeclarationData>(); - primaryVehicle.Setup(p => p.Components).Returns(primaryComponents.Object); - primaryComponents.Setup(p => p.BusAuxiliaries).Returns(primaryBusAux.Object); - primaryBusAux.Setup(p => p.PneumaticSupply).Returns(primaryBusAuxPS_S.Object); - primaryBusAux.Setup(p => p.PneumaticConsumers).Returns(primaryBusAuxPS_C.Object); - primaryBusAux.Setup(p => p.HVACAux).Returns(primaryBusAuxHVAC.Object); - primaryBusAux.Setup(p => p.ElectricSupply).Returns(primaryBusAuxES.Object); - - primaryBusAux.Setup(p => p.FanTechnology).Returns(fanTech); - primaryBusAux.Setup(p => p.SteeringPumpTechnology).Returns(steeringpumps.ToList); - - primaryBusAuxPS_S.Setup(p => p.CompressorDrive).Returns(CompressorDrive.electrically); - primaryBusAuxPS_S.Setup(p => p.CompressorSize).Returns("Medium Supply 2-stage"); - primaryBusAuxPS_S.Setup(p => p.SmartAirCompression).Returns(false); - primaryBusAuxPS_S.Setup(p => p.SmartRegeneration).Returns(false); - - primaryBusAuxES.Setup(p => p.AlternatorTechnology).Returns(alternatorTech); - primaryBusAuxES.Setup(p => p.Alternators).Returns(new[] { new AlternatorInputData(28.3.SI<Volt>(), 50.SI<Ampere>()) }.Cast<IAlternatorDeclarationInputData>().ToList()); - primaryBusAuxES.Setup(p => p.ElectricStorage).Returns(new List<IBusAuxElectricStorageDeclarationInputData>()); - - primaryBusAuxPS_C.Setup(p => p.AdBlueDosing).Returns(ConsumerTechnology.Mechanically); - primaryBusAuxPS_C.Setup(p => p.AirsuspensionControl).Returns(ConsumerTechnology.Electrically); - primaryBusAuxHVAC.Setup(p => p.DoubleGlazing).Returns(doubleGlazing); - primaryBusAuxHVAC.Setup(p => p.AdjustableAuxiliaryHeater).Returns(adjustableAuxHeater); - primaryBusAuxHVAC.Setup(p => p.SeparateAirDistributionDucts).Returns(separateAirdistributionDicts); - primaryBusAuxHVAC.Setup(p => p.AdjustableCoolantThermostat).Returns(adjustableCoolantThermostat); - primaryBusAuxHVAC.Setup(p => p.EngineWasteGasHeatExchanger).Returns(engineWasteGasHeatExchanger); - - var completedVehicle = new Mock<IVehicleDeclarationInputData>(); - completedVehicle.Setup(c => c.VehicleCode).Returns(vehicleCode); - completedVehicle.Setup(c => c.Length).Returns(length); - completedVehicle.Setup(c => c.Height).Returns(height); - completedVehicle.Setup(c => c.Width).Returns(width); - completedVehicle.Setup(c => c.NumberPassengerSeatsLowerDeck).Returns(numPassengersLowerdeck); - completedVehicle.Setup(c => c.NumberPassengersStandingLowerDeck).Returns(0); - completedVehicle.Setup(c => c.NumberPassengerSeatsUpperDeck).Returns(numPassengersUpperdeck); - completedVehicle.Setup(c => c.NumberPassengersStandingUpperDeck).Returns(0); - completedVehicle.Setup(c => c.RegisteredClass).Returns(registrationClass); - completedVehicle.Setup(c => c.LowEntry).Returns(lowEntry); - completedVehicle.Setup(c => c.EntranceHeight).Returns(entranceHeight); - - var completedComponents = new Mock<IVehicleComponentsDeclaration>(); - var completedBusAux = new Mock<IBusAuxiliariesDeclarationData>(); - var completedHVACAux = new Mock<IHVACBusAuxiliariesDeclarationData>(); - completedBusAux.Setup(c => c.HVACAux).Returns(completedHVACAux.Object); - completedComponents.Setup(c => c.BusAuxiliaries).Returns(completedBusAux.Object); - completedVehicle.Setup(c => c.Components).Returns(completedComponents.Object); - - completedHVACAux.Setup(c => c.SystemConfiguration).Returns(hvacConfig); - completedHVACAux.Setup(c => c.AuxHeaterPower).Returns(auxHeaterPower); - completedHVACAux.Setup(c => c.SeparateAirDistributionDucts).Returns(mission.BusParameter.SeparateAirDistributionDuctsHVACCfg.Contains(hvacConfig)); - completedHVACAux.Setup(c => c.HeatPumpTypeHeatingDriverCompartment).Returns(hpHeatingDriver); - completedHVACAux.Setup(c => c.HeatPumpTypeHeatingPassengerCompartment).Returns(hpHeatingPassenger); - completedHVACAux.Setup(c => c.HeatPumpTypeCoolingDriverCompartment).Returns(hpCoolingDriver); - completedHVACAux.Setup(c => c.HeatPumpTypeCoolingPassengerCompartment).Returns(hpCoolingPassenger); - completedHVACAux.Setup(c => c.AirElectricHeater).Returns(airElectricHeater); - completedHVACAux.Setup(c => c.WaterElectricHeater).Returns(waterElectricHeater); - completedHVACAux.Setup(c => c.OtherHeatingTechnology).Returns(otherElectricHeater); - - - var runData = new VectoRunData() { - Mission = mission, - Loading = LoadingType.ReferenceLoad, - VehicleData = new VehicleData() { - VehicleClass = vehicleClass, - }, - Retarder = new RetarderData() { - Type = RetarderType.None - } - }; - - var retVal = dao.CreateBusAuxiliariesData(mission, primaryVehicle.Object, completedVehicle.Object, runData); - - return retVal; - } } \ No newline at end of file