diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/IPneumaticUserInputsConfig.cs b/VectoCommon/VectoCommon/BusAuxiliaries/IPneumaticUserInputsConfig.cs index 802d2722a124edf33baecaae07ab80d9d118dea0..7aff80b0834809467196ef9c47639516f8af5a9f 100644 --- a/VectoCommon/VectoCommon/BusAuxiliaries/IPneumaticUserInputsConfig.cs +++ b/VectoCommon/VectoCommon/BusAuxiliaries/IPneumaticUserInputsConfig.cs @@ -27,6 +27,7 @@ namespace TUGraz.VectoCommon.BusAuxiliaries Mechanically, Electrically, Pneumatically, + Mixed } @@ -46,6 +47,8 @@ namespace TUGraz.VectoCommon.BusAuxiliaries case "pneumatically": case "pneumatic": return ConsumerTechnology.Pneumatically; + case "mixed": + return ConsumerTechnology.Mixed; default: return ConsumerTechnology.Unknown; } diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs index af5dbf6893a26912a2089bfd8bcd63a2652e55d6..632e95fac82afe901809e4e91e8cf3a4e26c2965 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs @@ -154,12 +154,13 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter (actuations.ParkBrakeAndDoors * Constants.BusAuxiliaries.ElectricalConsumers.DoorActuationTimeSecond) / actuations.CycleTime; var busAux = vehicleData.Components.BusAuxiliaries; - var electricDoors = vehicleData.DoorDriveTechnology == ConsumerTechnology.Electrically; + var electricDoors = vehicleData.DoorDriveTechnology == ConsumerTechnology.Electrically || + vehicleData.DoorDriveTechnology == ConsumerTechnology.Mixed; foreach (var consumer in DeclarationData.BusAuxiliaries.DefaultElectricConsumerList.Items) { var applied = consumer.DefaultConsumer || consumer.Bonus ? 1.0 - : GetNumberOfElectricalConsumersForMission(mission, consumer); + : GetNumberOfElectricalConsumersForMission(mission, consumer, vehicleData); var nbr = consumer.DefaultConsumer ? GetNumberOfElectricalConsumersInVehicle(consumer.NumberInActualVehicle, mission, vehicleData) : 1.0; @@ -184,12 +185,31 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter return retVal; } - private double GetNumberOfElectricalConsumersForMission(Mission mission, ElectricalConsumer consumer) + private double GetNumberOfElectricalConsumersForMission(Mission mission, ElectricalConsumer consumer, + IVehicleDeclarationInputData vehicleData) { - if (mission.BusParameter.ElectricalConsumers.ContainsKey(consumer.ConsumerName)) { + if (consumer.ConsumerName.Equals(Constants.BusAuxiliaries.ElectricalConsumers.DoorsPerVehicleConsumer, + StringComparison.CurrentCultureIgnoreCase)) { + var count = DeclarationData.BusAuxiliaries.DefaultElectricConsumerList.Items.First(x => + x.ConsumerName.Equals( + Constants.BusAuxiliaries.ElectricalConsumers.DoorsPerVehicleConsumer, + StringComparison.CurrentCultureIgnoreCase)).NumberInActualVehicle.ToDouble(); + + switch (vehicleData.DoorDriveTechnology) + { + case ConsumerTechnology.Electrically: + return count; + case ConsumerTechnology.Mixed: + return count * 0.5; + default: + return 0; + } + } + if (mission.BusParameter.ElectricalConsumers.ContainsKey(consumer.ConsumerName)) { return mission.BusParameter.ElectricalConsumers[consumer.ConsumerName]; } + return 0; } diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/M03Impl.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/M03Impl.cs index b217d23fc005f1e0fe3be0a4dd46f05df03a8628..4354716707b7da3153f6fc533d0cf2e00cfc40b7 100644 --- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/M03Impl.cs +++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Pneumatics/M03Impl.cs @@ -41,7 +41,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Pneumati //'* * ParkBrakesBreakplus2Doors * *Park break +2 doors airConsumptionPerActuation = psUserConfig.Doors == ConsumerTechnology.Electrically ? 0.SI<NormLiter>() - : psAuxconfig.DoorOpening; + : (psUserConfig.Doors == ConsumerTechnology.Mixed ? 0.5 : 1) * psAuxconfig.DoorOpening; airConsumptionPerActuation += psAuxconfig.StopBrakeActuation * vehicleMass; var parkBrakesplus2Doors = actuations.ParkBrakeAndDoors * airConsumptionPerActuation; diff --git a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs index 495d5b4f2da68b9c215e645b6378f676ba7441e9..0c5998f7f054feaea00d6580886c1d78b1dd57de 100644 --- a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs +++ b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs @@ -960,7 +960,8 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus [TestCase(JobFile_Group41, 0, TestName = "PrintVectoRunData CompletedBus Group 41/32b CO/LL"), TestCase(JobFile_Group42, 1, TestName = "PrintVectoRunData CompletedBus Group 42/33b HU/RL"), TestCase(@"TestData\Integration\Buses\FactorMethod\CompletedBus_41-32b_AT-P.vecto", 0, TestName = "PrintVectoRunData CompletedBus Group 41/32b AT-P CO/LL"), - TestCase(@"TestData\Integration\Buses\FactorMethod\CompletedBus_41-32b_ES-AUX.vecto", 0, TestName = "PrintVectoRunData CompletedBus Group 41/32b ES-Aux CO/LL"),] + TestCase(@"TestData\Integration\Buses\FactorMethod\CompletedBus_41-32b_ES-AUX.vecto", 0, TestName = "PrintVectoRunData CompletedBus Group 41/32b ES-Aux CO/LL"), + TestCase(@"TestData\Integration\Buses\FactorMethod\CompletedBus_41-32b_ES-AUX_mixed.vecto", 0, TestName = "PrintVectoRunData CompletedBus Group 41/32b ES-Aux CO/LL mixedDoors"),] public void PrintModelParametersCompletedBus(string jobFile, int pairIdx) { var runs = GetVectoRunData(jobFile); diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/CompletedBus_41-32b_ES-AUX_mixed.vecto b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/CompletedBus_41-32b_ES-AUX_mixed.vecto new file mode 100644 index 0000000000000000000000000000000000000000..811a6e550cebc3ac5cb853c02a31f26f969d4056 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/CompletedBus_41-32b_ES-AUX_mixed.vecto @@ -0,0 +1,12 @@ +{ + "Header": { + "CreatedBy": "Markus Quaritsch, IVT, Graz University of Technology", + "Date": "2020-02-07T15:06:30.9725917Z", + "AppVersion": "2.2", + "FileVersion": 7 + }, + "Body": { + "CompletedVehicle": "vecto_vehicle-completed_heavyBus_41_mixed.xml", + "PrimaryVehicleResults": "vecto_vehicle-primary_heavyBus_ESS_electricFanSTP.RSLT_PIF.xml" + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41_mixed.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41_mixed.xml new file mode 100644 index 0000000000000000000000000000000000000000..8c091737ec932513d11573fd7555e8f192b078db --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41_mixed.xml @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD//DEV/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890_mixed" xsi:type="CompletedVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> + <Model>Sample Bus Model</Model> + <VIN>VEH-1234567890_m</VIN> + <Date>2020-01-09T11:00:00Z</Date> + <LegislativeClass>M3</LegislativeClass> + <ClassBus>II+III</ClassBus> + <VehicleCode>CA</VehicleCode> + <CurbMassChassis>8300</CurbMassChassis> + <TechnicalPermissibleMaximumLadenMass>18000</TechnicalPermissibleMaximumLadenMass> + <NgTankSystem>Compressed</NgTankSystem> + <RegisteredPassengers> + <LowerDeck>30</LowerDeck> + <UpperDeck>0</UpperDeck> + </RegisteredPassengers> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>3.000</HeightIntegratedBody> + <VehicleLength>11.830</VehicleLength> + <VehicleWidth>2.550</VehicleWidth> + <EntranceHeight>0.120</EntranceHeight> + <DoorDriveTechnology>mixed</DoorDriveTechnology> + <Components xsi:type="CompletedVehicleComponentsDeclarationType"> + <v2.6:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType"> + <Manufacturer>Generic Manufacturer</Manufacturer> + <Model>Generic Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-03-24T15:00:00Z</Date> + <AppVersion>Vecto AirDrag x.y</AppVersion> + <CdxA_0>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</DeclaredCdxA> + </Data> + <Signature> + <di:Reference URI="#CabinX23h"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> + </di:Reference> + </Signature> + </v2.6:AirDrag> + <Auxiliaries> + <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> + <ElectricSystem> + <AlternatorTechnology>default</AlternatorTechnology> + <LEDLights> + <Dayrunninglights>false</Dayrunninglights> + <Headlights>false</Headlights> + <Positionlights>false</Positionlights> + <Brakelights>false</Brakelights> + <Interiorlights>false</Interiorlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>7</SystemConfiguration> + <CompressorType> + <DriverAC>2-stage</DriverAC> + <PassengerAC>4-stage</PassengerAC> + </CompressorType> + <AuxiliaryHeaterPower>0</AuxiliaryHeaterPower> + <DoubleGlazing>true</DoubleGlazing> + <HeatPump>false</HeatPump> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>true</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration>