Skip to content

Commit 4698a66

Browse files
committed
core: skip work schedules on track chunks with no routes
1 parent dc11fc8 commit 4698a66

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

core/kt-osrd-sim-infra/src/main/kotlin/fr/sncf/osrd/sim_infra/api/InterlockingInfra.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ interface LocationInfra : TrackNetworkInfra, TrackInfra, TrackProperties {
3232

3333
fun getDetectorName(det: DetectorId): String
3434

35-
fun getTrackChunkZone(chunk: TrackChunkId): ZoneId
35+
fun getTrackChunkZone(chunk: TrackChunkId): ZoneId?
3636
}
3737

3838
fun LocationInfra.isBufferStop(detector: StaticIdx<Detector>): Boolean {

core/kt-osrd-sim-infra/src/main/kotlin/fr/sncf/osrd/sim_infra/impl/RawInfraImpl.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -605,8 +605,8 @@ class RawInfraImpl(
605605
return detectorPool[det].names[0]
606606
}
607607

608-
override fun getTrackChunkZone(chunk: TrackChunkId): ZoneId {
609-
return chunkToZoneMap[chunk]!!
608+
override fun getTrackChunkZone(chunk: TrackChunkId): ZoneId? {
609+
return chunkToZoneMap[chunk]
610610
}
611611

612612
override fun getNextTrackSection(

core/src/main/kotlin/fr/sncf/osrd/stdcm/preprocessing/implementation/BlockAvailability.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ import fr.sncf.osrd.utils.units.Offset
1717
import fr.sncf.osrd.utils.units.meters
1818
import kotlin.math.max
1919
import kotlin.math.min
20+
import org.slf4j.Logger
21+
import org.slf4j.LoggerFactory
22+
23+
val blockAvailabilityLogger: Logger = LoggerFactory.getLogger("BlockAvailability")
2024

2125
data class BlockAvailability(
2226
val fullInfra: FullInfra,
@@ -143,6 +147,12 @@ private fun convertWorkSchedules(
143147
val chunkEndOffset = chunkStartOffset + infra.getTrackChunkLength(chunk).distance
144148
if (chunkStartOffset > range.end || chunkEndOffset < range.begin) continue
145149
val zone = infra.getTrackChunkZone(chunk)
150+
if (zone == null) {
151+
blockAvailabilityLogger.info(
152+
"Skipping part of work schedule [${entry.startTime}; ${entry.endTime}] because it is on a track not fully covered by routes: $track",
153+
)
154+
continue
155+
}
146156
res.add(
147157
SpacingRequirement(
148158
infra.getZoneName(zone),

0 commit comments

Comments
 (0)