|
@@ -61,15 +61,17 @@ class Inbound:
|
|
|
flightTime, flightTimeUntilIaf, trackmiles, arrivalRoute = self.arrivalEstimation(identifier.Runway, star, weatherModel)
|
|
|
|
|
|
avgSpeed = trackmiles / (float(flightTime.seconds) / 3600.0)
|
|
|
- ttg = flightTime - timedelta(minutes = (trackmiles / (avgSpeed * 1.1)) * 60)
|
|
|
- ttl = timedelta(minutes = (trackmiles / (avgSpeed * 0.9)) * 60) - flightTime
|
|
|
+ # the closer we get to the IAF the less time delta can be achieved by short cuts, delay vectors or speeds
|
|
|
+ ratio = min(2.0, max(0.0, self.Report.distanceToIAF / (trackmiles - self.Report.distanceToIAF)))
|
|
|
+ possibleTimeDelta = (trackmiles / (avgSpeed * 0.9)) * 60
|
|
|
+ timeDelta = timedelta(minutes = (possibleTimeDelta - flightTime.total_seconds() / 60) * ratio)
|
|
|
ita = self.ReportTime + flightTime
|
|
|
- earliest = ita - ttg
|
|
|
- latest = ita + ttl
|
|
|
+ earliest = ita - timeDelta
|
|
|
+ latest = ita + timeDelta
|
|
|
|
|
|
- self.ArrivalCandidates[identifier.Runway.Name] = ArrivalData(ttg = ttg, star = star, ita = ita, earliest = earliest,
|
|
|
+ self.ArrivalCandidates[identifier.Runway.Name] = ArrivalData(ttg = timeDelta, star = star, ita = ita, earliest = earliest,
|
|
|
entry = flightTimeUntilIaf, touchdown = flightTime,
|
|
|
- ttl = ttl, latest = latest)
|
|
|
+ ttl = timeDelta, latest = latest, route = arrivalRoute, trackmiles = trackmiles)
|
|
|
|
|
|
# calculate the first values for later plannings
|
|
|
for candidate in self.ArrivalCandidates:
|