diff --git a/aman/sys/aco/Node.py b/aman/sys/aco/Node.py index 3e7b41b..b3e7ce5 100644 --- a/aman/sys/aco/Node.py +++ b/aman/sys/aco/Node.py @@ -77,6 +77,7 @@ class Node: currentPosition = [ self.Inbound.Report.dynamics.altitude, self.Inbound.Report.dynamics.groundSpeed ] distanceToWaypoint = self.PredictedDistanceToIAF flightTimeSeconds = 0 + flightTimeOnStarSeconds = 0 nextWaypointIndex = 0 flownDistance = 0.0 arrivalRoute = [ ArrivalWaypoint(waypoint = star.Route[0], trackmiles = distanceToWaypoint) ] @@ -120,6 +121,8 @@ class Node: currentIAS = newIAS flightTimeSeconds += 10 + if flownDistance >= self.PredictedDistanceToIAF: + flightTimeOnStarSeconds += 10 if flownDistance >= trackmiles: self.updateArrivalWaypoint(arrivalRoute, flightTimeSeconds, currentPosition[0], currentIAS, currentPosition[1]) break @@ -143,7 +146,7 @@ class Node: arrivalRoute.append(ArrivalWaypoint(waypoint = star.Route[nextWaypointIndex], trackmiles = arrivalRoute[-1].Trackmiles + distanceToWaypoint)) - return timedelta(seconds = flightTimeSeconds), trackmiles, arrivalRoute + return timedelta(seconds = flightTimeSeconds), trackmiles, arrivalRoute, timedelta(seconds = flightTimeOnStarSeconds) def __init__(self, inbound : Inbound, referenceTime : datetime, weatherModel : WeatherModel, navData : SctEseFormat, sequencingConfig : AirportSequencing): @@ -179,7 +182,7 @@ class Node: star = Node.findArrivalRoute(self.Inbound.Report.initialApproachFix, identifier.Runway, navData) if None != star: - flightTime, trackmiles, arrivalRoute = self.arrivalEstimation(identifier.Runway, star, weatherModel) + flightTime, trackmiles, arrivalRoute, flightTimeOnStar = self.arrivalEstimation(identifier.Runway, star, weatherModel) # calculate average speed gain avgSpeed = trackmiles / (flightTime.total_seconds() / 3600.0)