Skip to content
This repository was archived by the owner on Dec 9, 2025. It is now read-only.

Commit cd4a22a

Browse files
committed
Update G2/G2+ AFM data, and add "Wet runway" contamination type
* Updates source data to latest G2/G2+ AFM * Applies new "wet runway" corrections (added new contamination type to support) * G1 AFM not updated with wet runway corrections; will only be applied in "Regression" mode
1 parent 7291498 commit cd4a22a

File tree

11 files changed

+598
-158
lines changed

11 files changed

+598
-158
lines changed

SF50 Shared/Models/NOTAM.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,13 +126,17 @@ public enum Contamination: Sendable, Hashable {
126126
/// Compacted snow or ice on the runway
127127
case compactSnow
128128

129+
/// Wet runway surface
130+
case wetRunway
131+
129132
/// Raw type string for persistence.
130133
var type: String {
131134
switch self {
132135
case .waterOrSlush: ContaminationType.waterOrSlush.rawValue
133136
case .slushOrWetSnow: ContaminationType.slushOrWetSnow.rawValue
134137
case .drySnow: ContaminationType.drySnow.rawValue
135138
case .compactSnow: ContaminationType.compactSnow.rawValue
139+
case .wetRunway: ContaminationType.wetRunway.rawValue
136140
}
137141
}
138142

@@ -143,6 +147,7 @@ public enum Contamination: Sendable, Hashable {
143147
case .slushOrWetSnow(let depth): depth.converted(to: .meters).value
144148
case .drySnow: nil
145149
case .compactSnow: nil
150+
case .wetRunway: nil
146151
}
147152
}
148153

@@ -161,6 +166,8 @@ public enum Contamination: Sendable, Hashable {
161166
self = .drySnow
162167
case .compactSnow:
163168
self = .compactSnow
169+
case .wetRunway:
170+
self = .wetRunway
164171
}
165172
}
166173

@@ -174,5 +181,7 @@ public enum Contamination: Sendable, Hashable {
174181
case drySnow
175182
/// Compacted snow or ice
176183
case compactSnow
184+
/// Wet runway surface
185+
case wetRunway
177186
}
178187
}

SF50 Shared/Performance/Models/BaseRegressionPerformanceModel.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ class BaseRegressionPerformanceModel: BasePerformanceModel {
2727
/// Bounds checker to validate inputs against AFM table ranges.
2828
let boundsChecker: BoundsChecker
2929

30+
/// Calculator for runway contamination effects.
31+
let contaminationCalculator: ContaminationCalculator
32+
3033
/// Indicates if the takeoff inputs are below the minimum AFM table bounds.
3134
var takeoffInputsOffscaleLow: Bool {
3235
boundsChecker.takeoffBoundsStatus(
@@ -75,6 +78,7 @@ class BaseRegressionPerformanceModel: BasePerformanceModel {
7578
modelType: DataTableLoader.ModelType
7679
) {
7780
self.boundsChecker = BoundsChecker(modelType: modelType)
81+
self.contaminationCalculator = ContaminationCalculator(modelType: modelType)
7882
super.init(conditions: conditions, configuration: configuration, runway: runway, notam: notam)
7983
}
8084

@@ -94,7 +98,7 @@ class BaseRegressionPerformanceModel: BasePerformanceModel {
9498
// MARK: - Shared contamination calculation
9599

96100
func landingRun_contaminationAddition(distance: Value<Double>) -> Value<Double> {
97-
ContaminationCalculator.landingRunContaminationAddition(
101+
contaminationCalculator.landingRunContaminationAddition(
98102
distance: distance,
99103
contamination: notam?.contamination
100104
)

0 commit comments

Comments
 (0)