diff --git a/aman/types/Inbound.py b/aman/types/Inbound.py index 9045ecf..aff0ec7 100644 --- a/aman/types/Inbound.py +++ b/aman/types/Inbound.py @@ -28,8 +28,17 @@ class Inbound: self.findArrivalRunway(sequencingConfig) self.findArrivalRoute(navData) - duration = self.secondsUntilTouchdown(weatherModel) - self.InitialArrivalTime = self.ReportTime + duration + flightTime, flightTimeUntilIaf, trackmiles = self.secondsUntilTouchdown(weatherModel) + + # calculate the maximum time to gain (assumption: 10% speed increase by acceleration and shortcuts) + avgSpeed = self.Report.distanceToIAF / (float(flightTimeUntilIaf.seconds) / 3600.0) + self.MaximumTimeToGain = flightTimeUntilIaf - timedelta(minutes = (self.Report.distanceToIAF / (avgSpeed * 1.1)) * 60) + avgSpeed = trackmiles / (float(flightTime.seconds) / 3600.0) + self.MaximumTimeToGain += flightTime - timedelta(minutes = (trackmiles / (avgSpeed * 1.1)) * 60) + + # calculate the different arrival times + self.InitialArrivalTime = self.ReportTime + flightTime + self.EarliestArrivalTime = self.InitialArrivalTime - self.MaximumTimeToGain self.EstimatedArrivalTime = self.InitialArrivalTime self.EstimatedStarEntryTime = None @@ -104,6 +113,7 @@ class Inbound: currentIAS = self.PerformanceData.ias(self.Report.dynamics.altitude, trackmiles) currentPosition = [ self.Report.dynamics.altitude, self.Report.dynamics.groundSpeed ] distanceToWaypoint = self.Report.distanceToIAF + flightTimeUntilIafSeconds = 0 flightTimeSeconds = 0 nextWaypointIndex = 0 flownDistance = 0.0 @@ -147,6 +157,8 @@ class Inbound: currentIAS = newIAS flightTimeSeconds += 10 + if flownDistance <= self.Report.distanceToIAF: + flightTimeUntilIafSeconds += 10 if flownDistance >= trackmiles: break @@ -165,4 +177,4 @@ class Inbound: currentHeading = self.PlannedStar.Route[lastWaypointIndex].bearing(self.PlannedStar.Route[nextWaypointIndex]) currentPosition[1] = min(weather.calculateGS(newAltitude, currentIAS, currentHeading), currentPosition[1]) - return timedelta(seconds = flightTimeSeconds) + return timedelta(seconds = flightTimeSeconds), timedelta(seconds = flightTimeUntilIafSeconds), trackmiles