20 package org.matsim.core.mobsim.qsim.pt;
22 import java.util.List;
24 import org.apache.logging.log4j.LogManager;
25 import org.apache.logging.log4j.Logger;
65 return handleParallelStop(stop, now, leavingPassengers, enteringPassengers, handler, vehicle);
67 return handleSerialStop(stop, now, leavingPassengers, enteringPassengers, handler, vehicle);
69 log.info(
"Unimplemented door operation mode " + this.
doorOperationMode +
" set. Using parralel mode as default.");
70 return handleParallelStop(stop, now, leavingPassengers, enteringPassengers, handler, vehicle);
76 double stopTime = 0.0;
78 int cntEgress = leavingPassengers.size();
79 int cntAccess = enteringPassengers.size();
81 if (!this.doorsOpen) {
84 if ((cntAccess > 0) || (cntEgress > 0)) {
87 this.doorsOpen =
true;
97 if ((cntAccess > 0) || (cntEgress > 0)) {
102 if (this.passengersLeavingTimeFraction < 1.0) {
105 while (this.passengersLeavingTimeFraction < 1.0) {
106 if (leavingPassengers.size() == 0) {
111 leavingPassengers.remove(0);
119 this.passengersLeavingTimeFraction -= 1.0;
124 this.passengersLeavingTimeFraction -= 1.0;
129 this.passengersLeavingTimeFraction -= 1.0;
130 this.passengersLeavingTimeFraction = Math.max(0, this.passengersLeavingTimeFraction);
134 if (this.passengersEnteringTimeFraction < 1.0) {
138 while (this.passengersEnteringTimeFraction < 1.0) {
139 if (enteringPassengers.size() == 0) {
144 enteringPassengers.remove(0);
152 this.passengersEnteringTimeFraction -= 1.0;
157 this.passengersEnteringTimeFraction -= 1.0;
162 this.passengersEnteringTimeFraction -= 1.0;
163 this.passengersEnteringTimeFraction = Math.max(0, this.passengersEnteringTimeFraction);
171 if (this.passengersEnteringTimeFraction < 1.0 && this.passengersLeavingTimeFraction < 1.0) {
175 this.doorsOpen =
false;
176 this.passengersEnteringTimeFraction = 0.0;
177 this.passengersLeavingTimeFraction = 0.0;
183 if (this.passengersEnteringTimeFraction >= 1) {
184 this.passengersEnteringTimeFraction -= 1.0;
188 if (this.passengersLeavingTimeFraction >= 1) {
189 this.passengersLeavingTimeFraction -= 1.0;
202 double stopTime = 0.0;
204 int cntEgress = leavingPassengers.size();
205 int cntAccess = enteringPassengers.size();
207 if (!this.doorsOpen) {
210 if ((cntAccess > 0) || (cntEgress > 0)) {
213 this.doorsOpen =
true;
223 if ((cntAccess > 0) || (cntEgress > 0)) {
228 if (this.passengersEnteringTimeFraction < 1.0) {
232 while (this.passengersEnteringTimeFraction < 1.0) {
233 if (enteringPassengers.size() == 0) {
238 enteringPassengers.remove(0);
246 this.passengersEnteringTimeFraction -= 1.0;
251 this.passengersEnteringTimeFraction -= 1.0;
256 this.passengersEnteringTimeFraction -= 1.0;
257 this.passengersEnteringTimeFraction = Math.max(0, this.passengersEnteringTimeFraction);
262 if (this.passengersLeavingTimeFraction < 1.0) {
265 while (this.passengersLeavingTimeFraction < 1.0) {
266 if (leavingPassengers.size() == 0) {
271 leavingPassengers.remove(0);
279 this.passengersLeavingTimeFraction -= 1.0;
284 this.passengersLeavingTimeFraction -= 1.0;
289 this.passengersLeavingTimeFraction -= 1.0;
290 this.passengersLeavingTimeFraction = Math.max(0, this.passengersLeavingTimeFraction);
297 if (this.passengersEnteringTimeFraction < 1.0 && this.passengersLeavingTimeFraction < 1.0) {
301 this.doorsOpen =
false;
302 this.passengersEnteringTimeFraction = 0.0;
303 this.passengersLeavingTimeFraction = 0.0;
309 if (this.passengersEnteringTimeFraction >= 1) {
310 this.passengersEnteringTimeFraction -= 1.0;
314 if (this.passengersLeavingTimeFraction >= 1) {
315 this.passengersLeavingTimeFraction -= 1.0;
boolean handlePassengerLeaving(final PTPassengerAgent agent, MobsimVehicle vehicle, Id< Link > toLinkId, final double time)
final double personLeavesTime
double passengersEnteringTimeFraction
static double getAccessTime(VehicleType vehicleType)
double passengersLeavingTimeFraction
static double getEgressTime(VehicleType vehicleType)
boolean handlePassengerEntering(final PTPassengerAgent agent, MobsimVehicle vehicle, Id< TransitStopFacility > fromStopFacilityId, final double time)
final double personEntersTime
double handleTransitStop(TransitStopFacility stop, double now, List< PTPassengerAgent > leavingPassengers, List< PTPassengerAgent > enteringPassengers, PassengerAccessEgress handler, MobsimVehicle vehicle)
final VehicleType.DoorOperationMode doorOperationMode
double handleSerialStop(TransitStopFacility stop, double now, List< PTPassengerAgent > leavingPassengers, List< PTPassengerAgent > enteringPassengers, PassengerAccessEgress handler, MobsimVehicle vehicle)
static VehicleType.DoorOperationMode getDoorOperationMode(VehicleType vehicleType)
static final double closeDoorsDuration
double handleParallelStop(TransitStopFacility stop, double now, List< PTPassengerAgent > leavingPassengers, List< PTPassengerAgent > enteringPassengers, PassengerAccessEgress handler, MobsimVehicle vehicle)
static final double openDoorsDuration