Skip to content

Commit 32c5a20

Browse files
committed
core: ignore scheduled points that are impossible
1 parent a7e1cc4 commit 32c5a20

File tree

2 files changed

+4
-9
lines changed

2 files changed

+4
-9
lines changed

core/osrd-reporting/src/main/java/fr/sncf/osrd/reporting/exceptions/ErrorType.java

-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ public enum ErrorType {
7070
InvalidRollingStockField("invalid_rolling_stock_field", "Invalid rolling stock field", ErrorCause.USER),
7171
MissingRollingStockField("missing_rolling_stock_field", "missing rolling stock field", ErrorCause.USER),
7272

73-
ImpossibleScheduledPoints("invalid_schedule", "Impossible to follow scheduled points", ErrorCause.USER),
7473
InvalidScheduleTrackDoesNotExist(
7574
"invalid_schedule", "Track %s referenced in path step does not exist", ErrorCause.USER),
7675
InvalidScheduleTrackLocationNotIncludedInPath(

core/src/main/kotlin/fr/sncf/osrd/standalone_sim/StandaloneSimulation.kt

+4-8
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ import fr.sncf.osrd.envelope_sim_infra.EnvelopeTrainPath
1818
import fr.sncf.osrd.envelope_sim_infra.MRSP
1919
import fr.sncf.osrd.external_generated_inputs.ElectricalProfileMapping
2020
import fr.sncf.osrd.railjson.schema.schedule.RJSAllowanceDistribution
21-
import fr.sncf.osrd.reporting.exceptions.ErrorType
22-
import fr.sncf.osrd.reporting.exceptions.OSRDError
2321
import fr.sncf.osrd.sim_infra.api.Path
2422
import fr.sncf.osrd.sim_infra.api.PathProperties
2523
import fr.sncf.osrd.sim_infra.api.Route
@@ -193,12 +191,10 @@ fun buildFinalEnvelope(
193191
val sectionTime =
194192
getEnvelopeTimeAt(point.pathOffset) - getEnvelopeTimeAt(prevFixedPointOffset)
195193
val arrivalTime = prevFixedPointDepartureTime + sectionTime
196-
val extraTime = point.arrival.seconds - arrivalTime
194+
var extraTime = point.arrival.seconds - arrivalTime
197195
if (extraTime < 0.0) {
198-
val error = OSRDError(ErrorType.ImpossibleScheduledPoints)
199-
error.context["scheduled_points"] = scheduledPoints
200-
error.context["index"] = i
201-
throw error
196+
// TODO: raise a warning
197+
extraTime = 0.0
202198
}
203199
marginRanges.addAll(
204200
distributeAllowance(
@@ -211,7 +207,7 @@ fun buildFinalEnvelope(
211207
)
212208
)
213209
prevFixedPointOffset = point.pathOffset
214-
prevFixedPointDepartureTime = point.arrival.seconds + (point.stopFor?.seconds ?: 0.0)
210+
prevFixedPointDepartureTime = arrivalTime + extraTime + (point.stopFor?.seconds ?: 0.0)
215211
}
216212
val pathEnd = Offset<Path>(maxEffortEnvelope.endPos.meters)
217213
if (prevFixedPointOffset < pathEnd) {

0 commit comments

Comments
 (0)