Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 7ced773c authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

update handling of passenger count - sitting / standing

parent 99ce0d9c
No related branches found
No related tags found
No related merge requests found
...@@ -402,21 +402,24 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter ...@@ -402,21 +402,24 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
#endregion #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) double registeredPassengersStanding, LoadingType loading)
{ {
var busFloorArea = DeclarationData.BusAuxiliaries.CalculateBusFloorSurfaceArea(length, width); var busFloorArea = DeclarationData.BusAuxiliaries.CalculateBusFloorSurfaceArea(length, width);
var passengerCountRef = busFloorArea * (loading == LoadingType.LowLoading var passengerCountRef = busFloorArea * (loading == LoadingType.LowLoading
? mission.BusParameter.PassengerDensityLow ? mission.BusParameter.PassengerDensityLow
: mission.BusParameter.PassengerDensityRef); : mission.BusParameter.PassengerDensityRef);
//var passengerCountDecl = completedVehicle.NuberOfPassengersUpperDeck + completedVehicle.NumberOfPassengersLowerDeck;
if (loading != LoadingType.ReferenceLoad && loading != LoadingType.LowLoading) { if (loading != LoadingType.ReferenceLoad && loading != LoadingType.LowLoading) {
throw new VectoException("Unhandled loading type: {0}", loading); throw new VectoException("Unhandled loading type: {0}", loading);
} }
var passengerCount = registeredPassengerSeats +
(mission.MissionType == MissionType.Coach ? 0 : registeredPassengersStanding);
return loading == LoadingType.ReferenceLoad return loading == LoadingType.ReferenceLoad
? VectoMath.Min(passengerCountRef, registeredPassengers) ? VectoMath.Min(passengerCountRef, passengerCount)
: VectoMath.Min(passengerCountRef * mission.MissionType.GetLowLoadFactorBus(), registeredPassengers); : VectoMath.Min(passengerCountRef * mission.MissionType.GetLowLoadFactorBus(), passengerCount);
} }
......
...@@ -24,23 +24,22 @@ namespace TUGraz.VectoCore.Models.Declaration ...@@ -24,23 +24,22 @@ namespace TUGraz.VectoCore.Models.Declaration
protected override string ErrorMessage => protected override string ErrorMessage =>
"ERROR: Could not find the declaration segment for vehicle. numberOfAxles: {0}, vehicleCode: {1}, registrationClass: {2}, " + "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) protected override void ParseData(DataTable table)
{ {
_segmentTable = table.Copy(); _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 #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( var rows = _segmentTable.AsEnumerable().Where(
r => { r => {
...@@ -60,7 +59,7 @@ namespace TUGraz.VectoCore.Models.Declaration ...@@ -60,7 +59,7 @@ namespace TUGraz.VectoCore.Models.Declaration
rows = rows.Where( rows = rows.Where(
r => { r => {
var limits = r.Field<string>("passengerslowerdeck").Split('-'); 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(); }).ToList();
} else if (rows.Any(r => r.Field<string>("bodyheight") != "-")) { } else if (rows.Any(r => r.Field<string>("bodyheight") != "-")) {
rows = rows.Where( rows = rows.Where(
......
...@@ -260,7 +260,7 @@ namespace TUGraz.VectoCore.Models.Declaration ...@@ -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) { if (vehicleCode.GetFloorType() == FloorType.LowFloor) {
return vehicleCode.IsDoubleDeckerBus() ? 2 * vehicleLength : vehicleLength; return vehicleCode.IsDoubleDeckerBus() ? 2 * vehicleLength : vehicleLength;
...@@ -268,7 +268,7 @@ namespace TUGraz.VectoCore.Models.Declaration ...@@ -268,7 +268,7 @@ namespace TUGraz.VectoCore.Models.Declaration
if (vehicleCode.GetFloorType() == FloorType.HighFloor) { if (vehicleCode.GetFloorType() == FloorType.HighFloor) {
if (vehicleCode.IsDoubleDeckerBus()) { 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; return vehicleLength;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment