diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs index 3ed44c304530824451009012db15f6572993d0ab..99b0390305e5d043bfbbed82d37f67cb18e2bb83 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs @@ -402,21 +402,24 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter #endregion - protected double GetNumberOfPassengers(Mission mission, Meter length, Meter width, double registeredPassengers, + protected double GetNumberOfPassengers(Mission mission, Meter length, Meter width, double registeredPassengerSeats, double registeredPassengersStanding, LoadingType loading) { var busFloorArea = DeclarationData.BusAuxiliaries.CalculateBusFloorSurfaceArea(length, width); var passengerCountRef = busFloorArea * (loading == LoadingType.LowLoading ? mission.BusParameter.PassengerDensityLow : mission.BusParameter.PassengerDensityRef); - //var passengerCountDecl = completedVehicle.NuberOfPassengersUpperDeck + completedVehicle.NumberOfPassengersLowerDeck; + if (loading != LoadingType.ReferenceLoad && loading != LoadingType.LowLoading) { throw new VectoException("Unhandled loading type: {0}", loading); } + var passengerCount = registeredPassengerSeats + + (mission.MissionType == MissionType.Coach ? 0 : registeredPassengersStanding); + return loading == LoadingType.ReferenceLoad - ? VectoMath.Min(passengerCountRef, registeredPassengers) - : VectoMath.Min(passengerCountRef * mission.MissionType.GetLowLoadFactorBus(), registeredPassengers); + ? VectoMath.Min(passengerCountRef, passengerCount) + : VectoMath.Min(passengerCountRef * mission.MissionType.GetLowLoadFactorBus(), passengerCount); } diff --git a/VectoCore/VectoCore/Models/Declaration/CompletedBusSegments.cs b/VectoCore/VectoCore/Models/Declaration/CompletedBusSegments.cs index bbd03585ca561155665a11754a8a22b321294f5a..bb15f5da9ea6ea54ff16d19fa22a02512d110a56 100644 --- a/VectoCore/VectoCore/Models/Declaration/CompletedBusSegments.cs +++ b/VectoCore/VectoCore/Models/Declaration/CompletedBusSegments.cs @@ -24,23 +24,22 @@ namespace TUGraz.VectoCore.Models.Declaration protected override string ErrorMessage => "ERROR: Could not find the declaration segment for vehicle. numberOfAxles: {0}, vehicleCode: {1}, registrationClass: {2}, " + - "passengersLowerDeck: {3}, bodyHeight: {4} , lowEntry: {5}"; + "passengerSeatsLowerDeck: {3}, bodyHeight: {4} , lowEntry: {5}"; protected override void ParseData(DataTable table) { _segmentTable = table.Copy(); } - public override Segment Lookup(int numberOfAxles, VehicleCode? vehicleCode, RegistrationClass? registrationClass, int? passengersLowerDeck, Meter bodyHeight, bool? lowEntry) + public override Segment Lookup(int numberOfAxles, VehicleCode? vehicleCode, RegistrationClass? registrationClass, int? passengerSeatsLowerDeck, Meter bodyHeight, bool? lowEntry) { - return LookupCompletedBusVehicle(numberOfAxles, vehicleCode, registrationClass, passengersLowerDeck, bodyHeight, lowEntry); + return LookupCompletedBusVehicle(numberOfAxles, vehicleCode, registrationClass, passengerSeatsLowerDeck, bodyHeight, lowEntry); } - #endregion - private Segment LookupCompletedBusVehicle(int numberOfAxles, VehicleCode? vehicleCode, RegistrationClass? registrationClass, int? passengersLowerDeck, Meter bodyHeight, bool? lowEntry) + private Segment LookupCompletedBusVehicle(int numberOfAxles, VehicleCode? vehicleCode, RegistrationClass? registrationClass, int? passengerSeatsLowerDeck, Meter bodyHeight, bool? lowEntry) { var rows = _segmentTable.AsEnumerable().Where( r => { @@ -60,7 +59,7 @@ namespace TUGraz.VectoCore.Models.Declaration rows = rows.Where( r => { var limits = r.Field<string>("passengerslowerdeck").Split('-'); - return ((int)passengersLowerDeck).IsBetween(limits[0].ToInt(), limits[1].ToInt()); + return ((int)passengerSeatsLowerDeck).IsBetween(limits[0].ToInt(), limits[1].ToInt()); }).ToList(); } else if (rows.Any(r => r.Field<string>("bodyheight") != "-")) { rows = rows.Where( diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs index 615ef139d832a9a2363662272335e452cee64b69..d0a44a5fd412ceca9acb5a6de68f09f7b83d8053 100644 --- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs +++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs @@ -260,7 +260,7 @@ namespace TUGraz.VectoCore.Models.Declaration } - public static Meter CalculateInternalLength(Meter vehicleLength, VehicleCode? vehicleCode, double numPassLowFloor) + public static Meter CalculateInternalLength(Meter vehicleLength, VehicleCode? vehicleCode, double numPassSeatsLowerDeck) { if (vehicleCode.GetFloorType() == FloorType.LowFloor) { return vehicleCode.IsDoubleDeckerBus() ? 2 * vehicleLength : vehicleLength; @@ -268,7 +268,7 @@ namespace TUGraz.VectoCore.Models.Declaration if (vehicleCode.GetFloorType() == FloorType.HighFloor) { if (vehicleCode.IsDoubleDeckerBus()) { - return numPassLowFloor > 6 ? 1.5 * vehicleLength : vehicleLength + 2.4.SI<Meter>(); + return numPassSeatsLowerDeck > 6 ? 1.5 * vehicleLength : vehicleLength + 2.4.SI<Meter>(); } return vehicleLength;