diff --git a/VectoCore/VectoCore/Configuration/Constants.cs b/VectoCore/VectoCore/Configuration/Constants.cs index 4df16f178e10ea2cd17f16bec0d5917081c5929f..e557706113b079004423c6d76afb963630e2cfba 100644 --- a/VectoCore/VectoCore/Configuration/Constants.cs +++ b/VectoCore/VectoCore/Configuration/Constants.cs @@ -203,6 +203,9 @@ namespace TUGraz.VectoCore.Configuration public static readonly MeterPerSecond MaxBusSpeed = 103.KMPHtoMeterPerSecond(); + public static readonly Meter VehicleWidthLow = 2.5.SI<Meter>(); + public static readonly Meter VehicleWidthHigh = 2.55.SI<Meter>(); + public static class Auxiliaries { public static class SteeringPump diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs index 33593632c5996f198048440db05e513eac52bae1..76710d611ff9d0f12f89d70d9fc5ebadd1c3d79d 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs @@ -24,7 +24,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter var busFloorArea = DeclarationData.BusAuxiliaries.CalculateBusFloorSurfaceArea(CompletedVehicle.Length, CompletedVehicle.Width); var passengerCountRef = busFloorArea * mission.BusParameter.PassengerDensity; - var passengerCountDecl = CompletedVehicle.NuberOfPassengersUpperDeck + CompletedVehicle.NumberOfPassengersLowerDeck); + var passengerCountDecl = CompletedVehicle.NuberOfPassengersUpperDeck + CompletedVehicle.NumberOfPassengersLowerDeck; //var refLoad = passengerCount * mission.MissionType.GetAveragePassengerMass(); if (loading.Key != LoadingType.ReferenceLoad && loading.Key != LoadingType.LowLoading) { throw new VectoException("Unhandled loading type: {0}", loading.Key); @@ -131,6 +131,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter var hvacBusLength = busAux.HVACAux.SystemConfiguration == BusHVACSystemConfiguration.Configuration2 ? 2 * Constants.BusParameters.DriverCompartmentLength : CompletedVehicle.Length; + var correctedBusWidth = DeclarationData.BusAuxiliaries.CorrectedBusWidth(CompletedVehicle.Width); var hvacBusheight = DeclarationData.BusAuxiliaries.CalculateInternalHeight(CompletedVehicle.FloorType, IsDoubleDecker, CompletedVehicle.Height); @@ -142,12 +143,12 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter retVal.BusWindowSurface = DeclarationData.BusAuxiliaries.WindowHeight(IsDoubleDecker) * hvacBusLength + DeclarationData.BusAuxiliaries.FrontAndRearWindowArea(IsDoubleDecker); - retVal.BusSurfaceArea = 2 * (hvacBusLength * CompletedVehicle.Width + hvacBusLength * CompletedVehicle.Height + - CompletedVehicle.Width * CompletedVehicle.Height); - retVal.BusVolume = hvacBusLength * CompletedVehicle.Width * hvacBusheight; + retVal.BusSurfaceArea = 2 * (hvacBusLength * correctedBusWidth + hvacBusLength * CompletedVehicle.Height + + correctedBusWidth * CompletedVehicle.Height); + retVal.BusVolume = hvacBusLength * correctedBusWidth * hvacBusheight; retVal.UValue = DeclarationData.BusAuxiliaries.UValue(CompletedVehicle.FloorType); retVal.NumberOfPassengers = - (DeclarationData.BusAuxiliaries.CalculateBusFloorSurfaceArea(hvacBusLength, CompletedVehicle.Width) * + (DeclarationData.BusAuxiliaries.CalculateBusFloorSurfaceArea(hvacBusLength, correctedBusWidth) * mission.BusParameter.PassengerDensity).LimitTo(0, CompletedVehicle.NuberOfPassengersUpperDeck + CompletedVehicle.NumberOfPassengersLowerDeck) + 1; // add driver for 'heat input' retVal.VentilationRate = DeclarationData.BusAuxiliaries.VentilationRate(busAux.HVACAux.SystemConfiguration, false); retVal.VentilationRateHeating = DeclarationData.BusAuxiliaries.VentilationRate(busAux.HVACAux.SystemConfiguration, true); @@ -169,7 +170,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter CompletedVehicle.NumberOfPassengersLowerDeck); var height = DeclarationData.BusAuxiliaries.CalculateInternalHeight(CompletedVehicle.FloorType, IsDoubleDecker, CompletedVehicle.Height); - var volume = length * height * CompletedVehicle.Width; + var volume = length * height * DeclarationData.BusAuxiliaries.CorrectedBusWidth(CompletedVehicle.Width); var hvacConfiguration = CompletedVehicle.Components.BusAuxiliaries.HVACAux.SystemConfiguration; diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs index 09fc3b80bdfea212736c4b00ddf3e29d5d6fa8d6..315b0a5851454a527d65007b95d3c473f9ede4f0 100644 --- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs +++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs @@ -223,9 +223,15 @@ namespace TUGraz.VectoCore.Models.Declaration public static SquareMeter CalculateBusFloorSurfaceArea(Meter busLength, Meter busWidth) { - return (busLength - Constants.BusParameters.DriverCompartmentLength) * busWidth; + return (busLength - Constants.BusParameters.DriverCompartmentLength) * CorrectedBusWidth(busWidth); } + public static Meter CorrectedBusWidth(Meter busWidth) + { + return busWidth.IsBetween(Constants.BusParameters.VehicleWidthLow, Constants.BusParameters.VehicleWidthHigh) + ? Constants.BusParameters.VehicleWidthHigh + : busWidth; + } public static Meter CalculateInternalLength(Meter vehicleLength, bool doubleDecker, FloorType floorType, double numPassLowFloor)