define member variables with capital letters
This commit is contained in:
@@ -7,13 +7,13 @@ import scipy.interpolate
|
||||
|
||||
class WeatherModel:
|
||||
def __init__(self, gaforId, weather : Weather):
|
||||
self.gafor = gaforId
|
||||
self.weather = weather
|
||||
self.windDirectionModel = None
|
||||
self.windSpeedModel = None
|
||||
self.lastWeatherUpdate = None
|
||||
self.minimumAltitude = 1000000
|
||||
self.maximumAltitude = -1
|
||||
self.Gafor = gaforId
|
||||
self.Weather = weather
|
||||
self.WindDirectionModel = None
|
||||
self.WindSpeedModel = None
|
||||
self.LastWeatherUpdate = None
|
||||
self.MinimumAltitude = 1000000
|
||||
self.MaximumAltitude = -1
|
||||
|
||||
# create the density interpolation model
|
||||
# the density model is based on https://aerotoolbox.com/atmcalc/
|
||||
@@ -95,51 +95,51 @@ class WeatherModel:
|
||||
return ias * math.sqrt(1.225 / self.densityModel(altitude).item())
|
||||
|
||||
def updateWindModel(self):
|
||||
if None == self.lastWeatherUpdate or self.lastWeatherUpdate != self.weather.provider.updateTime:
|
||||
self.lastWeatherUpdate = self.weather.provider.updateTime
|
||||
if None == self.LastWeatherUpdate or self.LastWeatherUpdate != self.Weather.Provider.UpdateTime:
|
||||
self.LastWeatherUpdate = self.Weather.Provider.UpdateTime
|
||||
|
||||
self.minimumAltitude = 1000000
|
||||
self.maximumAltitude = -1
|
||||
self.windDirectionModel = None
|
||||
self.windSpeedModel = None
|
||||
self.MinimumAltitude = 1000000
|
||||
self.MaximumAltitude = -1
|
||||
self.WindDirectionModel = None
|
||||
self.WindSpeedModel = None
|
||||
|
||||
if None != self.weather.provider.windData and self.gafor in self.weather.provider.windData:
|
||||
if None != self.Weather.Provider.WindData and self.Gafor in self.Weather.Provider.WindData:
|
||||
altitudes = []
|
||||
directions = []
|
||||
speeds = []
|
||||
|
||||
# collect the data for the wind model
|
||||
for level in self.weather.provider.windData[self.gafor]:
|
||||
for level in self.Weather.Provider.WindData[self.Gafor]:
|
||||
altitudes.append(level[0])
|
||||
directions.append(level[1])
|
||||
speeds.append(level[2])
|
||||
|
||||
# define the thresholds for later boundary checks
|
||||
if self.minimumAltitude > level[0]:
|
||||
self.minimumAltitude = level[0]
|
||||
if self.maximumAltitude < level[0]:
|
||||
self.maximumAltitude = level[0]
|
||||
if self.MinimumAltitude > level[0]:
|
||||
self.MinimumAltitude = level[0]
|
||||
if self.MaximumAltitude < level[0]:
|
||||
self.MaximumAltitude = level[0]
|
||||
|
||||
# calculate the models
|
||||
if 1 < len(altitudes):
|
||||
self.windDirectionModel = scipy.interpolate.interp1d(altitudes, directions)
|
||||
self.windSpeedModel = scipy.interpolate.interp1d(altitudes, speeds)
|
||||
self.WindDirectionModel = scipy.interpolate.interp1d(altitudes, directions)
|
||||
self.WindSpeedModel = scipy.interpolate.interp1d(altitudes, speeds)
|
||||
|
||||
def calculateGS(self, altitude : int, ias : int, heading : int):
|
||||
self.updateWindModel()
|
||||
tas = self.calculateTAS(altitude, ias)
|
||||
|
||||
# initialize the wind data
|
||||
if None != self.windDirectionModel and None != self.windSpeedModel:
|
||||
if None != self.WindDirectionModel and None != self.WindSpeedModel:
|
||||
direction = 0.0
|
||||
speed = 0.0
|
||||
if None != self.windSpeedModel and None != self.windDirectionModel:
|
||||
if self.maximumAltitude <= altitude:
|
||||
altitude = self.maximumAltitude - 1
|
||||
if self.minimumAltitude >= altitude:
|
||||
altitude = self.minimumAltitude + 1
|
||||
direction = self.windDirectionModel(altitude).item()
|
||||
speed = self.windSpeedModel(altitude).item()
|
||||
if None != self.WindSpeedModel and None != self.WindDirectionModel:
|
||||
if self.MaximumAltitude <= altitude:
|
||||
altitude = self.MaximumAltitude - 1
|
||||
if self.MinimumAltitude >= altitude:
|
||||
altitude = self.MinimumAltitude + 1
|
||||
direction = self.WindDirectionModel(altitude).item()
|
||||
speed = self.WindSpeedModel(altitude).item()
|
||||
else:
|
||||
speed = 0
|
||||
direction = 0
|
||||
|
||||
Reference in New Issue
Block a user