From eab9be8105ac8e2241b63737f75f8df045383c62 Mon Sep 17 00:00:00 2001 From: FranzYuri <86535872+FranzYuri@users.noreply.github.com> Date: Fri, 5 Nov 2021 02:50:31 -0300 Subject: [PATCH 01/59] Update Environment.py --- rocketpy/Environment.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index 26b8102fc..2e84fbcb6 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -9,6 +9,7 @@ import bisect import warnings import time +import pytz from datetime import datetime, timedelta from inspect import signature, getsourcelines from collections import namedtuple @@ -346,6 +347,12 @@ def __init__( self.setDate(date) else: self.date = None + + # Save local date + self.local_date = None + + # Save local time zone + self.time_zone = None # Initialize constants self.earthRadius = 6.3781 * (10 ** 6) @@ -380,12 +387,15 @@ def __init__( def setDate(self, date): """Set date and time of launch and update weather conditions if - date dependent atmospheric model is used. + date dependent atmospheric model is used. To see all time zones use + print(pytz.all_timezones). Parameters ---------- date : Date Date object specifying launch date and time. + time_zone : string, optional + Name of the time zone. Return ------ @@ -394,6 +404,11 @@ def setDate(self, date): # Store date self.date = datetime(*date) + if time_zone != None: + self.time_zone = time_zone + tz = pytz.timezone(self.time_zone) + self.local_date = self.date.replace(tzinfo=pytz.UTC).astimezone(tz) + # Update atmospheric conditions if atmosphere type is Forecast, # Reanalysis or Ensemble try: @@ -2823,6 +2838,8 @@ def info(self): print("\nLaunch Rail Length: ", self.rL, " m") if self.date != None: print("Launch Date: ", self.date, " UTC") + if self.local_date != None: + print("Launch Date: ", self.local_date, self.time_zone) if self.lat != None and self.lon != None: print("Launch Site Latitude: {:.5f}°".format(self.lat)) print("Launch Site Longitude: {:.5f}°".format(self.lon)) @@ -2950,6 +2967,8 @@ def allInfo(self): print("\nLaunch Rail Length: ", self.rL, " m") if self.date != None: print("Launch Date: ", self.date, " UTC") + if self.local_date != None: + print("Launch Date: ", self.local_date, self.time_zone) if self.lat != None and self.lon != None: print("Launch Site Latitude: {:.5f}°".format(self.lat)) print("Launch Site Longitude: {:.5f}°".format(self.lon)) From 5a0decf0fc5d15f082e7f1360f2250e07af7719a Mon Sep 17 00:00:00 2001 From: Franz Masatoshi Yuri Date: Tue, 9 Nov 2021 03:35:49 -0300 Subject: [PATCH 02/59] commit on 'enh/utc_time' --- rocketpy/Environment.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index 2e84fbcb6..65663f16c 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -347,7 +347,7 @@ def __init__( self.setDate(date) else: self.date = None - + # Save local date self.local_date = None @@ -385,7 +385,7 @@ def __init__( return None - def setDate(self, date): + def setDate(self, date, time_zone = None): """Set date and time of launch and update weather conditions if date dependent atmospheric model is used. To see all time zones use print(pytz.all_timezones). From 73962a1d4c5f8f3f02f783fd5633af091847edea Mon Sep 17 00:00:00 2001 From: Franz Masatoshi Yuri Date: Tue, 9 Nov 2021 03:39:44 -0300 Subject: [PATCH 03/59] commit on 'enh/utc_time' --- rocketpy/Environment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index 65663f16c..49e94e9eb 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -385,7 +385,7 @@ def __init__( return None - def setDate(self, date, time_zone = None): + def setDate(self, date, time_zone=None): """Set date and time of launch and update weather conditions if date dependent atmospheric model is used. To see all time zones use print(pytz.all_timezones). From c322a4986ac3c938b1c834b47f0b1213de6ef5ba Mon Sep 17 00:00:00 2001 From: FranzYuri <86535872+FranzYuri@users.noreply.github.com> Date: Thu, 11 Nov 2021 16:50:30 -0300 Subject: [PATCH 04/59] Update requirements.txt --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 30001b109..4a59f377b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,5 @@ numpy>=1.0 scipy>=1.0 matplotlib>=3.0 netCDF4>=1.4 -requests \ No newline at end of file +requests +pytz From 8ad3df61e4d5abc4f57e0fb7a709cbad1883e238 Mon Sep 17 00:00:00 2001 From: Franz Masatoshi Yuri Date: Mon, 3 Jan 2022 03:56:21 -0300 Subject: [PATCH 05/59] commit on 'enh/utc_time' --- rocketpy/Environment.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index 49e94e9eb..dceaec1a8 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -385,15 +385,15 @@ def __init__( return None - def setDate(self, date, time_zone=None): + def setDate(self, date, time_zone='UTC'): """Set date and time of launch and update weather conditions if date dependent atmospheric model is used. To see all time zones use print(pytz.all_timezones). Parameters ---------- - date : Date - Date object specifying launch date and time. + date : Datetime + Datetime object specifying launch date and time. time_zone : string, optional Name of the time zone. @@ -402,12 +402,13 @@ def setDate(self, date, time_zone=None): None """ # Store date - self.date = datetime(*date) - - if time_zone != None: - self.time_zone = time_zone - tz = pytz.timezone(self.time_zone) - self.local_date = self.date.replace(tzinfo=pytz.UTC).astimezone(tz) + self.time_zone = time_zone + tz = pytz.timezone(self.time_zone) + local_date = datetime(*date) + if local_date.tzinfo == None: + local_date = tz.localize(local_date) + self.local_date = local_date + self.date = self.local_date.replace(tzinfo=pytz.UTC) # Update atmospheric conditions if atmosphere type is Forecast, # Reanalysis or Ensemble From 4d37d86f50ccc92a6ce2c2ad0ea538fd00fb0799 Mon Sep 17 00:00:00 2001 From: giovaniceotto Date: Mon, 3 Jan 2022 11:11:23 -0300 Subject: [PATCH 06/59] FEAT: add pytz to setup.py install requirements --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index b971b83fa..08c84e267 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,8 @@ 'numpy>=1.0', 'scipy>=1.0', 'matplotlib>=3.0', - 'requests' + 'requests', + 'pytz', ], maintainer="RocketPy Developers", author="Giovani Hidalgo Ceotto", From ac46cf01f24b0e348db269e510141fa5cf8818d1 Mon Sep 17 00:00:00 2001 From: giovaniceotto Date: Mon, 3 Jan 2022 11:11:52 -0300 Subject: [PATCH 07/59] MAINT: minor code refactoring --- rocketpy/Environment.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index dceaec1a8..e51e5630f 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -81,7 +81,11 @@ class Environment: Environment.elevation : float Launch site elevation. Environment.date : datetime - Date time of launch. + Date time of launch in UTC. + Environment.local_date : datetime + Date time of launch in the local time_zone, defined by Environment.time_zone. + Environment.time_zone : string + Local time zone specification. Topographic informations: Environment.elevLonArray: array @@ -387,21 +391,21 @@ def __init__( def setDate(self, date, time_zone='UTC'): """Set date and time of launch and update weather conditions if - date dependent atmospheric model is used. To see all time zones use - print(pytz.all_timezones). + date dependent atmospheric model is used. Parameters ---------- date : Datetime Datetime object specifying launch date and time. time_zone : string, optional - Name of the time zone. + Name of the time zone. To see all time zones, import pytz and run + print(pytz.all_timezones). Default time zone is "UTC". Return ------ None """ - # Store date + # Store date and configure time zone self.time_zone = time_zone tz = pytz.timezone(self.time_zone) local_date = datetime(*date) From 16c11070070c0080ce1b1bb356208fdda64ba134 Mon Sep 17 00:00:00 2001 From: giovaniceotto Date: Mon, 3 Jan 2022 11:41:31 -0300 Subject: [PATCH 08/59] FEAT: added time zone argument to Env.init --- rocketpy/Environment.py | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index e51e5630f..34fa9d85d 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -295,6 +295,7 @@ def __init__( longitude=0, elevation=0, datum="SIRGAS2000", + time_zone="UTC", ): """Initialize Environment class, saving launch rail length, launch date, location coordinates and elevation. Note that @@ -331,7 +332,13 @@ def __init__( 'Open-Elevation' which uses the Open-Elevation API to find elevation data. For this option, latitude and longitude must also be specified. Default value is 0. - datum: + datum : string + The desired reference ellipsoide model, the following options are + available: "SAD69", "WGS84", "NAD83", and "SIRGAS2000". The default + is "SIRGAS2000", then this model will be used if the user make some + typing mistake. + time_zone : string, optional + Name of the time zone. To see all time zones, import pytz and run Returns ------- @@ -348,15 +355,11 @@ def __init__( # Save date if date != None: - self.setDate(date) + self.setDate(date, time_zone) else: self.date = None - - # Save local date - self.local_date = None - - # Save local time zone - self.time_zone = None + self.local_date = None + self.time_zone = None # Initialize constants self.earthRadius = 6.3781 * (10 ** 6) @@ -2841,10 +2844,10 @@ def info(self): # Print launch site details print("Launch Site Details") print("\nLaunch Rail Length: ", self.rL, " m") - if self.date != None: + if self.date != None and 'UTC' not in self.time_zone: + print("Launch Date: ", self.date, " UTC |", self.local_date, self.time_zone) + else: print("Launch Date: ", self.date, " UTC") - if self.local_date != None: - print("Launch Date: ", self.local_date, self.time_zone) if self.lat != None and self.lon != None: print("Launch Site Latitude: {:.5f}°".format(self.lat)) print("Launch Site Longitude: {:.5f}°".format(self.lon)) @@ -2970,10 +2973,10 @@ def allInfo(self): # Print launch site details print("\n\nLaunch Site Details") print("\nLaunch Rail Length: ", self.rL, " m") - if self.date != None: + if self.date != None and 'UTC' not in self.time_zone: + print("Launch Date: ", self.date, " UTC |", self.local_date, self.time_zone) + else: print("Launch Date: ", self.date, " UTC") - if self.local_date != None: - print("Launch Date: ", self.local_date, self.time_zone) if self.lat != None and self.lon != None: print("Launch Site Latitude: {:.5f}°".format(self.lat)) print("Launch Site Longitude: {:.5f}°".format(self.lon)) From 658f478bcbb1396efba736649c637eb00f98c0ef Mon Sep 17 00:00:00 2001 From: giovaniceotto Date: Mon, 3 Jan 2022 11:44:21 -0300 Subject: [PATCH 09/59] MAINT: rename time_zone to timeZone, following current camelCase standard --- rocketpy/Environment.py | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index 34fa9d85d..f5a0df04e 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -83,9 +83,9 @@ class Environment: Environment.date : datetime Date time of launch in UTC. Environment.local_date : datetime - Date time of launch in the local time_zone, defined by Environment.time_zone. - Environment.time_zone : string - Local time zone specification. + Date time of launch in the local time zone, defined by Environment.timeZone. + Environment.timeZone : string + Local time zone specification. See pytz for time zone info. Topographic informations: Environment.elevLonArray: array @@ -295,7 +295,7 @@ def __init__( longitude=0, elevation=0, datum="SIRGAS2000", - time_zone="UTC", + timeZone="UTC", ): """Initialize Environment class, saving launch rail length, launch date, location coordinates and elevation. Note that @@ -337,7 +337,7 @@ def __init__( available: "SAD69", "WGS84", "NAD83", and "SIRGAS2000". The default is "SIRGAS2000", then this model will be used if the user make some typing mistake. - time_zone : string, optional + timeZone : string, optional Name of the time zone. To see all time zones, import pytz and run Returns @@ -355,11 +355,11 @@ def __init__( # Save date if date != None: - self.setDate(date, time_zone) + self.setDate(date, timeZone) else: self.date = None self.local_date = None - self.time_zone = None + self.timeZone = None # Initialize constants self.earthRadius = 6.3781 * (10 ** 6) @@ -392,7 +392,7 @@ def __init__( return None - def setDate(self, date, time_zone='UTC'): + def setDate(self, date, timeZone='UTC'): """Set date and time of launch and update weather conditions if date dependent atmospheric model is used. @@ -400,7 +400,7 @@ def setDate(self, date, time_zone='UTC'): ---------- date : Datetime Datetime object specifying launch date and time. - time_zone : string, optional + timeZone : string, optional Name of the time zone. To see all time zones, import pytz and run print(pytz.all_timezones). Default time zone is "UTC". @@ -409,8 +409,8 @@ def setDate(self, date, time_zone='UTC'): None """ # Store date and configure time zone - self.time_zone = time_zone - tz = pytz.timezone(self.time_zone) + self.timeZone = timeZone + tz = pytz.timezone(self.timeZone) local_date = datetime(*date) if local_date.tzinfo == None: local_date = tz.localize(local_date) @@ -2844,8 +2844,8 @@ def info(self): # Print launch site details print("Launch Site Details") print("\nLaunch Rail Length: ", self.rL, " m") - if self.date != None and 'UTC' not in self.time_zone: - print("Launch Date: ", self.date, " UTC |", self.local_date, self.time_zone) + if self.date != None and 'UTC' not in self.timeZone: + print("Launch Date: ", self.date, " UTC |", self.local_date, self.timeZone) else: print("Launch Date: ", self.date, " UTC") if self.lat != None and self.lon != None: @@ -2973,8 +2973,8 @@ def allInfo(self): # Print launch site details print("\n\nLaunch Site Details") print("\nLaunch Rail Length: ", self.rL, " m") - if self.date != None and 'UTC' not in self.time_zone: - print("Launch Date: ", self.date, " UTC |", self.local_date, self.time_zone) + if self.date != None and 'UTC' not in self.timeZone: + print("Launch Date: ", self.date, " UTC |", self.local_date, self.timeZone) else: print("Launch Date: ", self.date, " UTC") if self.lat != None and self.lon != None: From 6394b0f2cc391b72df5daeaf80a6dd8f69a030ff Mon Sep 17 00:00:00 2001 From: giovaniceotto Date: Mon, 3 Jan 2022 11:46:28 -0300 Subject: [PATCH 10/59] Maint: rename local_date to LocalDate to follow camelCase --- rocketpy/Environment.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index f5a0df04e..01580d8dd 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -82,7 +82,7 @@ class Environment: Launch site elevation. Environment.date : datetime Date time of launch in UTC. - Environment.local_date : datetime + Environment.localDate : datetime Date time of launch in the local time zone, defined by Environment.timeZone. Environment.timeZone : string Local time zone specification. See pytz for time zone info. @@ -358,7 +358,7 @@ def __init__( self.setDate(date, timeZone) else: self.date = None - self.local_date = None + self.localDate = None self.timeZone = None # Initialize constants @@ -411,11 +411,11 @@ def setDate(self, date, timeZone='UTC'): # Store date and configure time zone self.timeZone = timeZone tz = pytz.timezone(self.timeZone) - local_date = datetime(*date) - if local_date.tzinfo == None: - local_date = tz.localize(local_date) - self.local_date = local_date - self.date = self.local_date.replace(tzinfo=pytz.UTC) + localDate = datetime(*date) + if localDate.tzinfo == None: + localDate = tz.localize(localDate) + self.localDate = localDate + self.date = self.localDate.replace(tzinfo=pytz.UTC) # Update atmospheric conditions if atmosphere type is Forecast, # Reanalysis or Ensemble @@ -2845,7 +2845,7 @@ def info(self): print("Launch Site Details") print("\nLaunch Rail Length: ", self.rL, " m") if self.date != None and 'UTC' not in self.timeZone: - print("Launch Date: ", self.date, " UTC |", self.local_date, self.timeZone) + print("Launch Date: ", self.date, " UTC |", self.localDate, self.timeZone) else: print("Launch Date: ", self.date, " UTC") if self.lat != None and self.lon != None: @@ -2974,7 +2974,7 @@ def allInfo(self): print("\n\nLaunch Site Details") print("\nLaunch Rail Length: ", self.rL, " m") if self.date != None and 'UTC' not in self.timeZone: - print("Launch Date: ", self.date, " UTC |", self.local_date, self.timeZone) + print("Launch Date: ", self.date, " UTC |", self.localDate, self.timeZone) else: print("Launch Date: ", self.date, " UTC") if self.lat != None and self.lon != None: From 756381d677d5228ada0ed8f95263c90bf2bde792 Mon Sep 17 00:00:00 2001 From: giovaniceotto Date: Mon, 3 Jan 2022 12:04:36 -0300 Subject: [PATCH 11/59] BUG: fix conversion between local and UTC time zone using astimezone --- rocketpy/Environment.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index 01580d8dd..7f3738941 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -415,7 +415,7 @@ def setDate(self, date, timeZone='UTC'): if localDate.tzinfo == None: localDate = tz.localize(localDate) self.localDate = localDate - self.date = self.localDate.replace(tzinfo=pytz.UTC) + self.date = self.localDate.astimezone(pytz.UTC) # Update atmospheric conditions if atmosphere type is Forecast, # Reanalysis or Ensemble @@ -2844,10 +2844,11 @@ def info(self): # Print launch site details print("Launch Site Details") print("\nLaunch Rail Length: ", self.rL, " m") + time_format = "%Y-%m-%d %H:%M:%S" if self.date != None and 'UTC' not in self.timeZone: - print("Launch Date: ", self.date, " UTC |", self.localDate, self.timeZone) + print("Launch Date:", self.date.strftime(time_format), "UTC |", self.localDate.strftime(time_format), self.timeZone) else: - print("Launch Date: ", self.date, " UTC") + print("Launch Date:", self.date.strftime(time_format), "UTC") if self.lat != None and self.lon != None: print("Launch Site Latitude: {:.5f}°".format(self.lat)) print("Launch Site Longitude: {:.5f}°".format(self.lon)) From 4ed5fc05f797570b297d81767b8a09c4e7d6af58 Mon Sep 17 00:00:00 2001 From: giovaniceotto Date: Mon, 3 Jan 2022 12:06:55 -0300 Subject: [PATCH 12/59] MAINT: minor code refactoring --- rocketpy/Environment.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index 7f3738941..17bee08a2 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -501,7 +501,7 @@ def setElevation(self, elevation="Open-Elevation"): response = requests.get(requestURL) results = response.json()["results"] self.elevation = results[0]["elevation"] - print("Elevation received: ", self.elevation) + print("Elevation received:", self.elevation) except: raise RuntimeError("Unabel to reach Open-Elevation API servers.") else: @@ -2843,7 +2843,7 @@ def info(self): """ # Print launch site details print("Launch Site Details") - print("\nLaunch Rail Length: ", self.rL, " m") + print("\nLaunch Rail Length:", self.rL, " m") time_format = "%Y-%m-%d %H:%M:%S" if self.date != None and 'UTC' not in self.timeZone: print("Launch Date:", self.date.strftime(time_format), "UTC |", self.localDate.strftime(time_format), self.timeZone) @@ -2865,7 +2865,7 @@ def info(self): # Print atmospheric model details print("\n\nAtmospheric Model Details") modelType = self.atmosphericModelType - print("\nAtmospheric Model Type: ", modelType) + print("\nAtmospheric Model Type:", modelType) print( modelType + " Maximum Height: {:.3f} km".format(self.maxExpectedHeight / 1000) @@ -2876,7 +2876,7 @@ def info(self): endDate = self.atmosphericModelEndDate interval = self.atmosphericModelInterval print(modelType + " Time Period: From ", initDate, " to ", endDate, " UTC") - print(modelType + " Hour Interval: ", interval, " hrs") + print(modelType + " Hour Interval:", interval, " hrs") # Determine latitude and longitude range initLat = self.atmosphericModelInitLat endLat = self.atmosphericModelEndLat @@ -2885,8 +2885,8 @@ def info(self): print(modelType + " Latitude Range: From ", initLat, "° To ", endLat, "°") print(modelType + " Longitude Range: From ", initLon, "° To ", endLon, "°") if modelType == "Ensemble": - print("Number of Ensemble Members: ", self.numEnsembleMembers) - print("Selected Ensemble Member: ", self.ensembleMember, " (Starts from 0)") + print("Number of Ensemble Members:", self.numEnsembleMembers) + print("Selected Ensemble Member:", self.ensembleMember, " (Starts from 0)") # Print atmospheric conditions print("\n\nSurface Atmospheric Conditions") @@ -2973,11 +2973,11 @@ def allInfo(self): # Print launch site details print("\n\nLaunch Site Details") - print("\nLaunch Rail Length: ", self.rL, " m") + print("\nLaunch Rail Length:", self.rL, " m") if self.date != None and 'UTC' not in self.timeZone: - print("Launch Date: ", self.date, " UTC |", self.localDate, self.timeZone) + print("Launch Date:", self.date, " UTC |", self.localDate, self.timeZone) else: - print("Launch Date: ", self.date, " UTC") + print("Launch Date:", self.date, " UTC") if self.lat != None and self.lon != None: print("Launch Site Latitude: {:.5f}°".format(self.lat)) print("Launch Site Longitude: {:.5f}°".format(self.lon)) @@ -2986,7 +2986,7 @@ def allInfo(self): # Print atmospheric model details print("\n\nAtmospheric Model Details") modelType = self.atmosphericModelType - print("\nAtmospheric Model Type: ", modelType) + print("\nAtmospheric Model Type:", modelType) print( modelType + " Maximum Height: {:.3f} km".format(self.maxExpectedHeight / 1000) @@ -2997,7 +2997,7 @@ def allInfo(self): endDate = self.atmosphericModelEndDate interval = self.atmosphericModelInterval print(modelType + " Time Period: From ", initDate, " to ", endDate, " UTC") - print(modelType + " Hour Interval: ", interval, " hrs") + print(modelType + " Hour Interval:", interval, " hrs") # Determine latitude and longitude range initLat = self.atmosphericModelInitLat endLat = self.atmosphericModelEndLat @@ -3006,8 +3006,8 @@ def allInfo(self): print(modelType + " Latitude Range: From ", initLat, "° To ", endLat, "°") print(modelType + " Longitude Range: From ", initLon, "° To ", endLon, "°") if modelType == "Ensemble": - print("Number of Ensemble Members: ", self.numEnsembleMembers) - print("Selected Ensemble Member: ", self.ensembleMember, " (Starts from 0)") + print("Number of Ensemble Members:", self.numEnsembleMembers) + print("Selected Ensemble Member:", self.ensembleMember, " (Starts from 0)") # Print atmospheric conditions print("\n\nSurface Atmospheric Conditions") @@ -3534,7 +3534,7 @@ def printEarthDetails(self): # print("Launch Site UTM coordinates: {:.2f} ".format(self.initialEast) # + self.initialEW + " {:.2f} ".format(self.initialNorth) + self.initialHemisphere # ) - # print("Launch Site UTM zone number: ", self.initialUtmZone) + # print("Launch Site UTM zone number:", self.initialUtmZone) # print("Launch Site Surface Elevation: {:.1f} m".format(self.elevation)) print("Earth Radius at Launch site: {:.1f} m".format(self.earthRadius)) print("Gravity acceleration at launch site: Still not implemented :(") From f14b26d53f376b69aaa0c8b578c21972b9a212e1 Mon Sep 17 00:00:00 2001 From: giovaniceotto Date: Mon, 3 Jan 2022 12:13:57 -0300 Subject: [PATCH 13/59] MAINT: fix date time format in Env.allInfo() --- rocketpy/Environment.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index 17bee08a2..95ca5368a 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -2974,10 +2974,11 @@ def allInfo(self): # Print launch site details print("\n\nLaunch Site Details") print("\nLaunch Rail Length:", self.rL, " m") + time_format = "%Y-%m-%d %H:%M:%S" if self.date != None and 'UTC' not in self.timeZone: - print("Launch Date:", self.date, " UTC |", self.localDate, self.timeZone) + print("Launch Date:", self.date.strftime(time_format), "UTC |", self.localDate.strftime(time_format), self.timeZone) else: - print("Launch Date:", self.date, " UTC") + print("Launch Date:", self.date.strftime(time_format), "UTC") if self.lat != None and self.lon != None: print("Launch Site Latitude: {:.5f}°".format(self.lat)) print("Launch Site Longitude: {:.5f}°".format(self.lon)) From f6120b18d745d3ea58197e2f97cbd8fcef8058b8 Mon Sep 17 00:00:00 2001 From: giovaniceotto Date: Mon, 3 Jan 2022 12:35:34 -0300 Subject: [PATCH 14/59] TST: fix failing tests due to minor bugs --- rocketpy/Environment.py | 4 ++-- tests/test_environment.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index 95ca5368a..f96b68415 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -2847,7 +2847,7 @@ def info(self): time_format = "%Y-%m-%d %H:%M:%S" if self.date != None and 'UTC' not in self.timeZone: print("Launch Date:", self.date.strftime(time_format), "UTC |", self.localDate.strftime(time_format), self.timeZone) - else: + elif self.date != None: print("Launch Date:", self.date.strftime(time_format), "UTC") if self.lat != None and self.lon != None: print("Launch Site Latitude: {:.5f}°".format(self.lat)) @@ -2977,7 +2977,7 @@ def allInfo(self): time_format = "%Y-%m-%d %H:%M:%S" if self.date != None and 'UTC' not in self.timeZone: print("Launch Date:", self.date.strftime(time_format), "UTC |", self.localDate.strftime(time_format), self.timeZone) - else: + elif self.date != None: print("Launch Date:", self.date.strftime(time_format), "UTC") if self.lat != None and self.lon != None: print("Launch Site Latitude: {:.5f}°".format(self.lat)) diff --git a/tests/test_environment.py b/tests/test_environment.py index 948e55f30..86ed049cf 100644 --- a/tests/test_environment.py +++ b/tests/test_environment.py @@ -1,4 +1,5 @@ import datetime +import pytz from unittest.mock import patch import pytest @@ -32,7 +33,7 @@ def test_env_set_date(example_env): tomorrow = datetime.date.today() + datetime.timedelta(days=1) example_env.setDate((tomorrow.year, tomorrow.month, tomorrow.day, 12)) assert example_env.date == datetime.datetime( - tomorrow.year, tomorrow.month, tomorrow.day, 12 + tomorrow.year, tomorrow.month, tomorrow.day, 12, tzinfo=pytz.utc ) From c284e818173068a17811a71353c3e813058adc2d Mon Sep 17 00:00:00 2001 From: giovaniceotto Date: Mon, 3 Jan 2022 12:40:19 -0300 Subject: [PATCH 15/59] STY: apply black formatting --- rocketpy/Environment.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index f96b68415..c772230b2 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -338,7 +338,7 @@ def __init__( is "SIRGAS2000", then this model will be used if the user make some typing mistake. timeZone : string, optional - Name of the time zone. To see all time zones, import pytz and run + Name of the time zone. To see all time zones, import pytz and run Returns ------- @@ -392,7 +392,7 @@ def __init__( return None - def setDate(self, date, timeZone='UTC'): + def setDate(self, date, timeZone="UTC"): """Set date and time of launch and update weather conditions if date dependent atmospheric model is used. @@ -2845,8 +2845,14 @@ def info(self): print("Launch Site Details") print("\nLaunch Rail Length:", self.rL, " m") time_format = "%Y-%m-%d %H:%M:%S" - if self.date != None and 'UTC' not in self.timeZone: - print("Launch Date:", self.date.strftime(time_format), "UTC |", self.localDate.strftime(time_format), self.timeZone) + if self.date != None and "UTC" not in self.timeZone: + print( + "Launch Date:", + self.date.strftime(time_format), + "UTC |", + self.localDate.strftime(time_format), + self.timeZone, + ) elif self.date != None: print("Launch Date:", self.date.strftime(time_format), "UTC") if self.lat != None and self.lon != None: @@ -2975,8 +2981,14 @@ def allInfo(self): print("\n\nLaunch Site Details") print("\nLaunch Rail Length:", self.rL, " m") time_format = "%Y-%m-%d %H:%M:%S" - if self.date != None and 'UTC' not in self.timeZone: - print("Launch Date:", self.date.strftime(time_format), "UTC |", self.localDate.strftime(time_format), self.timeZone) + if self.date != None and "UTC" not in self.timeZone: + print( + "Launch Date:", + self.date.strftime(time_format), + "UTC |", + self.localDate.strftime(time_format), + self.timeZone, + ) elif self.date != None: print("Launch Date:", self.date.strftime(time_format), "UTC") if self.lat != None and self.lon != None: From 746311d0442d5338bc65249f9742f041dfb16805 Mon Sep 17 00:00:00 2001 From: Mateus Stano <69485049+MateusStano@users.noreply.github.com> Date: Tue, 4 Jan 2022 01:55:43 -0300 Subject: [PATCH 16/59] Fixed airfoil lift calculation --- rocketpy/Flight.py | 2 +- rocketpy/Rocket.py | 171 +++++++++++++++++++++------------------------ 2 files changed, 80 insertions(+), 93 deletions(-) diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index 9d634a93f..2ebc37ef9 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -1324,7 +1324,7 @@ def uDot(self, t, u, postProcessing=False): compStreamVzBn = compStreamVzB / compStreamSpeed if -1 * compStreamVzBn < 1: compAttackAngle = np.arccos(-compStreamVzBn) - cLift = abs(aerodynamicSurface[1](compAttackAngle)) + cLift = abs(aerodynamicSurface[1](compAttackAngle, freestreamMach)) # Component lift force magnitude compLift = ( 0.5 * rho * (compStreamSpeed ** 2) * self.rocket.area * cLift diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index 4969f983c..acfef9e88 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -370,11 +370,13 @@ def evaluateStaticMargin(self): # Calculate total lift coeficient derivative and center of pressure if len(self.aerodynamicSurfaces) > 0: for aerodynamicSurface in self.aerodynamicSurfaces: - self.totalLiftCoeffDer += aerodynamicSurface[1].differentiate( - x=1e-2, dx=1e-3 - ) + self.totalLiftCoeffDer += Function( + lambda x: aerodynamicSurface[1](x, 0), extrapolation="natural" + ).differentiate(x=1e-2, dx=1e-3) self.cpPosition += ( - aerodynamicSurface[1].differentiate(x=1e-2, dx=1e-3) + Function( + lambda x: aerodynamicSurface[1](x, 0), extrapolation="natural" + ).differentiate(x=1e-2, dx=1e-3) * aerodynamicSurface[0][2] ) self.cpPosition /= self.totalLiftCoeffDer @@ -436,11 +438,10 @@ def addTail(self, topRadius, bottomRadius, length, distanceToCM): # Calculate clalpha clalpha = -2 * (1 - r ** (-2)) * (topRadius / rref) ** 2 cldata = Function( - lambda x: clalpha * x, - "Alpha (rad)", + lambda x, mach: clalpha * x, + ["Alpha (rad)", "Mach"], "Cl", interpolation="linear", - extrapolation="natural", ) # Store values as new aerodynamic surface @@ -500,8 +501,8 @@ def addNose(self, length, kind, distanceToCM): # Calculate clalpha clalpha = 2 cldata = Function( - lambda x: clalpha * x, - "Alpha (rad)", + lambda x, mach: clalpha * x, + ["Alpha (rad)", "Mach"], "Cl", interpolation="linear", extrapolation="natural", @@ -526,7 +527,7 @@ def addFins( distanceToCM, radius=0, cantAngle=0, - airfoil=None, + airfoil=False, ): """Create a fin set, storing its parameters as part of the aerodynamicSurfaces list. Its parameters are the axial position @@ -556,7 +557,7 @@ def addFins( cantAngle : int, float, optional Fins cant angle with respect to the rocket centerline. Must be given in degrees. - airfoil : string + airfoil : bool, optional Fin's lift curve. It must be a .csv file. The .csv file shall contain no headers and the first column must specify time in seconds, while the second column specifies lift coefficient. Lift @@ -576,6 +577,7 @@ def addFins( Yr = rootChord + tipChord s = span Af = Yr * s / 2 # fin area + gamac = np.arctan((Cr - Ct) / (2 * span)) # mid chord angle Ymac = ( (s / 3) * (Cr + 2 * Ct) / Yr ) # span wise position of fin's mean aerodynamic chord @@ -593,6 +595,24 @@ def addFins( self.span = s self.distanceRocketFins = distanceToCM + # Auxiliary functions + + # Defines beta parameter + def beta(mach): + if mach < 0.8: + return np.sqrt(1 - mach ** 2) + elif mach < 1.1: + return np.sqrt(1 - 0.8 ** 2) + else: + return np.sqrt(mach ** 2 - 1) + + def finNumCorrection(n): + correctorFactor = [2.37, 2.74, 2.99, 3.24] + if n >= 5 and n <= 8: + return correctorFactor[n - 5] + else: + return n / 2 + # Calculate cp position relative to cm if distanceToCM < 0: cpz = distanceToCM - ( @@ -605,103 +625,68 @@ def addFins( + (1 / 6) * (Cr + Ct - Cr * Ct / (Cr + Ct)) ) - # Calculate lift parameters for planar fins - if not airfoil: - # Calculate clalpha - clalpha = (4 * n * (s / d) ** 2) / (1 + np.sqrt(1 + (2 * Lf / Yr) ** 2)) - clalpha *= 1 + radius / (s + radius) - - # # Create a function of lift values by attack angle - cldata = Function( - lambda x: clalpha * x, "Alpha (rad)", "Cl", interpolation="linear" - ) + if airfoil: # Calculate lift parameters for generic airfoil. Documented at - # Parameters for Roll Moment. Documented at: https://drive.google.com/file/d/1xR817-hMTlFucq1IKWM8SUmYqMtROJy6/view - clfDelta = n * (Ymac + radius) * clalpha / d - cldOmega = ( - n * clalpha * np.cos(cantAngleRad) * trapezoidalConstant / (Af * d) - ) - rollParameters = ( - [clfDelta, cldOmega, cantAngleRad] if cantAngleRad != 0 else [0, 0, 0] - ) + # Fin–body interference correction + const = 1 + radius / (s + radius) - # Store values - fin = [(0, 0, cpz), cldata, rollParameters, "Fins"] - self.aerodynamicSurfaces.append(fin) + # Aplies number of fins correction to lift coefficient + const *= finNumCorrection(n) / 2 - # Refresh static margin calculation - self.evaluateStaticMargin() + # Calculates clalpha * alpha + cldata = Function( + lambda x, mach: x + * const + * 2 + * np.pi + * (s ** 2 / Af) + / ( + 1 + np.sqrt(1 + ((beta(mach) * s ** 2) / (Af * np.cos(gamac))) ** 2) + ), + ["Alpha (rad)", "Mach"], + "Cl", + interpolation="linear", + extrapolation="natural", + ) - # Return self - return self.aerodynamicSurfaces[-1] + # Calculates clalpha + clalpha = Function( + lambda x: cldata(x, 0), extrapolation="natural" + ).differentiate(x=1e-2, dx=1e-3) - else: + else: # Calculate lift parameters for trapezoildal planar fins - def cnalfa1(cn): - """Calculates the normal force coefficient derivative of a 3D - airfoil for a given Cnalfa0 - - Parameters - ---------- - cn : int - Normal force coefficient derivative of a 2D airfoil. - - Returns - ------- - Cnalfa1 : int - Normal force coefficient derivative of a 3D airfoil. - """ - - # Retrieve parameters for calculations - Af = (Cr + Ct) * span / 2 - # fin area - AR = 2 * (span ** 2) / Af # Aspect ratio - gamac = np.arctan((Cr - Ct) / (2 * span)) - # mid chord angle - FD = 2 * np.pi * AR / (cn * np.cos(gamac)) - Cnalfa1 = ( - cn - * FD - * (Af / self.area) - * np.cos(gamac) - / (2 + FD * (1 + (4 / FD ** 2)) ** 0.5) - ) - return Cnalfa1 + # Calculates clalpha + clalpha = (4 * n * (s / d) ** 2) / (1 + np.sqrt(1 + (2 * Lf / Yr) ** 2)) - # Import the lift curve as a function of lift values by attack angle - read = genfromtxt(airfoil, delimiter=",") + # Fin–body interference correction + clalpha *= 1 + radius / (s + radius) - # Aplies number of fins to lift coefficient data - data = [[cl[0], (n / 2) * cnalfa1(cl[1])] for cl in read] + # Create a function of lift values by attack angle cldata = Function( - data, - "Alpha (rad)", + lambda x, mach: clalpha * x, + ["Alpha (rad)", "Mach"], "Cl", interpolation="linear", extrapolation="natural", ) - # Takes an approximation to an angular coefficient - clalpha = cldata.differentiate(x=0, dx=1e-2) - - # Parameters for Roll Moment. Documented at: https://drive.google.com/file/d/1xR817-hMTlFucq1IKWM8SUmYqMtROJy6/view - clfDelta = n * (Ymac + radius) * clalpha / d - cldOmega = ( - n * clalpha * np.cos(cantAngleRad) * trapezoidalConstant / (Af * d) - ) - rollParameters = ( - [clfDelta, cldOmega, cantAngleRad] if cantAngleRad != 0 else [0, 0, 0] - ) + # Parameters for Roll Moment. Documented at: https://github.com/Projeto-Jupiter/RocketPy/blob/develop/docs/technical/aerodynamics/Roll_Equations.pdf + clfDelta = n * (Ymac + radius) * clalpha / d + cldOmega = n * clalpha * np.cos(cantAngleRad) * trapezoidalConstant / (Af * d) + rollParameters = ( + [clfDelta, cldOmega, cantAngleRad] if cantAngleRad != 0 else [0, 0, 0] + ) - # Store values - fin = [(0, 0, cpz), cldata, rollParameters, "Fins"] - self.aerodynamicSurfaces.append(fin) + # Store values + fin = [(0, 0, cpz), cldata, rollParameters, "Fins"] + self.aerodynamicSurfaces.append(fin) - # Refresh static margin calculation - self.evaluateStaticMargin() + # Refresh static margin calculation + self.evaluateStaticMargin() - # Return self - return self.aerodynamicSurfaces[-1] + # Return self + return self.aerodynamicSurfaces[-1] def addParachute( self, name, CdS, trigger, samplingRate=100, lag=0, noise=(0, 0, 0) @@ -988,7 +973,9 @@ def allInfo(self): print("\nAerodynamics Lift Coefficient Derivatives") for aerodynamicSurface in self.aerodynamicSurfaces: name = aerodynamicSurface[-1] - clalpha = aerodynamicSurface[1].differentiate(x=1e-2, dx=1e-3) + clalpha = Function( + lambda x: aerodynamicSurface[1](x, 0), extrapolation="natural" + ).differentiate(x=1e-2, dx=1e-3) print( name + " Lift Coefficient Derivative: {:.3f}".format(clalpha) + "/rad" ) From a2724b1cb24497a74074e15788a226565565c8e9 Mon Sep 17 00:00:00 2001 From: MateusStano <69485049+MateusStano@users.noreply.github.com> Date: Tue, 4 Jan 2022 02:04:37 -0300 Subject: [PATCH 17/59] Add files via upload --- .../aerodynamics/Fins_Lift_Coefficient.pdf | Bin 0 -> 201281 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/technical/aerodynamics/Fins_Lift_Coefficient.pdf diff --git a/docs/technical/aerodynamics/Fins_Lift_Coefficient.pdf b/docs/technical/aerodynamics/Fins_Lift_Coefficient.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b4ee192f19d4edc8cc52c44412880830fef0b046 GIT binary patch literal 201281 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�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 z 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�o3=bbQo)dHWd4adpUBBl1N~;BWBghl~GDH(Fd1_a7!f6jfHduDu zX+=m4>%wHbYj%8n#)3f$^|Fh`$EkAma$Do-K%t8r2TUfgFn7E4_?7lVc!)byHNu=r z%Rcl$(I8R0I{pzj%2@6&KUMC?^%5K}|E%YP8U!ij!!WAs76|xb{?!1U9_mjKAv099 zfHUenwb|etj`beC^V$)&0fRSD|16)1vY3nkB`=|5R{qg4zX#D30O7cJ1X>Wm!-3zi zhx+L>kkBT0gkTK$E1l|ddVHP*8a2N+GEMj#?&^oRuIW#QolI%gA&%v`2#t;R@V`)gK^A%@s>M- z(-JngHk}Qeyjl2kVn8ONOedzGcEIeDnpDI?NFYEEiuSpxj%K2$_2VQZxPALp`Z*c~ z`8sJi$d0X?=la!EUvXbHbH)Zm32mdZXdA8nV?owlJ3gYlXGd{CaPXg)vI}%RY$smqJTEBWhM_!NXys}9S z?u83sT8Wd**>#iK0jLo{$k$dG0+sc9#hD@^}Q8V@2?d=iIH` z!s1Zl4>I6)Ben@hY!qfOA)-s)-Y5W}!j@dPiToP4eMiK53jcYJrQz+P8AoCh!lu(0 z3^;>~Z~3jOR|@JP!e)NoCg*_-J%XyMe5*BMHN-*VSn>BIOnLUX zxn^SU0AuzDbWu|IYB}UaR`Ws1&fs~Cw)At&3eQ&1y(0I$G zJBHmDl8vDFc%jzTjHdofXaTy?H7sp;Is2PTAJ0i((N9On z%&jXfe`g>GrJN17m`eB_0Z@8*AswC)iZSOkjTcaQKL~tUYQh9nhoa$%1_khSm_MDo zjPg=@7sck7cc{$31Hj4fEw$0nf0OdywNvAU0M)B&ARA*@{iv56KA~lHD43 zWBj9BOqyf^GkJz{Jabsotj1+ay=+l4s9AywlVYorq@x_p=)6cXfvqLC*wfT!nzDw+ z6$|xgIE+eV^`-4TLFG_oX0mG*HN9j11kH$n%JojlJZ}k$%t0004v!xQ=)gk`!#(4R ztj@HByuuKdq&$Ejq$^!U&l8HC@vL{9nuB7P$Lql;$8Xrx1?NblT^DHnp0s%rjBm5- zsw#n^>c2M7`f~Lf^!ZF65~CLh08V=$-peoRp64}BQCFJTYv?wHpRhO74f@1Z3io@~ zE2QM_J_4r7%%NP@K*c`_uUw8mb@7u@s`h@6r4SBl(hmZu-kNMa@alkZevKvR>WFQA zO$as!1yNPLE>xsx{Iyz6<~=XHUGZD%k5FQtqXh6&GXz!QAL8;d7~ItXvNU}FPQM}FE^7>CERksOzxB+VUVw96n>5d`IQFDiwy z_OZni5+9w> zC5g&{hR#k%SEzt@rHC$X_J8YndPFFYoMGZV`n{&hLRc!czXS1YTMvfJ`}M4;sO{4? zm8tq08aO&(lNhBOJ0KuGbl5JszE`|Y6r(U?u_e7|5^9}HIBd)gBVF`f{W^wNZJ=q50}k~@E$s({zHO{ zYq;y2sS~>1M^E{HLrZ41^3ktepL1Cq6W)a~Ei2l#G^99+u=s~=B-Sj`W+_$+L!U;t zOK@nVq(i;c!d@w@ZWEC^4`u2C+g2*Pj;^5mOQ1P!T~jYQSi-#GjqI;=d0=3v4C&nH zIoa&otFaA%mbG^n8$%hA_K+IB$|Py+C##%c>Za|D`rYe(!S$l(o~u<}`F8h}Bm|_7 z;HG>DdG4O8wJY5WxB|C#ZdMzoPuYRK8I-q0W=TSPX7^!r^H|q1sosH*EBl+*7Q#`> zvcDwSZCwk~VTVt07@t?&nXX%DW?`rlc}Ue^j&`juuy*;UIeY=Xu{~rL>Vw zBv3{atu;2!k)~?+o6P%=!~APKV*a^vvjP&aD>FV7C|PpkZGIDfOYyb?wo2QWM@Oxe zvbb-Xv)JE~#QrB_Sy;cw9q<8pcJo^svulp`!p9O}fKb+)UZd#@Mm6piEOFe?Y z<34DA;xQ$5YPpQ3`9N%c(`EO-#o6_s zS>xnf<f(u;-0F1qNO(yD?yHnIj&uiQX{ZzYYB z2_F7Z)yj~CiTdsw_M@3Id!Y`%i{ya^O$iTu6i$33Xl7bPI~)H~*TeH0nNODbErTg< zlj{fhbs>84V7po?5BoCEbVIrO8$G^Hu?=p7Z*j1yz4m=Dc1O#f`)PS3JSQX%jpi{5 zGpfL}S(5T>(y+dGj0Rg?r|h>2`Ygk&^D47#iRBWndlH`0k~@PCz@go06YJMH*dL66 zR&2$%x!k`{2Pt%Xgau(I_wD2b7fa%3FXF5Q~&k1#H8pef2#wpNZvVVXJvF&#`;b(#F1imyY2(Qz|zq~k>n0s0h?$WHN2Ig?a z9EHMj(HF>j^noS==fcFs)&!ta4%4wx6+J*I%Z|YL7CP^i`E8T0t(=+?*g3Dwkk8rI zRF#+Sr$Hbcil%(}0ZqQ->HP2b1ty07GyDR8g_GrfA+Osc$=Ve$AckIlKwlFodFH3b zd8i`)5LrL1rV5`O7IgufXfMqX)NC7Z?(g%4U+6s9x3!#G*aivQVTaNy&>P1T1GtZ1 z-O2aSC87x)`OAJC1^dqU#YToDMivA-Gv>8MQ^RgGA6(eHE}&!Rf@a;kuXE4`6qJ`#khR~v}pV}Tj~y9kuSz$>A=@m&Je z@m;?No|nA9!w4wJehjIsGef);6V zPk2;sv#e6pL$>RjfGiM<`*yv`jKZY4406Kg%k2Bab9}XW?rL^sdu_H?glc!Sr5idi z-MG`m*WNYRb>`@J`EsFid1mqWL82E{yV0q*WuE1|$aWA!ZntsfUa>v&mSM6jzQ_dj zg!FuUbzRK`H*f7{5o^3SL!z*gb$dd|Uky!wtS|fv<*R*f%lR@%Ax=q(fMSE|T+ZI# ziJ>nN@m_MJz~X$bQshEVJ-@j;%d*>duZ!z7%m485pNDgqtk+2(3)($m$QOemihPQ+dkC2pL2`MRiLwuvO$>C=-b_Fg+xO zKkLrF~LtJarkW~;5RfjLD76oQ%w2<`8Vc6 z)S-EQN&c%Uv>c=dE7_U}VDeyfeDPIuGye)R(CqU3CV|g#lIi|9(%S;xL}lC;s9UG< zq7vwHH1w2>>7gW&mQWhAl3^At91l6WB#@5PXm~zAlh|= z3=@8n$j^9-C*juiN3d_X4;(|CeuJ**f-@#qUy;3s!F3SjGK*~+fhS!A&6i!1oKOz$ zp5y^Pd#MD!|3VE+|A%VeWcXk0D{NF{?KZg(yU*3@!+=f)Soukm=wLyLO+YvwKxA)j zYGa2Ep~6jtTM=HLaxp70?@_hMby!-rOneRn^V4v;$^19iqJFQ{+ zSGC)2|8#NXcZ@HL{d9SK(fG@Jo-yV3dp&*=jO;ydlJZAyZ+673R>vg?dE<>_2lDNI zQGRisyN>)4_m3^$QGS`$Q=_s3+)yeiW6;@PAxmf5#i) zK);7UW9&=x!W!}Iyg`~ZP^X}ME8y1cJ!#t{<*k3c{dAA)3cEGcr%5yVqNc@{U;Ht5 z)tT~>@yQOoRo(iQq^0G}MF?wy#1=xYN;x@@u1r7v?%ft;{I(y_o>_b+gqGcj^l*9S z!$;VpliR#yMVF>jH|kigj^udqtFai>&egB&aG6MveVg}GtcfgHpi~R>-}prVtOB}* z><_jJ?V5I8^A(jy9@9=x8gA9!vFD5XUU6KJWQX%|R=m#9?B1apZ&XD~>- zLP@8fEt!%o6^)5%X0F_jFj%!4Y=|bbX=zj9ras?*8r%|SZjcVBofQZ|Zl*!tWWWAo zPEDE?Wf#~zkMtpZiy0x4G+(e@bJ5?kU?vlM36jqWTY7RLA}T>vvjaG z*RrOzZ0oZvhc0wZs~}c|L<5Mvg3^}qm{=V(E!d9YILWSGN$W2R7KwDBJxgM&Rx7R1 zzD^Be=~lheA=I$~k@#(b#*$)npamj52SlgUxSszXEr)0>EvM+7OwMGJ{LC7mSD0AJ z9VeMr+G{ZOo@4ib^jWEZtb*PJgF3_9@g7REl5vvImPBC2jCN>~`AFkRVJ$4-SDqqJ z_CaQ;3G;i;DchGX3CywjOSHWy%>cjgOw2=->^j4c$m_Zh8Z`Yb>}=Y+G!Xf74siBK zAH1_oX}qQ8tuz_y4m;`F%sc7{^BSqCeY)OX5aL=MAorb7YBzDlH7p$MiPxarhimH2 zue#G*3cdz$d(pVJ4XKV=u?}>$(~P>KaHG4*-^W<=74SO>DWBIaPkrp`-@Q{`&#F&- zZR_8EO~2o{-ucHazVjQugJ!-E$lm#r*S`r(zQf4g`xre^OS`8fegYZmSH}TmXAjP{ zN9ID3&^1~QsylHgzkr}LALVi2 zg?+xLmeVUufL4$8u3s|@Hl*vjhrgz*Pcl3$hD5uAw+LCxBW$1EiS}*NMFdR8U5_en z@kZ0X8+D-G>s#EqXa0@Y`)BlJe0IPRUAO;*U}kZ2>&?+ET94SMQ6oa2uQb5&{(MOn z`6>?bS1I=|g5vKtwW-R@=UewRSBH(*x&{rY4&=#cGu5GnZ!1~uzjq&w(>2Pq)(def zQI@JSDRK==piAfiQ29jtsX#P95dH6PKnQ>vbU2_#l}T+Le^!4uV0iyh@bc>AKS255 zslX8aXGo08M1%REd)W9qQYrh;JtZ;@4b}0A4xwUjFof0nv;Z^4?2^A?fni`^+KdVy z{`juI{WZWG_KvY&LKtD9VXa!089)gA?=%IYhq)eeKWyT_=^q)xxU8_`i{1Rl8rv|3 z6|Q`BtlA=|1KVej1@Gxm#ma^E=&JA1nK5_;+NGFi;Fr6ktb;ToK}TUbiMKFgo;OJ9 z!kyk2KodEnD8YHD(FO_SpJfc=QK%}BJVO{VXJp(^VXP6FOpyBk=bWze(=XJONaLmX zOyi5?sR9y^WoxtveS4YLT;mBl5Bl~~)=`)tZ#C#G*vAxbFSvV|D_KTrSu)1z6xi_b zAyq(>8m=uJvm-uDjMKW4q?nxx$X#S$^qJuZhv5k9Op0vc4jpm8ucC+btRg$HD|o`l@bo zpdYSP$-qF0H~B8?xNm2YB8a`>ea9%S&kG zgug&g3qbU ze<5a;|3fjev;Oaqd7lBX=bySeLdpinFab#bG~qf_0>?!w)v{$>e7Y@(gaTyP*Zbo= zqE0I>;&gQ0==Hk%;C5WvqlEh9O6(G`dEL`eZr4I=V_ufAvs+r*(W^n$S6WL-P3ZC> zir49eqm7qqUd^4V@-qT_x8=lVM$rM;lN3d;js{XhmC?YLivbYj%wO_I|}RAJ1sm?~g6j)~YNwS3l`#+M3zXgTH~` z2lGY)R9#MZIbZr&L8b?Gta^-g1mcs$vtYMWn-jUQSqrXN$J=5~GZ@x-s8M5V%YIgr zmupwxzt8f$BjXlsi83eGhM5Edr1kp?nN-p{1F3Xyl?R6Bd64MjTIkz3GRrh%m|6CP zIs(NIc)N1<-Qi$My$w{pww*Dqbf)WLiW-u61ZgVZ!F3d^5#=fLh+t@eo;$KH zo&(EJ7oJIwBm)WVXbzbVJ;s<1C*@y&mA6*>QS^d-?5%*|bShCBNN8T5>H@N$jOql< z@DEtWaCN|VgGNZBlFzVjlb<}JS4W)U3fMJ-qHZ=sU_S$$(eULnnc_5&#fZr8zH}&0 zS_br`JV$UD9a2vy$%m##DGlujB4-xXs!nJ^dLpl8{LQ@^z^|ytWME~wi@ku_+5tT$ z8TNmIv@@0QUXpJ(--?HJ`WlXhP@bzrZ<106o11 zg5r9AKfmz2$oM_M-O1+$@D1Aem<_4tVZAP!i-F~3NZw>b1kK7Idz&rnGBd;RF*ofp z7X{5mL-8?d-eimi%}z1BOrZ{#V zQ2A})1o-*bo0$DHrva#$Iy(LI24JRRWMO3GWMX4wre&gIqh+LHVW4AT2I%~!7l4d~ zt0~~;N*Hx00ao^g&cB^Z4FRtIcT+YxW;*7d3sG>iGjTEgPbdHVM4ejks zO@1P~p|z9ge^OLaTa*7peI~a5>DE;|?0@3DhLWk-{}c5Y8JPZGrUn0fdZ1wFXyXL< z&)h-S&f3Ms)(P-KsZ?+@HL);u{`rX*|AVFk(5nNq0gM3VpH&w?uWaG@b1&=wdPxz0 zHV-Eo0~;H=DIR%O%0hC*w~HD_;ml5l-t+{2$)Q41Z@*D9TOANNr2>^C?e$>fk4xf}@_9Zk)knHbriNl8WJ#i0K$?4t%% literal 0 HcmV?d00001 From f74a5b953a446ed40cb570077d4ad53d2e95dc52 Mon Sep 17 00:00:00 2001 From: Mateus Stano <69485049+MateusStano@users.noreply.github.com> Date: Tue, 4 Jan 2022 02:18:39 -0300 Subject: [PATCH 18/59] Fixed documentation link and text --- rocketpy/Rocket.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index 699193db1..8408f7436 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -558,10 +558,9 @@ def addFins( Fins cant angle with respect to the rocket centerline. Must be given in degrees. airfoil : bool, optional - Fin's lift curve. It must be a .csv file. The .csv file shall - contain no headers and the first column must specify time in - seconds, while the second column specifies lift coefficient. Lift - coeffitient is adimentional. + Fin's airfoil shape. If True, generic airfoil lift + calculations will be performed. If False, calculations for + the trapezoildal shape will be perfomed Returns ------- @@ -625,7 +624,8 @@ def finNumCorrection(n): + (1 / 6) * (Cr + Ct - Cr * Ct / (Cr + Ct)) ) - if airfoil: # Calculate lift parameters for generic airfoil. Documented at + if airfoil: # Calculate lift parameters for generic airfoil. + # Documented at https://github.com/Projeto-Jupiter/RocketPy/blob/develop/docs/technical/aerodynamics/Fins_Lift_Coefficient.pdf # Fin–body interference correction const = 1 + radius / (s + radius) @@ -671,13 +671,14 @@ def finNumCorrection(n): extrapolation="natural", ) - # Parameters for Roll Moment. Documented at: https://github.com/Projeto-Jupiter/RocketPy/blob/develop/docs/technical/aerodynamics/Roll_Equations.pdf + # Parameters for Roll Moment. + # Documented at: https://github.com/Projeto-Jupiter/RocketPy/blob/develop/docs/technical/aerodynamics/Roll_Equations.pdf clfDelta = n * (Ymac + radius) * clalpha / d cldOmega = n * clalpha * np.cos(cantAngleRad) * trapezoidalConstant / (Af * d) rollParameters = ( [clfDelta, cldOmega, cantAngleRad] if cantAngleRad != 0 else [0, 0, 0] ) - + # Store values fin = [(0, 0, cpz), cldata, rollParameters, "Fins"] self.aerodynamicSurfaces.append(fin) From d81ae0cfffa713bdc2a28d52ddc7b2ff6bd40875 Mon Sep 17 00:00:00 2001 From: Mateus Stano <69485049+MateusStano@users.noreply.github.com> Date: Tue, 4 Jan 2022 15:16:32 -0300 Subject: [PATCH 19/59] Update Rocket.py --- rocketpy/Rocket.py | 1 + 1 file changed, 1 insertion(+) diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index 8408f7436..8aa82edfc 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -605,6 +605,7 @@ def beta(mach): else: return np.sqrt(mach ** 2 - 1) + # Defines number of fins correction def finNumCorrection(n): correctorFactor = [2.37, 2.74, 2.99, 3.24] if n >= 5 and n <= 8: From 8b79cb9c71c5523cad80e7b7604643be841da866 Mon Sep 17 00:00:00 2001 From: Mateus Stano <69485049+MateusStano@users.noreply.github.com> Date: Tue, 4 Jan 2022 15:18:21 -0300 Subject: [PATCH 20/59] Update Rocket.py --- rocketpy/Rocket.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index 8aa82edfc..e08081940 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -632,7 +632,7 @@ def finNumCorrection(n): const = 1 + radius / (s + radius) # Aplies number of fins correction to lift coefficient - const *= finNumCorrection(n) / 2 + const *= finNumCorrection(n) # Calculates clalpha * alpha cldata = Function( From 7f419d6ae2c8ce58ea67938e79f0cd14d32a40c6 Mon Sep 17 00:00:00 2001 From: Mateus Stano <69485049+MateusStano@users.noreply.github.com> Date: Fri, 7 Jan 2022 20:40:50 -0300 Subject: [PATCH 21/59] Removed 'extrapolation' from Function objects based on a callable --- rocketpy/Rocket.py | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index e08081940..88a4f3038 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -371,11 +371,11 @@ def evaluateStaticMargin(self): if len(self.aerodynamicSurfaces) > 0: for aerodynamicSurface in self.aerodynamicSurfaces: self.totalLiftCoeffDer += Function( - lambda x: aerodynamicSurface[1](x, 0), extrapolation="natural" + lambda alpha: aerodynamicSurface[1](alpha, 0) ).differentiate(x=1e-2, dx=1e-3) self.cpPosition += ( Function( - lambda x: aerodynamicSurface[1](x, 0), extrapolation="natural" + lambda alpha: aerodynamicSurface[1](alpha, 0) ).differentiate(x=1e-2, dx=1e-3) * aerodynamicSurface[0][2] ) @@ -438,10 +438,7 @@ def addTail(self, topRadius, bottomRadius, length, distanceToCM): # Calculate clalpha clalpha = -2 * (1 - r ** (-2)) * (topRadius / rref) ** 2 cldata = Function( - lambda x, mach: clalpha * x, - ["Alpha (rad)", "Mach"], - "Cl", - interpolation="linear", + lambda alpha, mach: clalpha * alpha, ["Alpha (rad)", "Mach"], "Cl", ) # Store values as new aerodynamic surface @@ -501,11 +498,7 @@ def addNose(self, length, kind, distanceToCM): # Calculate clalpha clalpha = 2 cldata = Function( - lambda x, mach: clalpha * x, - ["Alpha (rad)", "Mach"], - "Cl", - interpolation="linear", - extrapolation="natural", + lambda alpha, mach: clalpha * alpha, ["Alpha (rad)", "Mach"], "Cl", ) # Store values @@ -636,7 +629,7 @@ def finNumCorrection(n): # Calculates clalpha * alpha cldata = Function( - lambda x, mach: x + lambda alpha, mach: alpha * const * 2 * np.pi @@ -646,14 +639,12 @@ def finNumCorrection(n): ), ["Alpha (rad)", "Mach"], "Cl", - interpolation="linear", - extrapolation="natural", ) # Calculates clalpha - clalpha = Function( - lambda x: cldata(x, 0), extrapolation="natural" - ).differentiate(x=1e-2, dx=1e-3) + clalpha = Function(lambda alpha: cldata(alpha, 0),).differentiate( + x=1e-2, dx=1e-3 + ) else: # Calculate lift parameters for trapezoildal planar fins @@ -665,11 +656,7 @@ def finNumCorrection(n): # Create a function of lift values by attack angle cldata = Function( - lambda x, mach: clalpha * x, - ["Alpha (rad)", "Mach"], - "Cl", - interpolation="linear", - extrapolation="natural", + lambda alpha, mach: clalpha * alpha, ["Alpha (rad)", "Mach"], "Cl", ) # Parameters for Roll Moment. @@ -976,7 +963,7 @@ def allInfo(self): for aerodynamicSurface in self.aerodynamicSurfaces: name = aerodynamicSurface[-1] clalpha = Function( - lambda x: aerodynamicSurface[1](x, 0), extrapolation="natural" + lambda alpha: aerodynamicSurface[1](alpha, 0), ).differentiate(x=1e-2, dx=1e-3) print( name + " Lift Coefficient Derivative: {:.3f}".format(clalpha) + "/rad" From 7d8ddbd4c7d7d8544d165578f9cd3b324b7d7b50 Mon Sep 17 00:00:00 2001 From: Mateus Stano <69485049+MateusStano@users.noreply.github.com> Date: Sat, 8 Jan 2022 20:54:03 -0300 Subject: [PATCH 22/59] Update Rocket.py --- rocketpy/Rocket.py | 1 + 1 file changed, 1 insertion(+) diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index b4ae12bbc..7c19fad17 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -654,6 +654,7 @@ def finNumCorrection(n): # Fin–body interference correction clalpha *= 1 + radius / (s + radius) + # Create a function of lift values by attack angle cldata = Function( lambda alpha, mach: clalpha * alpha, ["Alpha (rad)", "Mach"], "Cl", ) From f458d30d04e885beb9056b23edb8cceb814a5abd Mon Sep 17 00:00:00 2001 From: Lint Action Date: Sat, 8 Jan 2022 23:59:59 +0000 Subject: [PATCH 23/59] Fix code style issues with Black --- setup.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/setup.py b/setup.py index a3291ffa6..4ecc61447 100644 --- a/setup.py +++ b/setup.py @@ -6,12 +6,12 @@ setuptools.setup( name="rocketpy", version="0.9.9", - install_requires = [ - 'numpy>=1.0', - 'scipy>=1.0', - 'matplotlib>=3.0', - 'requests', - 'pytz', + install_requires=[ + "numpy>=1.0", + "scipy>=1.0", + "matplotlib>=3.0", + "requests", + "pytz", ], maintainer="RocketPy Developers", author="Giovani Hidalgo Ceotto", From 086922a1d154713b1a313c123263ec55d36d5cb6 Mon Sep 17 00:00:00 2001 From: Mateus Stano <69485049+MateusStano@users.noreply.github.com> Date: Mon, 10 Jan 2022 03:54:45 -0300 Subject: [PATCH 24/59] Applied Black formatting --- rocketpy/Rocket.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index 7c19fad17..bcbce60a0 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -438,7 +438,9 @@ def addTail(self, topRadius, bottomRadius, length, distanceToCM): # Calculate clalpha clalpha = -2 * (1 - r ** (-2)) * (topRadius / rref) ** 2 cldata = Function( - lambda alpha, mach: clalpha * alpha, ["Alpha (rad)", "Mach"], "Cl", + lambda alpha, mach: clalpha * alpha, + ["Alpha (rad)", "Mach"], + "Cl", ) # Store values as new aerodynamic surface @@ -498,7 +500,9 @@ def addNose(self, length, kind, distanceToCM): # Calculate clalpha clalpha = 2 cldata = Function( - lambda alpha, mach: clalpha * alpha, ["Alpha (rad)", "Mach"], "Cl", + lambda alpha, mach: clalpha * alpha, + ["Alpha (rad)", "Mach"], + "Cl", ) # Store values @@ -642,9 +646,9 @@ def finNumCorrection(n): ) # Calculates clalpha - clalpha = Function(lambda alpha: cldata(alpha, 0),).differentiate( - x=1e-2, dx=1e-3 - ) + clalpha = Function( + lambda alpha: cldata(alpha, 0), + ).differentiate(x=1e-2, dx=1e-3) else: # Calculate lift parameters for trapezoildal planar fins @@ -656,7 +660,9 @@ def finNumCorrection(n): # Create a function of lift values by attack angle cldata = Function( - lambda alpha, mach: clalpha * alpha, ["Alpha (rad)", "Mach"], "Cl", + lambda alpha, mach: clalpha * alpha, + ["Alpha (rad)", "Mach"], + "Cl", ) # Parameters for Roll Moment. From 641b5667b28be27120abc650773daf86024e170f Mon Sep 17 00:00:00 2001 From: Mateus Stano <69485049+MateusStano@users.noreply.github.com> Date: Mon, 10 Jan 2022 22:53:57 -0300 Subject: [PATCH 25/59] Fixed Cld dived by zero bug --- rocketpy/Flight.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index 2ac4d1a7e..bcab0b577 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -1342,10 +1342,9 @@ def uDot(self, t, u, postProcessing=False): # Calculates Roll Moment if aerodynamicSurface[-1] == "Fins": Clfdelta, Cldomega, cantAngleRad = aerodynamicSurface[2] - if cantAngleRad != 0: - Clf = Clfdelta * cantAngleRad - Cld = Cldomega * omega3 / freestreamSpeed - M3 += Clf - Cld + Clf = Clfdelta * cantAngleRad + Cld = Cldomega * omega3 / freestreamSpeed if freestreamSpeed != 0 else 0 + M3 += Clf - Cld # Calculate derivatives # Angular acceleration alpha1 = ( From 977f7e1e0c7ac36ead0d50aecfc759915c1d4a9c Mon Sep 17 00:00:00 2001 From: Mateus Stano <69485049+MateusStano@users.noreply.github.com> Date: Tue, 11 Jan 2022 19:11:59 -0300 Subject: [PATCH 26/59] Changed the solution to division by zero to a more trustful one --- rocketpy/Flight.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index bcab0b577..f10a19362 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -1343,7 +1343,11 @@ def uDot(self, t, u, postProcessing=False): if aerodynamicSurface[-1] == "Fins": Clfdelta, Cldomega, cantAngleRad = aerodynamicSurface[2] Clf = Clfdelta * cantAngleRad - Cld = Cldomega * omega3 / freestreamSpeed if freestreamSpeed != 0 else 0 + Cld = ( + Cldomega * omega3 * min(1, 1 / freestreamSpeed) + if freestreamSpeed != 0 + else Cldomega * omega3 + ) M3 += Clf - Cld # Calculate derivatives # Angular acceleration From 1e36730573e05f9b7d462bd7168d8974a7aa08aa Mon Sep 17 00:00:00 2001 From: Lucas Kierulff Balabram Date: Thu, 3 Feb 2022 17:09:20 -0300 Subject: [PATCH 27/59] BUG: remove airfoil implementation The airfoil implementation from pull request #47 was removed and will be readded after careful review and reimplementation. The current implementation is buggy at best. This commit fixes issue #115. --- rocketpy/Flight.py | 9 ++- rocketpy/Rocket.py | 151 +++++++-------------------------------------- 2 files changed, 29 insertions(+), 131 deletions(-) diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index bcab0b577..633095cc2 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -1298,6 +1298,7 @@ def uDot(self, t, u, postProcessing=False): # Calculate lift and moment for each component of the rocket for aerodynamicSurface in self.rocket.aerodynamicSurfaces: compCp = aerodynamicSurface[0][2] + clalpha = aerodynamicSurface[1] # Component absolute velocity in body frame compVxB = vxB + compCp * omega2 compVyB = vyB - compCp * omega1 @@ -1324,10 +1325,14 @@ def uDot(self, t, u, postProcessing=False): compStreamVzBn = compStreamVzB / compStreamSpeed if -1 * compStreamVzBn < 1: compAttackAngle = np.arccos(-compStreamVzBn) - cLift = abs(aerodynamicSurface[1](compAttackAngle)) # Component lift force magnitude compLift = ( - 0.5 * rho * (compStreamSpeed ** 2) * self.rocket.area * cLift + 0.5 + * rho + * (compStreamSpeed ** 2) + * self.rocket.area + * clalpha + * compAttackAngle ) # Component lift force components liftDirNorm = (compStreamVxB ** 2 + compStreamVyB ** 2) ** 0.5 diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index b42ae84c2..062122895 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -370,13 +370,8 @@ def evaluateStaticMargin(self): # Calculate total lift coefficient derivative and center of pressure if len(self.aerodynamicSurfaces) > 0: for aerodynamicSurface in self.aerodynamicSurfaces: - self.totalLiftCoeffDer += aerodynamicSurface[1].differentiate( - x=1e-2, dx=1e-3 - ) - self.cpPosition += ( - aerodynamicSurface[1].differentiate(x=1e-2, dx=1e-3) - * aerodynamicSurface[0][2] - ) + self.totalLiftCoeffDer += aerodynamicSurface[1] + self.cpPosition += aerodynamicSurface[1] * aerodynamicSurface[0][2] self.cpPosition /= self.totalLiftCoeffDer # Calculate static margin @@ -416,8 +411,6 @@ def addTail(self, topRadius, bottomRadius, length, distanceToCM): Returns ------- - cldata : Function - Object of the Function class. Contains tail's lift data. self : Rocket Object of the Rocket class. """ @@ -435,16 +428,9 @@ def addTail(self, topRadius, bottomRadius, length, distanceToCM): # Calculate clalpha clalpha = -2 * (1 - r ** (-2)) * (topRadius / rref) ** 2 - cldata = Function( - lambda x: clalpha * x, - "Alpha (rad)", - "Cl", - interpolation="linear", - extrapolation="natural", - ) # Store values as new aerodynamic surface - tail = [(0, 0, cpz), cldata, "Tail"] + tail = [(0, 0, cpz), clalpha, "Tail"] self.aerodynamicSurfaces.append(tail) # Refresh static margin calculation @@ -476,8 +462,6 @@ def addNose(self, length, kind, distanceToCM): Returns ------- - cldata : Function - Object of the Function class. Contains nose's lift data. self : Rocket Object of the Rocket class. """ @@ -499,16 +483,9 @@ def addNose(self, length, kind, distanceToCM): # Calculate clalpha clalpha = 2 - cldata = Function( - lambda x: clalpha * x, - "Alpha (rad)", - "Cl", - interpolation="linear", - extrapolation="natural", - ) # Store values - nose = [(0, 0, cpz), cldata, "Nose Cone"] + nose = [(0, 0, cpz), clalpha, "Nose Cone"] self.aerodynamicSurfaces.append(nose) # Refresh static margin calculation @@ -526,7 +503,6 @@ def addFins( distanceToCM, radius=0, cantAngle=0, - airfoil=None, ): """Create a fin set, storing its parameters as part of the aerodynamicSurfaces list. Its parameters are the axial position @@ -556,16 +532,9 @@ def addFins( cantAngle : int, float, optional Fins cant angle with respect to the rocket centerline. Must be given in degrees. - airfoil : string - Fin's lift curve. It must be a .csv file. The .csv file shall - contain no headers and the first column must specify time in - seconds, while the second column specifies lift coefficient. Lift - coefficient is dimensionaless. Returns ------- - cldata : Function - Object of the Function class. Contains fin's lift data. self : Rocket Object of the Rocket class. """ @@ -605,102 +574,26 @@ def addFins( + (1 / 6) * (Cr + Ct - Cr * Ct / (Cr + Ct)) ) - # Calculate lift parameters for planar fins - if not airfoil: - # Calculate clalpha - clalpha = (4 * n * (s / d) ** 2) / (1 + np.sqrt(1 + (2 * Lf / Yr) ** 2)) - clalpha *= 1 + radius / (s + radius) - - # # Create a function of lift values by attack angle - cldata = Function( - lambda x: clalpha * x, "Alpha (rad)", "Cl", interpolation="linear" - ) - # Parameters for Roll Moment. Documented at: https://github.com/Projeto-Jupiter/RocketPy/blob/develop/docs/technical/aerodynamics/Roll_Equations.pdf - clfDelta = n * (Ymac + radius) * clalpha / d - cldOmega = ( - n * clalpha * np.cos(cantAngleRad) * trapezoidalConstant / (Af * d) - ) - rollParameters = ( - [clfDelta, cldOmega, cantAngleRad] if cantAngleRad != 0 else [0, 0, 0] - ) - - # Store values - fin = [(0, 0, cpz), cldata, rollParameters, "Fins"] - self.aerodynamicSurfaces.append(fin) - - # Refresh static margin calculation - self.evaluateStaticMargin() - - # Return self - return self.aerodynamicSurfaces[-1] - - else: - - def cnalfa1(cn): - """Calculates the normal force coefficient derivative of a 3D - airfoil for a given Cnalfa0 - - Parameters - ---------- - cn : int - Normal force coefficient derivative of a 2D airfoil. - - Returns - ------- - Cnalfa1 : int - Normal force coefficient derivative of a 3D airfoil. - """ - - # Retrieve parameters for calculations - Af = (Cr + Ct) * span / 2 - # fin area - AR = 2 * (span ** 2) / Af # Aspect ratio - gamac = np.arctan((Cr - Ct) / (2 * span)) - # mid chord angle - FD = 2 * np.pi * AR / (cn * np.cos(gamac)) - Cnalfa1 = ( - cn - * FD - * (Af / self.area) - * np.cos(gamac) - / (2 + FD * (1 + (4 / FD ** 2)) ** 0.5) - ) - return Cnalfa1 - - # Import the lift curve as a function of lift values by attack angle - read = genfromtxt(airfoil, delimiter=",") - - # Applies number of fins to lift coefficient data - data = [[cl[0], (n / 2) * cnalfa1(cl[1])] for cl in read] - cldata = Function( - data, - "Alpha (rad)", - "Cl", - interpolation="linear", - extrapolation="natural", - ) - - # Takes an approximation to an angular coefficient - clalpha = cldata.differentiate(x=0, dx=1e-2) - - # Parameters for Roll Moment. Documented at: https://github.com/Projeto-Jupiter/RocketPy/blob/develop/docs/technical/aerodynamics/Roll_Equations.pdf - clfDelta = n * (Ymac + radius) * clalpha / d - cldOmega = ( - n * clalpha * np.cos(cantAngleRad) * trapezoidalConstant / (Af * d) - ) - rollParameters = ( - [clfDelta, cldOmega, cantAngleRad] if cantAngleRad != 0 else [0, 0, 0] - ) + # Calculate clalpha + clalpha = (4 * n * (s / d) ** 2) / (1 + np.sqrt(1 + (2 * Lf / Yr) ** 2)) + clalpha *= 1 + radius / (s + radius) + + # Parameters for Roll Moment. Documented at: https://github.com/Projeto-Jupiter/RocketPy/blob/develop/docs/technical/aerodynamics/Roll_Equations.pdf + clfDelta = n * (Ymac + radius) * clalpha / d + cldOmega = n * clalpha * np.cos(cantAngleRad) * trapezoidalConstant / (Af * d) + rollParameters = ( + [clfDelta, cldOmega, cantAngleRad] if cantAngleRad != 0 else [0, 0, 0] + ) - # Store values - fin = [(0, 0, cpz), cldata, rollParameters, "Fins"] - self.aerodynamicSurfaces.append(fin) + # Store values + fin = [(0, 0, cpz), clalpha, rollParameters, "Fins"] + self.aerodynamicSurfaces.append(fin) - # Refresh static margin calculation - self.evaluateStaticMargin() + # Refresh static margin calculation + self.evaluateStaticMargin() - # Return self - return self.aerodynamicSurfaces[-1] + # Return self + return self.aerodynamicSurfaces[-1] def addParachute( self, name, CdS, trigger, samplingRate=100, lag=0, noise=(0, 0, 0) @@ -987,7 +880,7 @@ def allInfo(self): print("\nAerodynamics Lift Coefficient Derivatives") for aerodynamicSurface in self.aerodynamicSurfaces: name = aerodynamicSurface[-1] - clalpha = aerodynamicSurface[1].differentiate(x=1e-2, dx=1e-3) + clalpha = aerodynamicSurface[1] print( name + " Lift Coefficient Derivative: {:.3f}".format(clalpha) + "/rad" ) From 13fff349797cc60a80623a455fba0d63c75998ec Mon Sep 17 00:00:00 2001 From: Lint Action Date: Thu, 3 Feb 2022 20:24:03 +0000 Subject: [PATCH 28/59] Fix code style issues with Black --- rocketpy/Environment.py | 24 ++++----- rocketpy/Flight.py | 112 +++++++++++++++++++-------------------- rocketpy/Function.py | 66 +++++++++++------------ rocketpy/Rocket.py | 14 ++--- rocketpy/SolidMotor.py | 28 +++++----- rocketpy/utilities.py | 2 +- tests/test_solidmotor.py | 22 ++++---- 7 files changed, 134 insertions(+), 134 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index 0d72e2a24..a4e9c9d85 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -362,7 +362,7 @@ def __init__( self.timeZone = None # Initialize constants - self.earthRadius = 6.3781 * (10 ** 6) + self.earthRadius = 6.3781 * (10**6) self.airGasConstant = 287.05287 # in J/K/Kg # Initialize atmosphere @@ -1967,7 +1967,7 @@ def processForecastReanalysis(self, file, dictionary): windV = ((y2 - y) / (y2 - y1)) * f_x_y1 + ((y - y1) / (y2 - y1)) * f_x_y2 # Determine wind speed, heading and direction - windSpeed = np.sqrt(windU ** 2 + windV ** 2) + windSpeed = np.sqrt(windU**2 + windV**2) windHeading = np.arctan2(windU, windV) * (180 / np.pi) % 360 windDirection = (windHeading - 180) % 360 @@ -2384,7 +2384,7 @@ def processEnsemble(self, file, dictionary): windV = ((y2 - y) / (y2 - y1)) * f_x_y1 + ((y - y1) / (y2 - y1)) * f_x_y2 # Determine wind speed, heading and direction - windSpeed = np.sqrt(windU ** 2 + windV ** 2) + windSpeed = np.sqrt(windU**2 + windV**2) windHeading = np.arctan2(windU, windV) * (180 / np.pi) % 360 windDirection = (windHeading - 180) % 360 @@ -3290,7 +3290,7 @@ def geodesicToUtm(self, lat, lon, datum): # Evaluate reference parameters K0 = 1 - 1 / 2500 - e2 = 2 * flattening - flattening ** 2 + e2 = 2 * flattening - flattening**2 e2lin = e2 / (1 - e2) # Evaluate auxiliary parameters @@ -3313,9 +3313,9 @@ def geodesicToUtm(self, lat, lon, datum): # Evaluate new auxiliary parameters J = (1 - t + c) * ag * ag * ag / 6 - K = (5 - 18 * t + t * t + 72 * c - 58 * e2lin) * (ag ** 5) / 120 + K = (5 - 18 * t + t * t + 72 * c - 58 * e2lin) * (ag**5) / 120 L = (5 - t + 9 * c + 4 * c * c) * ag * ag * ag * ag / 24 - M = (61 - 58 * t + t * t + 600 * c - 330 * e2lin) * (ag ** 6) / 720 + M = (61 - 58 * t + t * t + 600 * c - 330 * e2lin) * (ag**6) / 720 # Evaluate the final coordinates x = 500000 + K0 * n * (ag + J + K) @@ -3388,7 +3388,7 @@ def utmToGeodesic(self, x, y, utmZone, hemis, datum): # Calculate reference values K0 = 1 - 1 / 2500 - e2 = 2 * flattening - flattening ** 2 + e2 = 2 * flattening - flattening**2 e2lin = e2 / (1 - e2) e1 = (1 - (1 - e2) ** 0.5) / (1 + (1 - e2) ** 0.5) @@ -3412,20 +3412,20 @@ def utmToGeodesic(self, x, y, utmZone, hemis, datum): t1 = np.tan(lat1) ** 2 n1 = semiMajorAxis / ((1 - e2 * (np.sin(lat1) ** 2)) ** 0.5) quoc = (1 - e2 * np.sin(lat1) * np.sin(lat1)) ** 3 - r1 = semiMajorAxis * (1 - e2) / (quoc ** 0.5) + r1 = semiMajorAxis * (1 - e2) / (quoc**0.5) d = (x - 500000) / (n1 * K0) # Calculate other auxiliary values I = (5 + 3 * t1 + 10 * c1 - 4 * c1 * c1 - 9 * e2lin) * d * d * d * d / 24 J = ( (61 + 90 * t1 + 298 * c1 + 45 * t1 * t1 - 252 * e2lin - 3 * c1 * c1) - * (d ** 6) + * (d**6) / 720 ) K = d - (1 + 2 * t1 + c1) * d * d * d / 6 L = ( (5 - 2 * c1 + 28 * t1 - 3 * c1 * c1 + 8 * e2lin + 24 * t1 * t1) - * (d ** 5) + * (d**5) / 120 ) @@ -3488,8 +3488,8 @@ def calculateEarthRadius(self, lat, datum): # Calculate the Earth Radius in meters eRadius = np.sqrt( ( - (np.cos(lat) * (semiMajorAxis ** 2)) ** 2 - + (np.sin(lat) * (semiMinorAxis ** 2)) ** 2 + (np.cos(lat) * (semiMajorAxis**2)) ** 2 + + (np.sin(lat) * (semiMinorAxis**2)) ** 2 ) / ((np.cos(lat) * semiMajorAxis) ** 2 + (np.sin(lat) * semiMinorAxis) ** 2) ) diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index 633095cc2..d2aec0bdd 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -833,7 +833,7 @@ def __init__( self.y[0] ** 2 + self.y[1] ** 2 + (self.y[2] - self.env.elevation) ** 2 - >= self.effective1RL ** 2 + >= self.effective1RL**2 ): # Rocket is out of rail # Check exactly when it went out using root finding @@ -847,7 +847,7 @@ def __init__( # Get points y0 = ( sum([self.solution[-2][i] ** 2 for i in [1, 2, 3]]) - - self.effective1RL ** 2 + - self.effective1RL**2 ) yp0 = 2 * sum( [ @@ -858,7 +858,7 @@ def __init__( t1 = self.solution[-1][0] - self.solution[-2][0] y1 = ( sum([self.solution[-1][i] ** 2 for i in [1, 2, 3]]) - - self.effective1RL ** 2 + - self.effective1RL**2 ) yp1 = 2 * sum( [ @@ -873,15 +873,15 @@ def __init__( D = float(phase.solver.step_size) d = float(y0) c = float(yp0) - b = float((3 * y1 - yp1 * D - 2 * c * D - 3 * d) / (D ** 2)) - a = float(-(2 * y1 - yp1 * D - c * D - 2 * d) / (D ** 3)) + 1e-5 + b = float((3 * y1 - yp1 * D - 2 * c * D - 3 * d) / (D**2)) + a = float(-(2 * y1 - yp1 * D - c * D - 2 * d) / (D**3)) + 1e-5 # Find roots - d0 = b ** 2 - 3 * a * c - d1 = 2 * b ** 3 - 9 * a * b * c + 27 * d * a ** 2 - c1 = ((d1 + (d1 ** 2 - 4 * d0 ** 3) ** (0.5)) / 2) ** (1 / 3) + d0 = b**2 - 3 * a * c + d1 = 2 * b**3 - 9 * a * b * c + 27 * d * a**2 + c1 = ((d1 + (d1**2 - 4 * d0**3) ** (0.5)) / 2) ** (1 / 3) t_roots = [] for k in [0, 1, 2]: - c2 = c1 * (-1 / 2 + 1j * (3 ** 0.5) / 2) ** k + c2 = c1 * (-1 / 2 + 1j * (3**0.5) / 2) ** k t_roots.append(-(1 / (3 * a)) * (b + c2 + d0 / c2)) # Find correct root valid_t_root = [] @@ -968,15 +968,15 @@ def __init__( D = float(phase.solver.step_size) d = float(y0) c = float(yp0) - b = float((3 * y1 - yp1 * D - 2 * c * D - 3 * d) / (D ** 2)) - a = float(-(2 * y1 - yp1 * D - c * D - 2 * d) / (D ** 3)) + b = float((3 * y1 - yp1 * D - 2 * c * D - 3 * d) / (D**2)) + a = float(-(2 * y1 - yp1 * D - c * D - 2 * d) / (D**3)) # Find roots - d0 = b ** 2 - 3 * a * c - d1 = 2 * b ** 3 - 9 * a * b * c + 27 * d * a ** 2 - c1 = ((d1 + (d1 ** 2 - 4 * d0 ** 3) ** (0.5)) / 2) ** (1 / 3) + d0 = b**2 - 3 * a * c + d1 = 2 * b**3 - 9 * a * b * c + 27 * d * a**2 + c1 = ((d1 + (d1**2 - 4 * d0**3) ** (0.5)) / 2) ** (1 / 3) t_roots = [] for k in [0, 1, 2]: - c2 = c1 * (-1 / 2 + 1j * (3 ** 0.5) / 2) ** k + c2 = c1 * (-1 / 2 + 1j * (3**0.5) / 2) ** k t_roots.append(-(1 / (3 * a)) * (b + c2 + d0 / c2)) # Find correct root valid_t_root = [] @@ -1151,14 +1151,14 @@ def uDotRail1(self, t, u, postProcessing=False): # Calculate Forces Thrust = self.rocket.motor.thrust.getValueOpt(t) rho = self.env.density.getValueOpt(z) - R3 = -0.5 * rho * (freestreamSpeed ** 2) * self.rocket.area * (dragCoeff) + R3 = -0.5 * rho * (freestreamSpeed**2) * self.rocket.area * (dragCoeff) # Calculate Linear acceleration - a3 = (R3 + Thrust) / M - (e0 ** 2 - e1 ** 2 - e2 ** 2 + e3 ** 2) * self.env.g + a3 = (R3 + Thrust) / M - (e0**2 - e1**2 - e2**2 + e3**2) * self.env.g if a3 > 0: ax = 2 * (e1 * e3 + e0 * e2) * a3 ay = 2 * (e2 * e3 - e0 * e1) * a3 - az = (1 - 2 * (e1 ** 2 + e2 ** 2)) * a3 + az = (1 - 2 * (e1**2 + e2**2)) * a3 else: ax, ay, az = 0, 0, 0 @@ -1257,15 +1257,15 @@ def uDot(self, t, u, postProcessing=False): a = b * Mt / M rN = self.rocket.motor.nozzleRadius # Prepare transformation matrix - a11 = 1 - 2 * (e2 ** 2 + e3 ** 2) + a11 = 1 - 2 * (e2**2 + e3**2) a12 = 2 * (e1 * e2 - e0 * e3) a13 = 2 * (e1 * e3 + e0 * e2) a21 = 2 * (e1 * e2 + e0 * e3) - a22 = 1 - 2 * (e1 ** 2 + e3 ** 2) + a22 = 1 - 2 * (e1**2 + e3**2) a23 = 2 * (e2 * e3 - e0 * e1) a31 = 2 * (e1 * e3 - e0 * e2) a32 = 2 * (e2 * e3 + e0 * e1) - a33 = 1 - 2 * (e1 ** 2 + e2 ** 2) + a33 = 1 - 2 * (e1**2 + e2**2) # Transformation matrix: (123) -> (XYZ) K = [[a11, a12, a13], [a21, a22, a23], [a31, a32, a33]] # Transformation matrix: (XYZ) -> (123) or K transpose @@ -1287,7 +1287,7 @@ def uDot(self, t, u, postProcessing=False): else: dragCoeff = self.rocket.powerOffDrag.getValueOpt(freestreamMach) rho = self.env.density.getValueOpt(z) - R3 = -0.5 * rho * (freestreamSpeed ** 2) * self.rocket.area * (dragCoeff) + R3 = -0.5 * rho * (freestreamSpeed**2) * self.rocket.area * (dragCoeff) # Off center moment M1 += self.rocket.cpEccentricityY * R3 M2 -= self.rocket.cpEccentricityX * R3 @@ -1315,12 +1315,12 @@ def uDot(self, t, u, postProcessing=False): compStreamVyB = compWindVyB - compVyB compStreamVzB = compWindVzB - compVzB compStreamSpeed = ( - compStreamVxB ** 2 + compStreamVyB ** 2 + compStreamVzB ** 2 + compStreamVxB**2 + compStreamVyB**2 + compStreamVzB**2 ) ** 0.5 # Component attack angle and lift force compAttackAngle = 0 compLift, compLiftXB, compLiftYB = 0, 0, 0 - if compStreamVxB ** 2 + compStreamVyB ** 2 != 0: + if compStreamVxB**2 + compStreamVyB**2 != 0: # Normalize component stream velocity in body frame compStreamVzBn = compStreamVzB / compStreamSpeed if -1 * compStreamVzBn < 1: @@ -1329,13 +1329,13 @@ def uDot(self, t, u, postProcessing=False): compLift = ( 0.5 * rho - * (compStreamSpeed ** 2) + * (compStreamSpeed**2) * self.rocket.area * clalpha * compAttackAngle ) # Component lift force components - liftDirNorm = (compStreamVxB ** 2 + compStreamVyB ** 2) ** 0.5 + liftDirNorm = (compStreamVxB**2 + compStreamVyB**2) ** 0.5 compLiftXB = compLift * (compStreamVxB / liftDirNorm) compLiftYB = compLift * (compStreamVyB / liftDirNorm) # Add to total lift force @@ -1355,26 +1355,26 @@ def uDot(self, t, u, postProcessing=False): alpha1 = ( M1 - ( - omega2 * omega3 * (Rz + Tz - Ri - Ti - mu * b ** 2) + omega2 * omega3 * (Rz + Tz - Ri - Ti - mu * b**2) + omega1 * ( (TiDot + MtDot * (Mr - 1) * (b / M) ** 2) - MtDot * ((rN / 2) ** 2 + (c - b * mu / Mr) ** 2) ) ) - ) / (Ri + Ti + mu * b ** 2) + ) / (Ri + Ti + mu * b**2) alpha2 = ( M2 - ( - omega1 * omega3 * (Ri + Ti + mu * b ** 2 - Rz - Tz) + omega1 * omega3 * (Ri + Ti + mu * b**2 - Rz - Tz) + omega2 * ( (TiDot + MtDot * (Mr - 1) * (b / M) ** 2) - MtDot * ((rN / 2) ** 2 + (c - b * mu / Mr) ** 2) ) ) - ) / (Ri + Ti + mu * b ** 2) - alpha3 = (M3 - omega3 * (TzDot - MtDot * (rN ** 2) / 2)) / (Rz + Tz) + ) / (Ri + Ti + mu * b**2) + alpha3 = (M3 - omega3 * (TzDot - MtDot * (rN**2) / 2)) / (Rz + Tz) # Euler parameters derivative e0Dot = 0.5 * (-omega1 * e1 - omega2 * e2 - omega3 * e3) e1Dot = 0.5 * (omega1 * e0 + omega3 * e2 - omega2 * e3) @@ -1383,7 +1383,7 @@ def uDot(self, t, u, postProcessing=False): # Linear acceleration L = [ - (R1 - b * Mt * (omega2 ** 2 + omega3 ** 2) - 2 * c * MtDot * omega2) / M, + (R1 - b * Mt * (omega2**2 + omega3**2) - 2 * c * MtDot * omega2) / M, (R2 + b * Mt * (alpha3 + omega1 * omega2) + 2 * c * MtDot * omega1) / M, (R3 - b * Mt * (alpha2 - omega1 * omega3) + Thrust) / M, ] @@ -1454,11 +1454,11 @@ def uDotParachute(self, t, u, postProcessing=False): R = 1.5 rho = self.env.density.getValueOpt(u[2]) to = 1.2 - ma = ka * rho * (4 / 3) * np.pi * R ** 3 + ma = ka * rho * (4 / 3) * np.pi * R**3 mp = self.rocket.mass eta = 1 - Rdot = (6 * R * (1 - eta) / (1.2 ** 6)) * ( - (1 - eta) * t ** 5 + eta * (to ** 3) * (t ** 2) + Rdot = (6 * R * (1 - eta) / (1.2**6)) * ( + (1 - eta) * t**5 + eta * (to**3) * (t**2) ) Rdot = 0 # Get relevant state data @@ -1474,7 +1474,7 @@ def uDotParachute(self, t, u, postProcessing=False): freestreamZ = vz # Determine drag force pseudoD = ( - -0.5 * rho * CdS * freestreamSpeed - ka * rho * 4 * np.pi * (R ** 2) * Rdot + -0.5 * rho * CdS * freestreamSpeed - ka * rho * 4 * np.pi * (R**2) * Rdot ) Dx = pseudoD * freestreamX Dy = pseudoD * freestreamY @@ -1644,19 +1644,19 @@ def postProcess(self): # Kinematics functions and values # Velocity Magnitude - self.speed = (self.vx ** 2 + self.vy ** 2 + self.vz ** 2) ** 0.5 + self.speed = (self.vx**2 + self.vy**2 + self.vz**2) ** 0.5 self.speed.setOutputs("Speed - Velocity Magnitude (m/s)") maxSpeedTimeIndex = np.argmax(self.speed[:, 1]) self.maxSpeed = self.speed[maxSpeedTimeIndex, 1] self.maxSpeedTime = self.speed[maxSpeedTimeIndex, 0] # Acceleration - self.acceleration = (self.ax ** 2 + self.ay ** 2 + self.az ** 2) ** 0.5 + self.acceleration = (self.ax**2 + self.ay**2 + self.az**2) ** 0.5 self.acceleration.setOutputs("Acceleration Magnitude (m/s²)") maxAccelerationTimeIndex = np.argmax(self.acceleration[:, 1]) self.maxAcceleration = self.acceleration[maxAccelerationTimeIndex, 1] self.maxAccelerationTime = self.acceleration[maxAccelerationTimeIndex, 0] # Path Angle - self.horizontalSpeed = (self.vx ** 2 + self.vy ** 2) ** 0.5 + self.horizontalSpeed = (self.vx**2 + self.vy**2) ** 0.5 pathAngle = (180 / np.pi) * np.arctan2( self.vz[:, 1], self.horizontalSpeed[:, 1] ) @@ -1665,9 +1665,9 @@ def postProcess(self): # Attitude Angle self.attitudeVectorX = 2 * (self.e1 * self.e3 + self.e0 * self.e2) # a13 self.attitudeVectorY = 2 * (self.e2 * self.e3 - self.e0 * self.e1) # a23 - self.attitudeVectorZ = 1 - 2 * (self.e1 ** 2 + self.e2 ** 2) # a33 + self.attitudeVectorZ = 1 - 2 * (self.e1**2 + self.e2**2) # a33 horizontalAttitudeProj = ( - self.attitudeVectorX ** 2 + self.attitudeVectorY ** 2 + self.attitudeVectorX**2 + self.attitudeVectorY**2 ) ** 0.5 attitudeAngle = (180 / np.pi) * np.arctan2( self.attitudeVectorZ[:, 1], horizontalAttitudeProj[:, 1] @@ -1688,9 +1688,9 @@ def postProcess(self): attitudeLateralPlaneProjY = self.attitudeVectorY[:, 1] - attitudeLateralProjY attitudeLateralPlaneProjZ = self.attitudeVectorZ[:, 1] attitudeLateralPlaneProj = ( - attitudeLateralPlaneProjX ** 2 - + attitudeLateralPlaneProjY ** 2 - + attitudeLateralPlaneProjZ ** 2 + attitudeLateralPlaneProjX**2 + + attitudeLateralPlaneProjY**2 + + attitudeLateralPlaneProjZ**2 ) ** 0.5 lateralAttitudeAngle = (180 / np.pi) * np.arctan2( attitudeLateralProj, attitudeLateralPlaneProj @@ -1782,11 +1782,11 @@ def postProcess(self): self.railButton2ShearForce[:outOfRailTimeIndex] ) # Aerodynamic Lift and Drag - self.aerodynamicLift = (self.R1 ** 2 + self.R2 ** 2) ** 0.5 + self.aerodynamicLift = (self.R1**2 + self.R2**2) ** 0.5 self.aerodynamicLift.setOutputs("Aerodynamic Lift Force (N)") self.aerodynamicDrag = -1 * self.R3 self.aerodynamicDrag.setOutputs("Aerodynamic Drag Force (N)") - self.aerodynamicBendingMoment = (self.M1 ** 2 + self.M2 ** 2) ** 0.5 + self.aerodynamicBendingMoment = (self.M1**2 + self.M2**2) ** 0.5 self.aerodynamicBendingMoment.setOutputs("Aerodynamic Bending Moment (N m)") self.aerodynamicSpinMoment = self.M3 self.aerodynamicSpinMoment.setOutputs("Aerodynamic Spin Moment (N m)") @@ -1798,7 +1798,7 @@ def postProcess(self): Ri = self.rocket.inertiaI Tz = self.rocket.motor.inertiaZ Ti = self.rocket.motor.inertiaI - I1, I2, I3 = (Ri + Ti + mu * b ** 2), (Ri + Ti + mu * b ** 2), (Rz + Tz) + I1, I2, I3 = (Ri + Ti + mu * b**2), (Ri + Ti + mu * b**2), (Rz + Tz) # Redefine I1, I2 and I3 grid grid = self.vx[:, 0] I1 = Function(np.column_stack([grid, I1(grid)]), "Time (s)") @@ -1814,9 +1814,9 @@ def postProcess(self): vx, vy, vz = self.vx, self.vy, self.vz w1, w2, w3 = self.w1, self.w2, self.w3 # Kinetic Energy - self.rotationalEnergy = 0.5 * (I1 * w1 ** 2 + I2 * w2 ** 2 + I3 * w3 ** 2) + self.rotationalEnergy = 0.5 * (I1 * w1**2 + I2 * w2**2 + I3 * w3**2) self.rotationalEnergy.setOutputs("Rotational Kinetic Energy (J)") - self.translationalEnergy = 0.5 * totalMass * (vx ** 2 + vy ** 2 + vz ** 2) + self.translationalEnergy = 0.5 * totalMass * (vx**2 + vy**2 + vz**2) self.translationalEnergy.setOutputs("Translational Kinetic Energy (J)") self.kineticEnergy = self.rotationalEnergy + self.translationalEnergy self.kineticEnergy.setOutputs("Kinetic Energy (J)") @@ -1925,9 +1925,9 @@ def postProcess(self): self.streamVelocityZ = -1 * self.vz self.streamVelocityZ.setOutputs("Freestream Velocity Z (m/s)") self.freestreamSpeed = ( - self.streamVelocityX ** 2 - + self.streamVelocityY ** 2 - + self.streamVelocityZ ** 2 + self.streamVelocityX**2 + + self.streamVelocityY**2 + + self.streamVelocityZ**2 ) ** 0.5 self.freestreamSpeed.setOutputs("Freestream Speed (m/s)") # Apogee Freestream speed @@ -1947,7 +1947,7 @@ def postProcess(self): self.maxReynoldsNumberTime = self.ReynoldsNumber[maxReynoldsNumberTimeIndex, 0] self.maxReynoldsNumber = self.ReynoldsNumber[maxReynoldsNumberTimeIndex, 1] # Dynamic Pressure - self.dynamicPressure = 0.5 * self.density * self.freestreamSpeed ** 2 + self.dynamicPressure = 0.5 * self.density * self.freestreamSpeed**2 self.dynamicPressure.setOutputs("Dynamic Pressure (Pa)") maxDynamicPressureTimeIndex = np.argmax(self.dynamicPressure[:, 1]) self.maxDynamicPressureTime = self.dynamicPressure[ @@ -1955,7 +1955,7 @@ def postProcess(self): ] self.maxDynamicPressure = self.dynamicPressure[maxDynamicPressureTimeIndex, 1] # Total Pressure - self.totalPressure = self.pressure * (1 + 0.2 * self.MachNumber ** 2) ** (3.5) + self.totalPressure = self.pressure * (1 + 0.2 * self.MachNumber**2) ** (3.5) self.totalPressure.setOutputs("Total Pressure (Pa)") maxtotalPressureTimeIndex = np.argmax(self.totalPressure[:, 1]) self.maxtotalPressureTime = self.totalPressure[maxtotalPressureTimeIndex, 0] @@ -2309,7 +2309,7 @@ def calculateStallWindVelocity(self, stallAngle): wV = ( 2 * vF * math.cos(theta) / c + ( - 4 * vF * vF * math.cos(theta) * math.cos(theta) / (c ** 2) + 4 * vF * vF * math.cos(theta) * math.cos(theta) / (c**2) + 4 * 1 * vF * vF / c ) ** 0.5 @@ -3000,7 +3000,7 @@ def calculateFinFlutterAnalysis(self, finThickness, shearModulus): # Calculate the Fin Flutter Mach Number self.flutterMachNumber = ( (shearModulus * 2 * (ar + 2) * (finThickness / self.rocket.rootChord) ** 3) - / (1.337 * (ar ** 3) * (la + 1) * self.pressure) + / (1.337 * (ar**3) * (la + 1) * self.pressure) ) ** 0.5 # Calculate difference between Fin Flutter Mach Number and the Rocket Speed diff --git a/rocketpy/Function.py b/rocketpy/Function.py index acdebd479..446dca183 100644 --- a/rocketpy/Function.py +++ b/rocketpy/Function.py @@ -300,7 +300,7 @@ def getValueOpt(x): xInterval = xInterval if xInterval != 0 else 1 a = coeffs[:, xInterval - 1] x = x - xData[xInterval - 1] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if extrapolation == 0: # Extrapolation == zero @@ -308,7 +308,7 @@ def getValueOpt(x): elif extrapolation == 1: # Extrapolation == natural a = coeffs[:, 0] if x < xmin else coeffs[:, -1] x = x - xData[0] if x < xmin else x - xData[-2] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -352,14 +352,14 @@ def getValueOpt(x): # Interpolate xInterval = xInterval if xInterval != 0 else 1 a = coeffs[4 * xInterval - 4 : 4 * xInterval] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if extrapolation == 0: # Extrapolation == zero y = 0 elif extrapolation == 1: # Extrapolation == natural a = coeffs[:4] if x < xmin else coeffs[-4:] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -375,7 +375,7 @@ def getValueOpt(x): # Interpolate y = 0 for i in range(len(coeffs)): - y += coeffs[i] * (x ** i) + y += coeffs[i] * (x**i) else: # Extrapolate if extrapolation == 0: # Extrapolation == zero @@ -383,7 +383,7 @@ def getValueOpt(x): elif extrapolation == 1: # Extrapolation == natural y = 0 for i in range(len(coeffs)): - y += coeffs[i] * (x ** i) + y += coeffs[i] * (x**i) else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -576,7 +576,7 @@ def getValue(self, *args): coeffs = self.__polynomialCoefficients__ A = np.zeros((len(args[0]), coeffs.shape[0])) for i in range(coeffs.shape[0]): - A[:, i] = x ** i + A[:, i] = x**i ans = A.dot(coeffs).tolist() for i in range(len(x)): if not (xmin <= x[i] <= xmax): @@ -713,7 +713,7 @@ def getValueOpt_deprecated(self, *args): xInterval = xInterval if xInterval != 0 else 1 a = coeffs[:, xInterval - 1] x = x - xData[xInterval - 1] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if extrapolation == 0: # Extrapolation == zero @@ -721,7 +721,7 @@ def getValueOpt_deprecated(self, *args): elif extrapolation == 1: # Extrapolation == natural a = coeffs[:, 0] if x < xmin else coeffs[:, -1] x = x - xData[0] if x < xmin else x - xData[-2] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -757,14 +757,14 @@ def getValueOpt_deprecated(self, *args): # Interpolate xInterval = xInterval if xInterval != 0 else 1 a = coeffs[4 * xInterval - 4 : 4 * xInterval] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if extrapolation == 0: # Extrapolation == zero y = 0 elif extrapolation == 1: # Extrapolation == natural a = coeffs[:4] if x < xmin else coeffs[-4:] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -777,7 +777,7 @@ def getValueOpt_deprecated(self, *args): # Interpolate y = 0 for i in range(len(coeffs)): - y += coeffs[i] * (x ** i) + y += coeffs[i] * (x**i) else: # Extrapolate if extrapolation == 0: # Extrapolation == zero @@ -785,7 +785,7 @@ def getValueOpt_deprecated(self, *args): elif extrapolation == 1: # Extrapolation == natural y = 0 for i in range(len(coeffs)): - y += coeffs[i] * (x ** i) + y += coeffs[i] * (x**i) else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -863,7 +863,7 @@ def getValueOpt2(self, *args): else: a = coeffs[:, xInterval - 1] x = x - xData[xInterval - 1] - x = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + x = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if self.__extrapolation__ == "zero": @@ -896,10 +896,10 @@ def getValueOpt2(self, *args): x = yData[xInterval] elif xmin < x < xmax: a = coeffs[4 * xInterval - 4 : 4 * xInterval] - x = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + x = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] elif self.__extrapolation__ == "natural": a = coeffs[:4] if x < xmin else coeffs[-4:] - x = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + x = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if self.__extrapolation__ == "zero": @@ -1353,7 +1353,7 @@ def __interpolatePolynomial__(self): # Create coefficient matrix1 A = np.zeros((degree + 1, degree + 1)) for i in range(degree + 1): - A[:, i] = x ** i + A[:, i] = x**i # Solve the system and store the resultant coefficients self.__polynomialCoefficients__ = np.linalg.solve(A, y) @@ -1408,10 +1408,10 @@ def __interpolateAkima__(self): dl, dr = d[i], d[i + 1] A = np.array( [ - [1, xl, xl ** 2, xl ** 3], - [1, xr, xr ** 2, xr ** 3], - [0, 1, 2 * xl, 3 * xl ** 2], - [0, 1, 2 * xr, 3 * xr ** 2], + [1, xl, xl**2, xl**3], + [1, xr, xr**2, xr**3], + [0, 1, 2 * xl, 3 * xl**2], + [0, 1, 2 * xr, 3 * xr**2], ] ) Y = np.array([yl, yr, dl, dr]).T @@ -1977,9 +1977,9 @@ def integral(self, a, b, numerical=False): c = coeffs[:, 0] subB = a - xData[0] # subA = 0 ans -= ( - (c[3] * subB ** 4) / 4 - + (c[2] * subB ** 3 / 3) - + (c[1] * subB ** 2 / 2) + (c[3] * subB**4) / 4 + + (c[2] * subB**3 / 3) + + (c[1] * subB**2 / 2) + c[0] * subB ) else: @@ -1995,9 +1995,9 @@ def integral(self, a, b, numerical=False): c = coeffs[:, i] subB = xData[i + 1] - xData[i] # subA = 0 ans += ( - (c[3] * subB ** 4) / 4 - + (c[2] * subB ** 3 / 3) - + (c[1] * subB ** 2 / 2) + (c[3] * subB**4) / 4 + + (c[2] * subB**3 / 3) + + (c[1] * subB**2 / 2) + c[0] * subB ) i += 1 @@ -2010,15 +2010,15 @@ def integral(self, a, b, numerical=False): subA = xData[-1] - xData[-2] subB = b - xData[-2] ans -= ( - (c[3] * subA ** 4) / 4 - + (c[2] * subA ** 3 / 3) - + (c[1] * subA ** 2 / 2) + (c[3] * subA**4) / 4 + + (c[2] * subA**3 / 3) + + (c[1] * subA**2 / 2) + c[0] * subA ) ans += ( - (c[3] * subB ** 4) / 4 - + (c[2] * subB ** 3 / 3) - + (c[1] * subB ** 2 / 2) + (c[3] * subB**4) / 4 + + (c[2] * subB**3 / 3) + + (c[1] * subB**2 / 2) + c[0] * subB ) else: diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index 062122895..4c646f279 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -220,7 +220,7 @@ def __init__( # Define rocket geometrical parameters in SI units self.radius = radius - self.area = np.pi * self.radius ** 2 + self.area = np.pi * self.radius**2 # Center of mass distance to points of interest self.distanceRocketNozzle = distanceRocketNozzle @@ -422,9 +422,9 @@ def addTail(self, topRadius, bottomRadius, length, distanceToCM): # Calculate cp position relative to cm if distanceToCM < 0: - cpz = distanceToCM - (length / 3) * (1 + (1 - r) / (1 - r ** 2)) + cpz = distanceToCM - (length / 3) * (1 + (1 - r) / (1 - r**2)) else: - cpz = distanceToCM + (length / 3) * (1 + (1 - r) / (1 - r ** 2)) + cpz = distanceToCM + (length / 3) * (1 + (1 - r) / (1 - r**2)) # Calculate clalpha clalpha = -2 * (1 - r ** (-2)) * (topRadius / rref) ** 2 @@ -548,13 +548,13 @@ def addFins( Ymac = ( (s / 3) * (Cr + 2 * Ct) / Yr ) # span wise position of fin's mean aerodynamic chord - Lf = np.sqrt((rootChord / 2 - tipChord / 2) ** 2 + span ** 2) + Lf = np.sqrt((rootChord / 2 - tipChord / 2) ** 2 + span**2) radius = self.radius if radius == 0 else radius d = 2 * radius cantAngleRad = np.radians(cantAngle) - trapezoidalConstant = ((Yr) / 2) * (radius ** 2) * s - trapezoidalConstant += ((Cr + 2 * Ct) / 3) * radius * (s ** 2) - trapezoidalConstant += ((Cr + 3 * Ct) / 12) * (s ** 3) + trapezoidalConstant = ((Yr) / 2) * (radius**2) * s + trapezoidalConstant += ((Cr + 2 * Ct) / 3) * radius * (s**2) + trapezoidalConstant += ((Cr + 3 * Ct) / 12) * (s**3) # Save geometric parameters for later Fin Flutter Analysis and Roll Moment Calculation self.rootChord = Cr diff --git a/rocketpy/SolidMotor.py b/rocketpy/SolidMotor.py index 8a780719f..3fe4a5713 100644 --- a/rocketpy/SolidMotor.py +++ b/rocketpy/SolidMotor.py @@ -253,7 +253,7 @@ def __init__( self.grainInitialVolume = ( self.grainInitialHeight * np.pi - * (self.grainOuterRadius ** 2 - self.grainInitialInnerRadius ** 2) + * (self.grainOuterRadius**2 - self.grainInitialInnerRadius**2) ) self.grainInitialMass = self.grainDensity * self.grainInitialVolume self.propellantInitialMass = self.grainNumber * self.grainInitialMass @@ -423,7 +423,7 @@ def evaluateMass(self): @property def throatArea(self): - return np.pi * self.throatRadius ** 2 + return np.pi * self.throatRadius**2 def evaluateGeometry(self): """Calculates grain inner radius and grain height as a @@ -462,9 +462,9 @@ def geometryDot(y, t): grainMassDot = self.massDot(t) / self.grainNumber rI, h = y rIDot = ( - -0.5 * grainMassDot / (density * np.pi * (rO ** 2 - rI ** 2 + rI * h)) + -0.5 * grainMassDot / (density * np.pi * (rO**2 - rI**2 + rI * h)) ) - hDot = 1.0 * grainMassDot / (density * np.pi * (rO ** 2 - rI ** 2 + rI * h)) + hDot = 1.0 * grainMassDot / (density * np.pi * (rO**2 - rI**2 + rI * h)) return [rIDot, hDot] # Solve the system of differential equations @@ -511,8 +511,8 @@ def evaluateBurnArea(self): 2 * np.pi * ( - self.grainOuterRadius ** 2 - - self.grainInnerRadius ** 2 + self.grainOuterRadius**2 + - self.grainInnerRadius**2 + self.grainInnerRadius * self.grainHeight ) * self.grainNumber @@ -583,8 +583,8 @@ def evaluateInertia(self): grainMassDot = self.massDot / self.grainNumber grainNumber = self.grainNumber grainInertiaI = grainMass * ( - (1 / 4) * (self.grainOuterRadius ** 2 + self.grainInnerRadius ** 2) - + (1 / 12) * self.grainHeight ** 2 + (1 / 4) * (self.grainOuterRadius**2 + self.grainInnerRadius**2) + + (1 / 12) * self.grainHeight**2 ) # Calculate each grain's distance d to propellant center of mass @@ -593,7 +593,7 @@ def evaluateInertia(self): d = d * (self.grainInitialHeight + self.grainSeparation) # Calculate inertia for all grains - self.inertiaI = grainNumber * grainInertiaI + grainMass * np.sum(d ** 2) + self.inertiaI = grainNumber * grainInertiaI + grainMass * np.sum(d**2) self.inertiaI.setOutputs("Propellant Inertia I (kg*m2)") # Inertia I Dot @@ -601,8 +601,8 @@ def evaluateInertia(self): grainInertiaIDot = ( grainMassDot * ( - (1 / 4) * (self.grainOuterRadius ** 2 + self.grainInnerRadius ** 2) - + (1 / 12) * self.grainHeight ** 2 + (1 / 4) * (self.grainOuterRadius**2 + self.grainInnerRadius**2) + + (1 / 12) * self.grainHeight**2 ) + grainMass * ((1 / 2) * self.grainInnerRadius - (1 / 3) * self.grainHeight) @@ -611,7 +611,7 @@ def evaluateInertia(self): # Calculate inertia I dot for all grains self.inertiaIDot = grainNumber * grainInertiaIDot + grainMassDot * np.sum( - d ** 2 + d**2 ) self.inertiaIDot.setOutputs("Propellant Inertia I Dot (kg*m2/s)") @@ -619,13 +619,13 @@ def evaluateInertia(self): self.inertiaZ = ( (1 / 2.0) * self.mass - * (self.grainOuterRadius ** 2 + self.grainInnerRadius ** 2) + * (self.grainOuterRadius**2 + self.grainInnerRadius**2) ) self.inertiaZ.setOutputs("Propellant Inertia Z (kg*m2)") # Inertia Z Dot self.inertiaZDot = (1 / 2.0) * self.massDot * ( - self.grainOuterRadius ** 2 + self.grainInnerRadius ** 2 + self.grainOuterRadius**2 + self.grainInnerRadius**2 ) + self.mass * self.grainInnerRadius * self.burnRate self.inertiaZDot.setOutputs("Propellant Inertia Z Dot (kg*m2/s)") diff --git a/rocketpy/utilities.py b/rocketpy/utilities.py index 0051c0622..7bf5a7232 100644 --- a/rocketpy/utilities.py +++ b/rocketpy/utilities.py @@ -31,5 +31,5 @@ def compute_CdS_from_drop_test( """ - CdS = 2 * rocket_mass * gravity / ((terminal_velocity ** 2) * air_density) + CdS = 2 * rocket_mass * gravity / ((terminal_velocity**2) * air_density) return CdS diff --git a/tests/test_solidmotor.py b/tests/test_solidmotor.py index 8f5a9efc3..da8b6411d 100644 --- a/tests/test_solidmotor.py +++ b/tests/test_solidmotor.py @@ -38,7 +38,7 @@ def test_motor(mock_show): def test_initialize_motor_asserts_dynamic_values(solid_motor): grain_vol = grainInitialHeight * ( - np.pi * (grainOuterRadius ** 2 - grainInitialInnerRadius ** 2) + np.pi * (grainOuterRadius**2 - grainInitialInnerRadius**2) ) grain_mass = grain_vol * grainDensity @@ -73,7 +73,7 @@ def test_grain_geometry_progession_asserts_extreme_values(solid_motor): def test_mass_curve_asserts_extreme_values(solid_motor): grain_vol = grainInitialHeight * ( - np.pi * (grainOuterRadius ** 2 - grainInitialInnerRadius ** 2) + np.pi * (grainOuterRadius**2 - grainInitialInnerRadius**2) ) grain_mass = grain_vol * grainDensity @@ -86,8 +86,8 @@ def test_burn_area_asserts_extreme_values(solid_motor): 2 * np.pi * ( - grainOuterRadius ** 2 - - grainInitialInnerRadius ** 2 + grainOuterRadius**2 + - grainInitialInnerRadius**2 + grainInitialInnerRadius * grainInitialHeight ) * grainNumber @@ -108,20 +108,20 @@ def test_burn_area_asserts_extreme_values(solid_motor): def test_evaluate_inertia_I_asserts_extreme_values(solid_motor): grain_vol = grainInitialHeight * ( - np.pi * (grainOuterRadius ** 2 - grainInitialInnerRadius ** 2) + np.pi * (grainOuterRadius**2 - grainInitialInnerRadius**2) ) grain_mass = grain_vol * grainDensity grainInertiaI_initial = grain_mass * ( - (1 / 4) * (grainOuterRadius ** 2 + grainInitialInnerRadius ** 2) - + (1 / 12) * grainInitialHeight ** 2 + (1 / 4) * (grainOuterRadius**2 + grainInitialInnerRadius**2) + + (1 / 12) * grainInitialHeight**2 ) initialValue = (grainNumber - 1) / 2 d = np.linspace(-initialValue, initialValue, grainNumber) d = d * (grainInitialHeight + grainSeparation) - inertiaI_initial = grainNumber * grainInertiaI_initial + grain_mass * np.sum(d ** 2) + inertiaI_initial = grainNumber * grainInertiaI_initial + grain_mass * np.sum(d**2) assert np.allclose( solid_motor.inertiaI.getSource()[0][-1], inertiaI_initial, atol=0.01 @@ -131,12 +131,12 @@ def test_evaluate_inertia_I_asserts_extreme_values(solid_motor): def test_evaluate_inertia_Z_asserts_extreme_values(solid_motor): grain_vol = grainInitialHeight * ( - np.pi * (grainOuterRadius ** 2 - grainInitialInnerRadius ** 2) + np.pi * (grainOuterRadius**2 - grainInitialInnerRadius**2) ) grain_mass = grain_vol * grainDensity grainInertiaZ_initial = ( - grain_mass * (1 / 2.0) * (grainInitialInnerRadius ** 2 + grainOuterRadius ** 2) + grain_mass * (1 / 2.0) * (grainInitialInnerRadius**2 + grainOuterRadius**2) ) assert np.allclose( @@ -173,7 +173,7 @@ def tests_import_eng_asserts_read_values_correctly(solid_motor): def tests_export_eng_asserts_exported_values_correct(solid_motor): - grain_vol = 0.12 * (np.pi * (0.033 ** 2 - 0.015 ** 2)) + grain_vol = 0.12 * (np.pi * (0.033**2 - 0.015**2)) grain_mass = grain_vol * 1815 * 5 solid_motor.exportEng(fileName="tests/solid_motor.eng", motorName="test_motor") From d941e6eeae58d14c55f94a1dae632b046c7d945d Mon Sep 17 00:00:00 2001 From: Mateus Stano <69485049+MateusStano@users.noreply.github.com> Date: Sun, 6 Feb 2022 06:37:17 -0300 Subject: [PATCH 29/59] Fixed lift coefficient, roll coefficients and roll moment calculations --- .../technical/aerodynamics/Roll_Equations.pdf | Bin 246243 -> 300477 bytes rocketpy/Flight.py | 28 ++- rocketpy/Rocket.py | 177 +++++++++++------- 3 files changed, 133 insertions(+), 72 deletions(-) diff --git a/docs/technical/aerodynamics/Roll_Equations.pdf b/docs/technical/aerodynamics/Roll_Equations.pdf index 758a6d616f29251cb117b6e0e83244d185724889..b2307bb43719f74f6f6372b9e214b178184c9515 100644 GIT binary patch delta 185111 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

0nKVX}H?R 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

iEDRd@C}!I z1c%wSM)6exd|1rSG`r$8)OCv@IRAi+T8$qWJ;KL|BdWUn_2{jY-TmFWwRiul+g1 zzS_E3CtodSqbyr7$mvmi?lI|zMvx*VXCy1|5O^Cx2&l%GpS7y-lL}8oNOQ1%T4c0z zwt~m_g-8tRQsbLI?A0{yfY)DDw&^A8Mt@Fx#S8g?%ecaTnq@6Kv`mlwN#$VHq;lUT zahL~<=hdK7jyG*{@4%j)JEweXz@|;yNZd=XM||I)D$lQg1kcKU&K)9QBfdG%IDk>y zzN08J2Q|x|h7-v*%0hyaP%m7VqcOu8$+?IxBOYP^oQwmv0GLnYW>o3Vp@&@dc!C2~S^t05K z9^JL~8Q&iSAXxX5;(fAJ@5St!@5D8vCI`JoIDJva62Is_O?{cx>uI= zOnN4dmYP-*>teeNS$d6gZuc}8q=U9tmJO5|Lq5p4e1CXga~`;1*m>5D5F_<#2;7Fe z+Vs-l79;`YD5_b1@m2|*__LX@W3-}mS%!W`9l>$F>xOaQ2pztba+rrnsvYb$s8+FD ze6qEi5=AJL95tVTU0%wszK_L3#JOba7CJ1>p8SFdZ9Yv95?TP=pcP7u_rtUs^>q>- z_yn#3DQoJMvy+3iq{(RgOzGkRjW0PVls8n&f$xwB^;AB8kXf~hF{LHJk^F^dV_F1f z_z}MKHKx{s9X6n0ctIrF-o}0QX97b-qNI!s6q?aEraSmp&@p4hp0{LYy@bIhk3FQq zGEg2;s`0Nok_yC+=_4+Bf-O2f36y9dW){yNQ;?;Z;O&?SA};lK2lx%rr6QQ-dUE8A zrr3Kz%RaGxy%E!-o0m!3Ek;V}gLH2ql9x}}AUsj7`x6T{f+&dM)e_GhP^_JnG+kyT zz)`{Pex}ai+#Y`vl3>pyl_Xg!ftV*+de*{=&a8&mC?sJVhRfFtis~S%5!y{}GC`s< zQ)xyS6HpbdZh-@7o05yh_cuD8>8m??CbL~{Kdt0{FlQx=pIFms4izScND}CtEdhRQ z$6X9bmg2rEnF;XAXHzB?t_PL+In|k4bGbV3k&9fxY2cT{Wh1|S6dvCr6fTyQ!;W{y zLZ;1a=Fr;b*Q$WI}G<0=SkV~54R5M&MPF(Qr?scUW5?ORE^ z#-5yiwSQ_Gxi1Ss7KKWlC*x_Lx@L5W>ktkhmVoemBO~pu$?`_;RTuveXr^$t0n+9) zY#giTy(Xuy*2!7^q5b~4d>&ObQ&;YgK_$V%gbhXH%?d%1adw(qaXv<|@4`G5{ikN$ z=j#3(A$xlS&x5cL^CU$WX0#Bdw)w)kk;2t~ajn%LN&4VRp|%uj}n2OQZP$2fw8;VVRyqDipgC_E?=>=;o|FZ{!GfNSo8ww_Cng1L+@b3 zpX}vmM;b+`9z#EsGxegeQAZMZe_w(zq!yqk?GfxdF+G@w!L)KIv0Sb5k)7rjt7(d` z(T7G&mkFY4)AMDYc#shfS%~LimA5Z9F){Axtg_K|V1kL# zHa@=-L|ZpkoAedh4fSvX!21qNcW-a1CeivegRd+vjv(J z{(4XZ1{|_QOc!XBz>9h`xzC=#wkhU4{-UU#BZj_b(y1-*4Mt0QBE(RFKKR<^=+{+k6QFMx$sV@LM zPtGsGRy7TyUF0P029qap+}bTcuLRayAShxIGdo~H=_AKv0i?Cp>*=6_fmDN_>+#6b zyJB=y>%8zGIxt18<_@#fSQKJ^jtRd|^<9VWx|1D#{}fBj{Jm?$chaY%siEb2#QeukNY-zEV)~Iu?wkYx zGdbkJ3A>B!Ox2X2;GX+yu<)JA9hzlanyrz;sh{c(MEgK~G(_0v6vgdhx~tQvrgu)3 zzAchIlhX^B?&~iI73Pt|a1vq>`G%dXHq&&HKVdcPN*uO^U?8ya%8Vz=yg+Yf8hS%W zLxk^1q&08hs)|??H<3$!@gK3-YT2E?JY4u`yDCzojJEYe=@q?>i>MuT80*kFu5`ra zuT;cS(7ToEwYEO{(l7)uiKXoUG;C_sE z=XKfEzC9*d$B$-a((bNS1cz+suNwov9>u#KB1l_k2g3U772Q^U8j1fD2Pr0Q#Hyec z8f%K3i+yPnv9`YCsx@SDXPJwc>xJ@Nkl!g~wy=1M3sCfDOZs&{CAr!=i=GsS9_8|c z&X_4Io!ms9WTyIoa1?1r6Q3v=MCykY9{W}0QbkYG#`gT9j9TSspYKet4`q zpXfF-Z{`MD{T0D~x!g!QCjWR%+nRDJ7Rjo0a_)&>gyh7Go$+Lb(PLRRf6Ja=Go*-bk#<3PXT12cY-C_H&3wleU{cq&e zDbMGh<%jQoK0A#02gP&1RWMg7!a8O_q~ur;WELPiE4i&UgUx0=F0R>x(=}ksfq+2* zlR$}?hv`EpT&lv^+!m~$Z;Ro-q6;z}Xrm0?Dq1`@8aWruereL}F*p=wLs)x$ww&%Ey~A&O1UY)wO_g@Fic_QQ4q>2}^Uef>RGmBgw1~l-bz3z)k<9 zrdRQZJM3`?{h=2YZ(T(K@jiD+U@eK# z%-IO9BffA-XGkRwfQ6t9HQ(*xL9s1?XDBMMtv4YGC+RgOnLrS01wI%Hhk>d;o0#xA z%;%DSj-Ur>sS|V1-;P;?yj+ZuLy)yt9IA<-@ckNP%tSP3exn&+7k7%ggS?I1T2BbJ zDh1GwPfTKHZMC2=Q~mDYO?aZr`Z2Rj!2@0PgTD8HbrQm6fxbo?`zSYN1i}~u)Y`n9 zC{kl24g9HcOTeUTw+9TVc9$s>mCl9O?imGtQc;s8LNUd@tVN&hjk}lHKHac>rnN?^ zi!Xt>dS}@9`L;agHfg5vtX(nr<+uk(eOOlT_@b&d%c2qY*AL-U>%u3%?vsQhCc0&) zcGIM27%xOjZ&Vs88v@hY18_s%*N&pw4bv(~mr~_At}v=tlIKi+ z^CBg>Hbz&mkH~pi5$g;z1WUC&cZ(I!SS#axI!q-&NJluwFMqWb8ZtVz^;6V%#TDK! zQHU%uAp_Gp0T?gQU|tEW$pH{nsLlEZ^i~`e22EUh^YV8K2{Mmc!zm%?O5enSv)b%W zB$FvJ6db;-s%|<^Dz4hJuw+zHWNXNO2xGPjjT<-LDsMg1f}o;?=XZ{k7O)8uJoGO2 zh<|pO&S%Rg+dYBb&OQNd!;#P<27Pj){2=7l$H1Bm$L*X4{v+7tU^bI(SF|w(JX2%- zZWMFNMh#i>$W=UmAbUL8MN}=L3NV%6RRHY9gPe(YtW=0aI&?a)@lVBea9`Db$k>o{ zX$kF&&VJ1fqC5a>d&-~jB%&yh&Rd|He61`ni>aIkmIvYIN#p=woOqbz`%E)%G?0WU z2(6qSf~Ox%%;+tKV((O(;qAB6A)tvZY^NGDS6sJ)qtq2J)smz@aK&6frC zYNei{YaOFfC7>#dg2;f5S?~il_sWF*J9Wck_g@m}l&^dZ&NNUa#ED9O_h2$UE)the zIG%9J$+o@>aJmrCxqTjyzN-f#GC*8*5H4_&LPd|M)b1 zIKh=H|4jE%9eQ}i=u&|7GE`8GrqQ%nb7kqEH833&BrGJ2PLrQ7(!oicB7$)UAFZM+ z!Q|(|h$Om%9g>D<7Q-NaXz2QjYNy)Xy{zK1R=oEkV?3nx0n$l<7wo;A%HVB=H1wIF zy{Z1~`H}k^7h6;*&R6nM43wANP*VaP7j-VIkRbVF-|S>iSYHC50-b7jTYyb5zP_EY z%29E@Av1S<^4Sr#Pnbkb8sJcwd*c`9NvAB^k~MX+P4(KHbN_aKLfKltgva<4BH$9? z8q=Z}wkqc+VcH$z1XE{2Zm{a3eihxEQZ5e*_LXX#%}PRHQqh9taN z*@uXeL;h5B`xZq@9jHQH9(t4v_hO#T1#`L3rpw5W6~OZ)JPd#YJ4L+EpGR8e~Agw6F99CK`TPbWmtM;Ag z@_3>rmtN*C<(xpJ>?m3U!T{y#D)MwQT}kapBz{yiuJeO`74u{&_kWea0Xxx}P96hZ z98dD}GM#+UFk7zIaOm&16}B3Nnq@TsQ#;n66%3c%F1TlNK9dDX3to?Wl%w%k5VPdd zAOkaIJX9mL5wRCalPJZgqyL@^7g;QR&#he#e z5$EJoGQPQ3{{9_uWkxYb?w92SM0O^hWJ^9o$BmI1H3{nj_8M**6xPx z)?XpCdluhhF{M^qJ~%zl%1=YYkl0iChr;gQ-+f`EPq1R+ohu2kx{sW`*fmRYs;?87 zNna`y^lawhuh?VP%KH2xpy8~1KC%osBKs}Auq`I)LPvROH9F&285JwfkcrNn>Icz@ zd+c6+-uE#zSQ+)aolyWuyI0VtrE#w*l3ryX`;((wDm8qc!!WzT7}f?EwTGK)pCcQc@Bf=!eP|`9L{TIXZ&=wu3M*3 zm7AO6V&gz){sE_B-6!NrlyG4fb5;y;qxIc?+pu_a1u{&T@NzJTrTK#Octqlthk31+ zVJF`#rsq558!O+FJ#e3%lTVF^IT(zZx0v4>V5=KhGK|`r(`$6rGP}b-kX4}3y!t}w z#iXL-aYkhi$2uOC-Pd*}_7=apY_jgKhB3++V=i+6c%A%_ghM3|hF)})LM9V1NX62B zDZ}8zK~yG}ue^x!=IUqBWgeFAZVY?D`cE#o_b|dUwo8_es^mWJ#M`ccsgAjbg9L8) zdrKWlA#{`3J$lR5sU$g(7?JcwI6=(B+o4s1*-rhU5v4h|t|QA!>$Q~GxJACt%+0FB zRBEZupdW3WFK5#X`6V2m)670GRl0G1!&nEy?E{7$ zzOvi;g%m%9b*VTA|J-vv!vKX@`-xwfGV>ew5Dd4-Y}wlVf^2w84Mu!iL5oummHV11 zjM5rLB?bPR6I>E@l~7OaH_&h3BA_2Q2*uA&J85oG>aSNJtU@a{VYFcX$BQ7PRQ07ovZxiw!&4}q z$ztoro%!T$!4Z@d@y$4}3YrOjF&wr-whMVR19BK*Aa%XwQ-gKYha~NNyf~>Zodh`Z=FoAw_I4Ff^r%}Pr(NS-kPmEDY+?mt(`cR|8x}%Xx zxDs3(sQl-_Wb`;8_RQXAhw`V6wlFJ>UV~a&qLsm%fv-DQ+0xKLugBSczig1eXlufr zd$u1gf1FvTFGG2-v}=4HcwFbpOgib5L@Wx)du zhCu=FCWM8to1}8#=VScI(dsPYzBhDGB!V}Dozi7tWZhL*8w*b0X0OGdqe<0<#;qSi zRtf?As};SFvENl&A2c$pVOSP{t1&L%;TyZ33&U4aP!TR!$ANi4{C*liLlYzsZaH2~ zc1!ogK8FloEzZ7w&*6vRB>*p)rJW>NPAmmB41d4uPBDb(UR$;NMV75!Ii4;L zs{MEMe61$qUIl?FD2vkSs&{>e&iMzkm zao0G)X!1yZx$ege%a6(0GPzCq^jf*aJMYD}JF26wJSjuqLlKUp1{z`TRPQm%c2y4Q z8!o;YOTp|&9fK)EGtvBU`wK>vM|R#ON7WKa*mc%EHcR&#QsBtoR`GEh{+X$e>5%SZ zO4+H@gV70B@BpjPq~T>X3>a)3{Hg7p_O`-xj`1;n{pwlU9lU|v5j+4B$)2I%rmUuM z?)>xy0MCExmpJfqjyM4}3Is^GbOnTE9+p1SQrR0k;3S|u6Msj=Y z4PC7Ht|m5L=v9Knj{unBl*5fSv_uTy(P@ydxeFSKz>*b?&*~5aP~Z4I4J}fm4k_(3 z!HTkfGeH6`d?gQtz|~>%9oDR9nE=ijzy( zh=q3kUSo1N^l3!M4Qol;`T1<)+)R7J&#C+9?5ECnOhpH$2~I*vz@Zi`rZujz=Un=K z2b)CMxYXUm8e8O;lDdXjtF2`|dxBOOl^NjJ23u3WBDr$Ohmw^PIoM@&y6VbQo~xnK z{E|OvO2kC-PEEg%nw$qVJkpcJRPjHLW>?T66h3%Wjn|&V%hx=0E?K!B*4PG!Z;;+ zbLdzI{~iI;>2}PnDnGX6U_c<_uQwG|&S)n_O62>BxH)Q(q@;=(&*sXhq71jJKL6^P zO#kE|C(d5a{MmL@pK)0|mZIo?u!^xT6|#K=gjiGB41zkfq^;5(YV@1=Vr|CAuv6SeHsSKZn`;Y}L6K%>Q=WY?P^g2lO5sO@9Au zSNhYE-dZ1yM|$rO>U2|(_zq{S3k;!*G#!MkJ+M2dcg;Cal57UM^tgMu#NfGtPukVT z1mM8)vs076d97d64T!O3jBdZP@2E46>)8~TxLL3FGU}a%nHw!d6L~E@*azVeEqbmy z&_MWjM^wj6-V|7(NW5Tw*D#f`en)DCstpov5t;Sa?JgY5C6zkI10X)1N$Bc%+a`e++C?wX5YBhXdg4QRT7dY`)273x+fd1Dtl$Ao=b<+(e62 z^;k$M9CSmw5_Cbo$bIs@Ea zVuUhd&$9?vj%0o{26cQWZ_r@u^lIQG$6S}Dh{+K9y|+eVItZwC9AEP}mbg2!ZAT?6 zCAbz44QUj&92_V~9>EGLyuZLfATPf#jX$hCVJ=A@2wk5g(<8Rn(O$p&R&!lQ75(-8 zN?D+&*05k67Qrrm)e*Qb#F;5lN6I77esun7(U93vyn+8Ks!0fcTmo=BE=TE0IVd=r zeLnh01F+tvyf;1yZrmwpvL8s$a#3RB~NT(*6&avo-PI9awkuM^?|6Ve&jqij{+1_1*cIR$`TIPb%U&sp>l z5{9<>OL9_5aAZ9#@mw2x2#(V|o1UbC<2T2YAbT5#B*<{XQY*A?X?MM~%tR5^nwQI)YsI*v zi=Wk=!B>4^H{IsQ4IFM3#{lqkP87w%TYbb`^h&kv3Kr}=L#5mOBp60(j&2$(4g<||u&lh!mv5I^D4f6iMKjlqD3Fv)%I zokacOQUmfW(HeFKPv67wpn*b;WF8DqVZ(&*9Mvu-wuPGyBpsUR@|P3>^HIPr^5SP} z=hf>#-exhA%%fm^&;X%zBQMJ!8Lmy2Fzf`Peygm>gmJ-ZXq8%gnHg$~k(jR1D zfbce~;@Mn}@f=`qJHPw8`~vI+aYr(6O&^GRU?n4X+Qv@H(33T$X|?)~2s_}OyppyQ`ui;d z5#^$MHQ+504fT}DVgD8V#$1Z8rMbU)`fn)l{>KD6HsfIW9Jb~>pO$CYlRzI)~tAA zjoQH$O6xLmuh<$D=WD-MGCvuY37Uv4R}o^g_~YbzK6oHLK{FYJ>N7c(y{} z=nrJtNEUTG%~qQ3D$X0S6XPl=Jf`gqO;YHldz=$ZY24sHcZF83b5r@?8K_HtM>z1G zpM0>PolLEgsFj?yYmw&MDP-L(gc(u!bp}PtQdnPpXLNhw*xDK3 z++u$@|C8Ej5)Wk2oyCl!wt7Wlnqm-$?S-Z7uq#({d#txxcA{n<1yW}$`Q(&~5N92i z^4R0QWRV4cE*akGZXYu-ss%WI+F6gg`9PlN59U2yAx$j(iME!?!}Kr|5b?y!(wT~( zFts5f=iH??HzoW8_Wh>dAtz*b@FGf6_=R*Bkk1CmQ02o=%_K&t{+BdPI>f_1&8PUsLrv7K499eF>3&7F{C@piK5j z%6dK)pPR~Qq|qv_L6@0V-`LP1^WZ?}hq+=W%XIoUd^ob{`yo`&YneKY_lH7M1Z4|` zsVTuvK;Oxj`F+yH*wN_e(blhotE|f>LhpZP)BV5O|4Grz0Y$Q+DDV?>kNSi=!qxJ- ztRK@*T5E42s-GcGk3ju@0NDnL!w;XTkHIE`H?98(wfqDu;~(@yhusg2VLM$FjAb{L za{1CHQ7DjV^Fg@9HQB1O?-ZxOLk&=3!>gLf&kD_s*#6@SyDv|)B|RcI(!wsUajK-! zBxzz+HyvPd?#MZ|KV&zf;GT5Z3WfV^4HUX`4{4s#EZXe|wMedt7lowU*_mF>L}G@aJQZzA6N9L2yt zs+NPODA3a)l7z0QGkXp{qfBWsnT$kL6gnY6!ujx)KIz#NOFOydy=BqzPf+LjtdJ5A z{)DL%!>Y#knMcuo^_o<*gO06)ftc2V{IDruGZ2~^dPjuqErd))`iDn9{jAS9x;}?? za;DbaliJL@T2p0rCAjBrAtt^}Klt;kv5OWjpFVAnW?h`?Qj=f}DrO)9Twk;`5Zd<~ z2Pw2S%%Vb7qI>XRPfPgWL(e-4jNbRLrGp?S@B38*F0U4U8Rib=6IY~m7)3@2%(=~_ zCSG3;0VIyt3)tIVp%+pk#sI`EK;iJjPv zlvPhl0;yfp{RWm2(0XryBeSv?M~DkDU^%KJUZyW>iVvPtL>rzc3I!S38b>3-qW%dJ;Q(U@l$(3R@Dw+gDRiHO; z1_r$G;@zKEFWS_|WK2A8!FN}8|MRV26Y|tr3TFi=5Uyz=G61;cT-nbE)-cDDMYTeG zcJ0GDO@|-r^!}h1fc016a8A%q!2)NhAO;BM{L7v6FP4Mblkj!(#2Bp&;c1QW+};LC zt*2XmKx33p5l593ge;Dp=cXd|W2Ug|39nOlKNr~1{=Kx?UL-YW0z?8wBB) z6DkVRLCRlnf%jYaSy5pA|Es$^ksiLpS#$k|fm|DNCNa?Oe~VeiH9d>s(hoBqvY)4k zYWuR^dm3nvuqDGFLMWGbNPk(&`5&O(W|_Z#a=nHN@yVWf(wrGzH}`xa?>O_-tLgMC zVi9el~!UAY4$viz!56@SmpEF{360JD96 ziWOY$rO#2VmmRb)FjD&17?UBrw4XuQ4@*P7}LWIU+Vp@s;9Li$RHV^ zmMw=Md-kqqm08Ae#kY)yMz?mLwX^$OIM#@*q;#UF?ZX^mMngztTlCC$r69{anjcQ? zR?{y?biLo<%j|AXMuOMOx#OnMet_}v-3k9AeP0>+_h1qGHWN3b(UiLu`uL!K&`oq+ zdksuyDHJp%oF+LXm`ym)fm@ayq6tm&H>$*C`Xv`Mi#tTFDKUXx1O3vhBOo-;?%eIt z_6L&^Yuj6rM*!7gF=WTV0cDvVbX8bWnNrdCgZ(f*n%b!Btb0!^y9%;T6;-@1geSd^ zkayY&CL9#1k22=>kKWjascGOw}GnYAI;=X@oGvL(xQQ0RfZp$@|#2&{UuksyXW8h<46rejj zoi1>2Az|q`9$zYJo)T0!$~l~2=&rDXaP2#v5jl~z589Dz+NsXHJdv$`bg;KhY_nr1 z-`B2=J;=-`V9ywKe>(`G$hrWMjYlSWFZZsDK9N)p(=;?P4XU5frx2*yaR z=JK5+jHA&1GEm>UL75|eT8C!No9xA?*5~{1n+|JaDsG7!CP=gJnq)VNK}~CEKcNsG zm-3pOr557h@U`5W5Zil<1_HJFeNXxVZ^CfE^vLOL@B*GAqSB%>->X=gXsvF_1^dzy z4op+~JgW48gHYoNbxWwRX&65<_%xyJ2QNCI9);yMsgCD}Y%JJEo>3@6R?n?^N#a%1K$; z(Ge#_gS!i*ody@LlPVF5WRoXFnK}qbO60s>5^%UXo0;#)%#i)U^;1e_oILg3759~g z8)}@k(pEm57@zQepVUd(h|aL(;XW60ldOjQ-S1Ec}`Vg7mKop$xr)$d>Xh zn`*{{)IV@^HFcRR1&qXns(QT2MCTp> z3{m{|Q7&Q4X^@BGe`6scbp=t>=xh@io_>c`pt{l6Ho|P%xIs~`8Si7a67K)LB!+PF z>x1fvRNSlit(Z~QeRl4amR!TCQ(sDI0Jytv`BnwVUUe{myDzeG_$PDZGVS`6zzTA-?cAj| zid1L)!7^FFjE>VF4^`xJQhxIjKf4_Bw?Q`Y>@fa+ydz{-B%d{)V=`$cFlw+xr9gQC z4(NXP6NskR7zn_E2`_rqA0b35%Qt3lY7U+Wb(XW2T8+~lM1<~F=8C#r(UWqgcX}N9wESY;mk$l z2^QXeYL!l{kN=-!E0*+PEE?_pmoMiw!S{`Rb-u)+EsF*BI05(4aS)MoB;{59<;ReW z{};oO1@)I0Qnt`UI{?=b~F4hy!5yyhfV9XhYC0BJGh_ugCZ>9K9DR z-9zZd=^+JZe>08(AkvCTb*VOHh8dH062>-vNu7U84HH#DQ2P_^j0<|O2}oDK9mG6s zhdjsAY4<#aXJ}cFZOHP9ikjjt=%yZ~d=dF;i1TcJmhnqvJ?M#^fsFr6!xHACRB#4) zVJ(pnHxEd|pDH6{&`h>hm{72VY-rY5Yl|%|0(*K?cT)a$3!rF=2hD53FC_MtYdFV$ zJc6Zi#e^$AWuHCVRr^`(g_V+z^T?IGsb0cdXwd}fd`c|hzKm8tHIg_<6oMRK zGtsVOpcxfVU*3A*zz|U?_}C)wbg|GMq|_(ZBPt@nYAU-5Wo~41baG{3Z3<;>WN%_> z3N$#Afi@`-G&e9HFHB`_XLM*XAT~EPIG1ru0Tq8YHZmYSJ_>Vma%Ev{3V582b_Y}w zTGK5}O6W!D5^2(tPzC9|_uc~}5K2NxXrZGBhze2_q)JCbkuDtsM4A-oRf(*InrP_)4ZLBq>%f(ynQ zWQIieU|?FRe_7xlz(1HP3=Nb3gTa4N(qJIW2M7yvb_4wiZW`nb`%OZA!MOZGvEC?e zARJc$EEEBU;eG&EKd3(pi1x+6Lb3mw`1cL~fdE|)&S;<$%oTwI{1Y7q!{C4RxX$|` z0)aMQobVt(@UPF`D?6OFTu?~QpnuGNHy31LZenVpD)_tLzbR#9R3H#5EGmBm6c&{L z10fJmQJ@rV5&G{ahET*`S%ClX)k4BiK7*EgNEZ;Bs|6rkB2+yFuc${7_Xq@)- zP`C*|{^Mg5ied-$$w;ol!2orb|>p5(xG6g$4m| zEynF6fLI7_3|(M>zZDDwi6BvEoC^?FUMLWb@&)|rr?@l_gnO2Lfq#GYU?9jF_ZT2O zVQ}<6DC95nPcQ$5#c;4E#_w+c*If|W%@_7hJY3!&bO7ofms>zkFwFN4@UKdoF}}D1 z(7%<2EAv15-;V|i76@|&OiiGiZ{Kl$edp~_l@e=!@amx4D9@@z2EQy;~cx$@P_1GW3o}xX~>yFlJUrD6JT=q+Pk6Wn@ZK) z>||`hriyDJ=RP6kksgE%_^sMJxjvX%REGKVM*&?Lfz{n*Gaq6mR*lwPO6riGm3~xZ&BRW4K=)yU7puIHrp@>XTT(b*FlLJ>iW8e{!?V)}n^-23k_|#6-Fl_a zOL$|=b?N6;D|vlCQb;4Vaysq#+PP49c%?Ui#M=59_#me@oMs0*!CppJ`m(6(tQQDpZ(20g=j(r*$w-C6qQP;C*ku0fE6BtlPtsxF~4k7uRvTD)oifT#P zNje{Ad0+Y3sU3044d!>$Qe{MqIJwi;D9*2*mvl_;U;qB_X@nt#`Oa#|waLUbZ-hru zy`%f?_}+hK$F|IxcC~UdeiZ4>*BXmGa(88Y`2F^ow)$wpKGTFr;>MznPzUbaFElSG z`!K353^9{p4~<9<)0LU6P2fQoaf*%XlE99|qQ<3#5&dJ?i<|_=Bswf!ef`+o^O1Slk=RU_hei?a9V$*qpWpPVuUCo23SjV@wqfG^*3LxXSm92DzhpN>+FrW6c4%%lA%GpS(h4XStNCVZj zcYxdnvl$PrCFTo=q24Z4W<*(y34*bL`XVRiH4)wNL$R?p<#HqIdbG4p**XDmyAOZ& zR5<;-kx^B-qEQestk{X1+S#;wBb)Hgwj$#tXx$zLPcCBYF~_mr_v`80IC}K`d)-uj5I` zF&J$ADClS9b56CwThtmfM|o@ApSyqRx>}TD-J7Y_-^O>EWH=_;+EcS!K0OsIw9Dp( zc3a*wRB=z4)*w-W2?C_8xS5?!%W6Lj4yR`9Qc>r8+GNvQbNvKAqwW-xE29nCy^KV! z_J7E-OBVZbLH@)nbQpD-r&r)7nskcQJIIEa*F?oanqhlbtJex7{C*nZ9`AO@#~?i(%FUT<^>u zR=Q3y;~t9j5woyY#w)$~Y>t2LoSw<55UcyhKD|KtAa_W!|1Z

Zfr7ir+Dn{G+dU}5|l}^s;-cz@f2mXO} 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

FkMtmPEJ_(7FARf{?-$RFX`t@ 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%0A>C`JOH55 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 diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index f10a19362..6d0e5fb11 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -1256,6 +1256,8 @@ def uDot(self, t, u, postProcessing=False): c = -self.rocket.distanceRocketNozzle a = b * Mt / M rN = self.rocket.motor.nozzleRadius + Aref = self.rocket.area + d = self.rocket.radius * 2 # Prepare transformation matrix a11 = 1 - 2 * (e2 ** 2 + e3 ** 2) a12 = 2 * (e1 * e2 - e0 * e3) @@ -1324,7 +1326,7 @@ def uDot(self, t, u, postProcessing=False): compStreamVzBn = compStreamVzB / compStreamSpeed if -1 * compStreamVzBn < 1: compAttackAngle = np.arccos(-compStreamVzBn) - cLift = abs(aerodynamicSurface[1](compAttackAngle)) + cLift = abs(aerodynamicSurface[1](compAttackAngle, freestreamMach)) # Component lift force magnitude compLift = ( 0.5 * rho * (compStreamSpeed ** 2) * self.rocket.area * cLift @@ -1342,13 +1344,25 @@ def uDot(self, t, u, postProcessing=False): # Calculates Roll Moment if aerodynamicSurface[-1] == "Fins": Clfdelta, Cldomega, cantAngleRad = aerodynamicSurface[2] - Clf = Clfdelta * cantAngleRad - Cld = ( - Cldomega * omega3 * min(1, 1 / freestreamSpeed) - if freestreamSpeed != 0 - else Cldomega * omega3 + M3f = ( + (1 / 2 * rho * freestreamSpeed ** 2) + * Aref + * d + * Clfdelta(freestreamMach) + * cantAngleRad + ) + M3d = ( + ( + (1 / 2 * rho * freestreamSpeed) + * Aref + * d + * Cldomega(freestreamMach) + * omega3 + * d + / 2 ) - M3 += Clf - Cld + ) + M3 += M3f - M3d # Calculate derivatives # Angular acceleration alpha1 = ( diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index b42ae84c2..ecdcb0022 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -370,11 +370,13 @@ def evaluateStaticMargin(self): # Calculate total lift coefficient derivative and center of pressure if len(self.aerodynamicSurfaces) > 0: for aerodynamicSurface in self.aerodynamicSurfaces: - self.totalLiftCoeffDer += aerodynamicSurface[1].differentiate( - x=1e-2, dx=1e-3 - ) + self.totalLiftCoeffDer += Function( + lambda alpha: aerodynamicSurface[1](alpha, 0) + ).differentiate(x=1e-2, dx=1e-3) self.cpPosition += ( - aerodynamicSurface[1].differentiate(x=1e-2, dx=1e-3) + Function( + lambda alpha: aerodynamicSurface[1](alpha, 0) + ).differentiate(x=1e-2, dx=1e-3) * aerodynamicSurface[0][2] ) self.cpPosition /= self.totalLiftCoeffDer @@ -416,7 +418,7 @@ def addTail(self, topRadius, bottomRadius, length, distanceToCM): Returns ------- - cldata : Function + cl : Function Object of the Function class. Contains tail's lift data. self : Rocket Object of the Rocket class. @@ -435,16 +437,14 @@ def addTail(self, topRadius, bottomRadius, length, distanceToCM): # Calculate clalpha clalpha = -2 * (1 - r ** (-2)) * (topRadius / rref) ** 2 - cldata = Function( - lambda x: clalpha * x, - "Alpha (rad)", + cl = Function( + lambda alpha, mach: clalpha * alpha, + ["Alpha (rad)", "Mach"], "Cl", - interpolation="linear", - extrapolation="natural", ) # Store values as new aerodynamic surface - tail = [(0, 0, cpz), cldata, "Tail"] + tail = [(0, 0, cpz), cl, "Tail"] self.aerodynamicSurfaces.append(tail) # Refresh static margin calculation @@ -476,7 +476,7 @@ def addNose(self, length, kind, distanceToCM): Returns ------- - cldata : Function + cl : Function Object of the Function class. Contains nose's lift data. self : Rocket Object of the Rocket class. @@ -499,16 +499,14 @@ def addNose(self, length, kind, distanceToCM): # Calculate clalpha clalpha = 2 - cldata = Function( - lambda x: clalpha * x, - "Alpha (rad)", + cl = Function( + lambda alpha, mach: clalpha * alpha, + ["Alpha (rad)", "Mach"], "Cl", - interpolation="linear", - extrapolation="natural", ) # Store values - nose = [(0, 0, cpz), cldata, "Nose Cone"] + nose = [(0, 0, cpz), cl, "Nose Cone"] self.aerodynamicSurfaces.append(nose) # Refresh static margin calculation @@ -564,7 +562,7 @@ def addFins( Returns ------- - cldata : Function + cl : Function Object of the Function class. Contains fin's lift data. self : Rocket Object of the Rocket class. @@ -579,13 +577,41 @@ def addFins( Ymac = ( (s / 3) * (Cr + 2 * Ct) / Yr ) # span wise position of fin's mean aerodynamic chord + gamac = np.arctan((Cr - Ct) / (2 * span)) Lf = np.sqrt((rootChord / 2 - tipChord / 2) ** 2 + span ** 2) radius = self.radius if radius == 0 else radius d = 2 * radius + Aref = np.pi * radius ** 2 + AR = 2 * s ** 2 / Af cantAngleRad = np.radians(cantAngle) - trapezoidalConstant = ((Yr) / 2) * (radius ** 2) * s - trapezoidalConstant += ((Cr + 2 * Ct) / 3) * radius * (s ** 2) - trapezoidalConstant += ((Cr + 3 * Ct) / 12) * (s ** 3) + trapezoidalConstant = ( + (Cr + 3 * Ct) * s ** 3 + + 4 * (Cr + 2 * Ct) * radius * s ** 2 + + 6 * (Cr + Ct) * s * radius ** 2 + ) / 12 + + # Fin–body interference correction parameters + tau = (s + radius) / radius + λ = Ct / Cr + liftInterferenceFactor = 1 + 1 / tau + rollForcingInterferenceFactor = (1 / np.pi ** 2) * ( + (np.pi ** 2 / 4) * ((tau + 1) ** 2 / tau ** 2) + + ((np.pi * (tau ** 2 + 1) ** 2) / (tau ** 2 * (tau - 1) ** 2)) + * np.arcsin((tau ** 2 - 1) / (tau ** 2 + 1)) + - (2 * np.pi * (tau + 1)) / (tau * (tau - 1)) + + ((tau ** 2 + 1) ** 2) + / (tau ** 2 * (tau - 1) ** 2) + * (np.arcsin((tau ** 2 - 1) / (tau ** 2 + 1))) ** 2 + - (4 * (tau + 1)) + / (tau * (tau - 1)) + * np.arcsin((tau ** 2 - 1) / (tau ** 2 + 1)) + + (8 / (tau - 1) ** 2) * np.log((tau ** 2 + 1) / (2 * tau)) + ) + rollDampingInterferenceFactor = 1 + ( + ((tau - λ) / (tau)) - ((1 - λ) / (tau - 1)) * np.log(tau) + ) / ( + ((tau + 1) * (tau - λ)) / (2) - ((1 - λ) * (tau ** 3 - 1)) / (3 * (tau - 1)) + ) # Save geometric parameters for later Fin Flutter Analysis and Roll Moment Calculation self.rootChord = Cr @@ -593,6 +619,25 @@ def addFins( self.span = s self.distanceRocketFins = distanceToCM + # Auxiliary functions + + # Defines beta parameter + def beta(mach): + if mach < 0.8: + return np.sqrt(1 - mach ** 2) + elif mach < 1.1: + return np.sqrt(1 - 0.8 ** 2) + else: + return np.sqrt(mach ** 2 - 1) + + # Defines number of fins correction + def finNumCorrection(n): + correctorFactor = [2.37, 2.74, 2.99, 3.24] + if n >= 5 and n <= 8: + return correctorFactor[n - 5] + else: + return n / 2 + # Calculate cp position relative to cm if distanceToCM < 0: cpz = distanceToCM - ( @@ -607,44 +652,35 @@ def addFins( # Calculate lift parameters for planar fins if not airfoil: - # Calculate clalpha - clalpha = (4 * n * (s / d) ** 2) / (1 + np.sqrt(1 + (2 * Lf / Yr) ** 2)) - clalpha *= 1 + radius / (s + radius) - # # Create a function of lift values by attack angle - cldata = Function( - lambda x: clalpha * x, "Alpha (rad)", "Cl", interpolation="linear" - ) - # Parameters for Roll Moment. Documented at: https://github.com/Projeto-Jupiter/RocketPy/blob/develop/docs/technical/aerodynamics/Roll_Equations.pdf - clfDelta = n * (Ymac + radius) * clalpha / d - cldOmega = ( - n * clalpha * np.cos(cantAngleRad) * trapezoidalConstant / (Af * d) + clalphaSingleFin = Function( + lambda mach: 2 + * np.pi + * AR + * (Af / Aref) + / (2 + np.sqrt(4 + ((beta(mach) * AR) / (np.cos(gamac))) ** 2)), ) - rollParameters = ( - [clfDelta, cldOmega, cantAngleRad] if cantAngleRad != 0 else [0, 0, 0] - ) - - # Store values - fin = [(0, 0, cpz), cldata, rollParameters, "Fins"] - self.aerodynamicSurfaces.append(fin) - # Refresh static margin calculation - self.evaluateStaticMargin() + clalphaMultipleFins = ( + liftInterferenceFactor * finNumCorrection(n) * clalphaSingleFin + ) # Function of mach number - # Return self - return self.aerodynamicSurfaces[-1] + # Calculates clalpha * alpha + cl = Function( + lambda alpha, mach: alpha * clalphaMultipleFins(mach), + ["Alpha (rad)", "Mach"], + "Cl", + ) else: def cnalfa1(cn): """Calculates the normal force coefficient derivative of a 3D airfoil for a given Cnalfa0 - Parameters ---------- cn : int Normal force coefficient derivative of a 2D airfoil. - Returns ------- Cnalfa1 : int @@ -672,7 +708,7 @@ def cnalfa1(cn): # Applies number of fins to lift coefficient data data = [[cl[0], (n / 2) * cnalfa1(cl[1])] for cl in read] - cldata = Function( + cl = Function( data, "Alpha (rad)", "Cl", @@ -681,26 +717,35 @@ def cnalfa1(cn): ) # Takes an approximation to an angular coefficient - clalpha = cldata.differentiate(x=0, dx=1e-2) - - # Parameters for Roll Moment. Documented at: https://github.com/Projeto-Jupiter/RocketPy/blob/develop/docs/technical/aerodynamics/Roll_Equations.pdf - clfDelta = n * (Ymac + radius) * clalpha / d - cldOmega = ( - n * clalpha * np.cos(cantAngleRad) * trapezoidalConstant / (Af * d) - ) - rollParameters = ( - [clfDelta, cldOmega, cantAngleRad] if cantAngleRad != 0 else [0, 0, 0] - ) + clalpha = cl.differentiate(x=0, dx=1e-2) + + # Parameters for Roll Moment. + # Documented at: https://github.com/Projeto-Jupiter/RocketPy/blob/develop/docs/technical/aerodynamics/Roll_Equations.pdf + clfDelta = ( + rollForcingInterferenceFactor * n * (Ymac + radius) * clalphaSingleFin / d + ) # Function of mach number + cldOmega = Function( + 2 + * rollDampingInterferenceFactor + * n + * clalphaSingleFin + * np.cos(cantAngleRad) + * trapezoidalConstant + / (Aref * d ** 2) + ) # Function of mach number + rollParameters = ( + [clfDelta, cldOmega, cantAngleRad] if cantAngleRad != 0 else [0, 0, 0] + ) - # Store values - fin = [(0, 0, cpz), cldata, rollParameters, "Fins"] - self.aerodynamicSurfaces.append(fin) + # Store values + fin = [(0, 0, cpz), cl, rollParameters, "Fins"] + self.aerodynamicSurfaces.append(fin) - # Refresh static margin calculation - self.evaluateStaticMargin() + # Refresh static margin calculation + self.evaluateStaticMargin() - # Return self - return self.aerodynamicSurfaces[-1] + # Return self + return self.aerodynamicSurfaces[-1] def addParachute( self, name, CdS, trigger, samplingRate=100, lag=0, noise=(0, 0, 0) @@ -987,7 +1032,9 @@ def allInfo(self): print("\nAerodynamics Lift Coefficient Derivatives") for aerodynamicSurface in self.aerodynamicSurfaces: name = aerodynamicSurface[-1] - clalpha = aerodynamicSurface[1].differentiate(x=1e-2, dx=1e-3) + clalpha = Function( + lambda alpha: aerodynamicSurface[1](alpha, 0), + ).differentiate(x=1e-2, dx=1e-3) print( name + " Lift Coefficient Derivative: {:.3f}".format(clalpha) + "/rad" ) From db8531b325f8bdd8b7b8f7ee4033381b9a4732b1 Mon Sep 17 00:00:00 2001 From: Mateus Stano <69485049+MateusStano@users.noreply.github.com> Date: Sun, 6 Feb 2022 06:56:25 -0300 Subject: [PATCH 30/59] ran black and pytest --- rocketpy/Flight.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index 6d0e5fb11..c67d5fb4d 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -1352,15 +1352,13 @@ def uDot(self, t, u, postProcessing=False): * cantAngleRad ) M3d = ( - ( - (1 / 2 * rho * freestreamSpeed) - * Aref - * d - * Cldomega(freestreamMach) - * omega3 - * d - / 2 - ) + (1 / 2 * rho * freestreamSpeed) + * Aref + * d + * Cldomega(freestreamMach) + * omega3 + * d + / 2 ) M3 += M3f - M3d # Calculate derivatives From d7c85ecd739d858438de528557a21527d56c4d41 Mon Sep 17 00:00:00 2001 From: Mateus Stano <69485049+MateusStano@users.noreply.github.com> Date: Sun, 6 Feb 2022 09:54:19 -0300 Subject: [PATCH 31/59] Removed unnecessary Function() on cldOmega --- rocketpy/Rocket.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index ecdcb0022..9ebfb7b6f 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -724,7 +724,7 @@ def cnalfa1(cn): clfDelta = ( rollForcingInterferenceFactor * n * (Ymac + radius) * clalphaSingleFin / d ) # Function of mach number - cldOmega = Function( + cldOmega = ( 2 * rollDampingInterferenceFactor * n @@ -732,7 +732,8 @@ def cnalfa1(cn): * np.cos(cantAngleRad) * trapezoidalConstant / (Aref * d ** 2) - ) # Function of mach number + ) + # Function of mach number rollParameters = ( [clfDelta, cldOmega, cantAngleRad] if cantAngleRad != 0 else [0, 0, 0] ) From 4362cb1efeb1527084e66b867967ae52b7858993 Mon Sep 17 00:00:00 2001 From: Giovani Hidalgo Ceotto Date: Mon, 7 Feb 2022 00:23:25 -0300 Subject: [PATCH 32/59] FEAT: add interpolation and extrapolation argument to Flight.postProcess in order to speed up exectuion if linear interpolation is enough, instead of the default spline --- rocketpy/Flight.py | 66 +++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index d2aec0bdd..20a3b8b67 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -1501,7 +1501,7 @@ def uDotParachute(self, t, u, postProcessing=False): return [vx, vy, vz, ax, ay, az, 0, 0, 0, 0, 0, 0, 0] - def postProcess(self): + def postProcess(self, interpolation="spline", extrapolation="natural"): """Post-process all Flight information produced during simulation. Includes the calculation of maximum values, calculation of secondary values such as energy and conversion @@ -1519,43 +1519,43 @@ def postProcess(self): # Transform solution array into Functions sol = np.array(self.solution) self.x = Function( - sol[:, [0, 1]], "Time (s)", "X (m)", "spline", extrapolation="natural" + sol[:, [0, 1]], "Time (s)", "X (m)", interpolation, extrapolation ) self.y = Function( - sol[:, [0, 2]], "Time (s)", "Y (m)", "spline", extrapolation="natural" + sol[:, [0, 2]], "Time (s)", "Y (m)", interpolation, extrapolation ) self.z = Function( - sol[:, [0, 3]], "Time (s)", "Z (m)", "spline", extrapolation="natural" + sol[:, [0, 3]], "Time (s)", "Z (m)", interpolation, extrapolation ) self.vx = Function( - sol[:, [0, 4]], "Time (s)", "Vx (m/s)", "spline", extrapolation="natural" + sol[:, [0, 4]], "Time (s)", "Vx (m/s)", interpolation, extrapolation ) self.vy = Function( - sol[:, [0, 5]], "Time (s)", "Vy (m/s)", "spline", extrapolation="natural" + sol[:, [0, 5]], "Time (s)", "Vy (m/s)", interpolation, extrapolation ) self.vz = Function( - sol[:, [0, 6]], "Time (s)", "Vz (m/s)", "spline", extrapolation="natural" + sol[:, [0, 6]], "Time (s)", "Vz (m/s)", interpolation, extrapolation ) self.e0 = Function( - sol[:, [0, 7]], "Time (s)", "e0", "spline", extrapolation="natural" + sol[:, [0, 7]], "Time (s)", "e0", interpolation, extrapolation ) self.e1 = Function( - sol[:, [0, 8]], "Time (s)", "e1", "spline", extrapolation="natural" + sol[:, [0, 8]], "Time (s)", "e1", interpolation, extrapolation ) self.e2 = Function( - sol[:, [0, 9]], "Time (s)", "e2", "spline", extrapolation="natural" + sol[:, [0, 9]], "Time (s)", "e2", interpolation, extrapolation ) self.e3 = Function( - sol[:, [0, 10]], "Time (s)", "e3", "spline", extrapolation="natural" + sol[:, [0, 10]], "Time (s)", "e3", interpolation, extrapolation ) self.w1 = Function( - sol[:, [0, 11]], "Time (s)", "ω1 (rad/s)", "spline", extrapolation="natural" + sol[:, [0, 11]], "Time (s)", "ω1 (rad/s)", interpolation, extrapolation ) self.w2 = Function( - sol[:, [0, 12]], "Time (s)", "ω2 (rad/s)", "spline", extrapolation="natural" + sol[:, [0, 12]], "Time (s)", "ω2 (rad/s)", interpolation, extrapolation ) self.w3 = Function( - sol[:, [0, 13]], "Time (s)", "ω3 (rad/s)", "spline", extrapolation="natural" + sol[:, [0, 13]], "Time (s)", "ω3 (rad/s)", interpolation, extrapolation ) # Process second type of outputs - accelerations @@ -1587,12 +1587,12 @@ def postProcess(self): self.alpha2.append([step[0], alpha2]) self.alpha3.append([step[0], alpha3]) # Convert accelerations to functions - self.ax = Function(self.ax, "Time (s)", "Ax (m/s2)", "spline") - self.ay = Function(self.ay, "Time (s)", "Ay (m/s2)", "spline") - self.az = Function(self.az, "Time (s)", "Az (m/s2)", "spline") - self.alpha1 = Function(self.alpha1, "Time (s)", "α1 (rad/s2)", "spline") - self.alpha2 = Function(self.alpha2, "Time (s)", "α2 (rad/s2)", "spline") - self.alpha3 = Function(self.alpha3, "Time (s)", "α3 (rad/s2)", "spline") + self.ax = Function(self.ax, "Time (s)", "Ax (m/s2)", interpolation) + self.ay = Function(self.ay, "Time (s)", "Ay (m/s2)", interpolation) + self.az = Function(self.az, "Time (s)", "Az (m/s2)", interpolation) + self.alpha1 = Function(self.alpha1, "Time (s)", "α1 (rad/s2)", interpolation) + self.alpha2 = Function(self.alpha2, "Time (s)", "α2 (rad/s2)", interpolation) + self.alpha3 = Function(self.alpha3, "Time (s)", "α3 (rad/s2)", interpolation) # Process third type of outputs - temporary values calculated during integration # Initialize force and atmospheric arrays @@ -1619,25 +1619,25 @@ def postProcess(self): # Call derivatives in post processing mode uDot = currentDerivative(step[0], step[1:], postProcessing=True) # Convert forces and atmospheric arrays to functions - self.R1 = Function(self.R1, "Time (s)", "R1 (N)", "spline") - self.R2 = Function(self.R2, "Time (s)", "R2 (N)", "spline") - self.R3 = Function(self.R3, "Time (s)", "R3 (N)", "spline") - self.M1 = Function(self.M1, "Time (s)", "M1 (Nm)", "spline") - self.M2 = Function(self.M2, "Time (s)", "M2 (Nm)", "spline") - self.M3 = Function(self.M3, "Time (s)", "M3 (Nm)", "spline") + self.R1 = Function(self.R1, "Time (s)", "R1 (N)", interpolation) + self.R2 = Function(self.R2, "Time (s)", "R2 (N)", interpolation) + self.R3 = Function(self.R3, "Time (s)", "R3 (N)", interpolation) + self.M1 = Function(self.M1, "Time (s)", "M1 (Nm)", interpolation) + self.M2 = Function(self.M2, "Time (s)", "M2 (Nm)", interpolation) + self.M3 = Function(self.M3, "Time (s)", "M3 (Nm)", interpolation) self.windVelocityX = Function( - self.windVelocityX, "Time (s)", "Wind Velocity X (East) (m/s)", "spline" + self.windVelocityX, "Time (s)", "Wind Velocity X (East) (m/s)", interpolation ) self.windVelocityY = Function( - self.windVelocityY, "Time (s)", "Wind Velocity Y (North) (m/s)", "spline" + self.windVelocityY, "Time (s)", "Wind Velocity Y (North) (m/s)", interpolation ) - self.density = Function(self.density, "Time (s)", "Density (kg/m³)", "spline") - self.pressure = Function(self.pressure, "Time (s)", "Pressure (Pa)", "spline") + self.density = Function(self.density, "Time (s)", "Density (kg/m³)", interpolation) + self.pressure = Function(self.pressure, "Time (s)", "Pressure (Pa)", interpolation) self.dynamicViscosity = Function( - self.dynamicViscosity, "Time (s)", "Dynamic Viscosity (Pa s)", "spline" + self.dynamicViscosity, "Time (s)", "Dynamic Viscosity (Pa s)", interpolation ) self.speedOfSound = Function( - self.speedOfSound, "Time (s)", "Speed of Sound (m/s)", "spline" + self.speedOfSound, "Time (s)", "Speed of Sound (m/s)", interpolation ) # Process fourth type of output - values calculated from previous outputs @@ -2012,7 +2012,7 @@ def postProcess(self): self.postProcessed = True return None - + def info(self): """Prints out a summary of the data available about the Flight. From d8ce2fb1761fcb62f74e9a9b60ba759d04d8a324 Mon Sep 17 00:00:00 2001 From: Giovani Hidalgo Ceotto Date: Mon, 7 Feb 2022 00:26:17 -0300 Subject: [PATCH 33/59] WIP: stability check notebook to try out different possibilites to test issue 115 --- docs/notebooks/stability_check.ipynb | 380 +++++++++++++++++++++++++++ 1 file changed, 380 insertions(+) create mode 100644 docs/notebooks/stability_check.ipynb diff --git a/docs/notebooks/stability_check.ipynb b/docs/notebooks/stability_check.ipynb new file mode 100644 index 000000000..cf57e3d0a --- /dev/null +++ b/docs/notebooks/stability_check.ipynb @@ -0,0 +1,380 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib widget" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.9.9\n" + ] + } + ], + "source": [ + "import rocketpy\n", + "from rocketpy import *\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "print(rocketpy.__version__)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Create an environment with ZERO gravity and CONTROLLED wind\n", + "Env = Environment(\n", + " gravity=0, # zero gravity\n", + " railLength=0,\n", + " latitude=0,\n", + " longitude=0,\n", + " elevation=0\n", + ")\n", + "Env.setAtmosphericModel(\n", + " type=\"CustomAtmosphere\",\n", + " wind_u=10, # 10 m/s constant wind velocity in the east direction\n", + " wind_v=0,\n", + " pressure=101325,\n", + " temperature=300,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a motor with ZERO thrust and ZERO mass\n", + "DummyMotor = SolidMotor(\n", + " thrustSource=1e-300,\n", + " burnOut=1e-10,\n", + " grainNumber=5,\n", + " grainSeparation=5/1000,\n", + " grainDensity=1e-300,\n", + " grainOuterRadius=33/1000,\n", + " grainInitialInnerRadius=15/1000,\n", + " grainInitialHeight=120/1000,\n", + " nozzleRadius=33/1000,\n", + " throatRadius=11/1000,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a rocket with ZERO drag\n", + "DummyRocket = Rocket(\n", + " motor=DummyMotor,\n", + " radius=127/2000,\n", + " mass=19.197-2.956,\n", + " inertiaI=6.60,\n", + " inertiaZ=0.0351,\n", + " distanceRocketNozzle=-1.255,\n", + " distanceRocketPropellant=-0.85704,\n", + " powerOffDrag=0,\n", + " powerOnDrag=0\n", + ")\n", + "\n", + "DummyRocket.setRailButtons([0.2, -0.5])\n", + "NoseCone = DummyRocket.addNose(length=0.55829, kind=\"vonKarman\", distanceToCM=0.71971)\n", + "FinSet = DummyRocket.addFins(4, span=0.100, rootChord=0.120, tipChord=0.040, distanceToCM=-1.04956)\n", + "Tail = DummyRocket.addTail(topRadius=0.0635, bottomRadius=0.0435, length=0.060, distanceToCM=-1.194656)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Simulation Completed at Time: 10.0000 s\n" + ] + } + ], + "source": [ + "# Simulate Flight\n", + "TestFlight = Flight(\n", + " rocket=DummyRocket,\n", + " environment=Env,\n", + " inclination=90,\n", + " heading=0,\n", + " initialSolution=[0, 0, 0, 100, 0, 0, 100, 1.0, 0.0, 0.0, 0.0, 0, 0, 0], # Start at 100 m of altitude and 100 m/s of vertical velocity\n", + " maxTime=10,\n", + " maxTimeStep=1e-3,\n", + " verbose=True\n", + ")\n", + "TestFlight.postProcess(interpolation=\"linear\", extrapolation=\"natural\")\n", + "# TestFlight.allInfo()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-1.5000000000050808\n" + ] + } + ], + "source": [ + "# Function to get rocket with any desired static margin easily\n", + "def setup_rocket_with_given_static_margin(rocket, static_margin):\n", + "\n", + " def compute_static_margin_error_given_distance(distanceToCM, static_margin, rocket):\n", + " rocket.aerodynamicSurfaces = []\n", + " rocket.addNose(length=0.5, kind=\"vonKarman\", distanceToCM=1.0)\n", + " rocket.addFins(4, span=0.100, rootChord=0.100, tipChord=0.100, distanceToCM=distanceToCM) \n", + " return rocket.staticMargin(0) - static_margin\n", + " \n", + " from scipy import optimize\n", + " sol = optimize.root_scalar(compute_static_margin_error_given_distance, bracket=[-2.0, 2.0], method='brentq', args=(static_margin, rocket))\n", + "\n", + " return rocket\n", + "\n", + "DummyRocket = setup_rocket_with_given_static_margin(DummyRocket, static_margin=-1.5)\n", + "\n", + "print(DummyRocket.staticMargin(1))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "def augmented_angle_of_attack_theoretical_function(time, A, B, w, z):\n", + " return np.real(A*np.exp(1j*w*time) + B*np.exp(-1j*w*time))*np.exp(z*time)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Simulating Rocket with Static Margin of -0.100\n", + "Simulation Completed at Time: 7.0000 s\n", + "Simulating Rocket with Static Margin of -0.010\n", + "Simulation Completed at Time: 7.0000 s\n", + "Simulating Rocket with Static Margin of -0.000\n", + "Simulation Completed at Time: 7.0000 s\n", + "Simulating Rocket with Static Margin of 0.010\n", + "Simulation Completed at Time: 7.0000 s\n", + "Simulating Rocket with Static Margin of 0.100\n", + "Simulation Completed at Time: 7.0000 s\n", + "Simulating Rocket with Static Margin of 1.000\n", + "Simulation Completed at Time: 7.0000 s\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "41068f1eac104ba69b7f19cbab226e72", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "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kgAKIYQQQlQZSQCFEEeVyy67jAsvvLBi+7/00ku55ZZbhrXsV7/6VX784x+PckRCCDGYfBOIEOIzQyl12Pk33XQT3/3ud9FaM27cuLEJqszrr7/O8uXL6ejooK6u7iOX37x5M2eccQY7duygoaFhDCIUQoiQJIBCiM+MPXv2lNoPPvggN954I1u2bCn11dXVDSvxGi1XXHEFlmVx9913D3udJUuWcNlll7Fq1apRjEwIIfqTU8BCiM+MiRMnlkpDQwNKqX59dXV1g04Bf+ELX+Dqq6/m2muvZfz48bS2tvKzn/2MVCrF5ZdfTjweZ9asWTz++OP99rV582bOPfdc6urqaG1t5dJLL6Wzs/OQsfm+z0MPPcT555/fr/+nP/0ps2fPJhqN0trayle+8pV+888//3weeOCBT//iCCHExyAJoBDiqHfffffR3NzM2rVrufrqq/n2t7/NRRddxGmnncarr77KihUruPTSS0mn0wAcPHiQ5cuXs2DBAtavX88TTzzB3r17ufjiiw+5j40bN9LT08PixYtLfevXr+eaa67hX/7lX9iyZQtPPPEEZ5xxRr/1li5dytq1a8nlcqNz8EIIMQRJAIUQR7358+fzz//8z8yePZsbbriBaDRKc3MzV155JbNnz+bGG2+kq6uLjRs3AnDHHXewYMECbrnlFubMmcOCBQv4+c9/zrPPPsvWrVuH3EdHRwemadLS0lLq27lzJ7W1tXzpS1+ira2NBQsWcM011/Rbb/LkyeTz+X6nt4UQYrRJAiiEOOrNmzev1DZNk6amJubOnVvqa21tBWDfvn1AeDPHs88+W7qmsK6ujjlz5gCwffv2IfeRyWSIRCL9blQ5++yzaWtrY+bMmVx66aX86le/Ko0yFsViMYBB/UIIMZokARRCHPVs2+43rZTq11dM2oIgACCZTHL++efT3t7er2zbtm3QKdyi5uZm0uk0+Xy+1BePx3n11Vf59a9/zaRJk7jxxhuZP38+Bw8eLC1z4MABACZMmDAixyqEEMMhCaAQQgywcOFC3njjDaZPn86sWbP6ldra2iHXOeWUUwB48803+/VblsVZZ53FD3/4QzZu3Mh7773HM888U5q/efNmpkyZQnNz86gdjxBCDCQJoBBCDLBq1SoOHDjA1772NdatW8f27dt58sknufzyy/F9f8h1JkyYwMKFC3n++edLfY899hg/+clPaG9vp6Ojg1/84hcEQcDxxx9fWua5555jxYoVo35MQghRThJAIYQYYPLkybzwwgv4vs+KFSuYO3cu1157LePGjcMwDv1r84orruBXv/pVaXrcuHH89re/Zfny5Zxwwgncfffd/PrXv+akk04CIJvN8sgjj3DllVeO+jEJIUQ5eRC0EEKMkEwmw/HHH8+DDz7Iqaee+pHL33XXXTz88MM89dRTYxCdEEL0kRFAIYQYIbFYjF/84heHfWB0Odu2uf3220c5KiGEGExGAIUQQgghqoyMAAohhBBCVBlJAIUQQgghqowkgEIIIYQQVUYSQCGEEEKIKiMJoBBCCCFElZEEUAghhBCiykgCKIQQQghRZSQBFEIIIYSoMpIACiGEEEJUmf8PGMibFYFYIo8AAAAASUVORK5CYII=", + "text/html": [ + "\n", + "

\n", + " " + ], + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Simulate Different Static Margins by Varying Fin Position\n", + "simulation_results = []\n", + "fitted_values = []\n", + "max_time = 7\n", + "\n", + "for static_margin in [-0.1, -0.01, 0, 0.01, 0.1, 1.0]:\n", + " DummyRocket = setup_rocket_with_given_static_margin(DummyRocket, static_margin)\n", + "\n", + " # Simulate\n", + " print(f'Simulating Rocket with Static Margin of {DummyRocket.staticMargin(0):1.3f}')\n", + " TestFlight = Flight(\n", + " rocket=DummyRocket, environment=Env,\n", + " inclination=90, heading=0,\n", + " initialSolution=[0, 0, 0, 100, 0, 0, 100, 1.0, 0.0, 0.0, 0.0, 0, 0, 0], # Start at 100 m of altitude and 100 m/s of vertical velocity\n", + " maxTime=max_time, maxTimeStep=1e-2,\n", + " verbose=True\n", + " )\n", + " TestFlight.postProcess(interpolation=\"linear\", extrapolation=\"natural\") # Compute Augmented Angle of Attack\n", + "\n", + " # Augmented Angle of Attack\n", + " timeSource = TestFlight.angleOfAttack.source[:, 0]\n", + " angleOfAttackSource = TestFlight.angleOfAttack.source[:, 1]\n", + " # Loop through the data and invert sign when a first derivative singularity is found near zero\n", + " for i in range(0, len(angleOfAttackSource)-2, 1):\n", + " i0, i1, i2 = i, i + 1, i + 2\n", + " x0, x1, x2 = timeSource[([i0, i1, i2])]\n", + " y0, y1, y2 = angleOfAttackSource[([i0, i1, i2])]\n", + " y2_linear_prediction = y1 + ((y1 - y0)/(x1 - x0))*(x2 - x1)\n", + " if np.sign(y2) != np.sign(y2_linear_prediction):\n", + " angleOfAttackSource[i+2:] *= -1\n", + " # Make sure maximum angle of attack is positive (convetion)\n", + " if np.max(np.abs(angleOfAttackSource)) == -1*np.min(angleOfAttackSource):\n", + " angleOfAttackSource = -1*angleOfAttackSource\n", + " # Transform data into function\n", + " augmentedAngleOfAttack = Function(\n", + " np.array([timeSource, angleOfAttackSource]).transpose(),\n", + " inputs='Time',\n", + " outputs='Augmented Angle of Attack (DEG)'\n", + " )\n", + "\n", + " # Store Results\n", + " simulation_results += [(augmentedAngleOfAttack, f'Static Margin: {static_margin:.3f} c')]\n", + "\n", + " # Fit augmented angle of attack curve\n", + " from scipy import optimize\n", + " popt, pcov = optimize.curve_fit(augmented_angle_of_attack_theoretical_function, timeSource, angleOfAttackSource)\n", + " theoreticalAugmentedAngleOfAttack = Function(\n", + " np.array([timeSource, augmented_angle_of_attack_theoretical_function(timeSource, *popt)]).transpose(),\n", + " inputs='Time',\n", + " outputs='Theoretical Augmented Angle of Attack (DEG)'\n", + " )\n", + " # simulation_results += [(theoreticalAugmentedAngleOfAttack, f'Fitted - Static Margin: {static_margin:.3f} c')]\n", + " fitted_values += [(popt, f'Static Margin: {static_margin:.3f} c')]\n", + "\n", + "Function.comparePlots(simulation_results, lower=0, upper=max_time, xlabel='Time (s)', ylabel='Augmented Angle of Attack (DEG)')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(array([0.01632274, 0.14708815, 1.07998145, 1.09671736]),\n", + " 'Static Margin: -0.100 c'),\n", + " (array([ 1.75584946e+03, -1.75593120e+03, 6.72428545e-01, 6.71191834e-01]),\n", + " 'Static Margin: -0.010 c'),\n", + " (array([-2.99046199e+03, 2.99617261e+03, 3.51354962e-04, -3.53551230e-01]),\n", + " 'Static Margin: 0.000 c'),\n", + " (array([ 1.75585292e+03, -1.75586082e+03, 1.04843976e+00, 5.42382160e-01]),\n", + " 'Static Margin: 0.010 c'),\n", + " (array([-9.55929173e+03, 9.56512275e+03, 1.02319091e+00, -4.25697732e-01]),\n", + " 'Static Margin: 0.100 c'),\n", + " (array([-3.26129944e+04, 3.26187513e+04, -3.31543819e+00, -4.78319665e-01]),\n", + " 'Static Margin: 1.000 c')]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fitted_values" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Time tests" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "13.5 s ± 601 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" + ] + } + ], + "source": [ + "%timeit TestFlight.postProcess(interpolation=\"spline\", extrapolation=\"natural\")" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4.3 s ± 360 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" + ] + } + ], + "source": [ + "%timeit TestFlight.postProcess(interpolation=\"linear\", extrapolation=\"natural\")" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "d6b6104057cbd8e3515b495d4ad438447abc2a04d02aeef1e410f2c6dd1be54c" + }, + "kernelspec": { + "display_name": "Python 3.9.7 64-bit ('rocketpy_tests': conda)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.0" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From b70303f5ee2312025c3eb4677b4a01adda4e4478 Mon Sep 17 00:00:00 2001 From: Lint Action Date: Mon, 7 Feb 2022 03:27:17 +0000 Subject: [PATCH 34/59] Fix code style issues with Black --- rocketpy/Flight.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index 20a3b8b67..6ac823c4f 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -1626,13 +1626,23 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): self.M2 = Function(self.M2, "Time (s)", "M2 (Nm)", interpolation) self.M3 = Function(self.M3, "Time (s)", "M3 (Nm)", interpolation) self.windVelocityX = Function( - self.windVelocityX, "Time (s)", "Wind Velocity X (East) (m/s)", interpolation + self.windVelocityX, + "Time (s)", + "Wind Velocity X (East) (m/s)", + interpolation, ) self.windVelocityY = Function( - self.windVelocityY, "Time (s)", "Wind Velocity Y (North) (m/s)", interpolation + self.windVelocityY, + "Time (s)", + "Wind Velocity Y (North) (m/s)", + interpolation, + ) + self.density = Function( + self.density, "Time (s)", "Density (kg/m³)", interpolation + ) + self.pressure = Function( + self.pressure, "Time (s)", "Pressure (Pa)", interpolation ) - self.density = Function(self.density, "Time (s)", "Density (kg/m³)", interpolation) - self.pressure = Function(self.pressure, "Time (s)", "Pressure (Pa)", interpolation) self.dynamicViscosity = Function( self.dynamicViscosity, "Time (s)", "Dynamic Viscosity (Pa s)", interpolation ) @@ -2012,7 +2022,7 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): self.postProcessed = True return None - + def info(self): """Prints out a summary of the data available about the Flight. From 0ffcf3588e24aedb5f65cd574b16a48cc71164fc Mon Sep 17 00:00:00 2001 From: Lucas Kierulff Balabram Date: Tue, 8 Feb 2022 22:34:19 -0300 Subject: [PATCH 35/59] BUG: readd airfoil implementation with fix Remove the absolute value in the computation of the lift coefficient. --- rocketpy/Environment.py | 24 +++--- rocketpy/Flight.py | 115 ++++++++++++++-------------- rocketpy/Function.py | 66 ++++++++-------- rocketpy/Rocket.py | 163 ++++++++++++++++++++++++++++++++-------- rocketpy/SolidMotor.py | 28 +++---- rocketpy/utilities.py | 2 +- 6 files changed, 250 insertions(+), 148 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index a4e9c9d85..0d72e2a24 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -362,7 +362,7 @@ def __init__( self.timeZone = None # Initialize constants - self.earthRadius = 6.3781 * (10**6) + self.earthRadius = 6.3781 * (10 ** 6) self.airGasConstant = 287.05287 # in J/K/Kg # Initialize atmosphere @@ -1967,7 +1967,7 @@ def processForecastReanalysis(self, file, dictionary): windV = ((y2 - y) / (y2 - y1)) * f_x_y1 + ((y - y1) / (y2 - y1)) * f_x_y2 # Determine wind speed, heading and direction - windSpeed = np.sqrt(windU**2 + windV**2) + windSpeed = np.sqrt(windU ** 2 + windV ** 2) windHeading = np.arctan2(windU, windV) * (180 / np.pi) % 360 windDirection = (windHeading - 180) % 360 @@ -2384,7 +2384,7 @@ def processEnsemble(self, file, dictionary): windV = ((y2 - y) / (y2 - y1)) * f_x_y1 + ((y - y1) / (y2 - y1)) * f_x_y2 # Determine wind speed, heading and direction - windSpeed = np.sqrt(windU**2 + windV**2) + windSpeed = np.sqrt(windU ** 2 + windV ** 2) windHeading = np.arctan2(windU, windV) * (180 / np.pi) % 360 windDirection = (windHeading - 180) % 360 @@ -3290,7 +3290,7 @@ def geodesicToUtm(self, lat, lon, datum): # Evaluate reference parameters K0 = 1 - 1 / 2500 - e2 = 2 * flattening - flattening**2 + e2 = 2 * flattening - flattening ** 2 e2lin = e2 / (1 - e2) # Evaluate auxiliary parameters @@ -3313,9 +3313,9 @@ def geodesicToUtm(self, lat, lon, datum): # Evaluate new auxiliary parameters J = (1 - t + c) * ag * ag * ag / 6 - K = (5 - 18 * t + t * t + 72 * c - 58 * e2lin) * (ag**5) / 120 + K = (5 - 18 * t + t * t + 72 * c - 58 * e2lin) * (ag ** 5) / 120 L = (5 - t + 9 * c + 4 * c * c) * ag * ag * ag * ag / 24 - M = (61 - 58 * t + t * t + 600 * c - 330 * e2lin) * (ag**6) / 720 + M = (61 - 58 * t + t * t + 600 * c - 330 * e2lin) * (ag ** 6) / 720 # Evaluate the final coordinates x = 500000 + K0 * n * (ag + J + K) @@ -3388,7 +3388,7 @@ def utmToGeodesic(self, x, y, utmZone, hemis, datum): # Calculate reference values K0 = 1 - 1 / 2500 - e2 = 2 * flattening - flattening**2 + e2 = 2 * flattening - flattening ** 2 e2lin = e2 / (1 - e2) e1 = (1 - (1 - e2) ** 0.5) / (1 + (1 - e2) ** 0.5) @@ -3412,20 +3412,20 @@ def utmToGeodesic(self, x, y, utmZone, hemis, datum): t1 = np.tan(lat1) ** 2 n1 = semiMajorAxis / ((1 - e2 * (np.sin(lat1) ** 2)) ** 0.5) quoc = (1 - e2 * np.sin(lat1) * np.sin(lat1)) ** 3 - r1 = semiMajorAxis * (1 - e2) / (quoc**0.5) + r1 = semiMajorAxis * (1 - e2) / (quoc ** 0.5) d = (x - 500000) / (n1 * K0) # Calculate other auxiliary values I = (5 + 3 * t1 + 10 * c1 - 4 * c1 * c1 - 9 * e2lin) * d * d * d * d / 24 J = ( (61 + 90 * t1 + 298 * c1 + 45 * t1 * t1 - 252 * e2lin - 3 * c1 * c1) - * (d**6) + * (d ** 6) / 720 ) K = d - (1 + 2 * t1 + c1) * d * d * d / 6 L = ( (5 - 2 * c1 + 28 * t1 - 3 * c1 * c1 + 8 * e2lin + 24 * t1 * t1) - * (d**5) + * (d ** 5) / 120 ) @@ -3488,8 +3488,8 @@ def calculateEarthRadius(self, lat, datum): # Calculate the Earth Radius in meters eRadius = np.sqrt( ( - (np.cos(lat) * (semiMajorAxis**2)) ** 2 - + (np.sin(lat) * (semiMinorAxis**2)) ** 2 + (np.cos(lat) * (semiMajorAxis ** 2)) ** 2 + + (np.sin(lat) * (semiMinorAxis ** 2)) ** 2 ) / ((np.cos(lat) * semiMajorAxis) ** 2 + (np.sin(lat) * semiMinorAxis) ** 2) ) diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index 6ac823c4f..9d7ff0f78 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -833,7 +833,7 @@ def __init__( self.y[0] ** 2 + self.y[1] ** 2 + (self.y[2] - self.env.elevation) ** 2 - >= self.effective1RL**2 + >= self.effective1RL ** 2 ): # Rocket is out of rail # Check exactly when it went out using root finding @@ -847,7 +847,7 @@ def __init__( # Get points y0 = ( sum([self.solution[-2][i] ** 2 for i in [1, 2, 3]]) - - self.effective1RL**2 + - self.effective1RL ** 2 ) yp0 = 2 * sum( [ @@ -858,7 +858,7 @@ def __init__( t1 = self.solution[-1][0] - self.solution[-2][0] y1 = ( sum([self.solution[-1][i] ** 2 for i in [1, 2, 3]]) - - self.effective1RL**2 + - self.effective1RL ** 2 ) yp1 = 2 * sum( [ @@ -873,15 +873,15 @@ def __init__( D = float(phase.solver.step_size) d = float(y0) c = float(yp0) - b = float((3 * y1 - yp1 * D - 2 * c * D - 3 * d) / (D**2)) - a = float(-(2 * y1 - yp1 * D - c * D - 2 * d) / (D**3)) + 1e-5 + b = float((3 * y1 - yp1 * D - 2 * c * D - 3 * d) / (D ** 2)) + a = float(-(2 * y1 - yp1 * D - c * D - 2 * d) / (D ** 3)) + 1e-5 # Find roots - d0 = b**2 - 3 * a * c - d1 = 2 * b**3 - 9 * a * b * c + 27 * d * a**2 - c1 = ((d1 + (d1**2 - 4 * d0**3) ** (0.5)) / 2) ** (1 / 3) + d0 = b ** 2 - 3 * a * c + d1 = 2 * b ** 3 - 9 * a * b * c + 27 * d * a ** 2 + c1 = ((d1 + (d1 ** 2 - 4 * d0 ** 3) ** (0.5)) / 2) ** (1 / 3) t_roots = [] for k in [0, 1, 2]: - c2 = c1 * (-1 / 2 + 1j * (3**0.5) / 2) ** k + c2 = c1 * (-1 / 2 + 1j * (3 ** 0.5) / 2) ** k t_roots.append(-(1 / (3 * a)) * (b + c2 + d0 / c2)) # Find correct root valid_t_root = [] @@ -968,15 +968,15 @@ def __init__( D = float(phase.solver.step_size) d = float(y0) c = float(yp0) - b = float((3 * y1 - yp1 * D - 2 * c * D - 3 * d) / (D**2)) - a = float(-(2 * y1 - yp1 * D - c * D - 2 * d) / (D**3)) + b = float((3 * y1 - yp1 * D - 2 * c * D - 3 * d) / (D ** 2)) + a = float(-(2 * y1 - yp1 * D - c * D - 2 * d) / (D ** 3)) # Find roots - d0 = b**2 - 3 * a * c - d1 = 2 * b**3 - 9 * a * b * c + 27 * d * a**2 - c1 = ((d1 + (d1**2 - 4 * d0**3) ** (0.5)) / 2) ** (1 / 3) + d0 = b ** 2 - 3 * a * c + d1 = 2 * b ** 3 - 9 * a * b * c + 27 * d * a ** 2 + c1 = ((d1 + (d1 ** 2 - 4 * d0 ** 3) ** (0.5)) / 2) ** (1 / 3) t_roots = [] for k in [0, 1, 2]: - c2 = c1 * (-1 / 2 + 1j * (3**0.5) / 2) ** k + c2 = c1 * (-1 / 2 + 1j * (3 ** 0.5) / 2) ** k t_roots.append(-(1 / (3 * a)) * (b + c2 + d0 / c2)) # Find correct root valid_t_root = [] @@ -1151,14 +1151,14 @@ def uDotRail1(self, t, u, postProcessing=False): # Calculate Forces Thrust = self.rocket.motor.thrust.getValueOpt(t) rho = self.env.density.getValueOpt(z) - R3 = -0.5 * rho * (freestreamSpeed**2) * self.rocket.area * (dragCoeff) + R3 = -0.5 * rho * (freestreamSpeed ** 2) * self.rocket.area * (dragCoeff) # Calculate Linear acceleration - a3 = (R3 + Thrust) / M - (e0**2 - e1**2 - e2**2 + e3**2) * self.env.g + a3 = (R3 + Thrust) / M - (e0 ** 2 - e1 ** 2 - e2 ** 2 + e3 ** 2) * self.env.g if a3 > 0: ax = 2 * (e1 * e3 + e0 * e2) * a3 ay = 2 * (e2 * e3 - e0 * e1) * a3 - az = (1 - 2 * (e1**2 + e2**2)) * a3 + az = (1 - 2 * (e1 ** 2 + e2 ** 2)) * a3 else: ax, ay, az = 0, 0, 0 @@ -1257,15 +1257,15 @@ def uDot(self, t, u, postProcessing=False): a = b * Mt / M rN = self.rocket.motor.nozzleRadius # Prepare transformation matrix - a11 = 1 - 2 * (e2**2 + e3**2) + a11 = 1 - 2 * (e2 ** 2 + e3 ** 2) a12 = 2 * (e1 * e2 - e0 * e3) a13 = 2 * (e1 * e3 + e0 * e2) a21 = 2 * (e1 * e2 + e0 * e3) - a22 = 1 - 2 * (e1**2 + e3**2) + a22 = 1 - 2 * (e1 ** 2 + e3 ** 2) a23 = 2 * (e2 * e3 - e0 * e1) a31 = 2 * (e1 * e3 - e0 * e2) a32 = 2 * (e2 * e3 + e0 * e1) - a33 = 1 - 2 * (e1**2 + e2**2) + a33 = 1 - 2 * (e1 ** 2 + e2 ** 2) # Transformation matrix: (123) -> (XYZ) K = [[a11, a12, a13], [a21, a22, a23], [a31, a32, a33]] # Transformation matrix: (XYZ) -> (123) or K transpose @@ -1287,7 +1287,7 @@ def uDot(self, t, u, postProcessing=False): else: dragCoeff = self.rocket.powerOffDrag.getValueOpt(freestreamMach) rho = self.env.density.getValueOpt(z) - R3 = -0.5 * rho * (freestreamSpeed**2) * self.rocket.area * (dragCoeff) + R3 = -0.5 * rho * (freestreamSpeed ** 2) * self.rocket.area * (dragCoeff) # Off center moment M1 += self.rocket.cpEccentricityY * R3 M2 -= self.rocket.cpEccentricityX * R3 @@ -1315,27 +1315,28 @@ def uDot(self, t, u, postProcessing=False): compStreamVyB = compWindVyB - compVyB compStreamVzB = compWindVzB - compVzB compStreamSpeed = ( - compStreamVxB**2 + compStreamVyB**2 + compStreamVzB**2 + compStreamVxB ** 2 + compStreamVyB ** 2 + compStreamVzB ** 2 ) ** 0.5 # Component attack angle and lift force compAttackAngle = 0 compLift, compLiftXB, compLiftYB = 0, 0, 0 - if compStreamVxB**2 + compStreamVyB**2 != 0: + if compStreamVxB ** 2 + compStreamVyB ** 2 != 0: # Normalize component stream velocity in body frame compStreamVzBn = compStreamVzB / compStreamSpeed if -1 * compStreamVzBn < 1: compAttackAngle = np.arccos(-compStreamVzBn) + cLift = aerodynamicSurface[1](compAttackAngle) # Component lift force magnitude compLift = ( 0.5 * rho - * (compStreamSpeed**2) + * (compStreamSpeed ** 2) * self.rocket.area - * clalpha + * cLift * compAttackAngle ) # Component lift force components - liftDirNorm = (compStreamVxB**2 + compStreamVyB**2) ** 0.5 + liftDirNorm = (compStreamVxB ** 2 + compStreamVyB ** 2) ** 0.5 compLiftXB = compLift * (compStreamVxB / liftDirNorm) compLiftYB = compLift * (compStreamVyB / liftDirNorm) # Add to total lift force @@ -1355,26 +1356,26 @@ def uDot(self, t, u, postProcessing=False): alpha1 = ( M1 - ( - omega2 * omega3 * (Rz + Tz - Ri - Ti - mu * b**2) + omega2 * omega3 * (Rz + Tz - Ri - Ti - mu * b ** 2) + omega1 * ( (TiDot + MtDot * (Mr - 1) * (b / M) ** 2) - MtDot * ((rN / 2) ** 2 + (c - b * mu / Mr) ** 2) ) ) - ) / (Ri + Ti + mu * b**2) + ) / (Ri + Ti + mu * b ** 2) alpha2 = ( M2 - ( - omega1 * omega3 * (Ri + Ti + mu * b**2 - Rz - Tz) + omega1 * omega3 * (Ri + Ti + mu * b ** 2 - Rz - Tz) + omega2 * ( (TiDot + MtDot * (Mr - 1) * (b / M) ** 2) - MtDot * ((rN / 2) ** 2 + (c - b * mu / Mr) ** 2) ) ) - ) / (Ri + Ti + mu * b**2) - alpha3 = (M3 - omega3 * (TzDot - MtDot * (rN**2) / 2)) / (Rz + Tz) + ) / (Ri + Ti + mu * b ** 2) + alpha3 = (M3 - omega3 * (TzDot - MtDot * (rN ** 2) / 2)) / (Rz + Tz) # Euler parameters derivative e0Dot = 0.5 * (-omega1 * e1 - omega2 * e2 - omega3 * e3) e1Dot = 0.5 * (omega1 * e0 + omega3 * e2 - omega2 * e3) @@ -1383,7 +1384,7 @@ def uDot(self, t, u, postProcessing=False): # Linear acceleration L = [ - (R1 - b * Mt * (omega2**2 + omega3**2) - 2 * c * MtDot * omega2) / M, + (R1 - b * Mt * (omega2 ** 2 + omega3 ** 2) - 2 * c * MtDot * omega2) / M, (R2 + b * Mt * (alpha3 + omega1 * omega2) + 2 * c * MtDot * omega1) / M, (R3 - b * Mt * (alpha2 - omega1 * omega3) + Thrust) / M, ] @@ -1454,11 +1455,11 @@ def uDotParachute(self, t, u, postProcessing=False): R = 1.5 rho = self.env.density.getValueOpt(u[2]) to = 1.2 - ma = ka * rho * (4 / 3) * np.pi * R**3 + ma = ka * rho * (4 / 3) * np.pi * R ** 3 mp = self.rocket.mass eta = 1 - Rdot = (6 * R * (1 - eta) / (1.2**6)) * ( - (1 - eta) * t**5 + eta * (to**3) * (t**2) + Rdot = (6 * R * (1 - eta) / (1.2 ** 6)) * ( + (1 - eta) * t ** 5 + eta * (to ** 3) * (t ** 2) ) Rdot = 0 # Get relevant state data @@ -1474,7 +1475,7 @@ def uDotParachute(self, t, u, postProcessing=False): freestreamZ = vz # Determine drag force pseudoD = ( - -0.5 * rho * CdS * freestreamSpeed - ka * rho * 4 * np.pi * (R**2) * Rdot + -0.5 * rho * CdS * freestreamSpeed - ka * rho * 4 * np.pi * (R ** 2) * Rdot ) Dx = pseudoD * freestreamX Dy = pseudoD * freestreamY @@ -1654,19 +1655,19 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): # Kinematics functions and values # Velocity Magnitude - self.speed = (self.vx**2 + self.vy**2 + self.vz**2) ** 0.5 + self.speed = (self.vx ** 2 + self.vy ** 2 + self.vz ** 2) ** 0.5 self.speed.setOutputs("Speed - Velocity Magnitude (m/s)") maxSpeedTimeIndex = np.argmax(self.speed[:, 1]) self.maxSpeed = self.speed[maxSpeedTimeIndex, 1] self.maxSpeedTime = self.speed[maxSpeedTimeIndex, 0] # Acceleration - self.acceleration = (self.ax**2 + self.ay**2 + self.az**2) ** 0.5 + self.acceleration = (self.ax ** 2 + self.ay ** 2 + self.az ** 2) ** 0.5 self.acceleration.setOutputs("Acceleration Magnitude (m/s²)") maxAccelerationTimeIndex = np.argmax(self.acceleration[:, 1]) self.maxAcceleration = self.acceleration[maxAccelerationTimeIndex, 1] self.maxAccelerationTime = self.acceleration[maxAccelerationTimeIndex, 0] # Path Angle - self.horizontalSpeed = (self.vx**2 + self.vy**2) ** 0.5 + self.horizontalSpeed = (self.vx ** 2 + self.vy ** 2) ** 0.5 pathAngle = (180 / np.pi) * np.arctan2( self.vz[:, 1], self.horizontalSpeed[:, 1] ) @@ -1675,9 +1676,9 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): # Attitude Angle self.attitudeVectorX = 2 * (self.e1 * self.e3 + self.e0 * self.e2) # a13 self.attitudeVectorY = 2 * (self.e2 * self.e3 - self.e0 * self.e1) # a23 - self.attitudeVectorZ = 1 - 2 * (self.e1**2 + self.e2**2) # a33 + self.attitudeVectorZ = 1 - 2 * (self.e1 ** 2 + self.e2 ** 2) # a33 horizontalAttitudeProj = ( - self.attitudeVectorX**2 + self.attitudeVectorY**2 + self.attitudeVectorX ** 2 + self.attitudeVectorY ** 2 ) ** 0.5 attitudeAngle = (180 / np.pi) * np.arctan2( self.attitudeVectorZ[:, 1], horizontalAttitudeProj[:, 1] @@ -1698,9 +1699,9 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): attitudeLateralPlaneProjY = self.attitudeVectorY[:, 1] - attitudeLateralProjY attitudeLateralPlaneProjZ = self.attitudeVectorZ[:, 1] attitudeLateralPlaneProj = ( - attitudeLateralPlaneProjX**2 - + attitudeLateralPlaneProjY**2 - + attitudeLateralPlaneProjZ**2 + attitudeLateralPlaneProjX ** 2 + + attitudeLateralPlaneProjY ** 2 + + attitudeLateralPlaneProjZ ** 2 ) ** 0.5 lateralAttitudeAngle = (180 / np.pi) * np.arctan2( attitudeLateralProj, attitudeLateralPlaneProj @@ -1792,11 +1793,11 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): self.railButton2ShearForce[:outOfRailTimeIndex] ) # Aerodynamic Lift and Drag - self.aerodynamicLift = (self.R1**2 + self.R2**2) ** 0.5 + self.aerodynamicLift = (self.R1 ** 2 + self.R2 ** 2) ** 0.5 self.aerodynamicLift.setOutputs("Aerodynamic Lift Force (N)") self.aerodynamicDrag = -1 * self.R3 self.aerodynamicDrag.setOutputs("Aerodynamic Drag Force (N)") - self.aerodynamicBendingMoment = (self.M1**2 + self.M2**2) ** 0.5 + self.aerodynamicBendingMoment = (self.M1 ** 2 + self.M2 ** 2) ** 0.5 self.aerodynamicBendingMoment.setOutputs("Aerodynamic Bending Moment (N m)") self.aerodynamicSpinMoment = self.M3 self.aerodynamicSpinMoment.setOutputs("Aerodynamic Spin Moment (N m)") @@ -1808,7 +1809,7 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): Ri = self.rocket.inertiaI Tz = self.rocket.motor.inertiaZ Ti = self.rocket.motor.inertiaI - I1, I2, I3 = (Ri + Ti + mu * b**2), (Ri + Ti + mu * b**2), (Rz + Tz) + I1, I2, I3 = (Ri + Ti + mu * b ** 2), (Ri + Ti + mu * b ** 2), (Rz + Tz) # Redefine I1, I2 and I3 grid grid = self.vx[:, 0] I1 = Function(np.column_stack([grid, I1(grid)]), "Time (s)") @@ -1824,9 +1825,9 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): vx, vy, vz = self.vx, self.vy, self.vz w1, w2, w3 = self.w1, self.w2, self.w3 # Kinetic Energy - self.rotationalEnergy = 0.5 * (I1 * w1**2 + I2 * w2**2 + I3 * w3**2) + self.rotationalEnergy = 0.5 * (I1 * w1 ** 2 + I2 * w2 ** 2 + I3 * w3 ** 2) self.rotationalEnergy.setOutputs("Rotational Kinetic Energy (J)") - self.translationalEnergy = 0.5 * totalMass * (vx**2 + vy**2 + vz**2) + self.translationalEnergy = 0.5 * totalMass * (vx ** 2 + vy ** 2 + vz ** 2) self.translationalEnergy.setOutputs("Translational Kinetic Energy (J)") self.kineticEnergy = self.rotationalEnergy + self.translationalEnergy self.kineticEnergy.setOutputs("Kinetic Energy (J)") @@ -1935,9 +1936,9 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): self.streamVelocityZ = -1 * self.vz self.streamVelocityZ.setOutputs("Freestream Velocity Z (m/s)") self.freestreamSpeed = ( - self.streamVelocityX**2 - + self.streamVelocityY**2 - + self.streamVelocityZ**2 + self.streamVelocityX ** 2 + + self.streamVelocityY ** 2 + + self.streamVelocityZ ** 2 ) ** 0.5 self.freestreamSpeed.setOutputs("Freestream Speed (m/s)") # Apogee Freestream speed @@ -1957,7 +1958,7 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): self.maxReynoldsNumberTime = self.ReynoldsNumber[maxReynoldsNumberTimeIndex, 0] self.maxReynoldsNumber = self.ReynoldsNumber[maxReynoldsNumberTimeIndex, 1] # Dynamic Pressure - self.dynamicPressure = 0.5 * self.density * self.freestreamSpeed**2 + self.dynamicPressure = 0.5 * self.density * self.freestreamSpeed ** 2 self.dynamicPressure.setOutputs("Dynamic Pressure (Pa)") maxDynamicPressureTimeIndex = np.argmax(self.dynamicPressure[:, 1]) self.maxDynamicPressureTime = self.dynamicPressure[ @@ -1965,7 +1966,7 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): ] self.maxDynamicPressure = self.dynamicPressure[maxDynamicPressureTimeIndex, 1] # Total Pressure - self.totalPressure = self.pressure * (1 + 0.2 * self.MachNumber**2) ** (3.5) + self.totalPressure = self.pressure * (1 + 0.2 * self.MachNumber ** 2) ** (3.5) self.totalPressure.setOutputs("Total Pressure (Pa)") maxtotalPressureTimeIndex = np.argmax(self.totalPressure[:, 1]) self.maxtotalPressureTime = self.totalPressure[maxtotalPressureTimeIndex, 0] @@ -2319,7 +2320,7 @@ def calculateStallWindVelocity(self, stallAngle): wV = ( 2 * vF * math.cos(theta) / c + ( - 4 * vF * vF * math.cos(theta) * math.cos(theta) / (c**2) + 4 * vF * vF * math.cos(theta) * math.cos(theta) / (c ** 2) + 4 * 1 * vF * vF / c ) ** 0.5 @@ -3010,7 +3011,7 @@ def calculateFinFlutterAnalysis(self, finThickness, shearModulus): # Calculate the Fin Flutter Mach Number self.flutterMachNumber = ( (shearModulus * 2 * (ar + 2) * (finThickness / self.rocket.rootChord) ** 3) - / (1.337 * (ar**3) * (la + 1) * self.pressure) + / (1.337 * (ar ** 3) * (la + 1) * self.pressure) ) ** 0.5 # Calculate difference between Fin Flutter Mach Number and the Rocket Speed diff --git a/rocketpy/Function.py b/rocketpy/Function.py index 446dca183..acdebd479 100644 --- a/rocketpy/Function.py +++ b/rocketpy/Function.py @@ -300,7 +300,7 @@ def getValueOpt(x): xInterval = xInterval if xInterval != 0 else 1 a = coeffs[:, xInterval - 1] x = x - xData[xInterval - 1] - y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] + y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] else: # Extrapolate if extrapolation == 0: # Extrapolation == zero @@ -308,7 +308,7 @@ def getValueOpt(x): elif extrapolation == 1: # Extrapolation == natural a = coeffs[:, 0] if x < xmin else coeffs[:, -1] x = x - xData[0] if x < xmin else x - xData[-2] - y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] + y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -352,14 +352,14 @@ def getValueOpt(x): # Interpolate xInterval = xInterval if xInterval != 0 else 1 a = coeffs[4 * xInterval - 4 : 4 * xInterval] - y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] + y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] else: # Extrapolate if extrapolation == 0: # Extrapolation == zero y = 0 elif extrapolation == 1: # Extrapolation == natural a = coeffs[:4] if x < xmin else coeffs[-4:] - y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] + y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -375,7 +375,7 @@ def getValueOpt(x): # Interpolate y = 0 for i in range(len(coeffs)): - y += coeffs[i] * (x**i) + y += coeffs[i] * (x ** i) else: # Extrapolate if extrapolation == 0: # Extrapolation == zero @@ -383,7 +383,7 @@ def getValueOpt(x): elif extrapolation == 1: # Extrapolation == natural y = 0 for i in range(len(coeffs)): - y += coeffs[i] * (x**i) + y += coeffs[i] * (x ** i) else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -576,7 +576,7 @@ def getValue(self, *args): coeffs = self.__polynomialCoefficients__ A = np.zeros((len(args[0]), coeffs.shape[0])) for i in range(coeffs.shape[0]): - A[:, i] = x**i + A[:, i] = x ** i ans = A.dot(coeffs).tolist() for i in range(len(x)): if not (xmin <= x[i] <= xmax): @@ -713,7 +713,7 @@ def getValueOpt_deprecated(self, *args): xInterval = xInterval if xInterval != 0 else 1 a = coeffs[:, xInterval - 1] x = x - xData[xInterval - 1] - y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] + y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] else: # Extrapolate if extrapolation == 0: # Extrapolation == zero @@ -721,7 +721,7 @@ def getValueOpt_deprecated(self, *args): elif extrapolation == 1: # Extrapolation == natural a = coeffs[:, 0] if x < xmin else coeffs[:, -1] x = x - xData[0] if x < xmin else x - xData[-2] - y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] + y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -757,14 +757,14 @@ def getValueOpt_deprecated(self, *args): # Interpolate xInterval = xInterval if xInterval != 0 else 1 a = coeffs[4 * xInterval - 4 : 4 * xInterval] - y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] + y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] else: # Extrapolate if extrapolation == 0: # Extrapolation == zero y = 0 elif extrapolation == 1: # Extrapolation == natural a = coeffs[:4] if x < xmin else coeffs[-4:] - y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] + y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -777,7 +777,7 @@ def getValueOpt_deprecated(self, *args): # Interpolate y = 0 for i in range(len(coeffs)): - y += coeffs[i] * (x**i) + y += coeffs[i] * (x ** i) else: # Extrapolate if extrapolation == 0: # Extrapolation == zero @@ -785,7 +785,7 @@ def getValueOpt_deprecated(self, *args): elif extrapolation == 1: # Extrapolation == natural y = 0 for i in range(len(coeffs)): - y += coeffs[i] * (x**i) + y += coeffs[i] * (x ** i) else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -863,7 +863,7 @@ def getValueOpt2(self, *args): else: a = coeffs[:, xInterval - 1] x = x - xData[xInterval - 1] - x = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] + x = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] else: # Extrapolate if self.__extrapolation__ == "zero": @@ -896,10 +896,10 @@ def getValueOpt2(self, *args): x = yData[xInterval] elif xmin < x < xmax: a = coeffs[4 * xInterval - 4 : 4 * xInterval] - x = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] + x = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] elif self.__extrapolation__ == "natural": a = coeffs[:4] if x < xmin else coeffs[-4:] - x = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] + x = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] else: # Extrapolate if self.__extrapolation__ == "zero": @@ -1353,7 +1353,7 @@ def __interpolatePolynomial__(self): # Create coefficient matrix1 A = np.zeros((degree + 1, degree + 1)) for i in range(degree + 1): - A[:, i] = x**i + A[:, i] = x ** i # Solve the system and store the resultant coefficients self.__polynomialCoefficients__ = np.linalg.solve(A, y) @@ -1408,10 +1408,10 @@ def __interpolateAkima__(self): dl, dr = d[i], d[i + 1] A = np.array( [ - [1, xl, xl**2, xl**3], - [1, xr, xr**2, xr**3], - [0, 1, 2 * xl, 3 * xl**2], - [0, 1, 2 * xr, 3 * xr**2], + [1, xl, xl ** 2, xl ** 3], + [1, xr, xr ** 2, xr ** 3], + [0, 1, 2 * xl, 3 * xl ** 2], + [0, 1, 2 * xr, 3 * xr ** 2], ] ) Y = np.array([yl, yr, dl, dr]).T @@ -1977,9 +1977,9 @@ def integral(self, a, b, numerical=False): c = coeffs[:, 0] subB = a - xData[0] # subA = 0 ans -= ( - (c[3] * subB**4) / 4 - + (c[2] * subB**3 / 3) - + (c[1] * subB**2 / 2) + (c[3] * subB ** 4) / 4 + + (c[2] * subB ** 3 / 3) + + (c[1] * subB ** 2 / 2) + c[0] * subB ) else: @@ -1995,9 +1995,9 @@ def integral(self, a, b, numerical=False): c = coeffs[:, i] subB = xData[i + 1] - xData[i] # subA = 0 ans += ( - (c[3] * subB**4) / 4 - + (c[2] * subB**3 / 3) - + (c[1] * subB**2 / 2) + (c[3] * subB ** 4) / 4 + + (c[2] * subB ** 3 / 3) + + (c[1] * subB ** 2 / 2) + c[0] * subB ) i += 1 @@ -2010,15 +2010,15 @@ def integral(self, a, b, numerical=False): subA = xData[-1] - xData[-2] subB = b - xData[-2] ans -= ( - (c[3] * subA**4) / 4 - + (c[2] * subA**3 / 3) - + (c[1] * subA**2 / 2) + (c[3] * subA ** 4) / 4 + + (c[2] * subA ** 3 / 3) + + (c[1] * subA ** 2 / 2) + c[0] * subA ) ans += ( - (c[3] * subB**4) / 4 - + (c[2] * subB**3 / 3) - + (c[1] * subB**2 / 2) + (c[3] * subB ** 4) / 4 + + (c[2] * subB ** 3 / 3) + + (c[1] * subB ** 2 / 2) + c[0] * subB ) else: diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index 4c646f279..f2fed7c70 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -220,7 +220,7 @@ def __init__( # Define rocket geometrical parameters in SI units self.radius = radius - self.area = np.pi * self.radius**2 + self.area = np.pi * self.radius ** 2 # Center of mass distance to points of interest self.distanceRocketNozzle = distanceRocketNozzle @@ -370,8 +370,13 @@ def evaluateStaticMargin(self): # Calculate total lift coefficient derivative and center of pressure if len(self.aerodynamicSurfaces) > 0: for aerodynamicSurface in self.aerodynamicSurfaces: - self.totalLiftCoeffDer += aerodynamicSurface[1] - self.cpPosition += aerodynamicSurface[1] * aerodynamicSurface[0][2] + self.totalLiftCoeffDer += aerodynamicSurface[1].differentiate( + x=1e-2, dx=1e-3 + ) + self.cpPosition += ( + aerodynamicSurface[1].differentiate(x=1e-2, dx=1e-3) + * aerodynamicSurface[0][2] + ) self.cpPosition /= self.totalLiftCoeffDer # Calculate static margin @@ -411,8 +416,8 @@ def addTail(self, topRadius, bottomRadius, length, distanceToCM): Returns ------- - self : Rocket - Object of the Rocket class. + tail : list + List containing parameters of the aerodynamic surface added. """ # Calculate ratio between top and bottom radius r = topRadius / bottomRadius @@ -422,15 +427,22 @@ def addTail(self, topRadius, bottomRadius, length, distanceToCM): # Calculate cp position relative to cm if distanceToCM < 0: - cpz = distanceToCM - (length / 3) * (1 + (1 - r) / (1 - r**2)) + cpz = distanceToCM - (length / 3) * (1 + (1 - r) / (1 - r ** 2)) else: - cpz = distanceToCM + (length / 3) * (1 + (1 - r) / (1 - r**2)) + cpz = distanceToCM + (length / 3) * (1 + (1 - r) / (1 - r ** 2)) # Calculate clalpha clalpha = -2 * (1 - r ** (-2)) * (topRadius / rref) ** 2 + cldata = Function( + lambda x: clalpha * x, + "Alpha (rad)", + "Cl", + interpolation="linear", + extrapolation="natural", + ) # Store values as new aerodynamic surface - tail = [(0, 0, cpz), clalpha, "Tail"] + tail = [(0, 0, cpz), cldata, "Tail"] self.aerodynamicSurfaces.append(tail) # Refresh static margin calculation @@ -462,8 +474,8 @@ def addNose(self, length, kind, distanceToCM): Returns ------- - self : Rocket - Object of the Rocket class. + nose : list + List containing parameters of the aerodynamic surface added. """ # Analyze type if kind == "conical": @@ -483,9 +495,16 @@ def addNose(self, length, kind, distanceToCM): # Calculate clalpha clalpha = 2 + cldata = Function( + lambda x: clalpha * x, + "Alpha (rad)", + "Cl", + interpolation="linear", + extrapolation="natural", + ) # Store values - nose = [(0, 0, cpz), clalpha, "Nose Cone"] + nose = [(0, 0, cpz), cldata, "Nose Cone"] self.aerodynamicSurfaces.append(nose) # Refresh static margin calculation @@ -503,6 +522,7 @@ def addFins( distanceToCM, radius=0, cantAngle=0, + airfoil=None, ): """Create a fin set, storing its parameters as part of the aerodynamicSurfaces list. Its parameters are the axial position @@ -532,11 +552,16 @@ def addFins( cantAngle : int, float, optional Fins cant angle with respect to the rocket centerline. Must be given in degrees. + airfoil : string + Fin's lift curve. It must be a .csv file. The .csv file shall + contain no headers and the first column must specify time in + seconds, while the second column specifies lift coefficient. Lift + coefficient is dimensionaless. Returns ------- - self : Rocket - Object of the Rocket class. + fins : list + List containing parameters of the aerodynamic surface added. """ # Retrieve parameters for calculations @@ -548,13 +573,13 @@ def addFins( Ymac = ( (s / 3) * (Cr + 2 * Ct) / Yr ) # span wise position of fin's mean aerodynamic chord - Lf = np.sqrt((rootChord / 2 - tipChord / 2) ** 2 + span**2) + Lf = np.sqrt((rootChord / 2 - tipChord / 2) ** 2 + span ** 2) radius = self.radius if radius == 0 else radius d = 2 * radius cantAngleRad = np.radians(cantAngle) - trapezoidalConstant = ((Yr) / 2) * (radius**2) * s - trapezoidalConstant += ((Cr + 2 * Ct) / 3) * radius * (s**2) - trapezoidalConstant += ((Cr + 3 * Ct) / 12) * (s**3) + trapezoidalConstant = ((Yr) / 2) * (radius ** 2) * s + trapezoidalConstant += ((Cr + 2 * Ct) / 3) * radius * (s ** 2) + trapezoidalConstant += ((Cr + 3 * Ct) / 12) * (s ** 3) # Save geometric parameters for later Fin Flutter Analysis and Roll Moment Calculation self.rootChord = Cr @@ -574,20 +599,96 @@ def addFins( + (1 / 6) * (Cr + Ct - Cr * Ct / (Cr + Ct)) ) - # Calculate clalpha - clalpha = (4 * n * (s / d) ** 2) / (1 + np.sqrt(1 + (2 * Lf / Yr) ** 2)) - clalpha *= 1 + radius / (s + radius) - - # Parameters for Roll Moment. Documented at: https://github.com/Projeto-Jupiter/RocketPy/blob/develop/docs/technical/aerodynamics/Roll_Equations.pdf - clfDelta = n * (Ymac + radius) * clalpha / d - cldOmega = n * clalpha * np.cos(cantAngleRad) * trapezoidalConstant / (Af * d) - rollParameters = ( - [clfDelta, cldOmega, cantAngleRad] if cantAngleRad != 0 else [0, 0, 0] - ) + # Calculate lift parameters for planar fins + if not airfoil: + # Calculate clalpha + clalpha = (4 * n * (s / d) ** 2) / (1 + np.sqrt(1 + (2 * Lf / Yr) ** 2)) + clalpha *= 1 + radius / (s + radius) - # Store values - fin = [(0, 0, cpz), clalpha, rollParameters, "Fins"] - self.aerodynamicSurfaces.append(fin) + # # Create a function of lift values by attack angle + cldata = Function( + lambda x: clalpha * x, "Alpha (rad)", "Cl", interpolation="linear" + ) + # Parameters for Roll Moment. Documented at: https://github.com/Projeto-Jupiter/RocketPy/blob/develop/docs/technical/aerodynamics/Roll_Equations.pdf + clfDelta = n * (Ymac + radius) * clalpha / d + cldOmega = ( + n * clalpha * np.cos(cantAngleRad) * trapezoidalConstant / (Af * d) + ) + rollParameters = ( + [clfDelta, cldOmega, cantAngleRad] if cantAngleRad != 0 else [0, 0, 0] + ) + + # Store values + fin = [(0, 0, cpz), cldata, rollParameters, "Fins"] + self.aerodynamicSurfaces.append(fin) + + # Refresh static margin calculation + self.evaluateStaticMargin() + + # Return self + return self.aerodynamicSurfaces[-1] + + else: + + def cnalfa1(cn): + """Calculates the normal force coefficient derivative of a 3D + airfoil for a given Cnalfa0 + + Parameters + ---------- + cn : int + Normal force coefficient derivative of a 2D airfoil. + + Returns + ------- + Cnalfa1 : int + Normal force coefficient derivative of a 3D airfoil. + """ + + # Retrieve parameters for calculations + Af = (Cr + Ct) * span / 2 + # fin area + AR = 2 * (span ** 2) / Af # Aspect ratio + gamac = np.arctan((Cr - Ct) / (2 * span)) + # mid chord angle + FD = 2 * np.pi * AR / (cn * np.cos(gamac)) + Cnalfa1 = ( + cn + * FD + * (Af / self.area) + * np.cos(gamac) + / (2 + FD * (1 + (4 / FD ** 2)) ** 0.5) + ) + return Cnalfa1 + + # Import the lift curve as a function of lift values by attack angle + read = genfromtxt(airfoil, delimiter=",") + + # Applies number of fins to lift coefficient data + data = [[cl[0], (n / 2) * cnalfa1(cl[1])] for cl in read] + cldata = Function( + data, + "Alpha (rad)", + "Cl", + interpolation="linear", + extrapolation="natural", + ) + + # Takes an approximation to an angular coefficient + clalpha = cldata.differentiate(x=0, dx=1e-2) + + # Parameters for Roll Moment. Documented at: https://github.com/Projeto-Jupiter/RocketPy/blob/develop/docs/technical/aerodynamics/Roll_Equations.pdf + clfDelta = n * (Ymac + radius) * clalpha / d + cldOmega = ( + n * clalpha * np.cos(cantAngleRad) * trapezoidalConstant / (Af * d) + ) + rollParameters = ( + [clfDelta, cldOmega, cantAngleRad] if cantAngleRad != 0 else [0, 0, 0] + ) + + # Store values + fin = [(0, 0, cpz), cldata, rollParameters, "Fins"] + self.aerodynamicSurfaces.append(fin) # Refresh static margin calculation self.evaluateStaticMargin() @@ -880,7 +981,7 @@ def allInfo(self): print("\nAerodynamics Lift Coefficient Derivatives") for aerodynamicSurface in self.aerodynamicSurfaces: name = aerodynamicSurface[-1] - clalpha = aerodynamicSurface[1] + clalpha = aerodynamicSurface[1].differentiate(x=1e-2, dx=1e-3) print( name + " Lift Coefficient Derivative: {:.3f}".format(clalpha) + "/rad" ) diff --git a/rocketpy/SolidMotor.py b/rocketpy/SolidMotor.py index 3fe4a5713..8a780719f 100644 --- a/rocketpy/SolidMotor.py +++ b/rocketpy/SolidMotor.py @@ -253,7 +253,7 @@ def __init__( self.grainInitialVolume = ( self.grainInitialHeight * np.pi - * (self.grainOuterRadius**2 - self.grainInitialInnerRadius**2) + * (self.grainOuterRadius ** 2 - self.grainInitialInnerRadius ** 2) ) self.grainInitialMass = self.grainDensity * self.grainInitialVolume self.propellantInitialMass = self.grainNumber * self.grainInitialMass @@ -423,7 +423,7 @@ def evaluateMass(self): @property def throatArea(self): - return np.pi * self.throatRadius**2 + return np.pi * self.throatRadius ** 2 def evaluateGeometry(self): """Calculates grain inner radius and grain height as a @@ -462,9 +462,9 @@ def geometryDot(y, t): grainMassDot = self.massDot(t) / self.grainNumber rI, h = y rIDot = ( - -0.5 * grainMassDot / (density * np.pi * (rO**2 - rI**2 + rI * h)) + -0.5 * grainMassDot / (density * np.pi * (rO ** 2 - rI ** 2 + rI * h)) ) - hDot = 1.0 * grainMassDot / (density * np.pi * (rO**2 - rI**2 + rI * h)) + hDot = 1.0 * grainMassDot / (density * np.pi * (rO ** 2 - rI ** 2 + rI * h)) return [rIDot, hDot] # Solve the system of differential equations @@ -511,8 +511,8 @@ def evaluateBurnArea(self): 2 * np.pi * ( - self.grainOuterRadius**2 - - self.grainInnerRadius**2 + self.grainOuterRadius ** 2 + - self.grainInnerRadius ** 2 + self.grainInnerRadius * self.grainHeight ) * self.grainNumber @@ -583,8 +583,8 @@ def evaluateInertia(self): grainMassDot = self.massDot / self.grainNumber grainNumber = self.grainNumber grainInertiaI = grainMass * ( - (1 / 4) * (self.grainOuterRadius**2 + self.grainInnerRadius**2) - + (1 / 12) * self.grainHeight**2 + (1 / 4) * (self.grainOuterRadius ** 2 + self.grainInnerRadius ** 2) + + (1 / 12) * self.grainHeight ** 2 ) # Calculate each grain's distance d to propellant center of mass @@ -593,7 +593,7 @@ def evaluateInertia(self): d = d * (self.grainInitialHeight + self.grainSeparation) # Calculate inertia for all grains - self.inertiaI = grainNumber * grainInertiaI + grainMass * np.sum(d**2) + self.inertiaI = grainNumber * grainInertiaI + grainMass * np.sum(d ** 2) self.inertiaI.setOutputs("Propellant Inertia I (kg*m2)") # Inertia I Dot @@ -601,8 +601,8 @@ def evaluateInertia(self): grainInertiaIDot = ( grainMassDot * ( - (1 / 4) * (self.grainOuterRadius**2 + self.grainInnerRadius**2) - + (1 / 12) * self.grainHeight**2 + (1 / 4) * (self.grainOuterRadius ** 2 + self.grainInnerRadius ** 2) + + (1 / 12) * self.grainHeight ** 2 ) + grainMass * ((1 / 2) * self.grainInnerRadius - (1 / 3) * self.grainHeight) @@ -611,7 +611,7 @@ def evaluateInertia(self): # Calculate inertia I dot for all grains self.inertiaIDot = grainNumber * grainInertiaIDot + grainMassDot * np.sum( - d**2 + d ** 2 ) self.inertiaIDot.setOutputs("Propellant Inertia I Dot (kg*m2/s)") @@ -619,13 +619,13 @@ def evaluateInertia(self): self.inertiaZ = ( (1 / 2.0) * self.mass - * (self.grainOuterRadius**2 + self.grainInnerRadius**2) + * (self.grainOuterRadius ** 2 + self.grainInnerRadius ** 2) ) self.inertiaZ.setOutputs("Propellant Inertia Z (kg*m2)") # Inertia Z Dot self.inertiaZDot = (1 / 2.0) * self.massDot * ( - self.grainOuterRadius**2 + self.grainInnerRadius**2 + self.grainOuterRadius ** 2 + self.grainInnerRadius ** 2 ) + self.mass * self.grainInnerRadius * self.burnRate self.inertiaZDot.setOutputs("Propellant Inertia Z Dot (kg*m2/s)") diff --git a/rocketpy/utilities.py b/rocketpy/utilities.py index 7bf5a7232..0051c0622 100644 --- a/rocketpy/utilities.py +++ b/rocketpy/utilities.py @@ -31,5 +31,5 @@ def compute_CdS_from_drop_test( """ - CdS = 2 * rocket_mass * gravity / ((terminal_velocity**2) * air_density) + CdS = 2 * rocket_mass * gravity / ((terminal_velocity ** 2) * air_density) return CdS From 44631cf4d22a4604ecd08ac8650f0030c3ff427a Mon Sep 17 00:00:00 2001 From: Lint Action Date: Wed, 9 Feb 2022 01:38:18 +0000 Subject: [PATCH 36/59] Fix code style issues with Black --- rocketpy/Environment.py | 24 ++++----- rocketpy/Flight.py | 112 ++++++++++++++++++++-------------------- rocketpy/Function.py | 66 +++++++++++------------ rocketpy/Rocket.py | 18 +++---- rocketpy/SolidMotor.py | 28 +++++----- rocketpy/utilities.py | 2 +- 6 files changed, 125 insertions(+), 125 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index 0d72e2a24..a4e9c9d85 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -362,7 +362,7 @@ def __init__( self.timeZone = None # Initialize constants - self.earthRadius = 6.3781 * (10 ** 6) + self.earthRadius = 6.3781 * (10**6) self.airGasConstant = 287.05287 # in J/K/Kg # Initialize atmosphere @@ -1967,7 +1967,7 @@ def processForecastReanalysis(self, file, dictionary): windV = ((y2 - y) / (y2 - y1)) * f_x_y1 + ((y - y1) / (y2 - y1)) * f_x_y2 # Determine wind speed, heading and direction - windSpeed = np.sqrt(windU ** 2 + windV ** 2) + windSpeed = np.sqrt(windU**2 + windV**2) windHeading = np.arctan2(windU, windV) * (180 / np.pi) % 360 windDirection = (windHeading - 180) % 360 @@ -2384,7 +2384,7 @@ def processEnsemble(self, file, dictionary): windV = ((y2 - y) / (y2 - y1)) * f_x_y1 + ((y - y1) / (y2 - y1)) * f_x_y2 # Determine wind speed, heading and direction - windSpeed = np.sqrt(windU ** 2 + windV ** 2) + windSpeed = np.sqrt(windU**2 + windV**2) windHeading = np.arctan2(windU, windV) * (180 / np.pi) % 360 windDirection = (windHeading - 180) % 360 @@ -3290,7 +3290,7 @@ def geodesicToUtm(self, lat, lon, datum): # Evaluate reference parameters K0 = 1 - 1 / 2500 - e2 = 2 * flattening - flattening ** 2 + e2 = 2 * flattening - flattening**2 e2lin = e2 / (1 - e2) # Evaluate auxiliary parameters @@ -3313,9 +3313,9 @@ def geodesicToUtm(self, lat, lon, datum): # Evaluate new auxiliary parameters J = (1 - t + c) * ag * ag * ag / 6 - K = (5 - 18 * t + t * t + 72 * c - 58 * e2lin) * (ag ** 5) / 120 + K = (5 - 18 * t + t * t + 72 * c - 58 * e2lin) * (ag**5) / 120 L = (5 - t + 9 * c + 4 * c * c) * ag * ag * ag * ag / 24 - M = (61 - 58 * t + t * t + 600 * c - 330 * e2lin) * (ag ** 6) / 720 + M = (61 - 58 * t + t * t + 600 * c - 330 * e2lin) * (ag**6) / 720 # Evaluate the final coordinates x = 500000 + K0 * n * (ag + J + K) @@ -3388,7 +3388,7 @@ def utmToGeodesic(self, x, y, utmZone, hemis, datum): # Calculate reference values K0 = 1 - 1 / 2500 - e2 = 2 * flattening - flattening ** 2 + e2 = 2 * flattening - flattening**2 e2lin = e2 / (1 - e2) e1 = (1 - (1 - e2) ** 0.5) / (1 + (1 - e2) ** 0.5) @@ -3412,20 +3412,20 @@ def utmToGeodesic(self, x, y, utmZone, hemis, datum): t1 = np.tan(lat1) ** 2 n1 = semiMajorAxis / ((1 - e2 * (np.sin(lat1) ** 2)) ** 0.5) quoc = (1 - e2 * np.sin(lat1) * np.sin(lat1)) ** 3 - r1 = semiMajorAxis * (1 - e2) / (quoc ** 0.5) + r1 = semiMajorAxis * (1 - e2) / (quoc**0.5) d = (x - 500000) / (n1 * K0) # Calculate other auxiliary values I = (5 + 3 * t1 + 10 * c1 - 4 * c1 * c1 - 9 * e2lin) * d * d * d * d / 24 J = ( (61 + 90 * t1 + 298 * c1 + 45 * t1 * t1 - 252 * e2lin - 3 * c1 * c1) - * (d ** 6) + * (d**6) / 720 ) K = d - (1 + 2 * t1 + c1) * d * d * d / 6 L = ( (5 - 2 * c1 + 28 * t1 - 3 * c1 * c1 + 8 * e2lin + 24 * t1 * t1) - * (d ** 5) + * (d**5) / 120 ) @@ -3488,8 +3488,8 @@ def calculateEarthRadius(self, lat, datum): # Calculate the Earth Radius in meters eRadius = np.sqrt( ( - (np.cos(lat) * (semiMajorAxis ** 2)) ** 2 - + (np.sin(lat) * (semiMinorAxis ** 2)) ** 2 + (np.cos(lat) * (semiMajorAxis**2)) ** 2 + + (np.sin(lat) * (semiMinorAxis**2)) ** 2 ) / ((np.cos(lat) * semiMajorAxis) ** 2 + (np.sin(lat) * semiMinorAxis) ** 2) ) diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index 9d7ff0f78..e7e166cc9 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -833,7 +833,7 @@ def __init__( self.y[0] ** 2 + self.y[1] ** 2 + (self.y[2] - self.env.elevation) ** 2 - >= self.effective1RL ** 2 + >= self.effective1RL**2 ): # Rocket is out of rail # Check exactly when it went out using root finding @@ -847,7 +847,7 @@ def __init__( # Get points y0 = ( sum([self.solution[-2][i] ** 2 for i in [1, 2, 3]]) - - self.effective1RL ** 2 + - self.effective1RL**2 ) yp0 = 2 * sum( [ @@ -858,7 +858,7 @@ def __init__( t1 = self.solution[-1][0] - self.solution[-2][0] y1 = ( sum([self.solution[-1][i] ** 2 for i in [1, 2, 3]]) - - self.effective1RL ** 2 + - self.effective1RL**2 ) yp1 = 2 * sum( [ @@ -873,15 +873,15 @@ def __init__( D = float(phase.solver.step_size) d = float(y0) c = float(yp0) - b = float((3 * y1 - yp1 * D - 2 * c * D - 3 * d) / (D ** 2)) - a = float(-(2 * y1 - yp1 * D - c * D - 2 * d) / (D ** 3)) + 1e-5 + b = float((3 * y1 - yp1 * D - 2 * c * D - 3 * d) / (D**2)) + a = float(-(2 * y1 - yp1 * D - c * D - 2 * d) / (D**3)) + 1e-5 # Find roots - d0 = b ** 2 - 3 * a * c - d1 = 2 * b ** 3 - 9 * a * b * c + 27 * d * a ** 2 - c1 = ((d1 + (d1 ** 2 - 4 * d0 ** 3) ** (0.5)) / 2) ** (1 / 3) + d0 = b**2 - 3 * a * c + d1 = 2 * b**3 - 9 * a * b * c + 27 * d * a**2 + c1 = ((d1 + (d1**2 - 4 * d0**3) ** (0.5)) / 2) ** (1 / 3) t_roots = [] for k in [0, 1, 2]: - c2 = c1 * (-1 / 2 + 1j * (3 ** 0.5) / 2) ** k + c2 = c1 * (-1 / 2 + 1j * (3**0.5) / 2) ** k t_roots.append(-(1 / (3 * a)) * (b + c2 + d0 / c2)) # Find correct root valid_t_root = [] @@ -968,15 +968,15 @@ def __init__( D = float(phase.solver.step_size) d = float(y0) c = float(yp0) - b = float((3 * y1 - yp1 * D - 2 * c * D - 3 * d) / (D ** 2)) - a = float(-(2 * y1 - yp1 * D - c * D - 2 * d) / (D ** 3)) + b = float((3 * y1 - yp1 * D - 2 * c * D - 3 * d) / (D**2)) + a = float(-(2 * y1 - yp1 * D - c * D - 2 * d) / (D**3)) # Find roots - d0 = b ** 2 - 3 * a * c - d1 = 2 * b ** 3 - 9 * a * b * c + 27 * d * a ** 2 - c1 = ((d1 + (d1 ** 2 - 4 * d0 ** 3) ** (0.5)) / 2) ** (1 / 3) + d0 = b**2 - 3 * a * c + d1 = 2 * b**3 - 9 * a * b * c + 27 * d * a**2 + c1 = ((d1 + (d1**2 - 4 * d0**3) ** (0.5)) / 2) ** (1 / 3) t_roots = [] for k in [0, 1, 2]: - c2 = c1 * (-1 / 2 + 1j * (3 ** 0.5) / 2) ** k + c2 = c1 * (-1 / 2 + 1j * (3**0.5) / 2) ** k t_roots.append(-(1 / (3 * a)) * (b + c2 + d0 / c2)) # Find correct root valid_t_root = [] @@ -1151,14 +1151,14 @@ def uDotRail1(self, t, u, postProcessing=False): # Calculate Forces Thrust = self.rocket.motor.thrust.getValueOpt(t) rho = self.env.density.getValueOpt(z) - R3 = -0.5 * rho * (freestreamSpeed ** 2) * self.rocket.area * (dragCoeff) + R3 = -0.5 * rho * (freestreamSpeed**2) * self.rocket.area * (dragCoeff) # Calculate Linear acceleration - a3 = (R3 + Thrust) / M - (e0 ** 2 - e1 ** 2 - e2 ** 2 + e3 ** 2) * self.env.g + a3 = (R3 + Thrust) / M - (e0**2 - e1**2 - e2**2 + e3**2) * self.env.g if a3 > 0: ax = 2 * (e1 * e3 + e0 * e2) * a3 ay = 2 * (e2 * e3 - e0 * e1) * a3 - az = (1 - 2 * (e1 ** 2 + e2 ** 2)) * a3 + az = (1 - 2 * (e1**2 + e2**2)) * a3 else: ax, ay, az = 0, 0, 0 @@ -1257,15 +1257,15 @@ def uDot(self, t, u, postProcessing=False): a = b * Mt / M rN = self.rocket.motor.nozzleRadius # Prepare transformation matrix - a11 = 1 - 2 * (e2 ** 2 + e3 ** 2) + a11 = 1 - 2 * (e2**2 + e3**2) a12 = 2 * (e1 * e2 - e0 * e3) a13 = 2 * (e1 * e3 + e0 * e2) a21 = 2 * (e1 * e2 + e0 * e3) - a22 = 1 - 2 * (e1 ** 2 + e3 ** 2) + a22 = 1 - 2 * (e1**2 + e3**2) a23 = 2 * (e2 * e3 - e0 * e1) a31 = 2 * (e1 * e3 - e0 * e2) a32 = 2 * (e2 * e3 + e0 * e1) - a33 = 1 - 2 * (e1 ** 2 + e2 ** 2) + a33 = 1 - 2 * (e1**2 + e2**2) # Transformation matrix: (123) -> (XYZ) K = [[a11, a12, a13], [a21, a22, a23], [a31, a32, a33]] # Transformation matrix: (XYZ) -> (123) or K transpose @@ -1287,7 +1287,7 @@ def uDot(self, t, u, postProcessing=False): else: dragCoeff = self.rocket.powerOffDrag.getValueOpt(freestreamMach) rho = self.env.density.getValueOpt(z) - R3 = -0.5 * rho * (freestreamSpeed ** 2) * self.rocket.area * (dragCoeff) + R3 = -0.5 * rho * (freestreamSpeed**2) * self.rocket.area * (dragCoeff) # Off center moment M1 += self.rocket.cpEccentricityY * R3 M2 -= self.rocket.cpEccentricityX * R3 @@ -1315,12 +1315,12 @@ def uDot(self, t, u, postProcessing=False): compStreamVyB = compWindVyB - compVyB compStreamVzB = compWindVzB - compVzB compStreamSpeed = ( - compStreamVxB ** 2 + compStreamVyB ** 2 + compStreamVzB ** 2 + compStreamVxB**2 + compStreamVyB**2 + compStreamVzB**2 ) ** 0.5 # Component attack angle and lift force compAttackAngle = 0 compLift, compLiftXB, compLiftYB = 0, 0, 0 - if compStreamVxB ** 2 + compStreamVyB ** 2 != 0: + if compStreamVxB**2 + compStreamVyB**2 != 0: # Normalize component stream velocity in body frame compStreamVzBn = compStreamVzB / compStreamSpeed if -1 * compStreamVzBn < 1: @@ -1330,13 +1330,13 @@ def uDot(self, t, u, postProcessing=False): compLift = ( 0.5 * rho - * (compStreamSpeed ** 2) + * (compStreamSpeed**2) * self.rocket.area * cLift * compAttackAngle ) # Component lift force components - liftDirNorm = (compStreamVxB ** 2 + compStreamVyB ** 2) ** 0.5 + liftDirNorm = (compStreamVxB**2 + compStreamVyB**2) ** 0.5 compLiftXB = compLift * (compStreamVxB / liftDirNorm) compLiftYB = compLift * (compStreamVyB / liftDirNorm) # Add to total lift force @@ -1356,26 +1356,26 @@ def uDot(self, t, u, postProcessing=False): alpha1 = ( M1 - ( - omega2 * omega3 * (Rz + Tz - Ri - Ti - mu * b ** 2) + omega2 * omega3 * (Rz + Tz - Ri - Ti - mu * b**2) + omega1 * ( (TiDot + MtDot * (Mr - 1) * (b / M) ** 2) - MtDot * ((rN / 2) ** 2 + (c - b * mu / Mr) ** 2) ) ) - ) / (Ri + Ti + mu * b ** 2) + ) / (Ri + Ti + mu * b**2) alpha2 = ( M2 - ( - omega1 * omega3 * (Ri + Ti + mu * b ** 2 - Rz - Tz) + omega1 * omega3 * (Ri + Ti + mu * b**2 - Rz - Tz) + omega2 * ( (TiDot + MtDot * (Mr - 1) * (b / M) ** 2) - MtDot * ((rN / 2) ** 2 + (c - b * mu / Mr) ** 2) ) ) - ) / (Ri + Ti + mu * b ** 2) - alpha3 = (M3 - omega3 * (TzDot - MtDot * (rN ** 2) / 2)) / (Rz + Tz) + ) / (Ri + Ti + mu * b**2) + alpha3 = (M3 - omega3 * (TzDot - MtDot * (rN**2) / 2)) / (Rz + Tz) # Euler parameters derivative e0Dot = 0.5 * (-omega1 * e1 - omega2 * e2 - omega3 * e3) e1Dot = 0.5 * (omega1 * e0 + omega3 * e2 - omega2 * e3) @@ -1384,7 +1384,7 @@ def uDot(self, t, u, postProcessing=False): # Linear acceleration L = [ - (R1 - b * Mt * (omega2 ** 2 + omega3 ** 2) - 2 * c * MtDot * omega2) / M, + (R1 - b * Mt * (omega2**2 + omega3**2) - 2 * c * MtDot * omega2) / M, (R2 + b * Mt * (alpha3 + omega1 * omega2) + 2 * c * MtDot * omega1) / M, (R3 - b * Mt * (alpha2 - omega1 * omega3) + Thrust) / M, ] @@ -1455,11 +1455,11 @@ def uDotParachute(self, t, u, postProcessing=False): R = 1.5 rho = self.env.density.getValueOpt(u[2]) to = 1.2 - ma = ka * rho * (4 / 3) * np.pi * R ** 3 + ma = ka * rho * (4 / 3) * np.pi * R**3 mp = self.rocket.mass eta = 1 - Rdot = (6 * R * (1 - eta) / (1.2 ** 6)) * ( - (1 - eta) * t ** 5 + eta * (to ** 3) * (t ** 2) + Rdot = (6 * R * (1 - eta) / (1.2**6)) * ( + (1 - eta) * t**5 + eta * (to**3) * (t**2) ) Rdot = 0 # Get relevant state data @@ -1475,7 +1475,7 @@ def uDotParachute(self, t, u, postProcessing=False): freestreamZ = vz # Determine drag force pseudoD = ( - -0.5 * rho * CdS * freestreamSpeed - ka * rho * 4 * np.pi * (R ** 2) * Rdot + -0.5 * rho * CdS * freestreamSpeed - ka * rho * 4 * np.pi * (R**2) * Rdot ) Dx = pseudoD * freestreamX Dy = pseudoD * freestreamY @@ -1655,19 +1655,19 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): # Kinematics functions and values # Velocity Magnitude - self.speed = (self.vx ** 2 + self.vy ** 2 + self.vz ** 2) ** 0.5 + self.speed = (self.vx**2 + self.vy**2 + self.vz**2) ** 0.5 self.speed.setOutputs("Speed - Velocity Magnitude (m/s)") maxSpeedTimeIndex = np.argmax(self.speed[:, 1]) self.maxSpeed = self.speed[maxSpeedTimeIndex, 1] self.maxSpeedTime = self.speed[maxSpeedTimeIndex, 0] # Acceleration - self.acceleration = (self.ax ** 2 + self.ay ** 2 + self.az ** 2) ** 0.5 + self.acceleration = (self.ax**2 + self.ay**2 + self.az**2) ** 0.5 self.acceleration.setOutputs("Acceleration Magnitude (m/s²)") maxAccelerationTimeIndex = np.argmax(self.acceleration[:, 1]) self.maxAcceleration = self.acceleration[maxAccelerationTimeIndex, 1] self.maxAccelerationTime = self.acceleration[maxAccelerationTimeIndex, 0] # Path Angle - self.horizontalSpeed = (self.vx ** 2 + self.vy ** 2) ** 0.5 + self.horizontalSpeed = (self.vx**2 + self.vy**2) ** 0.5 pathAngle = (180 / np.pi) * np.arctan2( self.vz[:, 1], self.horizontalSpeed[:, 1] ) @@ -1676,9 +1676,9 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): # Attitude Angle self.attitudeVectorX = 2 * (self.e1 * self.e3 + self.e0 * self.e2) # a13 self.attitudeVectorY = 2 * (self.e2 * self.e3 - self.e0 * self.e1) # a23 - self.attitudeVectorZ = 1 - 2 * (self.e1 ** 2 + self.e2 ** 2) # a33 + self.attitudeVectorZ = 1 - 2 * (self.e1**2 + self.e2**2) # a33 horizontalAttitudeProj = ( - self.attitudeVectorX ** 2 + self.attitudeVectorY ** 2 + self.attitudeVectorX**2 + self.attitudeVectorY**2 ) ** 0.5 attitudeAngle = (180 / np.pi) * np.arctan2( self.attitudeVectorZ[:, 1], horizontalAttitudeProj[:, 1] @@ -1699,9 +1699,9 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): attitudeLateralPlaneProjY = self.attitudeVectorY[:, 1] - attitudeLateralProjY attitudeLateralPlaneProjZ = self.attitudeVectorZ[:, 1] attitudeLateralPlaneProj = ( - attitudeLateralPlaneProjX ** 2 - + attitudeLateralPlaneProjY ** 2 - + attitudeLateralPlaneProjZ ** 2 + attitudeLateralPlaneProjX**2 + + attitudeLateralPlaneProjY**2 + + attitudeLateralPlaneProjZ**2 ) ** 0.5 lateralAttitudeAngle = (180 / np.pi) * np.arctan2( attitudeLateralProj, attitudeLateralPlaneProj @@ -1793,11 +1793,11 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): self.railButton2ShearForce[:outOfRailTimeIndex] ) # Aerodynamic Lift and Drag - self.aerodynamicLift = (self.R1 ** 2 + self.R2 ** 2) ** 0.5 + self.aerodynamicLift = (self.R1**2 + self.R2**2) ** 0.5 self.aerodynamicLift.setOutputs("Aerodynamic Lift Force (N)") self.aerodynamicDrag = -1 * self.R3 self.aerodynamicDrag.setOutputs("Aerodynamic Drag Force (N)") - self.aerodynamicBendingMoment = (self.M1 ** 2 + self.M2 ** 2) ** 0.5 + self.aerodynamicBendingMoment = (self.M1**2 + self.M2**2) ** 0.5 self.aerodynamicBendingMoment.setOutputs("Aerodynamic Bending Moment (N m)") self.aerodynamicSpinMoment = self.M3 self.aerodynamicSpinMoment.setOutputs("Aerodynamic Spin Moment (N m)") @@ -1809,7 +1809,7 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): Ri = self.rocket.inertiaI Tz = self.rocket.motor.inertiaZ Ti = self.rocket.motor.inertiaI - I1, I2, I3 = (Ri + Ti + mu * b ** 2), (Ri + Ti + mu * b ** 2), (Rz + Tz) + I1, I2, I3 = (Ri + Ti + mu * b**2), (Ri + Ti + mu * b**2), (Rz + Tz) # Redefine I1, I2 and I3 grid grid = self.vx[:, 0] I1 = Function(np.column_stack([grid, I1(grid)]), "Time (s)") @@ -1825,9 +1825,9 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): vx, vy, vz = self.vx, self.vy, self.vz w1, w2, w3 = self.w1, self.w2, self.w3 # Kinetic Energy - self.rotationalEnergy = 0.5 * (I1 * w1 ** 2 + I2 * w2 ** 2 + I3 * w3 ** 2) + self.rotationalEnergy = 0.5 * (I1 * w1**2 + I2 * w2**2 + I3 * w3**2) self.rotationalEnergy.setOutputs("Rotational Kinetic Energy (J)") - self.translationalEnergy = 0.5 * totalMass * (vx ** 2 + vy ** 2 + vz ** 2) + self.translationalEnergy = 0.5 * totalMass * (vx**2 + vy**2 + vz**2) self.translationalEnergy.setOutputs("Translational Kinetic Energy (J)") self.kineticEnergy = self.rotationalEnergy + self.translationalEnergy self.kineticEnergy.setOutputs("Kinetic Energy (J)") @@ -1936,9 +1936,9 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): self.streamVelocityZ = -1 * self.vz self.streamVelocityZ.setOutputs("Freestream Velocity Z (m/s)") self.freestreamSpeed = ( - self.streamVelocityX ** 2 - + self.streamVelocityY ** 2 - + self.streamVelocityZ ** 2 + self.streamVelocityX**2 + + self.streamVelocityY**2 + + self.streamVelocityZ**2 ) ** 0.5 self.freestreamSpeed.setOutputs("Freestream Speed (m/s)") # Apogee Freestream speed @@ -1958,7 +1958,7 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): self.maxReynoldsNumberTime = self.ReynoldsNumber[maxReynoldsNumberTimeIndex, 0] self.maxReynoldsNumber = self.ReynoldsNumber[maxReynoldsNumberTimeIndex, 1] # Dynamic Pressure - self.dynamicPressure = 0.5 * self.density * self.freestreamSpeed ** 2 + self.dynamicPressure = 0.5 * self.density * self.freestreamSpeed**2 self.dynamicPressure.setOutputs("Dynamic Pressure (Pa)") maxDynamicPressureTimeIndex = np.argmax(self.dynamicPressure[:, 1]) self.maxDynamicPressureTime = self.dynamicPressure[ @@ -1966,7 +1966,7 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): ] self.maxDynamicPressure = self.dynamicPressure[maxDynamicPressureTimeIndex, 1] # Total Pressure - self.totalPressure = self.pressure * (1 + 0.2 * self.MachNumber ** 2) ** (3.5) + self.totalPressure = self.pressure * (1 + 0.2 * self.MachNumber**2) ** (3.5) self.totalPressure.setOutputs("Total Pressure (Pa)") maxtotalPressureTimeIndex = np.argmax(self.totalPressure[:, 1]) self.maxtotalPressureTime = self.totalPressure[maxtotalPressureTimeIndex, 0] @@ -2320,7 +2320,7 @@ def calculateStallWindVelocity(self, stallAngle): wV = ( 2 * vF * math.cos(theta) / c + ( - 4 * vF * vF * math.cos(theta) * math.cos(theta) / (c ** 2) + 4 * vF * vF * math.cos(theta) * math.cos(theta) / (c**2) + 4 * 1 * vF * vF / c ) ** 0.5 @@ -3011,7 +3011,7 @@ def calculateFinFlutterAnalysis(self, finThickness, shearModulus): # Calculate the Fin Flutter Mach Number self.flutterMachNumber = ( (shearModulus * 2 * (ar + 2) * (finThickness / self.rocket.rootChord) ** 3) - / (1.337 * (ar ** 3) * (la + 1) * self.pressure) + / (1.337 * (ar**3) * (la + 1) * self.pressure) ) ** 0.5 # Calculate difference between Fin Flutter Mach Number and the Rocket Speed diff --git a/rocketpy/Function.py b/rocketpy/Function.py index acdebd479..446dca183 100644 --- a/rocketpy/Function.py +++ b/rocketpy/Function.py @@ -300,7 +300,7 @@ def getValueOpt(x): xInterval = xInterval if xInterval != 0 else 1 a = coeffs[:, xInterval - 1] x = x - xData[xInterval - 1] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if extrapolation == 0: # Extrapolation == zero @@ -308,7 +308,7 @@ def getValueOpt(x): elif extrapolation == 1: # Extrapolation == natural a = coeffs[:, 0] if x < xmin else coeffs[:, -1] x = x - xData[0] if x < xmin else x - xData[-2] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -352,14 +352,14 @@ def getValueOpt(x): # Interpolate xInterval = xInterval if xInterval != 0 else 1 a = coeffs[4 * xInterval - 4 : 4 * xInterval] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if extrapolation == 0: # Extrapolation == zero y = 0 elif extrapolation == 1: # Extrapolation == natural a = coeffs[:4] if x < xmin else coeffs[-4:] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -375,7 +375,7 @@ def getValueOpt(x): # Interpolate y = 0 for i in range(len(coeffs)): - y += coeffs[i] * (x ** i) + y += coeffs[i] * (x**i) else: # Extrapolate if extrapolation == 0: # Extrapolation == zero @@ -383,7 +383,7 @@ def getValueOpt(x): elif extrapolation == 1: # Extrapolation == natural y = 0 for i in range(len(coeffs)): - y += coeffs[i] * (x ** i) + y += coeffs[i] * (x**i) else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -576,7 +576,7 @@ def getValue(self, *args): coeffs = self.__polynomialCoefficients__ A = np.zeros((len(args[0]), coeffs.shape[0])) for i in range(coeffs.shape[0]): - A[:, i] = x ** i + A[:, i] = x**i ans = A.dot(coeffs).tolist() for i in range(len(x)): if not (xmin <= x[i] <= xmax): @@ -713,7 +713,7 @@ def getValueOpt_deprecated(self, *args): xInterval = xInterval if xInterval != 0 else 1 a = coeffs[:, xInterval - 1] x = x - xData[xInterval - 1] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if extrapolation == 0: # Extrapolation == zero @@ -721,7 +721,7 @@ def getValueOpt_deprecated(self, *args): elif extrapolation == 1: # Extrapolation == natural a = coeffs[:, 0] if x < xmin else coeffs[:, -1] x = x - xData[0] if x < xmin else x - xData[-2] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -757,14 +757,14 @@ def getValueOpt_deprecated(self, *args): # Interpolate xInterval = xInterval if xInterval != 0 else 1 a = coeffs[4 * xInterval - 4 : 4 * xInterval] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if extrapolation == 0: # Extrapolation == zero y = 0 elif extrapolation == 1: # Extrapolation == natural a = coeffs[:4] if x < xmin else coeffs[-4:] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -777,7 +777,7 @@ def getValueOpt_deprecated(self, *args): # Interpolate y = 0 for i in range(len(coeffs)): - y += coeffs[i] * (x ** i) + y += coeffs[i] * (x**i) else: # Extrapolate if extrapolation == 0: # Extrapolation == zero @@ -785,7 +785,7 @@ def getValueOpt_deprecated(self, *args): elif extrapolation == 1: # Extrapolation == natural y = 0 for i in range(len(coeffs)): - y += coeffs[i] * (x ** i) + y += coeffs[i] * (x**i) else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -863,7 +863,7 @@ def getValueOpt2(self, *args): else: a = coeffs[:, xInterval - 1] x = x - xData[xInterval - 1] - x = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + x = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if self.__extrapolation__ == "zero": @@ -896,10 +896,10 @@ def getValueOpt2(self, *args): x = yData[xInterval] elif xmin < x < xmax: a = coeffs[4 * xInterval - 4 : 4 * xInterval] - x = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + x = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] elif self.__extrapolation__ == "natural": a = coeffs[:4] if x < xmin else coeffs[-4:] - x = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + x = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if self.__extrapolation__ == "zero": @@ -1353,7 +1353,7 @@ def __interpolatePolynomial__(self): # Create coefficient matrix1 A = np.zeros((degree + 1, degree + 1)) for i in range(degree + 1): - A[:, i] = x ** i + A[:, i] = x**i # Solve the system and store the resultant coefficients self.__polynomialCoefficients__ = np.linalg.solve(A, y) @@ -1408,10 +1408,10 @@ def __interpolateAkima__(self): dl, dr = d[i], d[i + 1] A = np.array( [ - [1, xl, xl ** 2, xl ** 3], - [1, xr, xr ** 2, xr ** 3], - [0, 1, 2 * xl, 3 * xl ** 2], - [0, 1, 2 * xr, 3 * xr ** 2], + [1, xl, xl**2, xl**3], + [1, xr, xr**2, xr**3], + [0, 1, 2 * xl, 3 * xl**2], + [0, 1, 2 * xr, 3 * xr**2], ] ) Y = np.array([yl, yr, dl, dr]).T @@ -1977,9 +1977,9 @@ def integral(self, a, b, numerical=False): c = coeffs[:, 0] subB = a - xData[0] # subA = 0 ans -= ( - (c[3] * subB ** 4) / 4 - + (c[2] * subB ** 3 / 3) - + (c[1] * subB ** 2 / 2) + (c[3] * subB**4) / 4 + + (c[2] * subB**3 / 3) + + (c[1] * subB**2 / 2) + c[0] * subB ) else: @@ -1995,9 +1995,9 @@ def integral(self, a, b, numerical=False): c = coeffs[:, i] subB = xData[i + 1] - xData[i] # subA = 0 ans += ( - (c[3] * subB ** 4) / 4 - + (c[2] * subB ** 3 / 3) - + (c[1] * subB ** 2 / 2) + (c[3] * subB**4) / 4 + + (c[2] * subB**3 / 3) + + (c[1] * subB**2 / 2) + c[0] * subB ) i += 1 @@ -2010,15 +2010,15 @@ def integral(self, a, b, numerical=False): subA = xData[-1] - xData[-2] subB = b - xData[-2] ans -= ( - (c[3] * subA ** 4) / 4 - + (c[2] * subA ** 3 / 3) - + (c[1] * subA ** 2 / 2) + (c[3] * subA**4) / 4 + + (c[2] * subA**3 / 3) + + (c[1] * subA**2 / 2) + c[0] * subA ) ans += ( - (c[3] * subB ** 4) / 4 - + (c[2] * subB ** 3 / 3) - + (c[1] * subB ** 2 / 2) + (c[3] * subB**4) / 4 + + (c[2] * subB**3 / 3) + + (c[1] * subB**2 / 2) + c[0] * subB ) else: diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index f2fed7c70..8b5fe9d7a 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -220,7 +220,7 @@ def __init__( # Define rocket geometrical parameters in SI units self.radius = radius - self.area = np.pi * self.radius ** 2 + self.area = np.pi * self.radius**2 # Center of mass distance to points of interest self.distanceRocketNozzle = distanceRocketNozzle @@ -427,9 +427,9 @@ def addTail(self, topRadius, bottomRadius, length, distanceToCM): # Calculate cp position relative to cm if distanceToCM < 0: - cpz = distanceToCM - (length / 3) * (1 + (1 - r) / (1 - r ** 2)) + cpz = distanceToCM - (length / 3) * (1 + (1 - r) / (1 - r**2)) else: - cpz = distanceToCM + (length / 3) * (1 + (1 - r) / (1 - r ** 2)) + cpz = distanceToCM + (length / 3) * (1 + (1 - r) / (1 - r**2)) # Calculate clalpha clalpha = -2 * (1 - r ** (-2)) * (topRadius / rref) ** 2 @@ -573,13 +573,13 @@ def addFins( Ymac = ( (s / 3) * (Cr + 2 * Ct) / Yr ) # span wise position of fin's mean aerodynamic chord - Lf = np.sqrt((rootChord / 2 - tipChord / 2) ** 2 + span ** 2) + Lf = np.sqrt((rootChord / 2 - tipChord / 2) ** 2 + span**2) radius = self.radius if radius == 0 else radius d = 2 * radius cantAngleRad = np.radians(cantAngle) - trapezoidalConstant = ((Yr) / 2) * (radius ** 2) * s - trapezoidalConstant += ((Cr + 2 * Ct) / 3) * radius * (s ** 2) - trapezoidalConstant += ((Cr + 3 * Ct) / 12) * (s ** 3) + trapezoidalConstant = ((Yr) / 2) * (radius**2) * s + trapezoidalConstant += ((Cr + 2 * Ct) / 3) * radius * (s**2) + trapezoidalConstant += ((Cr + 3 * Ct) / 12) * (s**3) # Save geometric parameters for later Fin Flutter Analysis and Roll Moment Calculation self.rootChord = Cr @@ -648,7 +648,7 @@ def cnalfa1(cn): # Retrieve parameters for calculations Af = (Cr + Ct) * span / 2 # fin area - AR = 2 * (span ** 2) / Af # Aspect ratio + AR = 2 * (span**2) / Af # Aspect ratio gamac = np.arctan((Cr - Ct) / (2 * span)) # mid chord angle FD = 2 * np.pi * AR / (cn * np.cos(gamac)) @@ -657,7 +657,7 @@ def cnalfa1(cn): * FD * (Af / self.area) * np.cos(gamac) - / (2 + FD * (1 + (4 / FD ** 2)) ** 0.5) + / (2 + FD * (1 + (4 / FD**2)) ** 0.5) ) return Cnalfa1 diff --git a/rocketpy/SolidMotor.py b/rocketpy/SolidMotor.py index 8a780719f..3fe4a5713 100644 --- a/rocketpy/SolidMotor.py +++ b/rocketpy/SolidMotor.py @@ -253,7 +253,7 @@ def __init__( self.grainInitialVolume = ( self.grainInitialHeight * np.pi - * (self.grainOuterRadius ** 2 - self.grainInitialInnerRadius ** 2) + * (self.grainOuterRadius**2 - self.grainInitialInnerRadius**2) ) self.grainInitialMass = self.grainDensity * self.grainInitialVolume self.propellantInitialMass = self.grainNumber * self.grainInitialMass @@ -423,7 +423,7 @@ def evaluateMass(self): @property def throatArea(self): - return np.pi * self.throatRadius ** 2 + return np.pi * self.throatRadius**2 def evaluateGeometry(self): """Calculates grain inner radius and grain height as a @@ -462,9 +462,9 @@ def geometryDot(y, t): grainMassDot = self.massDot(t) / self.grainNumber rI, h = y rIDot = ( - -0.5 * grainMassDot / (density * np.pi * (rO ** 2 - rI ** 2 + rI * h)) + -0.5 * grainMassDot / (density * np.pi * (rO**2 - rI**2 + rI * h)) ) - hDot = 1.0 * grainMassDot / (density * np.pi * (rO ** 2 - rI ** 2 + rI * h)) + hDot = 1.0 * grainMassDot / (density * np.pi * (rO**2 - rI**2 + rI * h)) return [rIDot, hDot] # Solve the system of differential equations @@ -511,8 +511,8 @@ def evaluateBurnArea(self): 2 * np.pi * ( - self.grainOuterRadius ** 2 - - self.grainInnerRadius ** 2 + self.grainOuterRadius**2 + - self.grainInnerRadius**2 + self.grainInnerRadius * self.grainHeight ) * self.grainNumber @@ -583,8 +583,8 @@ def evaluateInertia(self): grainMassDot = self.massDot / self.grainNumber grainNumber = self.grainNumber grainInertiaI = grainMass * ( - (1 / 4) * (self.grainOuterRadius ** 2 + self.grainInnerRadius ** 2) - + (1 / 12) * self.grainHeight ** 2 + (1 / 4) * (self.grainOuterRadius**2 + self.grainInnerRadius**2) + + (1 / 12) * self.grainHeight**2 ) # Calculate each grain's distance d to propellant center of mass @@ -593,7 +593,7 @@ def evaluateInertia(self): d = d * (self.grainInitialHeight + self.grainSeparation) # Calculate inertia for all grains - self.inertiaI = grainNumber * grainInertiaI + grainMass * np.sum(d ** 2) + self.inertiaI = grainNumber * grainInertiaI + grainMass * np.sum(d**2) self.inertiaI.setOutputs("Propellant Inertia I (kg*m2)") # Inertia I Dot @@ -601,8 +601,8 @@ def evaluateInertia(self): grainInertiaIDot = ( grainMassDot * ( - (1 / 4) * (self.grainOuterRadius ** 2 + self.grainInnerRadius ** 2) - + (1 / 12) * self.grainHeight ** 2 + (1 / 4) * (self.grainOuterRadius**2 + self.grainInnerRadius**2) + + (1 / 12) * self.grainHeight**2 ) + grainMass * ((1 / 2) * self.grainInnerRadius - (1 / 3) * self.grainHeight) @@ -611,7 +611,7 @@ def evaluateInertia(self): # Calculate inertia I dot for all grains self.inertiaIDot = grainNumber * grainInertiaIDot + grainMassDot * np.sum( - d ** 2 + d**2 ) self.inertiaIDot.setOutputs("Propellant Inertia I Dot (kg*m2/s)") @@ -619,13 +619,13 @@ def evaluateInertia(self): self.inertiaZ = ( (1 / 2.0) * self.mass - * (self.grainOuterRadius ** 2 + self.grainInnerRadius ** 2) + * (self.grainOuterRadius**2 + self.grainInnerRadius**2) ) self.inertiaZ.setOutputs("Propellant Inertia Z (kg*m2)") # Inertia Z Dot self.inertiaZDot = (1 / 2.0) * self.massDot * ( - self.grainOuterRadius ** 2 + self.grainInnerRadius ** 2 + self.grainOuterRadius**2 + self.grainInnerRadius**2 ) + self.mass * self.grainInnerRadius * self.burnRate self.inertiaZDot.setOutputs("Propellant Inertia Z Dot (kg*m2/s)") diff --git a/rocketpy/utilities.py b/rocketpy/utilities.py index 0051c0622..7bf5a7232 100644 --- a/rocketpy/utilities.py +++ b/rocketpy/utilities.py @@ -31,5 +31,5 @@ def compute_CdS_from_drop_test( """ - CdS = 2 * rocket_mass * gravity / ((terminal_velocity ** 2) * air_density) + CdS = 2 * rocket_mass * gravity / ((terminal_velocity**2) * air_density) return CdS From 10b5a574714b3d1a2dfaa62a5dc58b7e46732682 Mon Sep 17 00:00:00 2001 From: Lucas-KB <52254687+Lucas-KB@users.noreply.github.com> Date: Wed, 9 Feb 2022 21:51:30 -0300 Subject: [PATCH 37/59] MAINT: change aerodynamic surfaces to dictionaries This version with dictionaries is far more readable and much easier to maintain if compared to lists. So far changed only on `Flight.py`. --- rocketpy/Flight.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index c67d5fb4d..c9ef51044 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -1299,7 +1299,7 @@ def uDot(self, t, u, postProcessing=False): vzB = a13 * vx + a23 * vy + a33 * vz # Calculate lift and moment for each component of the rocket for aerodynamicSurface in self.rocket.aerodynamicSurfaces: - compCp = aerodynamicSurface[0][2] + compCp = aerodynamicSurface["cp"][2] # Component absolute velocity in body frame compVxB = vxB + compCp * omega2 compVyB = vyB - compCp * omega1 @@ -1326,7 +1326,7 @@ def uDot(self, t, u, postProcessing=False): compStreamVzBn = compStreamVzB / compStreamSpeed if -1 * compStreamVzBn < 1: compAttackAngle = np.arccos(-compStreamVzBn) - cLift = abs(aerodynamicSurface[1](compAttackAngle, freestreamMach)) + cLift = abs(aerodynamicSurface["cl"](compAttackAngle, freestreamMach)) # Component lift force magnitude compLift = ( 0.5 * rho * (compStreamSpeed ** 2) * self.rocket.area * cLift @@ -1342,8 +1342,8 @@ def uDot(self, t, u, postProcessing=False): M1 -= (compCp + a) * compLiftYB M2 += (compCp + a) * compLiftXB # Calculates Roll Moment - if aerodynamicSurface[-1] == "Fins": - Clfdelta, Cldomega, cantAngleRad = aerodynamicSurface[2] + if aerodynamicSurface["name"] == "Fins": + Clfdelta, Cldomega, cantAngleRad = aerodynamicSurface["roll parameters"] M3f = ( (1 / 2 * rho * freestreamSpeed ** 2) * Aref From c416872b040bdb9d8e4b4e7e6f5b8b8ae9901dc8 Mon Sep 17 00:00:00 2001 From: Lucas-KB <52254687+Lucas-KB@users.noreply.github.com> Date: Wed, 9 Feb 2022 21:55:09 -0300 Subject: [PATCH 38/59] MAINT: change aerodynamic surfaces to dictionaries This version with dictionaries is far more readable and much easier to maintain if compared to lists. --- rocketpy/Rocket.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index 9ebfb7b6f..f25523797 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -371,13 +371,13 @@ def evaluateStaticMargin(self): if len(self.aerodynamicSurfaces) > 0: for aerodynamicSurface in self.aerodynamicSurfaces: self.totalLiftCoeffDer += Function( - lambda alpha: aerodynamicSurface[1](alpha, 0) + lambda alpha: aerodynamicSurface["cl"](alpha, 0) ).differentiate(x=1e-2, dx=1e-3) self.cpPosition += ( Function( - lambda alpha: aerodynamicSurface[1](alpha, 0) + lambda alpha: aerodynamicSurface["cl"](alpha, 0) ).differentiate(x=1e-2, dx=1e-3) - * aerodynamicSurface[0][2] + * aerodynamicSurface["cp"][2] ) self.cpPosition /= self.totalLiftCoeffDer @@ -444,7 +444,7 @@ def addTail(self, topRadius, bottomRadius, length, distanceToCM): ) # Store values as new aerodynamic surface - tail = [(0, 0, cpz), cl, "Tail"] + tail = {"cp": (0, 0, cpz), "cl": cl, "name": "Tail"} self.aerodynamicSurfaces.append(tail) # Refresh static margin calculation @@ -506,7 +506,7 @@ def addNose(self, length, kind, distanceToCM): ) # Store values - nose = [(0, 0, cpz), cl, "Nose Cone"] + nose = {"cp": (0, 0, cpz), "cl": cl, "name": "Nose Cone"} self.aerodynamicSurfaces.append(nose) # Refresh static margin calculation @@ -739,7 +739,12 @@ def cnalfa1(cn): ) # Store values - fin = [(0, 0, cpz), cl, rollParameters, "Fins"] + fin = { + "cp": (0, 0, cpz), + "cl": cl, + "roll parameters": rollParameters, + "name": "Fins", + } self.aerodynamicSurfaces.append(fin) # Refresh static margin calculation @@ -1032,9 +1037,9 @@ def allInfo(self): # Print rocket aerodynamics quantities print("\nAerodynamics Lift Coefficient Derivatives") for aerodynamicSurface in self.aerodynamicSurfaces: - name = aerodynamicSurface[-1] + name = aerodynamicSurface["name"] clalpha = Function( - lambda alpha: aerodynamicSurface[1](alpha, 0), + lambda alpha: aerodynamicSurface["cl"](alpha, 0), ).differentiate(x=1e-2, dx=1e-3) print( name + " Lift Coefficient Derivative: {:.3f}".format(clalpha) + "/rad" @@ -1042,8 +1047,8 @@ def allInfo(self): print("\nAerodynamics Center of Pressure") for aerodynamicSurface in self.aerodynamicSurfaces: - name = aerodynamicSurface[-1] - cpz = aerodynamicSurface[0][2] + name = aerodynamicSurface["name"] + cpz = aerodynamicSurface["cp"][2] print(name + " Center of Pressure to CM: {:.3f}".format(cpz) + " m") print( "Distance - Center of Pressure to CM: " From 4903160d817680db52ef2092486eac34168eab94 Mon Sep 17 00:00:00 2001 From: Robert Date: Wed, 9 Feb 2022 17:34:48 -0800 Subject: [PATCH 39/59] Functions require netCDF4 --- rocketpy/Environment.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index 675803c40..70ee54ab5 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -27,13 +27,22 @@ import netCDF4 from netCDF4 import Dataset except ImportError: + has_netCDF4 = False warnings.warn( "Unable to load netCDF4. NetCDF files and OPeNDAP will not be imported.", ImportWarning, ) +else: + has_netCDF4 = True -from .Function import Function +def requires_netCDF4(func): + def wrapped_func(*args, **kwargs): + if not has_netCDF4: + raise ImportError("This feature requires netCDF4 to be installed. Install it with `pip install netCDF4`") + f(*args, **kwargs) + return wrapped_func +from .Function import Function class Environment: """Keeps all environment information stored, such as wind and temperature @@ -1686,6 +1695,7 @@ def processNOAARUCSounding(self, file): # Save maximum expected height self.maxExpectedHeight = pressure_array[-1, 0] + @requires_netCDF4 def processForecastReanalysis(self, file, dictionary): """Import and process atmospheric data from weather forecasts and reanalysis given as netCDF or OPeNDAP files. @@ -2079,6 +2089,7 @@ def processForecastReanalysis(self, file, dictionary): return None + @requires_netCDF4 def processEnsemble(self, file, dictionary): """Import and process atmospheric data from weather ensembles given as netCDF or OPeNDAP files. From d148a31990465c652d1a552d7ac2c67ce83a11ca Mon Sep 17 00:00:00 2001 From: Robert Date: Wed, 9 Feb 2022 17:52:37 -0800 Subject: [PATCH 40/59] ENH: Functions require netCDF4 --- rocketpy/Environment.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index 675803c40..da43a3456 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -25,15 +25,24 @@ try: import netCDF4 - from netCDF4 import Dataset except ImportError: + has_netCDF4 = False warnings.warn( "Unable to load netCDF4. NetCDF files and OPeNDAP will not be imported.", ImportWarning, ) +else: + has_netCDF4 = True -from .Function import Function +def requires_netCDF4(func): + def wrapped_func(*args, **kwargs): + if has_netCDF4: + func(*args, **kwargs) + else: + raise ImportError("This feature requires netCDF4 to be installed. Install it with `pip install netCDF4`") + return wrapped_func +from .Function import Function class Environment: """Keeps all environment information stored, such as wind and temperature @@ -487,6 +496,7 @@ def setElevation(self, elevation="Open-Elevation"): " Open-Elevation API. See Environment.setLocation." ) + @requires_netCDF4 def setTopographicProfile(self, type, file, dictionary="netCDF4", crs=None): """[UNDER CONSTRUCTION] Defines the Topographic profile, importing data from previous downloaded files. Mainly data from the Shuttle Radar @@ -515,7 +525,7 @@ def setTopographicProfile(self, type, file, dictionary="netCDF4", crs=None): if type == "NASADEM_HGT": if dictionary == "netCDF4": - rootgrp = Dataset(file, "r", format="NETCDF4") + rootgrp = netCDF4.Dataset(file, "r", format="NETCDF4") self.elevLonArray = rootgrp.variables["lon"][:].tolist() self.elevLatArray = rootgrp.variables["lat"][:].tolist() self.elevArray = rootgrp.variables["NASADEM_HGT"][:].tolist() @@ -1686,6 +1696,7 @@ def processNOAARUCSounding(self, file): # Save maximum expected height self.maxExpectedHeight = pressure_array[-1, 0] + @requires_netCDF4 def processForecastReanalysis(self, file, dictionary): """Import and process atmospheric data from weather forecasts and reanalysis given as netCDF or OPeNDAP files. @@ -2079,6 +2090,7 @@ def processForecastReanalysis(self, file, dictionary): return None + @requires_netCDF4 def processEnsemble(self, file, dictionary): """Import and process atmospheric data from weather ensembles given as netCDF or OPeNDAP files. From 5da3d8778c0c01937bbdc1bb8fb3725f13a443e9 Mon Sep 17 00:00:00 2001 From: Lucas Kierulff Balabram Date: Wed, 9 Feb 2022 23:12:03 -0300 Subject: [PATCH 41/59] TST: add test to check stability Add test to check if the relation between static margins and stability is correct. --- tests/test_flight.py | 175 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) diff --git a/tests/test_flight.py b/tests/test_flight.py index eea06b013..e3daf0e3f 100644 --- a/tests/test_flight.py +++ b/tests/test_flight.py @@ -5,6 +5,8 @@ from rocketpy import Environment, SolidMotor, Rocket, Flight +import numpy as np + @patch("matplotlib.pyplot.show") def test_flight(mock_show): @@ -207,3 +209,176 @@ def mainTrigger(p, y): ) assert test_flight.allInfo() == None + + +def test_stability_static_margins(): + # Function to get rocket with any desired static margin easily + def setup_rocket_with_given_static_margin(rocket, static_margin): + def compute_static_margin_error_given_distance( + distanceToCM, static_margin, rocket + ): + rocket.aerodynamicSurfaces = [] + rocket.addNose(length=0.5, kind="vonKarman", distanceToCM=1.0) + rocket.addFins( + 4, + span=0.100, + rootChord=0.100, + tipChord=0.100, + distanceToCM=distanceToCM, + ) + return rocket.staticMargin(0) - static_margin + + from scipy import optimize + + sol = optimize.root_scalar( + compute_static_margin_error_given_distance, + bracket=[-2.0, 2.0], + method="brentq", + args=(static_margin, rocket), + ) + + return rocket + + # Create an environment with ZERO gravity and CONTROLLED wind + Env = Environment( + gravity=0, railLength=0, latitude=0, longitude=0, elevation=0 # zero gravity + ) + Env.setAtmosphericModel( + type="CustomAtmosphere", + wind_u=10, # 10 m/s constant wind velocity in the east direction + wind_v=0, + pressure=101325, + temperature=300, + ) + + # Create a motor with ZERO thrust and ZERO mass + DummyMotor = SolidMotor( + thrustSource=1e-300, + burnOut=1e-10, + grainNumber=5, + grainSeparation=5 / 1000, + grainDensity=1e-300, + grainOuterRadius=33 / 1000, + grainInitialInnerRadius=15 / 1000, + grainInitialHeight=120 / 1000, + nozzleRadius=33 / 1000, + throatRadius=11 / 1000, + ) + + # Create a rocket with ZERO drag and HUGE mass + DummyRocket = Rocket( + motor=DummyMotor, + radius=127 / 2000, + mass=100e3, + inertiaI=1, + inertiaZ=0.0351, + distanceRocketNozzle=-1.255, + distanceRocketPropellant=-0.85704, + powerOffDrag=0, + powerOnDrag=0, + ) + + DummyRocket.setRailButtons([0.2, -0.5]) + NoseCone = DummyRocket.addNose( + length=0.55829, kind="vonKarman", distanceToCM=0.71971 + ) + FinSet = DummyRocket.addFins( + 4, span=0.100, rootChord=0.120, tipChord=0.040, distanceToCM=-1.04956 + ) + Tail = DummyRocket.addTail( + topRadius=0.0635, bottomRadius=0.0435, length=0.060, distanceToCM=-1.194656 + ) + + for wind_u, wind_v in [(0, 10), (0, -10), (10, 0), (-10, 0)]: + Env.setAtmosphericModel( + type="CustomAtmosphere", + wind_u=wind_u, + wind_v=wind_v, + pressure=101325, + temperature=300, + ) + + for static_margin, max_time in [ + (-0.1, 2), + (-0.01, 5), + (0, 5), + (0.01, 20), + (0.1, 20), + (1.0, 20), + ]: + DummyRocket = setup_rocket_with_given_static_margin( + DummyRocket, static_margin + ) + + # Simulate + TestFlight = Flight( + rocket=DummyRocket, + environment=Env, + inclination=90, + heading=0, + initialSolution=[ + 0, + 0, + 0, + 100, + 0, + 0, + 100, + 1.0, + 0.0, + 0.0, + 0.0, + 0, + 0, + 0, + ], # Start at 100 m of altitude and 100 m/s of vertical velocity + maxTime=max_time, + maxTimeStep=1e-2, + verbose=False, + ) + TestFlight.postProcess() + + if wind_u == 0 and wind_v > 0: + assert ( + ( + static_margin > 0 + and np.max(TestFlight.M1.source[:, 1]) + * np.min(TestFlight.M1.source[:, 1]) + < 0 + ) + or (static_margin < 0 and np.all(TestFlight.M1.source[:, 1] <= 0)) + or (static_margin == 0) + ) + elif wind_u == 0 and wind_v < 0: + assert ( + ( + static_margin > 0 + and np.max(TestFlight.M1.source[:, 1]) + * np.min(TestFlight.M1.source[:, 1]) + < 0 + ) + or (static_margin < 0 and np.all(TestFlight.M1.source[:, 1] >= 0)) + or (static_margin == 0) + ) + elif wind_u > 0 and wind_v == 0: + assert ( + ( + static_margin > 0 + and np.max(TestFlight.M2.source[:, 1]) + * np.min(TestFlight.M2.source[:, 1]) + < 0 + ) + or (static_margin < 0 and np.all(TestFlight.M2.source[:, 1] >= 0)) + or (static_margin == 0) + ) + elif wind_u < 0 and wind_v == 0: + assert ( + ( + static_margin > 0 + and np.max(TestFlight.M2.source[:, 1]) + * np.min(TestFlight.M2.source[:, 1]) + < 0 + ) + or (static_margin < 0 and np.all(TestFlight.M2.source[:, 1] <= 0)) + or (static_margin == 0) + ) From 5694c616b0f146f3abcd3d043aa50da39ea7ea3a Mon Sep 17 00:00:00 2001 From: Robert Date: Wed, 9 Feb 2022 18:27:31 -0800 Subject: [PATCH 42/59] STY: black lint --- rocketpy/Environment.py | 32 +++++++----- rocketpy/Flight.py | 112 ++++++++++++++++++++-------------------- rocketpy/Function.py | 66 +++++++++++------------ rocketpy/Rocket.py | 18 +++---- rocketpy/SolidMotor.py | 28 +++++----- rocketpy/utilities.py | 2 +- 6 files changed, 132 insertions(+), 126 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index da43a3456..cd8863714 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -34,16 +34,22 @@ else: has_netCDF4 = True + def requires_netCDF4(func): def wrapped_func(*args, **kwargs): if has_netCDF4: func(*args, **kwargs) else: - raise ImportError("This feature requires netCDF4 to be installed. Install it with `pip install netCDF4`") + raise ImportError( + "This feature requires netCDF4 to be installed. Install it with `pip install netCDF4`" + ) + return wrapped_func + from .Function import Function + class Environment: """Keeps all environment information stored, such as wind and temperature conditions, as well as gravity and rail length. @@ -357,7 +363,7 @@ def __init__( self.date = None # Initialize constants - self.earthRadius = 6.3781 * (10 ** 6) + self.earthRadius = 6.3781 * (10**6) self.airGasConstant = 287.05287 # in J/K/Kg # Initialize atmosphere @@ -1955,7 +1961,7 @@ def processForecastReanalysis(self, file, dictionary): windV = ((y2 - y) / (y2 - y1)) * f_x_y1 + ((y - y1) / (y2 - y1)) * f_x_y2 # Determine wind speed, heading and direction - windSpeed = np.sqrt(windU ** 2 + windV ** 2) + windSpeed = np.sqrt(windU**2 + windV**2) windHeading = np.arctan2(windU, windV) * (180 / np.pi) % 360 windDirection = (windHeading - 180) % 360 @@ -2373,7 +2379,7 @@ def processEnsemble(self, file, dictionary): windV = ((y2 - y) / (y2 - y1)) * f_x_y1 + ((y - y1) / (y2 - y1)) * f_x_y2 # Determine wind speed, heading and direction - windSpeed = np.sqrt(windU ** 2 + windV ** 2) + windSpeed = np.sqrt(windU**2 + windV**2) windHeading = np.arctan2(windU, windV) * (180 / np.pi) % 360 windDirection = (windHeading - 180) % 360 @@ -3261,7 +3267,7 @@ def geodesicToUtm(self, lat, lon, datum): # Evaluate reference parameters K0 = 1 - 1 / 2500 - e2 = 2 * flattening - flattening ** 2 + e2 = 2 * flattening - flattening**2 e2lin = e2 / (1 - e2) # Evaluate auxiliary parameters @@ -3284,9 +3290,9 @@ def geodesicToUtm(self, lat, lon, datum): # Evaluate new auxiliary parameters J = (1 - t + c) * ag * ag * ag / 6 - K = (5 - 18 * t + t * t + 72 * c - 58 * e2lin) * (ag ** 5) / 120 + K = (5 - 18 * t + t * t + 72 * c - 58 * e2lin) * (ag**5) / 120 L = (5 - t + 9 * c + 4 * c * c) * ag * ag * ag * ag / 24 - M = (61 - 58 * t + t * t + 600 * c - 330 * e2lin) * (ag ** 6) / 720 + M = (61 - 58 * t + t * t + 600 * c - 330 * e2lin) * (ag**6) / 720 # Evaluate the final coordinates x = 500000 + K0 * n * (ag + J + K) @@ -3359,7 +3365,7 @@ def utmToGeodesic(self, x, y, utmZone, hemis, datum): # Calculate reference values K0 = 1 - 1 / 2500 - e2 = 2 * flattening - flattening ** 2 + e2 = 2 * flattening - flattening**2 e2lin = e2 / (1 - e2) e1 = (1 - (1 - e2) ** 0.5) / (1 + (1 - e2) ** 0.5) @@ -3383,20 +3389,20 @@ def utmToGeodesic(self, x, y, utmZone, hemis, datum): t1 = np.tan(lat1) ** 2 n1 = semiMajorAxis / ((1 - e2 * (np.sin(lat1) ** 2)) ** 0.5) quoc = (1 - e2 * np.sin(lat1) * np.sin(lat1)) ** 3 - r1 = semiMajorAxis * (1 - e2) / (quoc ** 0.5) + r1 = semiMajorAxis * (1 - e2) / (quoc**0.5) d = (x - 500000) / (n1 * K0) # Calculate other auxiliary values I = (5 + 3 * t1 + 10 * c1 - 4 * c1 * c1 - 9 * e2lin) * d * d * d * d / 24 J = ( (61 + 90 * t1 + 298 * c1 + 45 * t1 * t1 - 252 * e2lin - 3 * c1 * c1) - * (d ** 6) + * (d**6) / 720 ) K = d - (1 + 2 * t1 + c1) * d * d * d / 6 L = ( (5 - 2 * c1 + 28 * t1 - 3 * c1 * c1 + 8 * e2lin + 24 * t1 * t1) - * (d ** 5) + * (d**5) / 120 ) @@ -3459,8 +3465,8 @@ def calculateEarthRadius(self, lat, datum): # Calculate the Earth Radius in meters eRadius = np.sqrt( ( - (np.cos(lat) * (semiMajorAxis ** 2)) ** 2 - + (np.sin(lat) * (semiMinorAxis ** 2)) ** 2 + (np.cos(lat) * (semiMajorAxis**2)) ** 2 + + (np.sin(lat) * (semiMinorAxis**2)) ** 2 ) / ((np.cos(lat) * semiMajorAxis) ** 2 + (np.sin(lat) * semiMinorAxis) ** 2) ) diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index 2ac4d1a7e..aa8290730 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -833,7 +833,7 @@ def __init__( self.y[0] ** 2 + self.y[1] ** 2 + (self.y[2] - self.env.elevation) ** 2 - >= self.effective1RL ** 2 + >= self.effective1RL**2 ): # Rocket is out of rail # Check exactly when it went out using root finding @@ -847,7 +847,7 @@ def __init__( # Get points y0 = ( sum([self.solution[-2][i] ** 2 for i in [1, 2, 3]]) - - self.effective1RL ** 2 + - self.effective1RL**2 ) yp0 = 2 * sum( [ @@ -858,7 +858,7 @@ def __init__( t1 = self.solution[-1][0] - self.solution[-2][0] y1 = ( sum([self.solution[-1][i] ** 2 for i in [1, 2, 3]]) - - self.effective1RL ** 2 + - self.effective1RL**2 ) yp1 = 2 * sum( [ @@ -873,15 +873,15 @@ def __init__( D = float(phase.solver.step_size) d = float(y0) c = float(yp0) - b = float((3 * y1 - yp1 * D - 2 * c * D - 3 * d) / (D ** 2)) - a = float(-(2 * y1 - yp1 * D - c * D - 2 * d) / (D ** 3)) + 1e-5 + b = float((3 * y1 - yp1 * D - 2 * c * D - 3 * d) / (D**2)) + a = float(-(2 * y1 - yp1 * D - c * D - 2 * d) / (D**3)) + 1e-5 # Find roots - d0 = b ** 2 - 3 * a * c - d1 = 2 * b ** 3 - 9 * a * b * c + 27 * d * a ** 2 - c1 = ((d1 + (d1 ** 2 - 4 * d0 ** 3) ** (0.5)) / 2) ** (1 / 3) + d0 = b**2 - 3 * a * c + d1 = 2 * b**3 - 9 * a * b * c + 27 * d * a**2 + c1 = ((d1 + (d1**2 - 4 * d0**3) ** (0.5)) / 2) ** (1 / 3) t_roots = [] for k in [0, 1, 2]: - c2 = c1 * (-1 / 2 + 1j * (3 ** 0.5) / 2) ** k + c2 = c1 * (-1 / 2 + 1j * (3**0.5) / 2) ** k t_roots.append(-(1 / (3 * a)) * (b + c2 + d0 / c2)) # Find correct root valid_t_root = [] @@ -968,15 +968,15 @@ def __init__( D = float(phase.solver.step_size) d = float(y0) c = float(yp0) - b = float((3 * y1 - yp1 * D - 2 * c * D - 3 * d) / (D ** 2)) - a = float(-(2 * y1 - yp1 * D - c * D - 2 * d) / (D ** 3)) + b = float((3 * y1 - yp1 * D - 2 * c * D - 3 * d) / (D**2)) + a = float(-(2 * y1 - yp1 * D - c * D - 2 * d) / (D**3)) # Find roots - d0 = b ** 2 - 3 * a * c - d1 = 2 * b ** 3 - 9 * a * b * c + 27 * d * a ** 2 - c1 = ((d1 + (d1 ** 2 - 4 * d0 ** 3) ** (0.5)) / 2) ** (1 / 3) + d0 = b**2 - 3 * a * c + d1 = 2 * b**3 - 9 * a * b * c + 27 * d * a**2 + c1 = ((d1 + (d1**2 - 4 * d0**3) ** (0.5)) / 2) ** (1 / 3) t_roots = [] for k in [0, 1, 2]: - c2 = c1 * (-1 / 2 + 1j * (3 ** 0.5) / 2) ** k + c2 = c1 * (-1 / 2 + 1j * (3**0.5) / 2) ** k t_roots.append(-(1 / (3 * a)) * (b + c2 + d0 / c2)) # Find correct root valid_t_root = [] @@ -1151,14 +1151,14 @@ def uDotRail1(self, t, u, postProcessing=False): # Calculate Forces Thrust = self.rocket.motor.thrust.getValueOpt(t) rho = self.env.density.getValueOpt(z) - R3 = -0.5 * rho * (freestreamSpeed ** 2) * self.rocket.area * (dragCoeff) + R3 = -0.5 * rho * (freestreamSpeed**2) * self.rocket.area * (dragCoeff) # Calculate Linear acceleration - a3 = (R3 + Thrust) / M - (e0 ** 2 - e1 ** 2 - e2 ** 2 + e3 ** 2) * self.env.g + a3 = (R3 + Thrust) / M - (e0**2 - e1**2 - e2**2 + e3**2) * self.env.g if a3 > 0: ax = 2 * (e1 * e3 + e0 * e2) * a3 ay = 2 * (e2 * e3 - e0 * e1) * a3 - az = (1 - 2 * (e1 ** 2 + e2 ** 2)) * a3 + az = (1 - 2 * (e1**2 + e2**2)) * a3 else: ax, ay, az = 0, 0, 0 @@ -1257,15 +1257,15 @@ def uDot(self, t, u, postProcessing=False): a = b * Mt / M rN = self.rocket.motor.nozzleRadius # Prepare transformation matrix - a11 = 1 - 2 * (e2 ** 2 + e3 ** 2) + a11 = 1 - 2 * (e2**2 + e3**2) a12 = 2 * (e1 * e2 - e0 * e3) a13 = 2 * (e1 * e3 + e0 * e2) a21 = 2 * (e1 * e2 + e0 * e3) - a22 = 1 - 2 * (e1 ** 2 + e3 ** 2) + a22 = 1 - 2 * (e1**2 + e3**2) a23 = 2 * (e2 * e3 - e0 * e1) a31 = 2 * (e1 * e3 - e0 * e2) a32 = 2 * (e2 * e3 + e0 * e1) - a33 = 1 - 2 * (e1 ** 2 + e2 ** 2) + a33 = 1 - 2 * (e1**2 + e2**2) # Transformation matrix: (123) -> (XYZ) K = [[a11, a12, a13], [a21, a22, a23], [a31, a32, a33]] # Transformation matrix: (XYZ) -> (123) or K transpose @@ -1287,7 +1287,7 @@ def uDot(self, t, u, postProcessing=False): else: dragCoeff = self.rocket.powerOffDrag.getValueOpt(freestreamMach) rho = self.env.density.getValueOpt(z) - R3 = -0.5 * rho * (freestreamSpeed ** 2) * self.rocket.area * (dragCoeff) + R3 = -0.5 * rho * (freestreamSpeed**2) * self.rocket.area * (dragCoeff) # Off center moment M1 += self.rocket.cpEccentricityY * R3 M2 -= self.rocket.cpEccentricityX * R3 @@ -1314,12 +1314,12 @@ def uDot(self, t, u, postProcessing=False): compStreamVyB = compWindVyB - compVyB compStreamVzB = compWindVzB - compVzB compStreamSpeed = ( - compStreamVxB ** 2 + compStreamVyB ** 2 + compStreamVzB ** 2 + compStreamVxB**2 + compStreamVyB**2 + compStreamVzB**2 ) ** 0.5 # Component attack angle and lift force compAttackAngle = 0 compLift, compLiftXB, compLiftYB = 0, 0, 0 - if compStreamVxB ** 2 + compStreamVyB ** 2 != 0: + if compStreamVxB**2 + compStreamVyB**2 != 0: # Normalize component stream velocity in body frame compStreamVzBn = compStreamVzB / compStreamSpeed if -1 * compStreamVzBn < 1: @@ -1327,10 +1327,10 @@ def uDot(self, t, u, postProcessing=False): cLift = abs(aerodynamicSurface[1](compAttackAngle)) # Component lift force magnitude compLift = ( - 0.5 * rho * (compStreamSpeed ** 2) * self.rocket.area * cLift + 0.5 * rho * (compStreamSpeed**2) * self.rocket.area * cLift ) # Component lift force components - liftDirNorm = (compStreamVxB ** 2 + compStreamVyB ** 2) ** 0.5 + liftDirNorm = (compStreamVxB**2 + compStreamVyB**2) ** 0.5 compLiftXB = compLift * (compStreamVxB / liftDirNorm) compLiftYB = compLift * (compStreamVyB / liftDirNorm) # Add to total lift force @@ -1351,26 +1351,26 @@ def uDot(self, t, u, postProcessing=False): alpha1 = ( M1 - ( - omega2 * omega3 * (Rz + Tz - Ri - Ti - mu * b ** 2) + omega2 * omega3 * (Rz + Tz - Ri - Ti - mu * b**2) + omega1 * ( (TiDot + MtDot * (Mr - 1) * (b / M) ** 2) - MtDot * ((rN / 2) ** 2 + (c - b * mu / Mr) ** 2) ) ) - ) / (Ri + Ti + mu * b ** 2) + ) / (Ri + Ti + mu * b**2) alpha2 = ( M2 - ( - omega1 * omega3 * (Ri + Ti + mu * b ** 2 - Rz - Tz) + omega1 * omega3 * (Ri + Ti + mu * b**2 - Rz - Tz) + omega2 * ( (TiDot + MtDot * (Mr - 1) * (b / M) ** 2) - MtDot * ((rN / 2) ** 2 + (c - b * mu / Mr) ** 2) ) ) - ) / (Ri + Ti + mu * b ** 2) - alpha3 = (M3 - omega3 * (TzDot - MtDot * (rN ** 2) / 2)) / (Rz + Tz) + ) / (Ri + Ti + mu * b**2) + alpha3 = (M3 - omega3 * (TzDot - MtDot * (rN**2) / 2)) / (Rz + Tz) # Euler parameters derivative e0Dot = 0.5 * (-omega1 * e1 - omega2 * e2 - omega3 * e3) e1Dot = 0.5 * (omega1 * e0 + omega3 * e2 - omega2 * e3) @@ -1379,7 +1379,7 @@ def uDot(self, t, u, postProcessing=False): # Linear acceleration L = [ - (R1 - b * Mt * (omega2 ** 2 + omega3 ** 2) - 2 * c * MtDot * omega2) / M, + (R1 - b * Mt * (omega2**2 + omega3**2) - 2 * c * MtDot * omega2) / M, (R2 + b * Mt * (alpha3 + omega1 * omega2) + 2 * c * MtDot * omega1) / M, (R3 - b * Mt * (alpha2 - omega1 * omega3) + Thrust) / M, ] @@ -1450,11 +1450,11 @@ def uDotParachute(self, t, u, postProcessing=False): R = 1.5 rho = self.env.density.getValueOpt(u[2]) to = 1.2 - ma = ka * rho * (4 / 3) * np.pi * R ** 3 + ma = ka * rho * (4 / 3) * np.pi * R**3 mp = self.rocket.mass eta = 1 - Rdot = (6 * R * (1 - eta) / (1.2 ** 6)) * ( - (1 - eta) * t ** 5 + eta * (to ** 3) * (t ** 2) + Rdot = (6 * R * (1 - eta) / (1.2**6)) * ( + (1 - eta) * t**5 + eta * (to**3) * (t**2) ) Rdot = 0 # Get relevant state data @@ -1470,7 +1470,7 @@ def uDotParachute(self, t, u, postProcessing=False): freestreamZ = vz # Determine drag force pseudoD = ( - -0.5 * rho * CdS * freestreamSpeed - ka * rho * 4 * np.pi * (R ** 2) * Rdot + -0.5 * rho * CdS * freestreamSpeed - ka * rho * 4 * np.pi * (R**2) * Rdot ) Dx = pseudoD * freestreamX Dy = pseudoD * freestreamY @@ -1640,19 +1640,19 @@ def postProcess(self): # Kinematics functions and values # Velocity Magnitude - self.speed = (self.vx ** 2 + self.vy ** 2 + self.vz ** 2) ** 0.5 + self.speed = (self.vx**2 + self.vy**2 + self.vz**2) ** 0.5 self.speed.setOutputs("Speed - Velocity Magnitude (m/s)") maxSpeedTimeIndex = np.argmax(self.speed[:, 1]) self.maxSpeed = self.speed[maxSpeedTimeIndex, 1] self.maxSpeedTime = self.speed[maxSpeedTimeIndex, 0] # Acceleration - self.acceleration = (self.ax ** 2 + self.ay ** 2 + self.az ** 2) ** 0.5 + self.acceleration = (self.ax**2 + self.ay**2 + self.az**2) ** 0.5 self.acceleration.setOutputs("Acceleration Magnitude (m/s²)") maxAccelerationTimeIndex = np.argmax(self.acceleration[:, 1]) self.maxAcceleration = self.acceleration[maxAccelerationTimeIndex, 1] self.maxAccelerationTime = self.acceleration[maxAccelerationTimeIndex, 0] # Path Angle - self.horizontalSpeed = (self.vx ** 2 + self.vy ** 2) ** 0.5 + self.horizontalSpeed = (self.vx**2 + self.vy**2) ** 0.5 pathAngle = (180 / np.pi) * np.arctan2( self.vz[:, 1], self.horizontalSpeed[:, 1] ) @@ -1661,9 +1661,9 @@ def postProcess(self): # Attitude Angle self.attitudeVectorX = 2 * (self.e1 * self.e3 + self.e0 * self.e2) # a13 self.attitudeVectorY = 2 * (self.e2 * self.e3 - self.e0 * self.e1) # a23 - self.attitudeVectorZ = 1 - 2 * (self.e1 ** 2 + self.e2 ** 2) # a33 + self.attitudeVectorZ = 1 - 2 * (self.e1**2 + self.e2**2) # a33 horizontalAttitudeProj = ( - self.attitudeVectorX ** 2 + self.attitudeVectorY ** 2 + self.attitudeVectorX**2 + self.attitudeVectorY**2 ) ** 0.5 attitudeAngle = (180 / np.pi) * np.arctan2( self.attitudeVectorZ[:, 1], horizontalAttitudeProj[:, 1] @@ -1684,9 +1684,9 @@ def postProcess(self): attitudeLateralPlaneProjY = self.attitudeVectorY[:, 1] - attitudeLateralProjY attitudeLateralPlaneProjZ = self.attitudeVectorZ[:, 1] attitudeLateralPlaneProj = ( - attitudeLateralPlaneProjX ** 2 - + attitudeLateralPlaneProjY ** 2 - + attitudeLateralPlaneProjZ ** 2 + attitudeLateralPlaneProjX**2 + + attitudeLateralPlaneProjY**2 + + attitudeLateralPlaneProjZ**2 ) ** 0.5 lateralAttitudeAngle = (180 / np.pi) * np.arctan2( attitudeLateralProj, attitudeLateralPlaneProj @@ -1778,11 +1778,11 @@ def postProcess(self): self.railButton2ShearForce[:outOfRailTimeIndex] ) # Aerodynamic Lift and Drag - self.aerodynamicLift = (self.R1 ** 2 + self.R2 ** 2) ** 0.5 + self.aerodynamicLift = (self.R1**2 + self.R2**2) ** 0.5 self.aerodynamicLift.setOutputs("Aerodynamic Lift Force (N)") self.aerodynamicDrag = -1 * self.R3 self.aerodynamicDrag.setOutputs("Aerodynamic Drag Force (N)") - self.aerodynamicBendingMoment = (self.M1 ** 2 + self.M2 ** 2) ** 0.5 + self.aerodynamicBendingMoment = (self.M1**2 + self.M2**2) ** 0.5 self.aerodynamicBendingMoment.setOutputs("Aerodynamic Bending Moment (N m)") self.aerodynamicSpinMoment = self.M3 self.aerodynamicSpinMoment.setOutputs("Aerodynamic Spin Moment (N m)") @@ -1794,7 +1794,7 @@ def postProcess(self): Ri = self.rocket.inertiaI Tz = self.rocket.motor.inertiaZ Ti = self.rocket.motor.inertiaI - I1, I2, I3 = (Ri + Ti + mu * b ** 2), (Ri + Ti + mu * b ** 2), (Rz + Tz) + I1, I2, I3 = (Ri + Ti + mu * b**2), (Ri + Ti + mu * b**2), (Rz + Tz) # Redefine I1, I2 and I3 grid grid = self.vx[:, 0] I1 = Function(np.column_stack([grid, I1(grid)]), "Time (s)") @@ -1810,9 +1810,9 @@ def postProcess(self): vx, vy, vz = self.vx, self.vy, self.vz w1, w2, w3 = self.w1, self.w2, self.w3 # Kinetic Energy - self.rotationalEnergy = 0.5 * (I1 * w1 ** 2 + I2 * w2 ** 2 + I3 * w3 ** 2) + self.rotationalEnergy = 0.5 * (I1 * w1**2 + I2 * w2**2 + I3 * w3**2) self.rotationalEnergy.setOutputs("Rotational Kinetic Energy (J)") - self.translationalEnergy = 0.5 * totalMass * (vx ** 2 + vy ** 2 + vz ** 2) + self.translationalEnergy = 0.5 * totalMass * (vx**2 + vy**2 + vz**2) self.translationalEnergy.setOutputs("Translational Kinetic Energy (J)") self.kineticEnergy = self.rotationalEnergy + self.translationalEnergy self.kineticEnergy.setOutputs("Kinetic Energy (J)") @@ -1921,9 +1921,9 @@ def postProcess(self): self.streamVelocityZ = -1 * self.vz self.streamVelocityZ.setOutputs("Freestream Velocity Z (m/s)") self.freestreamSpeed = ( - self.streamVelocityX ** 2 - + self.streamVelocityY ** 2 - + self.streamVelocityZ ** 2 + self.streamVelocityX**2 + + self.streamVelocityY**2 + + self.streamVelocityZ**2 ) ** 0.5 self.freestreamSpeed.setOutputs("Freestream Speed (m/s)") # Apogee Freestream speed @@ -1943,7 +1943,7 @@ def postProcess(self): self.maxReynoldsNumberTime = self.ReynoldsNumber[maxReynoldsNumberTimeIndex, 0] self.maxReynoldsNumber = self.ReynoldsNumber[maxReynoldsNumberTimeIndex, 1] # Dynamic Pressure - self.dynamicPressure = 0.5 * self.density * self.freestreamSpeed ** 2 + self.dynamicPressure = 0.5 * self.density * self.freestreamSpeed**2 self.dynamicPressure.setOutputs("Dynamic Pressure (Pa)") maxDynamicPressureTimeIndex = np.argmax(self.dynamicPressure[:, 1]) self.maxDynamicPressureTime = self.dynamicPressure[ @@ -1951,7 +1951,7 @@ def postProcess(self): ] self.maxDynamicPressure = self.dynamicPressure[maxDynamicPressureTimeIndex, 1] # Total Pressure - self.totalPressure = self.pressure * (1 + 0.2 * self.MachNumber ** 2) ** (3.5) + self.totalPressure = self.pressure * (1 + 0.2 * self.MachNumber**2) ** (3.5) self.totalPressure.setOutputs("Total Pressure (Pa)") maxtotalPressureTimeIndex = np.argmax(self.totalPressure[:, 1]) self.maxtotalPressureTime = self.totalPressure[maxtotalPressureTimeIndex, 0] @@ -2305,7 +2305,7 @@ def calculateStallWindVelocity(self, stallAngle): wV = ( 2 * vF * math.cos(theta) / c + ( - 4 * vF * vF * math.cos(theta) * math.cos(theta) / (c ** 2) + 4 * vF * vF * math.cos(theta) * math.cos(theta) / (c**2) + 4 * 1 * vF * vF / c ) ** 0.5 @@ -2996,7 +2996,7 @@ def calculateFinFlutterAnalysis(self, finThickness, shearModulus): # Calculate the Fin Flutter Mach Number self.flutterMachNumber = ( (shearModulus * 2 * (ar + 2) * (finThickness / self.rocket.rootChord) ** 3) - / (1.337 * (ar ** 3) * (la + 1) * self.pressure) + / (1.337 * (ar**3) * (la + 1) * self.pressure) ) ** 0.5 # Calculate difference between Fin Flutter Mach Number and the Rocket Speed diff --git a/rocketpy/Function.py b/rocketpy/Function.py index acdebd479..446dca183 100644 --- a/rocketpy/Function.py +++ b/rocketpy/Function.py @@ -300,7 +300,7 @@ def getValueOpt(x): xInterval = xInterval if xInterval != 0 else 1 a = coeffs[:, xInterval - 1] x = x - xData[xInterval - 1] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if extrapolation == 0: # Extrapolation == zero @@ -308,7 +308,7 @@ def getValueOpt(x): elif extrapolation == 1: # Extrapolation == natural a = coeffs[:, 0] if x < xmin else coeffs[:, -1] x = x - xData[0] if x < xmin else x - xData[-2] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -352,14 +352,14 @@ def getValueOpt(x): # Interpolate xInterval = xInterval if xInterval != 0 else 1 a = coeffs[4 * xInterval - 4 : 4 * xInterval] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if extrapolation == 0: # Extrapolation == zero y = 0 elif extrapolation == 1: # Extrapolation == natural a = coeffs[:4] if x < xmin else coeffs[-4:] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -375,7 +375,7 @@ def getValueOpt(x): # Interpolate y = 0 for i in range(len(coeffs)): - y += coeffs[i] * (x ** i) + y += coeffs[i] * (x**i) else: # Extrapolate if extrapolation == 0: # Extrapolation == zero @@ -383,7 +383,7 @@ def getValueOpt(x): elif extrapolation == 1: # Extrapolation == natural y = 0 for i in range(len(coeffs)): - y += coeffs[i] * (x ** i) + y += coeffs[i] * (x**i) else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -576,7 +576,7 @@ def getValue(self, *args): coeffs = self.__polynomialCoefficients__ A = np.zeros((len(args[0]), coeffs.shape[0])) for i in range(coeffs.shape[0]): - A[:, i] = x ** i + A[:, i] = x**i ans = A.dot(coeffs).tolist() for i in range(len(x)): if not (xmin <= x[i] <= xmax): @@ -713,7 +713,7 @@ def getValueOpt_deprecated(self, *args): xInterval = xInterval if xInterval != 0 else 1 a = coeffs[:, xInterval - 1] x = x - xData[xInterval - 1] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if extrapolation == 0: # Extrapolation == zero @@ -721,7 +721,7 @@ def getValueOpt_deprecated(self, *args): elif extrapolation == 1: # Extrapolation == natural a = coeffs[:, 0] if x < xmin else coeffs[:, -1] x = x - xData[0] if x < xmin else x - xData[-2] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -757,14 +757,14 @@ def getValueOpt_deprecated(self, *args): # Interpolate xInterval = xInterval if xInterval != 0 else 1 a = coeffs[4 * xInterval - 4 : 4 * xInterval] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if extrapolation == 0: # Extrapolation == zero y = 0 elif extrapolation == 1: # Extrapolation == natural a = coeffs[:4] if x < xmin else coeffs[-4:] - y = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + y = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -777,7 +777,7 @@ def getValueOpt_deprecated(self, *args): # Interpolate y = 0 for i in range(len(coeffs)): - y += coeffs[i] * (x ** i) + y += coeffs[i] * (x**i) else: # Extrapolate if extrapolation == 0: # Extrapolation == zero @@ -785,7 +785,7 @@ def getValueOpt_deprecated(self, *args): elif extrapolation == 1: # Extrapolation == natural y = 0 for i in range(len(coeffs)): - y += coeffs[i] * (x ** i) + y += coeffs[i] * (x**i) else: # Extrapolation is set to constant y = yData[0] if x < xmin else yData[-1] return y @@ -863,7 +863,7 @@ def getValueOpt2(self, *args): else: a = coeffs[:, xInterval - 1] x = x - xData[xInterval - 1] - x = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + x = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if self.__extrapolation__ == "zero": @@ -896,10 +896,10 @@ def getValueOpt2(self, *args): x = yData[xInterval] elif xmin < x < xmax: a = coeffs[4 * xInterval - 4 : 4 * xInterval] - x = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + x = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] elif self.__extrapolation__ == "natural": a = coeffs[:4] if x < xmin else coeffs[-4:] - x = a[3] * x ** 3 + a[2] * x ** 2 + a[1] * x + a[0] + x = a[3] * x**3 + a[2] * x**2 + a[1] * x + a[0] else: # Extrapolate if self.__extrapolation__ == "zero": @@ -1353,7 +1353,7 @@ def __interpolatePolynomial__(self): # Create coefficient matrix1 A = np.zeros((degree + 1, degree + 1)) for i in range(degree + 1): - A[:, i] = x ** i + A[:, i] = x**i # Solve the system and store the resultant coefficients self.__polynomialCoefficients__ = np.linalg.solve(A, y) @@ -1408,10 +1408,10 @@ def __interpolateAkima__(self): dl, dr = d[i], d[i + 1] A = np.array( [ - [1, xl, xl ** 2, xl ** 3], - [1, xr, xr ** 2, xr ** 3], - [0, 1, 2 * xl, 3 * xl ** 2], - [0, 1, 2 * xr, 3 * xr ** 2], + [1, xl, xl**2, xl**3], + [1, xr, xr**2, xr**3], + [0, 1, 2 * xl, 3 * xl**2], + [0, 1, 2 * xr, 3 * xr**2], ] ) Y = np.array([yl, yr, dl, dr]).T @@ -1977,9 +1977,9 @@ def integral(self, a, b, numerical=False): c = coeffs[:, 0] subB = a - xData[0] # subA = 0 ans -= ( - (c[3] * subB ** 4) / 4 - + (c[2] * subB ** 3 / 3) - + (c[1] * subB ** 2 / 2) + (c[3] * subB**4) / 4 + + (c[2] * subB**3 / 3) + + (c[1] * subB**2 / 2) + c[0] * subB ) else: @@ -1995,9 +1995,9 @@ def integral(self, a, b, numerical=False): c = coeffs[:, i] subB = xData[i + 1] - xData[i] # subA = 0 ans += ( - (c[3] * subB ** 4) / 4 - + (c[2] * subB ** 3 / 3) - + (c[1] * subB ** 2 / 2) + (c[3] * subB**4) / 4 + + (c[2] * subB**3 / 3) + + (c[1] * subB**2 / 2) + c[0] * subB ) i += 1 @@ -2010,15 +2010,15 @@ def integral(self, a, b, numerical=False): subA = xData[-1] - xData[-2] subB = b - xData[-2] ans -= ( - (c[3] * subA ** 4) / 4 - + (c[2] * subA ** 3 / 3) - + (c[1] * subA ** 2 / 2) + (c[3] * subA**4) / 4 + + (c[2] * subA**3 / 3) + + (c[1] * subA**2 / 2) + c[0] * subA ) ans += ( - (c[3] * subB ** 4) / 4 - + (c[2] * subB ** 3 / 3) - + (c[1] * subB ** 2 / 2) + (c[3] * subB**4) / 4 + + (c[2] * subB**3 / 3) + + (c[1] * subB**2 / 2) + c[0] * subB ) else: diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index b42ae84c2..43f97c876 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -220,7 +220,7 @@ def __init__( # Define rocket geometrical parameters in SI units self.radius = radius - self.area = np.pi * self.radius ** 2 + self.area = np.pi * self.radius**2 # Center of mass distance to points of interest self.distanceRocketNozzle = distanceRocketNozzle @@ -429,9 +429,9 @@ def addTail(self, topRadius, bottomRadius, length, distanceToCM): # Calculate cp position relative to cm if distanceToCM < 0: - cpz = distanceToCM - (length / 3) * (1 + (1 - r) / (1 - r ** 2)) + cpz = distanceToCM - (length / 3) * (1 + (1 - r) / (1 - r**2)) else: - cpz = distanceToCM + (length / 3) * (1 + (1 - r) / (1 - r ** 2)) + cpz = distanceToCM + (length / 3) * (1 + (1 - r) / (1 - r**2)) # Calculate clalpha clalpha = -2 * (1 - r ** (-2)) * (topRadius / rref) ** 2 @@ -579,13 +579,13 @@ def addFins( Ymac = ( (s / 3) * (Cr + 2 * Ct) / Yr ) # span wise position of fin's mean aerodynamic chord - Lf = np.sqrt((rootChord / 2 - tipChord / 2) ** 2 + span ** 2) + Lf = np.sqrt((rootChord / 2 - tipChord / 2) ** 2 + span**2) radius = self.radius if radius == 0 else radius d = 2 * radius cantAngleRad = np.radians(cantAngle) - trapezoidalConstant = ((Yr) / 2) * (radius ** 2) * s - trapezoidalConstant += ((Cr + 2 * Ct) / 3) * radius * (s ** 2) - trapezoidalConstant += ((Cr + 3 * Ct) / 12) * (s ** 3) + trapezoidalConstant = ((Yr) / 2) * (radius**2) * s + trapezoidalConstant += ((Cr + 2 * Ct) / 3) * radius * (s**2) + trapezoidalConstant += ((Cr + 3 * Ct) / 12) * (s**3) # Save geometric parameters for later Fin Flutter Analysis and Roll Moment Calculation self.rootChord = Cr @@ -654,7 +654,7 @@ def cnalfa1(cn): # Retrieve parameters for calculations Af = (Cr + Ct) * span / 2 # fin area - AR = 2 * (span ** 2) / Af # Aspect ratio + AR = 2 * (span**2) / Af # Aspect ratio gamac = np.arctan((Cr - Ct) / (2 * span)) # mid chord angle FD = 2 * np.pi * AR / (cn * np.cos(gamac)) @@ -663,7 +663,7 @@ def cnalfa1(cn): * FD * (Af / self.area) * np.cos(gamac) - / (2 + FD * (1 + (4 / FD ** 2)) ** 0.5) + / (2 + FD * (1 + (4 / FD**2)) ** 0.5) ) return Cnalfa1 diff --git a/rocketpy/SolidMotor.py b/rocketpy/SolidMotor.py index 8a780719f..3fe4a5713 100644 --- a/rocketpy/SolidMotor.py +++ b/rocketpy/SolidMotor.py @@ -253,7 +253,7 @@ def __init__( self.grainInitialVolume = ( self.grainInitialHeight * np.pi - * (self.grainOuterRadius ** 2 - self.grainInitialInnerRadius ** 2) + * (self.grainOuterRadius**2 - self.grainInitialInnerRadius**2) ) self.grainInitialMass = self.grainDensity * self.grainInitialVolume self.propellantInitialMass = self.grainNumber * self.grainInitialMass @@ -423,7 +423,7 @@ def evaluateMass(self): @property def throatArea(self): - return np.pi * self.throatRadius ** 2 + return np.pi * self.throatRadius**2 def evaluateGeometry(self): """Calculates grain inner radius and grain height as a @@ -462,9 +462,9 @@ def geometryDot(y, t): grainMassDot = self.massDot(t) / self.grainNumber rI, h = y rIDot = ( - -0.5 * grainMassDot / (density * np.pi * (rO ** 2 - rI ** 2 + rI * h)) + -0.5 * grainMassDot / (density * np.pi * (rO**2 - rI**2 + rI * h)) ) - hDot = 1.0 * grainMassDot / (density * np.pi * (rO ** 2 - rI ** 2 + rI * h)) + hDot = 1.0 * grainMassDot / (density * np.pi * (rO**2 - rI**2 + rI * h)) return [rIDot, hDot] # Solve the system of differential equations @@ -511,8 +511,8 @@ def evaluateBurnArea(self): 2 * np.pi * ( - self.grainOuterRadius ** 2 - - self.grainInnerRadius ** 2 + self.grainOuterRadius**2 + - self.grainInnerRadius**2 + self.grainInnerRadius * self.grainHeight ) * self.grainNumber @@ -583,8 +583,8 @@ def evaluateInertia(self): grainMassDot = self.massDot / self.grainNumber grainNumber = self.grainNumber grainInertiaI = grainMass * ( - (1 / 4) * (self.grainOuterRadius ** 2 + self.grainInnerRadius ** 2) - + (1 / 12) * self.grainHeight ** 2 + (1 / 4) * (self.grainOuterRadius**2 + self.grainInnerRadius**2) + + (1 / 12) * self.grainHeight**2 ) # Calculate each grain's distance d to propellant center of mass @@ -593,7 +593,7 @@ def evaluateInertia(self): d = d * (self.grainInitialHeight + self.grainSeparation) # Calculate inertia for all grains - self.inertiaI = grainNumber * grainInertiaI + grainMass * np.sum(d ** 2) + self.inertiaI = grainNumber * grainInertiaI + grainMass * np.sum(d**2) self.inertiaI.setOutputs("Propellant Inertia I (kg*m2)") # Inertia I Dot @@ -601,8 +601,8 @@ def evaluateInertia(self): grainInertiaIDot = ( grainMassDot * ( - (1 / 4) * (self.grainOuterRadius ** 2 + self.grainInnerRadius ** 2) - + (1 / 12) * self.grainHeight ** 2 + (1 / 4) * (self.grainOuterRadius**2 + self.grainInnerRadius**2) + + (1 / 12) * self.grainHeight**2 ) + grainMass * ((1 / 2) * self.grainInnerRadius - (1 / 3) * self.grainHeight) @@ -611,7 +611,7 @@ def evaluateInertia(self): # Calculate inertia I dot for all grains self.inertiaIDot = grainNumber * grainInertiaIDot + grainMassDot * np.sum( - d ** 2 + d**2 ) self.inertiaIDot.setOutputs("Propellant Inertia I Dot (kg*m2/s)") @@ -619,13 +619,13 @@ def evaluateInertia(self): self.inertiaZ = ( (1 / 2.0) * self.mass - * (self.grainOuterRadius ** 2 + self.grainInnerRadius ** 2) + * (self.grainOuterRadius**2 + self.grainInnerRadius**2) ) self.inertiaZ.setOutputs("Propellant Inertia Z (kg*m2)") # Inertia Z Dot self.inertiaZDot = (1 / 2.0) * self.massDot * ( - self.grainOuterRadius ** 2 + self.grainInnerRadius ** 2 + self.grainOuterRadius**2 + self.grainInnerRadius**2 ) + self.mass * self.grainInnerRadius * self.burnRate self.inertiaZDot.setOutputs("Propellant Inertia Z Dot (kg*m2/s)") diff --git a/rocketpy/utilities.py b/rocketpy/utilities.py index 0051c0622..7bf5a7232 100644 --- a/rocketpy/utilities.py +++ b/rocketpy/utilities.py @@ -31,5 +31,5 @@ def compute_CdS_from_drop_test( """ - CdS = 2 * rocket_mass * gravity / ((terminal_velocity ** 2) * air_density) + CdS = 2 * rocket_mass * gravity / ((terminal_velocity**2) * air_density) return CdS From 0820a1fe6455a51ed6c6fa4042ae8ed94cbdfadf Mon Sep 17 00:00:00 2001 From: Robert Date: Wed, 9 Feb 2022 18:32:48 -0800 Subject: [PATCH 43/59] merge fix --- rocketpy/Environment.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index 0cebdfcaf..cd8863714 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -47,15 +47,9 @@ def wrapped_func(*args, **kwargs): return wrapped_func -def requires_netCDF4(func): - def wrapped_func(*args, **kwargs): - if not has_netCDF4: - raise ImportError("This feature requires netCDF4 to be installed. Install it with `pip install netCDF4`") - f(*args, **kwargs) - return wrapped_func - from .Function import Function + class Environment: """Keeps all environment information stored, such as wind and temperature conditions, as well as gravity and rail length. From 920f6532b8c76ea2259bfa56f2b120d53eae2b16 Mon Sep 17 00:00:00 2001 From: Mateus Stano <69485049+MateusStano@users.noreply.github.com> Date: Thu, 10 Feb 2022 10:49:56 -0300 Subject: [PATCH 44/59] Added/Fixed suggested changes --- rocketpy/Flight.py | 18 +++++----- rocketpy/Rocket.py | 85 ++++++++++++++++++++++++++++++++++------------ 2 files changed, 72 insertions(+), 31 deletions(-) diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index c9ef51044..91757e371 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -1256,8 +1256,6 @@ def uDot(self, t, u, postProcessing=False): c = -self.rocket.distanceRocketNozzle a = b * Mt / M rN = self.rocket.motor.nozzleRadius - Aref = self.rocket.area - d = self.rocket.radius * 2 # Prepare transformation matrix a11 = 1 - 2 * (e2 ** 2 + e3 ** 2) a12 = 2 * (e1 * e2 - e0 * e3) @@ -1326,7 +1324,9 @@ def uDot(self, t, u, postProcessing=False): compStreamVzBn = compStreamVzB / compStreamSpeed if -1 * compStreamVzBn < 1: compAttackAngle = np.arccos(-compStreamVzBn) - cLift = abs(aerodynamicSurface["cl"](compAttackAngle, freestreamMach)) + cLift = abs( + aerodynamicSurface["cl"](compAttackAngle, freestreamMach) + ) # Component lift force magnitude compLift = ( 0.5 * rho * (compStreamSpeed ** 2) * self.rocket.area * cLift @@ -1346,19 +1346,19 @@ def uDot(self, t, u, postProcessing=False): Clfdelta, Cldomega, cantAngleRad = aerodynamicSurface["roll parameters"] M3f = ( (1 / 2 * rho * freestreamSpeed ** 2) - * Aref - * d + * self.rocket.area + * 2 + * self.rocket.radius * Clfdelta(freestreamMach) * cantAngleRad ) M3d = ( (1 / 2 * rho * freestreamSpeed) - * Aref - * d + * self.rocket.area + * 2 + * self.rocket.radius ** 2 * Cldomega(freestreamMach) * omega3 - * d - / 2 ) M3 += M3f - M3d # Calculate derivatives diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index f25523797..50d856fa7 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -419,7 +419,12 @@ def addTail(self, topRadius, bottomRadius, length, distanceToCM): Returns ------- cl : Function - Object of the Function class. Contains tail's lift data. + Function of the angle of attack (Alpha) and the mach number + (Mach) expressing the tail's lift coefficient. The inputs + are the angle of attack (in radians) and the mach number. + The output is the tail's lift coefficient. In the current + implementation, the tail's lift coefficient does not vary + with mach. self : Rocket Object of the Rocket class. """ @@ -477,7 +482,12 @@ def addNose(self, length, kind, distanceToCM): Returns ------- cl : Function - Object of the Function class. Contains nose's lift data. + Function of the angle of attack (Alpha) and the mach number + (Mach) expressing the nose cone's lift coefficient. The inputs + are the angle of attack (in radians) and the mach number. + The output is the nose cone's lift coefficient. In the current + implementation, the nose cone's lift coefficient does not vary + with mach self : Rocket Object of the Rocket class. """ @@ -563,7 +573,10 @@ def addFins( Returns ------- cl : Function - Object of the Function class. Contains fin's lift data. + Function of the angle of attack (Alpha) and the mach number + (Mach) expressing the fin's lift coefficient. The inputs + are the angle of attack (in radians) and the mach number. + The output is the fin's lift coefficient. self : Rocket Object of the Rocket class. """ @@ -582,7 +595,7 @@ def addFins( radius = self.radius if radius == 0 else radius d = 2 * radius Aref = np.pi * radius ** 2 - AR = 2 * s ** 2 / Af + AR = 2 * s ** 2 / Af # Barrowman's convention for fin's aspect ratio cantAngleRad = np.radians(cantAngle) trapezoidalConstant = ( (Cr + 3 * Ct) * s ** 3 @@ -591,27 +604,23 @@ def addFins( ) / 12 # Fin–body interference correction parameters - tau = (s + radius) / radius + τ = (s + radius) / radius λ = Ct / Cr - liftInterferenceFactor = 1 + 1 / tau + liftInterferenceFactor = 1 + 1 / τ rollForcingInterferenceFactor = (1 / np.pi ** 2) * ( - (np.pi ** 2 / 4) * ((tau + 1) ** 2 / tau ** 2) - + ((np.pi * (tau ** 2 + 1) ** 2) / (tau ** 2 * (tau - 1) ** 2)) - * np.arcsin((tau ** 2 - 1) / (tau ** 2 + 1)) - - (2 * np.pi * (tau + 1)) / (tau * (tau - 1)) - + ((tau ** 2 + 1) ** 2) - / (tau ** 2 * (tau - 1) ** 2) - * (np.arcsin((tau ** 2 - 1) / (tau ** 2 + 1))) ** 2 - - (4 * (tau + 1)) - / (tau * (tau - 1)) - * np.arcsin((tau ** 2 - 1) / (tau ** 2 + 1)) - + (8 / (tau - 1) ** 2) * np.log((tau ** 2 + 1) / (2 * tau)) + (np.pi ** 2 / 4) * ((τ + 1) ** 2 / τ ** 2) + + ((np.pi * (τ ** 2 + 1) ** 2) / (τ ** 2 * (τ - 1) ** 2)) + * np.arcsin((τ ** 2 - 1) / (τ ** 2 + 1)) + - (2 * np.pi * (τ + 1)) / (τ * (τ - 1)) + + ((τ ** 2 + 1) ** 2) + / (τ ** 2 * (τ - 1) ** 2) + * (np.arcsin((τ ** 2 - 1) / (τ ** 2 + 1))) ** 2 + - (4 * (τ + 1)) / (τ * (τ - 1)) * np.arcsin((τ ** 2 - 1) / (τ ** 2 + 1)) + + (8 / (τ - 1) ** 2) * np.log((τ ** 2 + 1) / (2 * τ)) ) rollDampingInterferenceFactor = 1 + ( - ((tau - λ) / (tau)) - ((1 - λ) / (tau - 1)) * np.log(tau) - ) / ( - ((tau + 1) * (tau - λ)) / (2) - ((1 - λ) * (tau ** 3 - 1)) / (3 * (tau - 1)) - ) + ((τ - λ) / (τ)) - ((1 - λ) / (τ - 1)) * np.log(τ) + ) / (((τ + 1) * (τ - λ)) / (2) - ((1 - λ) * (τ ** 3 - 1)) / (3 * (τ - 1))) # Save geometric parameters for later Fin Flutter Analysis and Roll Moment Calculation self.rootChord = Cr @@ -623,6 +632,21 @@ def addFins( # Defines beta parameter def beta(mach): + """Defines a parameter that is commonly used in aerodynamic + equations. It is commonly used in the Prandtl factor which + corrects subsonic force coefficients for compressible flow. + + Parameters + ---------- + mach : int, float + Number of mach. + + Returns + ------- + beta : int, float + Value that characterizes flow speed based on the mach number. + """ + if mach < 0.8: return np.sqrt(1 - mach ** 2) elif mach < 1.1: @@ -632,6 +656,21 @@ def beta(mach): # Defines number of fins correction def finNumCorrection(n): + """Calculates a corrector factor for the lift coefficient of multiple fins. + The specifics values are documented at: + Niskanen, S. (2013). “OpenRocket technical documentation”. In: Development + of an Open Source model rocket simulation software. + + Parameters + ---------- + n : int + Number of fins. + + Returns + ------- + Corrector factor : int + Factor that accounts for the number of fins. + """ correctorFactor = [2.37, 2.74, 2.99, 3.24] if n >= 5 and n <= 8: return correctorFactor[n - 5] @@ -735,7 +774,9 @@ def cnalfa1(cn): ) # Function of mach number rollParameters = ( - [clfDelta, cldOmega, cantAngleRad] if cantAngleRad != 0 else [0, 0, 0] + [clfDelta, cldOmega, cantAngleRad] + if cantAngleRad != 0 + else [Function(0), Function(0), 0] ) # Store values From f3bbe340fb18d436978745dc5de27e9861c8e8eb Mon Sep 17 00:00:00 2001 From: Mateus Stano <69485049+MateusStano@users.noreply.github.com> Date: Thu, 10 Feb 2022 15:56:58 -0300 Subject: [PATCH 45/59] Added pytest for rolling flight --- tests/test_flight.py | 95 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/tests/test_flight.py b/tests/test_flight.py index eea06b013..2c665a5de 100644 --- a/tests/test_flight.py +++ b/tests/test_flight.py @@ -207,3 +207,98 @@ def mainTrigger(p, y): ) assert test_flight.allInfo() == None + + +@patch("matplotlib.pyplot.show") +def test_rolling_flight(mock_show): + test_env = Environment( + railLength=5, + latitude=32.990254, + longitude=-106.974998, + elevation=1400, + datum="WGS84", + ) + tomorrow = datetime.date.today() + datetime.timedelta(days=1) + test_env.setDate( + (tomorrow.year, tomorrow.month, tomorrow.day, 12) + ) # Hour given in UTC time + test_env.setAtmosphericModel(type="StandardAtmosphere") + + test_motor = SolidMotor( + thrustSource="data/motors/Cesaroni_M1670.eng", + burnOut=3.9, + grainNumber=5, + grainSeparation=5 / 1000, + grainDensity=1815, + grainOuterRadius=33 / 1000, + grainInitialInnerRadius=15 / 1000, + grainInitialHeight=120 / 1000, + nozzleRadius=33 / 1000, + throatRadius=11 / 1000, + interpolationMethod="linear", + ) + + test_rocket = Rocket( + motor=test_motor, + radius=127 / 2000, + mass=19.197 - 2.956, + inertiaI=6.60, + inertiaZ=0.0351, + distanceRocketNozzle=-1.255, + distanceRocketPropellant=-0.85704, + powerOffDrag="data/calisto/powerOffDragCurve.csv", + powerOnDrag="data/calisto/powerOnDragCurve.csv", + ) + + test_rocket.setRailButtons([0.2, -0.5]) + + NoseCone = test_rocket.addNose( + length=0.55829, kind="vonKarman", distanceToCM=0.71971 + ) + FinSet = test_rocket.addFins( + 4, + span=0.100, + rootChord=0.120, + tipChord=0.040, + distanceToCM=-1.04956, + cantAngle=0.5, + ) + Tail = test_rocket.addTail( + topRadius=0.0635, bottomRadius=0.0435, length=0.060, distanceToCM=-1.194656 + ) + + def drogueTrigger(p, y): + # p = pressure + # y = [x, y, z, vx, vy, vz, e0, e1, e2, e3, w1, w2, w3] + # activate drogue when vz < 0 m/s. + return True if y[5] < 0 else False + + def mainTrigger(p, y): + # p = pressure + # y = [x, y, z, vx, vy, vz, e0, e1, e2, e3, w1, w2, w3] + # activate main when vz < 0 m/s and z < 800 m. + return True if y[5] < 0 and y[2] < 800 else False + + Main = test_rocket.addParachute( + "Main", + CdS=10.0, + trigger=mainTrigger, + samplingRate=105, + lag=1.5, + noise=(0, 8.3, 0.5), + ) + + Drogue = test_rocket.addParachute( + "Drogue", + CdS=1.0, + trigger=drogueTrigger, + samplingRate=105, + lag=1.5, + noise=(0, 8.3, 0.5), + ) + + test_flight = Flight( + rocket=test_rocket, environment=test_env, inclination=85, heading=0 + ) + + assert test_flight.allInfo() == None From 38a1cbf187ad91600931a02b95485b17ba2e8db5 Mon Sep 17 00:00:00 2001 From: Giovani Hidalgo Ceotto Date: Thu, 10 Feb 2022 23:05:01 -0300 Subject: [PATCH 46/59] MAINT: add a rocket tail to static margin stability test --- tests/test_flight.py | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/tests/test_flight.py b/tests/test_flight.py index e3daf0e3f..69e6c42bb 100644 --- a/tests/test_flight.py +++ b/tests/test_flight.py @@ -1,11 +1,10 @@ import datetime from unittest.mock import patch -import pytest - -from rocketpy import Environment, SolidMotor, Rocket, Flight - import numpy as np +import pytest +from rocketpy import Environment, Flight, Rocket, SolidMotor +from scipy import optimize @patch("matplotlib.pyplot.show") @@ -226,10 +225,14 @@ def compute_static_margin_error_given_distance( tipChord=0.100, distanceToCM=distanceToCM, ) + rocket.addTail( + topRadius=0.0635, + bottomRadius=0.0435, + length=0.060, + distanceToCM=-1.194656, + ) return rocket.staticMargin(0) - static_margin - from scipy import optimize - sol = optimize.root_scalar( compute_static_margin_error_given_distance, bracket=[-2.0, 2.0], @@ -243,13 +246,6 @@ def compute_static_margin_error_given_distance( Env = Environment( gravity=0, railLength=0, latitude=0, longitude=0, elevation=0 # zero gravity ) - Env.setAtmosphericModel( - type="CustomAtmosphere", - wind_u=10, # 10 m/s constant wind velocity in the east direction - wind_v=0, - pressure=101325, - temperature=300, - ) # Create a motor with ZERO thrust and ZERO mass DummyMotor = SolidMotor( @@ -277,17 +273,7 @@ def compute_static_margin_error_given_distance( powerOffDrag=0, powerOnDrag=0, ) - DummyRocket.setRailButtons([0.2, -0.5]) - NoseCone = DummyRocket.addNose( - length=0.55829, kind="vonKarman", distanceToCM=0.71971 - ) - FinSet = DummyRocket.addFins( - 4, span=0.100, rootChord=0.120, tipChord=0.040, distanceToCM=-1.04956 - ) - Tail = DummyRocket.addTail( - topRadius=0.0635, bottomRadius=0.0435, length=0.060, distanceToCM=-1.194656 - ) for wind_u, wind_v in [(0, 10), (0, -10), (10, 0), (-10, 0)]: Env.setAtmosphericModel( From dbe219128586f85cfbec18893530a8f25460679a Mon Sep 17 00:00:00 2001 From: Giovani Hidalgo Ceotto Date: Thu, 10 Feb 2022 23:14:09 -0300 Subject: [PATCH 47/59] MAINT: move helper function so that it can be used with other tests in the future --- tests/test_flight.py | 85 +++++++++++++++++++++++++------------------- 1 file changed, 49 insertions(+), 36 deletions(-) diff --git a/tests/test_flight.py b/tests/test_flight.py index 69e6c42bb..d1e75da4e 100644 --- a/tests/test_flight.py +++ b/tests/test_flight.py @@ -6,6 +6,52 @@ from rocketpy import Environment, Flight, Rocket, SolidMotor from scipy import optimize +# Helper functions +def setup_rocket_with_given_static_margin(rocket, static_margin): + """Takes any rocket, removes its aerodynamic surfaces and adds a set of + nose, fins and tail specially designed to have a given static margin. + The rocket is modified in place. + + Parameters + ---------- + rocket : Rocket + Rocket to be modified + static_margin : float + Static margin that the given rocket shall have + + Returns + ------- + rocket : Rocket + Rocket with the given static margin. + """ + + def compute_static_margin_error_given_distance(distanceToCM, static_margin, rocket): + rocket.aerodynamicSurfaces = [] + rocket.addNose(length=0.5, kind="vonKarman", distanceToCM=1.0) + rocket.addFins( + 4, + span=0.100, + rootChord=0.100, + tipChord=0.100, + distanceToCM=distanceToCM, + ) + rocket.addTail( + topRadius=0.0635, + bottomRadius=0.0435, + length=0.060, + distanceToCM=-1.194656, + ) + return rocket.staticMargin(0) - static_margin + + sol = optimize.root_scalar( + compute_static_margin_error_given_distance, + bracket=[-2.0, 2.0], + method="brentq", + args=(static_margin, rocket), + ) + + return rocket + @patch("matplotlib.pyplot.show") def test_flight(mock_show): @@ -211,43 +257,12 @@ def mainTrigger(p, y): def test_stability_static_margins(): - # Function to get rocket with any desired static margin easily - def setup_rocket_with_given_static_margin(rocket, static_margin): - def compute_static_margin_error_given_distance( - distanceToCM, static_margin, rocket - ): - rocket.aerodynamicSurfaces = [] - rocket.addNose(length=0.5, kind="vonKarman", distanceToCM=1.0) - rocket.addFins( - 4, - span=0.100, - rootChord=0.100, - tipChord=0.100, - distanceToCM=distanceToCM, - ) - rocket.addTail( - topRadius=0.0635, - bottomRadius=0.0435, - length=0.060, - distanceToCM=-1.194656, - ) - return rocket.staticMargin(0) - static_margin - - sol = optimize.root_scalar( - compute_static_margin_error_given_distance, - bracket=[-2.0, 2.0], - method="brentq", - args=(static_margin, rocket), - ) - - return rocket - - # Create an environment with ZERO gravity and CONTROLLED wind + # Create an environment with ZERO gravity to keep the rocket's speed constant Env = Environment( gravity=0, railLength=0, latitude=0, longitude=0, elevation=0 # zero gravity ) - # Create a motor with ZERO thrust and ZERO mass + # Create a motor with ZERO thrust and ZERO mass to keep the rocket's speed constant DummyMotor = SolidMotor( thrustSource=1e-300, burnOut=1e-10, @@ -261,7 +276,7 @@ def compute_static_margin_error_given_distance( throatRadius=11 / 1000, ) - # Create a rocket with ZERO drag and HUGE mass + # Create a rocket with ZERO drag and HUGE mass to keep the rocket's speed constant DummyRocket = Rocket( motor=DummyMotor, radius=127 / 2000, @@ -300,8 +315,6 @@ def compute_static_margin_error_given_distance( TestFlight = Flight( rocket=DummyRocket, environment=Env, - inclination=90, - heading=0, initialSolution=[ 0, 0, From cc165de53559ba9f541aaea36a671006640540c7 Mon Sep 17 00:00:00 2001 From: Giovani Hidalgo Ceotto Date: Thu, 10 Feb 2022 23:41:31 -0300 Subject: [PATCH 48/59] MAINT: simplify stability test ifs and asserts --- tests/test_flight.py | 66 +++++++++++++------------------------------- 1 file changed, 19 insertions(+), 47 deletions(-) diff --git a/tests/test_flight.py b/tests/test_flight.py index d1e75da4e..aad0b8df9 100644 --- a/tests/test_flight.py +++ b/tests/test_flight.py @@ -257,6 +257,10 @@ def mainTrigger(p, y): def test_stability_static_margins(): + """Test stability margins for a constant velocity flight, 100 m/s, wind a + lateral wind speed of 10 m/s. Rocket has infinite mass to prevent side motion. + Check if a restoring moment exists depending on static margins.""" + # Create an environment with ZERO gravity to keep the rocket's speed constant Env = Environment( gravity=0, railLength=0, latitude=0, longitude=0, elevation=0 # zero gravity @@ -319,11 +323,11 @@ def test_stability_static_margins(): 0, 0, 0, - 100, + 100, # Start at 100 m of altitude 0, 0, - 100, - 1.0, + 100, # Start at 100 m/s + 1.0, # Inclination of 90 deg and heading of 0 deg 0.0, 0.0, 0.0, @@ -337,47 +341,15 @@ def test_stability_static_margins(): ) TestFlight.postProcess() - if wind_u == 0 and wind_v > 0: - assert ( - ( - static_margin > 0 - and np.max(TestFlight.M1.source[:, 1]) - * np.min(TestFlight.M1.source[:, 1]) - < 0 - ) - or (static_margin < 0 and np.all(TestFlight.M1.source[:, 1] <= 0)) - or (static_margin == 0) - ) - elif wind_u == 0 and wind_v < 0: - assert ( - ( - static_margin > 0 - and np.max(TestFlight.M1.source[:, 1]) - * np.min(TestFlight.M1.source[:, 1]) - < 0 - ) - or (static_margin < 0 and np.all(TestFlight.M1.source[:, 1] >= 0)) - or (static_margin == 0) - ) - elif wind_u > 0 and wind_v == 0: - assert ( - ( - static_margin > 0 - and np.max(TestFlight.M2.source[:, 1]) - * np.min(TestFlight.M2.source[:, 1]) - < 0 - ) - or (static_margin < 0 and np.all(TestFlight.M2.source[:, 1] >= 0)) - or (static_margin == 0) - ) - elif wind_u < 0 and wind_v == 0: - assert ( - ( - static_margin > 0 - and np.max(TestFlight.M2.source[:, 1]) - * np.min(TestFlight.M2.source[:, 1]) - < 0 - ) - or (static_margin < 0 and np.all(TestFlight.M2.source[:, 1] <= 0)) - or (static_margin == 0) - ) + if wind_u == 0: + moments = TestFlight.M1.source[:, 1] + wind_sign = np.sign(wind_v) + else: # wind_v == 0 + moments = TestFlight.M2.source[:, 1] + wind_sign = -np.sign(wind_u) + + assert ( + (static_margin > 0 and np.max(moments) * np.min(moments) < 0) + or (static_margin < 0 and np.all(moments / wind_sign <= 0)) + or (static_margin == 0 and np.all(np.abs(moments) <= 1e-10)) + ) From d49b63321f8fcd3850028e67b2ae08729470bf81 Mon Sep 17 00:00:00 2001 From: Giovani Hidalgo Ceotto Date: Thu, 10 Feb 2022 23:57:43 -0300 Subject: [PATCH 49/59] MAINT: implement pytest parametrize to simplify static margin stability test --- tests/test_flight.py | 107 ++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 63 deletions(-) diff --git a/tests/test_flight.py b/tests/test_flight.py index aad0b8df9..008bd738f 100644 --- a/tests/test_flight.py +++ b/tests/test_flight.py @@ -256,14 +256,24 @@ def mainTrigger(p, y): assert test_flight.allInfo() == None -def test_stability_static_margins(): +@pytest.mark.parametrize("wind_u, wind_v", [(0, 10), (0, -10), (10, 0), (-10, 0)]) +@pytest.mark.parametrize( + "static_margin, max_time", + [(-0.1, 2), (-0.01, 5), (0, 5), (0.01, 20), (0.1, 20), (1.0, 20)], +) +def test_stability_static_margins(wind_u, wind_v, static_margin, max_time): """Test stability margins for a constant velocity flight, 100 m/s, wind a lateral wind speed of 10 m/s. Rocket has infinite mass to prevent side motion. Check if a restoring moment exists depending on static margins.""" # Create an environment with ZERO gravity to keep the rocket's speed constant - Env = Environment( - gravity=0, railLength=0, latitude=0, longitude=0, elevation=0 # zero gravity + Env = Environment(gravity=0, railLength=0, latitude=0, longitude=0, elevation=0) + Env.setAtmosphericModel( + type="CustomAtmosphere", + wind_u=wind_u, + wind_v=wind_v, + pressure=101325, + temperature=300, ) # Create a motor with ZERO thrust and ZERO mass to keep the rocket's speed constant @@ -293,63 +303,34 @@ def test_stability_static_margins(): powerOnDrag=0, ) DummyRocket.setRailButtons([0.2, -0.5]) - - for wind_u, wind_v in [(0, 10), (0, -10), (10, 0), (-10, 0)]: - Env.setAtmosphericModel( - type="CustomAtmosphere", - wind_u=wind_u, - wind_v=wind_v, - pressure=101325, - temperature=300, - ) - - for static_margin, max_time in [ - (-0.1, 2), - (-0.01, 5), - (0, 5), - (0.01, 20), - (0.1, 20), - (1.0, 20), - ]: - DummyRocket = setup_rocket_with_given_static_margin( - DummyRocket, static_margin - ) - - # Simulate - TestFlight = Flight( - rocket=DummyRocket, - environment=Env, - initialSolution=[ - 0, - 0, - 0, - 100, # Start at 100 m of altitude - 0, - 0, - 100, # Start at 100 m/s - 1.0, # Inclination of 90 deg and heading of 0 deg - 0.0, - 0.0, - 0.0, - 0, - 0, - 0, - ], # Start at 100 m of altitude and 100 m/s of vertical velocity - maxTime=max_time, - maxTimeStep=1e-2, - verbose=False, - ) - TestFlight.postProcess() - - if wind_u == 0: - moments = TestFlight.M1.source[:, 1] - wind_sign = np.sign(wind_v) - else: # wind_v == 0 - moments = TestFlight.M2.source[:, 1] - wind_sign = -np.sign(wind_u) - - assert ( - (static_margin > 0 and np.max(moments) * np.min(moments) < 0) - or (static_margin < 0 and np.all(moments / wind_sign <= 0)) - or (static_margin == 0 and np.all(np.abs(moments) <= 1e-10)) - ) + setup_rocket_with_given_static_margin(DummyRocket, static_margin) + + # Simulate + init_pos = [0, 0, 100] # Start at 100 m of altitude + init_vel = [0, 0, 100] # Start at 100 m/s + init_att = [1, 0, 0, 0] # Inclination of 90 deg and heading of 0 deg + init_angvel = [0, 0, 0] + initial_solution = [0] + init_pos + init_vel + init_att + init_angvel + TestFlight = Flight( + rocket=DummyRocket, + environment=Env, + initialSolution=initial_solution, + maxTime=max_time, + maxTimeStep=1e-2, + verbose=False, + ) + TestFlight.postProcess() + + # Check stability according to static margin + if wind_u == 0: + moments = TestFlight.M1.source[:, 1] + wind_sign = np.sign(wind_v) + else: # wind_v == 0 + moments = TestFlight.M2.source[:, 1] + wind_sign = -np.sign(wind_u) + + assert ( + (static_margin > 0 and np.max(moments) * np.min(moments) < 0) + or (static_margin < 0 and np.all(moments / wind_sign <= 0)) + or (static_margin == 0 and np.all(np.abs(moments) <= 1e-10)) + ) From 15d0b4dd9601f6a0ff3cdc9961f2fc8cfcde8b4a Mon Sep 17 00:00:00 2001 From: Giovani Hidalgo Ceotto Date: Fri, 11 Feb 2022 00:09:04 -0300 Subject: [PATCH 50/59] BUG: fix duplicate angle of attack in component lift calculation --- rocketpy/Flight.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index e7e166cc9..1c97654ee 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -1298,7 +1298,7 @@ def uDot(self, t, u, postProcessing=False): # Calculate lift and moment for each component of the rocket for aerodynamicSurface in self.rocket.aerodynamicSurfaces: compCp = aerodynamicSurface[0][2] - clalpha = aerodynamicSurface[1] + compCl = aerodynamicSurface[1] # Component absolute velocity in body frame compVxB = vxB + compCp * omega2 compVyB = vyB - compCp * omega1 @@ -1325,15 +1325,10 @@ def uDot(self, t, u, postProcessing=False): compStreamVzBn = compStreamVzB / compStreamSpeed if -1 * compStreamVzBn < 1: compAttackAngle = np.arccos(-compStreamVzBn) - cLift = aerodynamicSurface[1](compAttackAngle) + compLift = compCl(compAttackAngle) # Component lift force magnitude compLift = ( - 0.5 - * rho - * (compStreamSpeed**2) - * self.rocket.area - * cLift - * compAttackAngle + 0.5 * rho * (compStreamSpeed**2) * self.rocket.area * compLift ) # Component lift force components liftDirNorm = (compStreamVxB**2 + compStreamVyB**2) ** 0.5 From 4e7338e9067894f515670a49d818d55201ca5b84 Mon Sep 17 00:00:00 2001 From: Guilherme Fernandes Alves <63590233+Gui-FernandesBR@users.noreply.github.com> Date: Sat, 12 Feb 2022 00:33:05 -0300 Subject: [PATCH 51/59] Delete stability_check.ipynb --- docs/notebooks/stability_check.ipynb | 380 --------------------------- 1 file changed, 380 deletions(-) delete mode 100644 docs/notebooks/stability_check.ipynb diff --git a/docs/notebooks/stability_check.ipynb b/docs/notebooks/stability_check.ipynb deleted file mode 100644 index cf57e3d0a..000000000 --- a/docs/notebooks/stability_check.ipynb +++ /dev/null @@ -1,380 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib widget" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.9.9\n" - ] - } - ], - "source": [ - "import rocketpy\n", - "from rocketpy import *\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "\n", - "print(rocketpy.__version__)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# Create an environment with ZERO gravity and CONTROLLED wind\n", - "Env = Environment(\n", - " gravity=0, # zero gravity\n", - " railLength=0,\n", - " latitude=0,\n", - " longitude=0,\n", - " elevation=0\n", - ")\n", - "Env.setAtmosphericModel(\n", - " type=\"CustomAtmosphere\",\n", - " wind_u=10, # 10 m/s constant wind velocity in the east direction\n", - " wind_v=0,\n", - " pressure=101325,\n", - " temperature=300,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# Create a motor with ZERO thrust and ZERO mass\n", - "DummyMotor = SolidMotor(\n", - " thrustSource=1e-300,\n", - " burnOut=1e-10,\n", - " grainNumber=5,\n", - " grainSeparation=5/1000,\n", - " grainDensity=1e-300,\n", - " grainOuterRadius=33/1000,\n", - " grainInitialInnerRadius=15/1000,\n", - " grainInitialHeight=120/1000,\n", - " nozzleRadius=33/1000,\n", - " throatRadius=11/1000,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "# Create a rocket with ZERO drag\n", - "DummyRocket = Rocket(\n", - " motor=DummyMotor,\n", - " radius=127/2000,\n", - " mass=19.197-2.956,\n", - " inertiaI=6.60,\n", - " inertiaZ=0.0351,\n", - " distanceRocketNozzle=-1.255,\n", - " distanceRocketPropellant=-0.85704,\n", - " powerOffDrag=0,\n", - " powerOnDrag=0\n", - ")\n", - "\n", - "DummyRocket.setRailButtons([0.2, -0.5])\n", - "NoseCone = DummyRocket.addNose(length=0.55829, kind=\"vonKarman\", distanceToCM=0.71971)\n", - "FinSet = DummyRocket.addFins(4, span=0.100, rootChord=0.120, tipChord=0.040, distanceToCM=-1.04956)\n", - "Tail = DummyRocket.addTail(topRadius=0.0635, bottomRadius=0.0435, length=0.060, distanceToCM=-1.194656)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Simulation Completed at Time: 10.0000 s\n" - ] - } - ], - "source": [ - "# Simulate Flight\n", - "TestFlight = Flight(\n", - " rocket=DummyRocket,\n", - " environment=Env,\n", - " inclination=90,\n", - " heading=0,\n", - " initialSolution=[0, 0, 0, 100, 0, 0, 100, 1.0, 0.0, 0.0, 0.0, 0, 0, 0], # Start at 100 m of altitude and 100 m/s of vertical velocity\n", - " maxTime=10,\n", - " maxTimeStep=1e-3,\n", - " verbose=True\n", - ")\n", - "TestFlight.postProcess(interpolation=\"linear\", extrapolation=\"natural\")\n", - "# TestFlight.allInfo()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-1.5000000000050808\n" - ] - } - ], - "source": [ - "# Function to get rocket with any desired static margin easily\n", - "def setup_rocket_with_given_static_margin(rocket, static_margin):\n", - "\n", - " def compute_static_margin_error_given_distance(distanceToCM, static_margin, rocket):\n", - " rocket.aerodynamicSurfaces = []\n", - " rocket.addNose(length=0.5, kind=\"vonKarman\", distanceToCM=1.0)\n", - " rocket.addFins(4, span=0.100, rootChord=0.100, tipChord=0.100, distanceToCM=distanceToCM) \n", - " return rocket.staticMargin(0) - static_margin\n", - " \n", - " from scipy import optimize\n", - " sol = optimize.root_scalar(compute_static_margin_error_given_distance, bracket=[-2.0, 2.0], method='brentq', args=(static_margin, rocket))\n", - "\n", - " return rocket\n", - "\n", - "DummyRocket = setup_rocket_with_given_static_margin(DummyRocket, static_margin=-1.5)\n", - "\n", - "print(DummyRocket.staticMargin(1))" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "def augmented_angle_of_attack_theoretical_function(time, A, B, w, z):\n", - " return np.real(A*np.exp(1j*w*time) + B*np.exp(-1j*w*time))*np.exp(z*time)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Simulating Rocket with Static Margin of -0.100\n", - "Simulation Completed at Time: 7.0000 s\n", - "Simulating Rocket with Static Margin of -0.010\n", - "Simulation Completed at Time: 7.0000 s\n", - "Simulating Rocket with Static Margin of -0.000\n", - "Simulation Completed at Time: 7.0000 s\n", - "Simulating Rocket with Static Margin of 0.010\n", - "Simulation Completed at Time: 7.0000 s\n", - "Simulating Rocket with Static Margin of 0.100\n", - "Simulation Completed at Time: 7.0000 s\n", - "Simulating Rocket with Static Margin of 1.000\n", - "Simulation Completed at Time: 7.0000 s\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "41068f1eac104ba69b7f19cbab226e72", - "version_major": 2, - "version_minor": 0 - }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAACwdUlEQVR4nOzdeVxU1fsH8M+wDfsuDsgqLoAKgiih/oQUBDG3aEHNDcU0MXPJrESUMk0RzawoNaBcSkoNF0hCREPcENQEURBEZVFEQEBhYM7vD2K+jezLzADzvF8vXnXvPffc51xn5PHce87hMMYYCCGEEEKIzJCTdgCEEEIIIUSyKAEkhBBCCJExlAASQgghhMgYSgAJIYQQQmQMJYCEEEIIITKGEkBCCCGEEBlDCSAhhBBCiIyhBJAQQgghRMZQAkgIIYQQImMoASSEEEIIkTGUABJCCCGEyBhKAAkhhBBCZAwlgIQQQgghMoYSQEIIIYQQGUMJICGEEEKIjKEEkBBCCCFExlACSAghhBAiYygBJIQQQgiRMZQAEkIIIYTIGEoACSGEEEJkDCWAhBBCCCEyhhJAQgghhBAZQwkgIYQQQoiMoQSQEEIIIUTGUAJICCGEECJjKAEkhBBCCJExlAASQgghhMgYSgAJIYQQQmQMJYCEEEIIITKGEkBCCCGEEBlDCSAhhBBCiIyhBJAQQgghRMZQAkgIIYQQImMoASSEEEIIkTGUABJCCCGEyBhKAAkhhBBCZAwlgIQQQgghMoYSQEIIIYQQGUMJICGEEEKIjKEEkBBCCCFExlACSAghhBAiYygBJIQQQgiRMZQAEkIIIYTIGEoACSGEEEJkDCWAhBBCCCEyhhJAQgghhBAZQwkgIYQQQoiMoQSQEEIIIUTGUAJICCGEECJjKAEkhBBCCJExlAASQgghhMgYSgAJIYQQQmQMJYCEEEIIITKGEkBCCCGEEBlDCSAhhBBCiIyhBJAQQgghRMYoSDuA7kwgECAvLw8aGhrgcDjSDocQQgghrcAYw7Nnz2BkZAQ5OdnsC6MEsAPy8vJgYmIi7TAIIYQQ0g7379+HsbGxtMOQCkoAO0BDQwNA3QdIU1OzU+vm8/k4deoUxo8fD0VFxU6tuzug9st2+wG6B7LefoDuAbVffO0vKyuDiYmJ8Pe4LKIEsAPqH/tqamqKJQFUVVWFpqamzH7xqf2y236A7oGstx+ge0DtF3/7Zfn1Ldl88E0IIYQQIsMoASSEEEIIkTGUABJCCCGEyBh6B1DMGGPg8/moqalp03l8Ph+KioqorKyU2Xc/qP2y134FBQUoKirK9Hs5hBAiCZQAilFVVRVycnJQXl7ervN79+6NzMzMTo6q+6D2y2b71dXVYW5uLrNzcxFCiCRQAigmAoEAaWlpUFBQgIWFBbhcLvVqENIMxhiqqqrw4MED3Lx5k+bYJIQQMaIEUExevHgBgUAACwsLqKurSzscQroFNTU1KCkpISMjA8eOHYNAIJB2SIQQ0iPRMxYxo8dYhLRN/XemqqoKt27dwoMHD6QcESGE9DyUnRBCuiR9fX1UVVWhoKBA2qEQQkiPQwkgkarw8HBoa2tLO4xOsX79egwdOlTaYfQY9e/MVlVVSTkSQgjpeSgBJCIeP36MxYsXw9TUFFwuFzweDx4eHkhMTBSW4XA4OHr0aJvrNjc3x44dO0T2vf3227h9+3a74w0PDweHw4G1tXWDY5GRkeBwODA3N293/W2xatUqxMXFSeRaL168wJIlS6Cnpwd1dXV4e3ujsLCw2XMOHz6M8ePHQ09PDxwOB6mpqe2qNzc3FxMnToSqqioMDAzw4YcftnmaI0IIIdJFCSAR4e3tjZSUFEREROD27duIioqCq6srnjx5IpbrqaiowMDAoEN1qKmp4dGjR0hKShLZv3fvXpiamnaobgCorq5uVTl1dXXo6el1+HqtsXz5chw7dgyRkZFISEhAXl4eXn/99WbPqaiowOjRo/Hll1+2u97a2lpMnDgR1dXVOH/+PCIiIhAeHo5169Z1WtsIIYRIACPtVlpaygCw0tLSBscqKirYlStXWEVFhRQia5+nT58yAOzMmTNNljEzM2MAhD9mZmaMMcYyMzPZ5MmTmYGBAVNTU2OOjo4sNjZWeJ6Li4vIefUfvbCwMKalpSVyjaioKObo6Mi4XC7T09NjU6dObTKe+vP9/f3ZggULhPvv37/PuFwuW7NmjTDG1sRZ38agoCA2a9YspqGhwebMmcMYY+yHH35gxsbGTEVFhU2dOpVt27ZNJPbAwEBmZ2cn3J4zZw6bMmUK27p1K+PxeExXV5e99957rLq6usn2tEZJSQlTVFRkkZGRwn3p6ekMAEtKSmrx/OzsbAaApaSktLnekydPMjk5OVZQUCAs89133zFNTU1WVVXV5DXv37/PfHx8mI6ODlNVVWXDhg1jFy5caLRs/XcnMjKS+fv7s/j4+Bbb1BNVV1ezo0ePdvjz0p3J+j2Q9fb/dTOPeXwRxRJu5Xd63c39/pYV1AMoQYwxVFbXSPyHMdaq+NTV1aGuro6jR482+d7V5cuXAQBhYWHIz88XbpeXl8PLywtxcXFISUmBp6cnJk2ahNzcXAB1jx+NjY0RFBSE/Px85OfnN1r/iRMnMG3aNHh5eSElJQVxcXEYMWJEi7H7+vri0KFDqKysBFD3aNjT0xO9e/cWKddSnPWCg4NhZ2eHlJQUBAQEIDExEYsWLcKyZcuQmpoKd3d3bNy4scW44uPjkZWVhfj4eGFvWXh4uPD4+vXr2/yIOjk5GXw+H25ubsJ9VlZWMDU1bdAL2tn1JiUlYciQISL31cPDA2VlZbh582aj9ZaXl8PFxQUPHz5EVFQUrl27htWrV9MUL4SQZu39Owe3SuVwJqNI2qH0SDQPoAQ959fCZt2fEr9uWpAHVJVa/qNWUFBAeHg4/Pz8EBoaCgcHB7i4uMDHxwe2trYAgF69egEAtLW1wePxhOfa2dnBzs5OuP3ZZ5/hyJEjiIqKgr+/P3R1dSEvLw8NDQ2R8162ceNG+Pj4YMOGDSJ1t8Te3h59+/bFb7/9hlmzZiE8PBwhISG4e/euSLmW4qw3duxYrFy5Urj96aefYsKECVi1ahUAYMCAATh//jyOHz/ebFw6OjrYtWsX5OXlYWVlhYkTJyIuLg5+fn4A6ka6Wlpatti+/yooKICSklKDwTO9e/fu0IjZ1tRbUFDQIKmu327q2gcOHMDjx49x+fJl6OrqAgD69evX7jgJIT1fWl4Zzt8thhwY5jh3/FUe0hD1ABIR3t7eyMvLQ1RUFDw9PXHmzBk4ODiI9Fo1pry8HKtWrYK1tTW0tbWhrq6O9PT0Bj1rLUlNTcW4cePaFbuvry/CwsKQkJCAiooKeHl5tTtOR0dHke2MjIwGPZGt6ZkcNGgQ5OXlhduGhoZ49OiRcNvf37/ZgSNffPGFsGdWXV29zfezK0hNTYW9vb0w+SOEkJbsPlf3j3c7PQYjbRUpR9MzUQ+gBKkoyiMtyEMq120LZWVluLu7w93dHQEBAViwYAECAwMxd+7cJs9ZtWoVYmNjERwcjH79+kFFRQVvvPFGqwdQCGNVaf8XfebMmVi9ejXWr1+PWbNmQUGh4ce7tXGqqam1O47/UlRUFNnmcDhtevS5aNEivPXWW8JtIyMj8Hg8VFdXo6SkRKS3rrCwsNne1Za0pl4ej4dLly6JnFc/Sripa3fkz5QQInsePK1E1LU8AMA4I3pVRFyoB1CCOBwOVJUUJP7T0TWIbWxsUFFRIdxWVFREbW2tSJnExETMnTsX06ZNw5AhQ8Dj8ZCTkyNSRklJqcF5L7O1tW33VCq6urqYPHkyEhIS4Ovr22iZ1sTZmIEDBwrfd6z38rY46Orqol+/fsIfBQUFDBs2DIqKiiL3KSMjA7m5uXB2dm73tVpTr7OzM27cuCHSixkbGwtNTU3Y2Ng0Wq+trS1SU1NRXFzc7tgIIbLjx79zUCtgGNlXFya0kqrYUAJIhJ48eYKxY8di3759uH79OrKzsxEZGYktW7ZgypQpwnLm5uaIi4tDQUEBnj59CgDo378/Dh8+jNTUVFy7dg0zZsxo0NNlbm6Os2fP4uHDhygqavyl3sDAQBw8eBCBgYFIT0/HjRs3mp225GXh4eEoKiqClZVVo8dbE2djli5dipMnTyIkJAR37tzB999/j+jo6A4n17t27WrzI28tLS3Mnz8fK1asQHx8PJKTkzFv3jw4OzvjlVdeEZazsrLCkSNHhNvFxcVITU1FWloagLrkLjU1VfjuXmvqHT9+PGxsbDBr1ixcu3YNf/75J9auXYslS5aAy+U2Gu/06dPB4/EwdepUJCYm4u7du/j99987NGCFENIzlVRW45fLda+6LPg/c+kG08NRAkiE1NXV4eTkhO3bt2PMmDEYPHgwAgIC4Ofnh127dgnLbdu2DbGxsTAxMYG9vT0AICQkBDo6Ohg5ciQmTZoEDw8PODg4iNQfFBSEnJwcWFpaCgeTvMzV1RWRkZGIiorC0KFDMXbs2AaPHJujoqLS7Fx8rYmzMaNGjUJoaChCQkJgZ2eHmJgYLF++HMrKyq2OrTFFRUXIyspq83nbt2/Ha6+9Bm9vb4wZMwY8Hg+HDx8WKZORkYHS0lLhdlRUFOzt7TFx4kQAgI+PD+zt7REaGtrqeuXl5XH8+HHIy8vD2dkZ77zzDmbPno2goKAmY1VSUsKpU6dgYGAALy8vDBkyBJs3bxZ5N5IQQgBg34V7qKyuhbWhJkZbSmZeVVnFYa2dI4Q0UFZWBi0tLZSWlkJTU1PkWGVlJdLT02FtbQ1VVVUpRUjEyc/PD7du3cK5c+ekHUqPUv/dyc7ORkJCAry9veHq6irtsCSOz+fj5MmT8PLyavAuqayQ9Xsga+1/wa/F6C9Po6i8Gl/5DIXXIAOxtb+539+yggaBENJKwcHBcHd3h5qaGqKjoxEREYFvv/1W2mERQkiP8PvVBygqr0YfbRV4DTEEBM2/M046hhJAQlrp0qVL2LJlC549e4a+ffti586dWLBggbTDIoSQbq9WwLD7bN3ULwv+zwKK8nLgUwIoVpQAEtJKhw4dknYIhBDSI526WYCcJ5XQVlXE28NNpB2OTKBBIIQQQgiRGsYYQhPqBsPNfsWsVStXkY6jBJAQQgghUnPhbjGuPSgFV0EOs0eaSzscmUEJICGEEEKk5vuzdb1/bzoaQ1+98flESeejBJAQQgghUvHPw1KcyXgMOQ6wYHRfaYcjUygBJIQQQohUfHsmEwDwmq0RzPU7Zw120jqUABJCCCFE4jIfPUP0P3VLUS55tZ+Uo5E9lAASqQoPD4e2tra0w+gU69evx9ChQ6UdBiGEdAvfxmeBMWC8TW8M5GlIOxyZQwkgEfH48WMsXrwYpqam4HK54PF48PDwQGJiorAMh8PB0aNH21y3ubk5duzYIbLv7bffxu3bt9sdb3h4ODgcDqytrRsci4yMBIfDgbm5ebvrb4tVq1YhLi5OItd68eIFlixZAj09Pairq8Pb2xuFhYXNnsMYw7p162BoaAgVFRW4ubnhzp07ImU2btyIkSNHQlVVtcnEPDc3FxMnToSqqioMDAzw4YcfoqamprOaRgiRAblPKvHHtTwAgP9Y6v2TBkoAiQhvb2+kpKQgIiICt2/fRlRUFFxdXfHkyROxXE9FRQUGBgYdqkNNTQ2PHj1CUlKSyP69e/fC1NS0Q3UDQHV1davKqaurQ09PMouXL1++HMeOHUNkZCQSEhKQl5eH119/vdlztmzZgp07dyI0NBQXL16EmpoaPDw88OLFC2GZ6upqvPnmm1i8eHGjddTW1mLixImorq7G+fPnERERgfDwcKxbt65T20cI6dlCz2ahVsAwZkAv2BprSzsc2cRIu5WWljIArLS0tMGxiooKduXKFVZRUSGFyNrn6dOnDAA7c+ZMk2XMzMwYAOGPmZkZY4yxzMxMNnnyZGZgYMDU1NSYo6Mji42NFZ7n4uIicl79Ry8sLIxpaWmJXCMqKoo5OjoyLpfL9PT02NSpU5uMp/58f39/tmDBAuH++/fvMy6Xy9asWSOMsTVx1rcxKCiIzZo1i2loaLA5c+Ywxhj74YcfmLGxMVNRUWFTp05l27ZtE4k9MDCQ2dnZCbfnzJnDpkyZwrZu3cp4PB7T1dVl7733Hquurm6yPa1RUlLCFBUVWWRkpHBfeno6A8CSkpIaPUcgEDAej8e2bt0qUg+Xy2UHDx5sUL6xPxfGGDt58iSTk5NjBQUFwn3fffcd09TUZFVVVU3GfP/+febj48N0dHSYqqoqGzZsGLtw4UKjZeu/O5GRkczf35/Fx8c3WW9PVl1dzY4ePdrhz0t3Juv3oKe2P7/kOev/yUlm9tFxdvHukybLibP9zf3+lhXUAyhJjAHVFZL/YaxV4amrq0NdXR1Hjx5FVVVVo2UuX74MAAgLC0N+fr5wu7y8HF5eXoiLi0NKSgo8PT0xadIk5ObmAgAOHz4MY2NjBAUFIT8/H/n5+Y3Wf+LECUybNg1eXl5ISUlBXFwcRowY0WLsvr6+OHToECorKwHUPRr29PRE7969Rcq1FGe94OBg2NnZISUlBQEBAUhMTMSiRYuwbNkypKamwt3dHRs3bmwxrvj4eGRlZSE+Pl7YWxYeHi48vn79+jY/ok5OTgafz4ebm5twn5WVFUxNTRv0gtbLzs5GQUGByDlaWlpwcnJq8pzGJCUlYciQISL31cPDA2VlZbh582aj55SXl8PFxQUPHz5EVFQUrl27htWrV0MgELT6uoSQnuOHs3dRXSvACHNdjLDQlXY4Mqtbrrdy9uxZbN26FcnJycjPz8eRI0cwdepU4fG5c+ciIiJC5BwPDw/ExMQIt4uLi7F06VIcO3YMcnJy8Pb2xldffQV1dXXxBc6vBL4wEl/9TfkkD1BqeXi9goICwsPD4efnh9DQUDg4OMDFxQU+Pj6wtbUFAPTq1QsAoK2tDR6PJzzXzs4OdnZ2wu3PPvsMR44cQVRUFPz9/aGrqwt5eXloaGiInPeyjRs3wsfHBxs2bBCpuyX29vbo27cvfvvtN8yaNQvh4eEICQnB3bt3Rcq1FGe9sWPHYuXKlcLtTz/9FBMmTMCqVasAAAMGDMD58+dx/PjxZuPS0dHBrl27IC8vDysrK0ycOBFxcXHw8/MDAOjr68PS0rLF9v1XQUEBlJSUGryj17t3bxQUFDR5Tn2Z1p7TVD2N1fHfa7zswIEDePz4MS5fvgxd3bq/7Pv1o3d+CJFFT8qrcODSPQD07p+0dcsewIqKCtjZ2eGbb75psoynp6ewpyk/Px8HDx4UOT5z5kzcvHkTsbGxOH78OM6ePYuFCxeKO/Quz9vbG3l5eYiKioKnpyfOnDkDBwcHkV6rxpSXl2PVqlWwtraGtrY21NXVkZ6e3qBnrSWpqakYN25cu2L39fVFWFgYEhISUFFRAS8vr3bH6ejoKLKdkZHRoCeyNT2TgwYNgry8vHDb0NAQjx49Em77+/s3O3Dkiy++EPbMqqurt/l+dgWpqamwt7cXJn+EENn1Y2I2XvAFsDXWwv/115d2ODKtW/YATpgwARMmTGi2TP0I1sakp6cjJiYGly9fFv6i//rrr+Hl5YXg4GAYGYmpl05Rta43TtIUVdtUXFlZGe7u7nB3d0dAQAAWLFiAwMBAzJ07t8lzVq1ahdjYWAQHB6Nfv35QUVHBG2+80eoBFPVUVFTaVP6/Zs6cidWrV2P9+vWYNWsWFBQafrxbG6eaWudMSKqoqCiyzeFw2vToc9GiRXjrrbeE20ZGRuDxeKiurkZJSYlIL2BhYWGTn/n6/YWFhTA0NBQ5py1T1/B4PFy6dElkX/3o46au3ZE/U0JIz1H6nI+fztf1/i15tR84HI6UI5Jt3TIBbI0zZ87AwMAAOjo6GDt2LD7//HPhCM2kpCRoa2uL9PK4ublBTk4OFy9exLRp0xqts6qqSuTduLKyMgAAn88Hn88XKfvyNgCAw2nVo9iuxsbGRmTaF0VFRdTW1oqUSUxMxNy5c4X3rry8HDk5OSJllJSUGpz3MltbW8TFxWHevHltjlNXVxeTJ0/GoUOHEBoa2miZ1sTZmIEDBwrfd6z38rY46OrqNug5GzZsGBQVFREXFwdvb28AdT2Uubm5cHZ2brQeCwsL8Hg8xMXFCRO+srIyXLx4sckRv41xdnbGxo0b8ejRI+Ho7djYWGhqasLGxqbRc2xtbbFnzx4UFxe3qRew/rNSW1vb+Peph6tvsyy2vZ6s34Oe1v69Z7PwrKoG/Q3U4NpPt8V2ibP9PeWedkSPTAA9PT3x+uuvw8LCAllZWfjkk08wYcIEJCUlQV5eHgUFBQ2mHlFQUICurm6z70Nt2rRJ5N20eqdOnYKqqmgvm6KiYoN3pbq6J0+e4M0334Svry9sbW2hoaGBK1euYMuWLZgyZYqwnLm5OeLi4jBq1ChwuVzo6Oigf//+OHz4MCZNmgQOh4OAgIAGPV3m5uY4e/YsfHx8wOVyoa/fsPs/MDAQ48aNg6WlJXx8fFBTU4OTJ0/io48+alUbwsPD8e233zY5HUtr4mzM0qVLMWbMGISEhGDSpEk4ffo0oqOjO/wv2F27duHIkSNtmj9QS0sL8+fPx4oVK6CrqwtNTU0sXboUzs7OeOWVV4TlrKyssGnTJkybNg0cDgcffPABPv/8c/Tv3x8WFhYICAiAkZGRyPuzubm5KC4uRm5uLmpra5Gamgqg7p09dXV1jB8/HjY2Npg1axa2bNmCgoICrF27FkuWLAGX2/gi7tOnT8cXX3yBqVOnYtOmTTA0NERKSgqMjIyaTFgB4OHDhwCA69evo7y8vNX3p6eJjY2VdghSJ+v3oCe0v7IG2H1VHgAHo7TKEBMT3epzxdH++gGDsqxHJoA+Pj7C/x8yZAhsbW1haWmJM2fOtPv9MgD4+OOPsWLFCuF2WVkZTExMMH78eGhqaoqUraysRGZmZruvJQ3q6upwcnLC9u3bkZWVBT6fDxMTE/j5+eGTTz4Rltu2bRtWrFiB3bt3o0+fPsjJyUFISAh8fX0xcuRI6Ovr46OPPhL2kNYLCgrCu+++C0tLS1RVVYE1MjrZ1dUVkZGR+Oyzz7B582ZoampizJgxrW6DiopKs48cWxNnY0aNGoXQ0FBs2LABa9euhYeHB5YvX45du3a1OrbGFBUVISsrq83nbd++XTh4qaqqCh4eHvj2229FymRkZKC0tFS4vXr1alRUVGDhwoUoKSnB6NGjERMTA2VlZWGZdevWiQygsre3B1A3mtnV1RXy8vI4fvw4Fi9eDGdnZ6ipqWHOnDkICgpqMlYlJSWcOnUKK1euhJeXF2pqamBjY9PsO7wA0KdPH2RnZ8PW1rZNn4Gegs/nIzY2Fu7u7g1eJZAVsn4PelL7d57OxPPau+hvoIaP3xkJObmW//Eszva35u/9no7DGvst3I1wOJwGo4Ab06tXL3z++ed499138eOPP2LlypV4+vSp8HhNTQ2UlZURGRnZ5CPgl5WVlUFLSwulpaWNJoDp6emwtrZu0DtIegY/Pz/cunUL586dk3YoPUr9dyc7OxsJCQnw9vaGq6urtMOSOD6fj5MnT8LLy6vb//JvL1m/Bz2l/aWVfIz+8jSeVdXgmxkOmGhr2PJJEG/7m/v9LSu65Sjgtnrw4AGePHkifPnd2dkZJSUlSE5OFpY5ffo0BAIBnJycpBUm6eKCg4Nx7do1ZGZm4uuvv0ZERATmzJkj7bAIIaRL25uYjWdVNbDiaWDC4KanASOS1S0fAZeXl4s8Xs3OzkZqaqrwhfkNGzbA29sbPB4PWVlZWL16Nfr16wcPDw8AgLW1NTw9PYXz3fH5fPj7+8PHx0d8I4BJt3fp0iVs2bIFz549Q9++fbFz504sWLBA2mERQkiXVVrJR9jf2QCAZeP6t+rRL5GMbpkAXrlyBa+++qpwu/69vDlz5uC7777D9evXERERgZKSEhgZGWH8+PH47LPPRF5S379/P/z9/TFu3Djhu1Q7d+6UeFtI93Ho0CFph0AIId3Knr/vCnv/PAZR719X0i0TQFdX10YHENT7888/W6xDV1cXBw4c6MywCCGEEPKvkspqhCXmAAA+cKPev65GJt4BJIQQQohk7TmXjfKqGlgbamK8DfX+dTWUABJCCCGkUz2tqEZYYt27f9T71zVRAkgIIYSQTrX73F1UVNfCxlAT422616IIsoISQEIIIYR0muKKakSczwFQ1/tHa/52TZQAEkIIIaTTfHcmExXVtRjcRxPu1PvXZVECSKQqPDwc2tra0g6jU6xfvx5Dhw6VdhiEECI1+aXPEZF0DwCwavxA6v3rwigBJCIeP36MxYsXw9TUFFwuFzweDx4eHkhMTBSW4XA4OHr0aJvrNjc3x44dO0T2vf3227h9+3a74w0PDweHw4G1tXWDY5GRkeBwODA3N293/W2xatUqxMXFdXq9jDGsW7cOhoaGUFFRgZubG+7cudPied988w3Mzc2hrKwMJycnXLp0SeT4ixcvsGTJEujp6UFdXR3e3t4oLCwUKZObm4uJEydCVVUVBgYG+PDDD1FTU9Op7SOE9Bxfn85EdY0AI8x14TKgl7TDIc2gBJCI8Pb2RkpKCiIiInD79m1ERUXB1dUVT548Ecv1VFRUYGBg0KE61NTU8OjRIyQlJYns37t3L0xNTTtUNwBUV1e3qpy6ujr09PQ6fL2XbdmyBTt37kRoaCguXrwINTU1eHh44MWLF02e8+uvv2LFihUIDAzE1atXYWdnBw8PDzx69EhYZvny5Th27BgiIyORkJCAvLw8vP7668LjtbW1mDhxIqqrq3H+/HlEREQgPDwc69at6/Q2EkK6v5yiChy6fB8A8KEn9f51eYy0W2lpKQPASktLGxyrqKhgV65cYRUVFVKIrH2ePn3KALAzZ840WcbMzIwBEP6YmZkxxhjLzMxkkydPZgYGBkxNTY05Ojqy2NhY4XkuLi4i59V/9MLCwpiWlpbINaKiopijoyPjcrlMT0+PTZ06tcl46s/39/dnCxYsEO6/f/8+43K5bM2aNcIYWxNnfRuDgoLYrFmzmIaGBpszZw5jjLEffviBGRsbMxUVFTZ16lS2bds2kdgDAwOZnZ2dcHvOnDlsypQpbOvWrYzH4zFdXV323nvvserq6ibb8zKBQMB4PB7bunWrcF9JSQnjcrns4MGDTZ43YsQItmTJEuF2bW0tMzIyYps2bRLWoaioyCIjI4Vl0tPTGQCWlJTEGGPs5MmTTE5OjhUUFAjLfPfdd0xTU5NVVVU1ee379+8zHx8fpqOjw1RVVdmwYcPYhQsXWt3m+u9OZGQk8/f3Z/Hx8a0+tyeprq5mR48ebdPnpaeR9XvQ3dr//sGrzOyj42zujxc7pT5xtr+539+ygnoAJYgxhkp+pcR/WDOrpvyXuro61NXVcfToUVRVVTVa5vLlywCAsLAw5OfnC7fLy8vh5eWFuLg4pKSkwNPTE5MmTUJubi4A4PDhwzA2NkZQUBDy8/ORn5/faP0nTpzAtGnT4OXlhZSUFMTFxWHEiBEtxu7r64tDhw6hsrISQN2jYU9PT/TuLfoCcktx1gsODoadnR1SUlIQEBCAxMRELFq0CMuWLUNqairc3d2xcePGFuOKj49HVlYW4uPjhT1o4eHhwuPr169v9hF1dnY2CgoK4ObmJtynpaUFJyenBj2e9aqrq5GcnCxyjpycHNzc3ITnJCcng8/ni5SxsrKCqampsExSUhKGDBkicg89PDxQVlaGmzdvNnrt8vJyuLi44OHDh4iKisK1a9ewevVqCASCpm8SIaTbS88vQ9S1PADAyvEDpRwNaY1uuRRcd/W85jmcDjhJ/LoXZ1yEqqJqi+UUFBQQHh4OPz8/hIaGwsHBAS4uLvDx8YGtrS0AoFevunc6tLW1weP9b2Z3Ozs72NnZCbc/++wzHDlyBFFRUfD394euri7k5eWhoaEhct7LNm7cCB8fH2zYsEGk7pbY29ujb9+++O233zBr1iyEh4cjJCQEd+/eFSnXUpz1xo4di5UrVwq3P/30U0yYMAGrVq0CAAwYMADnz5/H8ePHm41LR0cHu3btgry8PKysrDBx4kTExcXBz88PAKCvrw9LS8smzy8oKACABols7969hcdeVlRUhNra2kbPuXXrlrBeJSWlBgNw/ltvQUFBo3X8N66XHThwAI8fP8bly5ehq6sLAOjXr1+T7SOE9AzbTt0GY8BEW0MM7qMl7XBIK1APIBHh7e2NvLw8REVFwdPTE2fOnIGDg4NIr1VjysvLsWrVKlhbW0NbWxvq6upIT09v0LPWktTUVIwbN65dsfv6+iIsLAwJCQmoqKiAl5dXu+N0dHQU2c7IyGjQE9manslBgwZBXl5euG1oaCjyHp6/v79YBo5IS2pqKuzt7YXJHyGk50u+9xR/pRdCjgOscB8g7XBIK1EPoASpKKjg4oyLUrluWygrK8Pd3R3u7u4ICAjAggULEBgYiLlz5zZ5zqpVqxAbG4vg4GD069cPKioqeOONN1o9gEIYq0rbYv2vmTNnYvXq1Vi/fj1mzZoFBYWGH+/WxqmmptbuOP5LUVFRZJvD4bTpcWh9b2lhYSEMDQ2F+wsLC5ucckZfXx/y8vINRvQWFhYK6+PxeKiurkZJSYlIL+DLZV4eOVxfZ1O9uB358yOEdD+MMWz9s+7JwhvDjGHZS13KEZHWoh5ACeJwOFBVVJX4T0dHYtnY2KCiokK4raioiNraWpEyiYmJmDt3LqZNm4YhQ4aAx+MhJydHpIySklKD815ma2vb7h4xXV1dTJ48GQkJCfD19W20TGvibMzAgQOF7zvWe3lbHCwsLMDj8UTuSVlZGS5evAhnZ+dGz1FSUsKwYcNEzhEIBIiLixOeM2zYMCgqKoqUycjIQG5urrCMs7Mzbty4IdJjGRsbC01NTdjY2DR6bVtbW6SmpqK4uLj9jSaEdBuJmU9w4W4xlOTlsMyNev+6E0oAidCTJ08wduxY7Nu3D9evX0d2djYiIyOxZcsWTJkyRVjO3NwccXFxKCgowNOnTwEA/fv3x+HDh5Gamopr165hxowZDXq6zM3NcfbsWTx8+BBFRUWNxhAYGIiDBw8iMDAQ6enpuHHjBr788stWtyE8PBxFRUWwsrJq9Hhr4mzM0qVLcfLkSYSEhODOnTv4/vvvER0d3eHketeuXc0+8uZwOPjggw/w+eefIyoqCjdu3MDs2bNhZGSEqVOnCsuNGzcOu3btEm6vWLECu3fvRkREBNLT07F48WJUVFRg3rx5AOoGksyfPx8rVqxAfHw8kpOTMW/ePDg7O+OVV14BAIwfPx42NjaYNWsWrl27hj///BNr167FkiVLwOVyG413+vTp4PF4mDp1KhITE3H37l38/vvvTQ5YIYR0X//t/Zv5iin6aNMTgO6EEkAipK6uDicnJ2zfvh1jxozB4MGDERAQAD8/P5HkYtu2bYiNjYWJiQns7e0BACEhIdDR0cHIkSMxadIkeHh4wMHBQaT+oKAg5OTkwNLSUjiY5GWurq6IjIxEVFQUhg4dirFjxzZ4DNkcFRWVZufia02cjRk1ahRCQ0MREhICOzs7xMTEYPny5VBWVm51bI0pKipCVlZWs2VWr16NpUuXYuHChRg+fDjKy8sRExMjcu2srCyRpPrtt99GcHAw1q1bh6FDhyI1NRUxMTEigzq2b9+O1157Dd7e3hgzZgx4PB4OHz4sPC4vL4/jx49DXl4ezs7OeOeddzB79mwEBQU1GauSkhJOnToFAwMDeHl5YciQIdi8ebPIe5CEkJ7h5I0CXHtQClUlebznSoO9uhsOa+0cIaSBsrIyaGlpobS0FJqamiLHKisrkZ6eDmtra6iqtjwCl3Q/fn5+uHXrFs6dOyftUHqU+u9OdnY2EhIS4O3tDVdXV2mHJXF8Ph8nT56El5dXg3dJZYWs34Ou3P7qGgHctyfg3pNKfODWHx+I4fGvONvf3O9vWUGDQAhppeDgYLi7u0NNTQ3R0dGIiIjAt99+K+2wCCFE4g5cvId7Tyqhr86F3//1lXY4pB0oASSklS5duoQtW7bg2bNn6Nu3L3bu3IkFCxZIOyxCCJGoshd87DydCQBY7t4falxKJbojifyplZSU4MiRIzh37hzu3buHyspK9OrVC/b29vDw8MDIkSMlEQYhHXLo0CFph0AIIVL3fUIWiiuq0beXGt52NJF2OKSdxDoIJC8vDwsWLIChoSE+//xzPH/+HEOHDsW4ceNgbGyM+Ph4uLu7w8bGBr/++qs4QyGEEEJIB+WXPseec9kAgDWeVlCQp7Gk3ZVYewDt7e0xZ84cJCcnNzlv2PPnz3H06FHs2LED9+/fFy61RQghhJCuZXvsbVTVCDDcXAfuNr1bPoF0WWJNANPS0pqdkgOom7Zj+vTpmD59Op48eSLOcAghhBDSTrcKyvBb8gMAwMde1h2eB5VIl1j7bltK/jpanhBCCCGS8WX0LQgY4DWEBwdTHWmHQzpI7INABAIBbt68iSFDhgAAQkNDRdZdlZeXx+LFiyEnR+8REEIIIV3R+cwixGc8hoIcBx96NL7SEulexJ4A/vLLLwgNDcXZs2cBAB9++CG0tbWhoFB36aKiIigrK2P+/PniDoUQQgghbSQQMGyK/nfJNydTWOirSTki0hnE3u0WFhaGJUuWiOxLSEhAdnY2srOzsXXrVuzbt0/cYZAuKjw8HNra2tIOo1OsX78eQ4cOlXYYhBDSqY5dz8ONh6VQU5LH0nH9pR0O6SRiTwBv3boFR0fHJo+7uLjg2rVr4g6DtNLjx4+xePFimJqagsvlgsfjwcPDA4mJicIyHA4HR48ebXPd5ubm2LFjh8i+t99+G7dv3253vOHh4eBwOLC2tm5wLDIyEhwOB+bm5u2uvy1WrVqFuLi4Tq+XMYZ169bB0NAQKioqcHNzw507d1o875tvvoG5uTmUlZXh5OTUYE3lH374Aa6urtDU1ASHw0FJSUmDOoqLizFz5kxoampCW1sb8+fPR3l5eWc1jRDSxT2vrsXmf3v/FrtaQl+dK+WISGcRewL4+PFjke27d++K/EJWVFRERUWFuMMgreTt7Y2UlBRERETg9u3biIqKgqurq9hGaKuoqMDAwKBDdaipqeHRo0dISkoS2b93716Ympp2qG4AIu+sNkddXV0sA5m2bNmCnTt3IjQ0FBcvXoSamho8PDzw4sWLJs/59ddfsWLFCgQGBuLq1auws7ODh4cHHj16JCxTWVkJT09PfPLJJ03WM3PmTNy8eROxsbE4fvw4zp49i4ULF3Zq+wghXdfuc3eRX/oCfbRVsICWfOtZmJiZmpqyEydONHk8KiqKmZqaijsMsSgtLWUAWGlpaYNjFRUV7MqVK6yiokIKkbXP06dPGQB25syZJsuYmZkxAMIfMzMzxhhjmZmZbPLkyczAwICpqakxR0dHFhsbKzzPxcVF5Lz6j15YWBjT0tISuUZUVBRzdHRkXC6X6enpsalTpzYZT/35/v7+bMGCBcL99+/fZ1wul61Zs0YYY2virG9jUFAQmzVrFtPQ0GBz5sxhjDH2ww8/MGNjY6aiosKmTp3Ktm3bJhJ7YGAgs7OzE27PmTOHTZkyhW3dupXxeDymq6vL3nvvPVZdXd1ke14mEAgYj8djW7duFe4rKSlhXC6XHTx4sMnzRowYwZYsWSLcrq2tZUZGRmzTpk0NysbHxzMA7OnTpyL709LSGAB2+fJl4b7o6GjG4XDYw4cPm7z206dP2cKFC5mBgQHjcrls0KBB7NixY61pLmPsf9+dyMhI5u/vz+Lj41t9bk9SXV3Njh492qbPS08j6/dA2u3PL3nOrNZGM7OPjrOo1Ka/8+IizvY39/tbVoi9B3DcuHHYuHFjU8knNm3ahHHjxok7jC6BMQZBZaXEfxhjrYpPXV0d6urqOHr0KKqqqhotc/nyZQB173bm5+cLt8vLy+Hl5YW4uDikpKTA09MTkyZNQm5uLgDg8OHDMDY2RlBQEPLz85Gfn99o/SdOnMC0adPg5eWFlJQUxMXFYcSIES3G7uvri0OHDqGyshJA3aNhT09P9O4tOlFpS3HWCw4Ohp2dHVJSUhAQEIDExEQsWrQIy5YtQ2pqKtzd3Zv8XP9XfHw8srKyEB8fj4iICISHhyM8PFx4fP369c0+os7OzkZBQQHc3NyE+7S0tODk5NSgx7NedXU1kpOTRc6Rk5ODm5tbk+c0JikpCdra2iKvcLi5uUFOTg4XL15s9ByBQIAJEyYgMTER+/btQ1paGjZv3gx5eflWX5cQ0jVs+fMWnvNrMcxMB6/ZGko7HNLJxD4K+NNPP4WDgwOcnJywatUqDBgwAACQkZGB4OBgZGRk4KeffhJ3GF0Ce/4cGQ7DJH7dgVeTwVFVbbGcgoICwsPD4efnh9DQUDg4OMDFxQU+Pj6wtbUFAPTq1QsAoK2tDR6PJzzXzs4OdnZ2wu3PPvsMR44cQVRUFPz9/aGrqwt5eXloaGiInPeyjRs3wsfHBxs2bBCpuyX29vbo27cvfvvtN8yaNQvh4eEICQnB3bt3Rcq1FGe9sWPHYuXKlcLtTz/9FBMmTBCuVDNgwACcP38ex48fbzYuHR0d7Nq1C/Ly8rCyssLEiRMRFxcHPz8/AIC+vj4sLS2bPL+goAAAGiSyvXv3Fh57WVFREWpraxs959atW83G+/K1X348r6CgAF1d3Sav/ddff+HSpUtIT08Xftf79qXHRoR0N9ful+Dw1YcAgHWv2dCkzz2Q2HsALS0tERsbi2fPnuHtt9+Gg4MDHBwc4OPjg/Lycpw6dQr9+vUTdxiklby9vZGXl4eoqCh4enrizJkzcHBwEOm1akx5eTlWrVoFa2traGtrQ11dHenp6Q161lqSmpra7h5hX19fhIWFISEhARUVFfDy8mp3nC8PXMrIyGjQE9manslBgwaJ9H4ZGhqKvIfn7+8vloEj0pKamgpjY2Nh8kcI6X4YY/jseBoA4HWHPrAz0ZZuQEQsxN4DCNT9okxLS0NqaqpwxGf//v1hb28vict3GRwVFQy8miyV67aFsrIy3N3d4e7ujoCAACxYsACBgYGYO3duk+esWrUKsbGxCA4ORr9+/aCiooI33nij1QMo6qm0Mdb/mjlzJlavXo3169dj1qxZwrkm2xOnmlrnzHOlqKgoss3hcCAQCFp9fn1vaWFhIQwN//cIprCwsMkpZ/T19SEvL4/CwkKR/YWFhc32vjZ27f8mqwBQU1OD4uLiJuvpyJ8fIaRrOHEjH1fuPYWKojxW06TPPZZEl98YOnQo3nrrLbz11lsyl/wBdb/85VRVJf7T0a57GxsbkZHaioqKqK2tFSmTmJiIuXPnYtq0aRgyZAh4PB5ycnJEyigpKTU472W2trbt7hHT1dXF5MmTkZCQAF9f30bLtCbOxgwcOFD4vmO9l7fFwcLCAjweT+SelJWV4eLFi3B2dm70HCUlJQwbNkzkHIFAgLi4uCbPaYyzszNKSkqQnPy/f7ScPn0aAoEATk5OjZ5ja2uLBw8edGhqH0KI9Lzg12LTybpXRRa5WIKnpSzliIi4iD0BtLGxQXFxsXD7vffeQ1FRkXD70aNHUG3F+2lE/J48eYKxY8di3759uH79OrKzsxEZGYktW7ZgypQpwnLm5uaIi4tDQUEBnj59CqCuR/fw4cNITU3FtWvXMGPGjAY9Xebm5jh79iwePnwo8hn4r8DAQBw8eBCBgYFIT0/HjRs38OWXX7a6DeHh4SgqKoKVVeP/am1NnI1ZunQpTp48iZCQENy5cwfff/89oqOjO5xc79q1q9lH3hwOBx988AE+//xzREVF4caNG5g9ezaMjIwwdepUYblx48Zh165dwu0VK1Zg9+7diIiIQHp6OhYvXoyKigrMmzdPWKagoACpqanIzMwEANy4cQOpqanC76u1tTU8PT3h5+eHS5cuITExEf7+/vDx8YGRkVGj8bq4uGDMmDHw9vZGbGwssrOzER0djZiYmI7cJkKIhOz9OxsPS57DUEsZC8fQ+7s9mUQmgq6pqRFu79u3D2VlZcJtxliz85kRyVFXV4eTkxO2b9+OMWPGYPDgwQgICICfn59IcrFt2zbExsbCxMRE2JMbEhICHR0djBw5EpMmTYKHhwccHBxE6g8KCkJOTg4sLS2Fg0le5urqisjISERFRWHo0KEYO3ZsgwmMm6OiotLsXHytibMxo0aNQmhoKEJCQmBnZ4eYmBgsX74cysod+9dxUVERsrKymi2zevVqLF26FAsXLsTw4cNRXl6OmJgYkWtnZWWJJNVvv/02goODsW7dOgwdOhSpqamIiYkRGRgSGhoKe3t74YCUMWPGwN7eHlFRUcIy+/fvh5WVFcaNGwcvLy+MHj0aP/zwQ7Px/v777xg+fDimT58OGxsbrF69usWeX0KI9D0qe4Fv4uv+QbhmghVUlGj0fk/GYa2dI6Sd5OTkREYTamho4Nq1a8KRgYWFhTAyMuqWvyDKysqgpaWF0tJSaGpqihyrrKxEeno6rK2tqYezh/Lz88OtW7dw7tw5aYfSo9R/d7Kzs5GQkABvb2+4urpKOyyJ4/P5OHnyJLy8vBq8SyorZP0eSLr9qyKv4bfkB7A31cbhxSOlPvJXnO1v7ve3rJDIIBBCeoLg4GC4u7tDTU0N0dHRiIiIwLfffivtsAghpMOu5j7Fb8kPANC0L7JC7I+AORxOgw9SRz9YZ8+exaRJk2BkZNRgXVo+n4+PPvoIQ4YMgZqaGoyMjDB79mzk5eWJ1GFubi6Mrf5n8+bNHYqL9GyXLl2Cu7s7hgwZgtDQUOzcuRMLFiyQdliEENIhtQKGwD9uAgDeHGYMe1MdKUdEJEHsPYCMMYwbN044Jcfz588xadIkKCkpAYDI+4GtVVFRATs7O/j6+uL1118XOVZZWYmrV68iICAAdnZ2ePr0KZYtW4bJkyfjypUrImWDgoKE7z8BdY+nCWnKoUOHpB0CIYR0ukNX7uPGw1JocBWw2pOmfZEVYk8AAwMDRbb/O5q0nre3d5vqnDBhAiZMmNDoMS0tLcTGxors27VrF0aMGIHc3FyYmpoK97e0KgUhhBDSk5VUVmNLTN20L8vdB6CXBlfKERFJkXgCKA2lpaXgcDjQ1tYW2b9582Z89tlnMDU1xYwZM7B8+fJGJw8mhBBCeqKQ2Nt4WsnHwN4amO1sJu1wiARJNNspKipCTk4OOBwOzM3Nm52uo7O8ePECH330EaZPny4y0uf999+Hg4MDdHV1cf78eXz88cfIz89HSEhIk3VVVVWhqqpKuF0/nQ2fzwefzxcp+/I2IaRt6mcGqK2tlcnvU32bZbHt9WT9Hoi7/Wn5Zdh34R4AIGDiQDBBLfiCrjMjhzjbL6ufqf+SSAJ48+ZNLF68GImJiSL7XVxc8N1332HgwIFiuS6fz8dbb70Fxhi+++47kWMrVqwQ/r+trS2UlJTw7rvvYtOmTeByG+8C37RpEzZs2NBg/6lTpxpM9aKoqCgy5xohpG0ePqxbiP769esoLy+XcjTS8/IrLbJI1u+BONrPGLDzpjwEjAN7PQGepF/AyfROv0ynEEf7KysrO73O7kbsCWBBQQFcXFzQq1cvhISEwMrKCowxpKWlYffu3fi///s//PPPP8J5AjtLffJ37949nD59usV5fpycnFBTU4OcnJwmE9KPP/5YJHEsKyuDiYkJxo8f3+g8gPUrLBBC2q5Pnz7Izs6Gra0txowZI+1wJI7P5yM2Nhbu7u4yOQceQPdAnO3/41o+7l64ARVFOXw1bwwMu+CSb+Js/38XpJBVYk8At2/fDjMzMyQmJoqsXODp6YnFixdj9OjR2L59OzZt2tRp16xP/u7cuYP4+PhWPWpOTU2FnJxcs4kol8tttHdQUVGxwYdTFv+yIqQzycvLC/8ry9+nxv5+kTWyfg86u/3PXvDx5Z9163X7j+0PU/2uPQOGOP78ZfnzVE/s8wDGxsbio48+anTJLBUVFXz44Yf4888/21RneXk5UlNTkZqaCgDIzs5GamoqcnNzwefz8cYbb+DKlSvYv38/amtrUVBQgIKCAlRXVwMAkpKSsGPHDly7dg13797F/v37sXz5crzzzjvQ0aH5jyQpPDy8weCc7mr9+vUYOnSotMMghJBmfX06E4+fVcFcTxUL/s9C2uEQKRF7Anj37t1m11p1dHTE3bt321TnlStXYG9vL1yHdsWKFbC3t8e6devw8OFDREVF4cGDBxg6dCgMDQ2FP+fPnwdQ15P3yy+/wMXFBYMGDcLGjRuxfPnyFtc4lQWPHz/G4sWLYWpqCi6XCx6PBw8PD5H3N1+efLu1zM3NsWPHDpF9b7/9Nm7fvt3ueMPDw8HhcGBtbd3gWGRkpHDAkSSsWrUKcXFxnV4vYwzr1q2DoaEhVFRU4Obmhjt37jR7TnOTpbel3uLiYsycOROamprQ1tbG/PnzZfp9PEK6u9uFz/Dj39kAgMDJg8BVoPV+ZZXYHwE/e/as2ffvNDQ02vwLxdXVFc0tYdzS8sYODg64cOFCm64pK7y9vVFdXY2IiAj07dsXhYWFiIuLw5MnT8RyPRUVFaioqHSoDjU1NTx69AhJSUlwdnYW7t+7d6/IvI/tVV1dLZy4vDnq6upQV1fv8PVetmXLFuzcuRMRERGwsLBAQEAAPDw8kJaW1mjPOtD8ZOltqXfmzJnIz89HbGws+Hw+5s2bh4ULF+LAgQOd3k5CiHgxxrD2yD+oETC42/TGqwM799170s0wMZOTk2OZmZmstLS00Z/bt28zOTk5cYchFqWlpQwAKy0tbXCsoqKCXblyhVVUVEghsvZ5+vQpA8DOnDnTZBkzMzMGQPhjZmbGGGMsMzOTTZ48mRkYGDA1NTXm6OjIYmNjhee5uLiInFf/0QsLC2NaWloi14iKimKOjo6My+UyPT09NnXq1CbjqT/f39+fLViwQLj//v37jMvlsjVr1ghjbE2c9W0MCgpis2bNYhoaGmzOnDmMMcZ++OEHZmxszFRUVNjUqVPZtm3bRGIPDAxkdnZ2wu05c+awKVOmsK1btzIej8d0dXXZe++9x6qrq5tsz8sEAgHj8Xhs69atwn0lJSWMy+WygwcPtqoOAOzIkSNtrjctLY0BYJcvXxaWiY6OZhwOhz18+LDJ6z19+pQtXLiQGRgYMC6XywYNGsSOHTvWqlgZ+993JzIykvn7+7P4+PhWn9uTVFdXs6NHj7bp89LTyPo96Oz2H7qcy8w+Os6s1kazB08rO6VOcRLnn39zv79lhdgfATPGMGDAAOjo6DT6I64pYLoixhj4VbUS/2Et9IjWq+/BOnr0qMh8h/91+fJlAEBYWBjy8/OF2+Xl5fDy8kJcXBxSUlLg6emJSZMmITc3FwBw+PBhGBsbIygoCPn5+cjPz2+0/hMnTmDatGnw8vJCSkoK4uLiMGLEiBZj9/X1xaFDh4RD+8PDw+Hp6dlgKp6W4qwXHBwMOzs7pKSkICAgAImJiVi0aBGWLVuG1NRUuLu7Y+PGjS3GFR8fj6ysLMTHxyMiIgLh4eEIDw8XHl+/fn2zj6izs7NRUFAANzc34T4tLS04OTkhKSmpxet3pN6kpCRoa2vD0dFRWMbNzQ1ycnK4ePFio/UKBAJMmDABiYmJ2LdvH9LS0rB582bhgA5CiHQ8rajGF//O87LcvT/6aHfsyQvp/sT+CDg+Pl7cl+g2aqoF+GFZgsSvu/ArFyhyW/4FrKCggPDwcPj5+SE0NBQODg5wcXGBj48PbG1tAQC9evUCAGhra4sso2dnZwc7Ozvh9meffYYjR44gKioK/v7+0NXVhby8fIvL723cuBE+Pj4i8y3+t96m2Nvbo2/fvvjtt98wa9YshIeHIyQkpMH7pS3FWW/s2LFYuXKlcPvTTz/FhAkTsGrVKgDAgAEDcP78eRw/frzZuHR0dLBr1y7Iy8vDysoKEydORFxcnHANan19fVhaWjZ5fkFBAQA0SGR79+4tPNYeram3oKCgwah4BQUF6OrqNnntv/76C5cuXUJ6ejoGDBgAAOjbt2+74ySEdI7N0beEK37MG0UDP4gEEkAXFxdxX4J0Im9vb0ycOBHnzp3DhQsXEB0djS1btmDPnj2YO3duk+eVl5dj/fr1OHHiBPLz81FTU4Pnz5836FlrSWpqqjA5aitfX1+EhYXB1NQUFRUV8PLywq5du9oV5397vQAgIyMD06ZNE9k3YsSIFhPAQYMGifR+GRoa4saNG8Jtf39/kcSzu0tNTYWxsbEw+SOESN+VnGL8euU+AGDjtMFQlBf7wz/SDYg1AayoqICamprYync3CkpyWPiV5BNiBaW2fdmVlZXh7u4Od3d3BAQEYMGCBQgMDGw2AVy1ahViY2MRHByMfv36QUVFBW+88YZw6p3W6siAkJkzZ2L16tVYv349Zs2a1ei6zq2Ns7M+hy/PNcXhcCAQCFp9fn1vaWFhIQwNDYX7CwsLOzTlTGvq5fF4ePTokch5NTU1KC4ubrIXt6MDegghnYtfK8CnR/4BAPgMN4Gjua6UIyJdhVj/GdCvXz9s3ry5yfe9gLr34mJjYzFhwgTs3LlTnOFIHYfDgSJXXuI/HA6nQ3Hb2NigoqJCuK2oqChcp7VeYmIi5s6di2nTpmHIkCHg8XjIyckRKaOkpNTgvJfZ2tq2eyoVXV1dTJ48GQkJCfD19W20TGvibMzAgQOF7zvWe3lbHCwsLMDj8UTuSVlZGS5evCgy4lkc9To7O6OkpATJycnCMqdPn4ZAIICTk1Oj9dra2uLBgwcdmtqHENJ5fvw7GxmFz6CrpoSPPK2kHQ7pQsTaA3jmzBl88sknWL9+Pezs7ODo6AgjIyMoKyvj6dOnSEtLQ1JSEhQUFPDxxx/j3XffFWc4pAVPnjzBm2++CV9fX9ja2kJDQwNXrlzBli1bMGXKFGE5c3NzxMXFYdSoUeByudDR0UH//v1x+PBhTJo0CRwOBwEBAQ16uszNzXH27Fn4+PiAy+VCX1+/QQyBgYEYN24cLC0t4ePjg5qaGpw8eRIfffRRq9oQHh6Ob7/9tsnVX1oTZ2OWLl2KMWPGICQkBJMmTcLp06cRHR3d4eR6165dOHLkSJNJL4fDwQcffIDPP/8c/fv3F07XYmRkhKlTpwrLjRs3DtOmTRM+Ti4vLxdZirB+snRdXV2Ympq2ql5ra2t4enoK3wnl8/nw9/eHj48PjIyMGo3XxcUFY8aMgbe3N0JCQtCvXz/cunULHA4Hnp6eHbpXhJC2eVjyHDv+qpvb8+MJVtBRa3k6KyI7xNoDOHDgQPz++++4ffs23nrrLTx8+BC//fYbdu/ejTNnzqBPnz7YvXs3cnJy8N5779FIQSlTV1eHk5MTtm/fjjFjxmDw4MEICAiAn5+fyLt027ZtQ2xsLExMTISTcYeEhEBHRwcjR47EpEmT4OHh0WAC8KCgIOTk5MDS0lI4mORlrq6uiIyMRFRUFIYOHYqxY8fi0qVLrW6DiopKs0v/tSbOxowaNQqhoaEICQmBnZ0dYmJisHz58ibn4WutoqIiZGVlNVtm9erVWLp0KRYuXIjhw4ejvLwcMTExItfOyspCUVGRcLu5ydLbUu/+/fthZWWFcePGwcvLC6NHj25xwvTff/8dw4cPx/Tp02FjY4PVq1e32PNLCOl866Nu4jm/FiMsdPHGMGNph0O6GA5r7RwhpIGysjJoaWmhtLS0wWTXlZWVSE9Ph7W1NVRVVaUUIREnPz8/3Lp1C+fOnZN2KD1K/XcnOzsbCQkJ8Pb2hqurq7TDkjg+n4+TJ0/Cy8tLZtctlfV70JH2x6YVwu+nK1CQ4+Dksv/DgN5de73fxojzz7+539+yQuyjgAnpKYKDg+Hu7g41NTVER0cjIiIC3377rbTDIoQQEeVVNQj8o27gh9+Yvt0y+SPiRwkgIa106dIlbNmyBc+ePUPfvn2xc+dOLFiwQNphEUKIiOA/M5BX+gImuip4f2x/aYdDuihKAAlppUOHDkk7BEIIaVbyvaeISMoBAGyaZgsVJXq3njSOZoMkhBBCeoDqGgHW/H4djAHeDsYY3b/hTAuE1JNYAsjn85s89t/Ri4QQQghpu+/OZOHOo3LoqSlh7URraYdDujiJJYA+Pj5obMBxYWGhTI7wI4QQQjpL5qNn+Ca+bu7PwMmDaM4/0iKJJYC5ubkNXpgvKCiAq6srrKxodnJCCCGkPQQChjW/30B1rQBjrQwwydaw5ZOIzJNYAnjy5EmcP38eK1asAADk5eXBxcUFQ4YMoZfrCSGEkHbafykXV+49hZqSPD6bOrjDKxQR2SCxUcC9evXCqVOnMHr0aADA8ePH4eDggP3790NOjsaiEEIIIW2VX/ocX0bfAgB86DEQfbRVpBwR6S4kmnmZmJggNjYW+/fvx4gRI3Dw4EFa/k3GhYeHQ1tbW9phdIr169dj6NCh0g6DECIjGGMIOPoPyqtqYG+qjVnO5tIOiXQjYk0AdXR0oKurK/LzyiuvoLS0FMeOHYOenp5wP+kaHj9+jMWLF8PU1BRcLhc8Hg8eHh5ITEwUluFwODh69Gib6zY3N8eOHTtE9r399tu4fft2u+MNDw8Hh8OBtXXDEW+RkZHgcDgwNzdvd/1tsWrVKsTFxXV6vYcPH8b48eOhp6cHDoeD1NTUVp0XGRkJKysrKCsrY8iQITh58qTIccYY1q1bB0NDQ6ioqMDNzQ137twRKVNcXIyZM2dCU1MT2tramD9/PsrLyzuraYSQDjhxIx9/pT+CojwHX3rbQl6OHv2S1hPrI+CXf9mTrs/b2xvV1dWIiIhA3759UVhYiLi4ODx58kQs11NRUYGKSsceWaipqeHRo0dISkqCs7OzcP/evXthamra0RBRXV0NJaWWR9Spq6tDXV29w9d7WUVFBUaPHo233noLfn5+rTrn/PnzmD59OjZt2oTXXnsNBw4cwNSpU3H16lUMHjwYALBlyxbs3LkTERERsLCwQEBAADw8PJCWlgZlZWUAwMyZM5Gfn4/Y2Fjw+XzMmzcPCxcuxIEDBzq9nYSQ1ntSXoXAP24CABa7WNJyb6TtGGm30tJSBoCVlpY2OFZRUcGuXLnCKioqpBBZ+zx9+pQBYGfOnGmyjJmZGQMg/DEzM2OMMZaZmckmT57MDAwMmJqaGnN0dGSxsbHC81xcXETOq//ohYWFMS0tLZFrREVFMUdHR8blcpmenh6bOnVqk/HUn+/v788WLFgg3H///n3G5XLZmjVrhDG2Js76NgYFBbFZs2YxDQ0NNmfOHMYYYz/88AMzNjZmKioqbOrUqWzbtm0isQcGBjI7Ozvh9pw5c9iUKVPY1q1bGY/HY7q6uuy9995j1dXVTbanOdnZ2QwAS0lJabHsW2+9xSZOnCiyz8nJib377ruMMcYEAgHj8Xhs69atwuMlJSWMy+WygwcPMsYYS0tLYwDY5cuXhWWio6MZh8NhDx8+bPLaT58+ZQsXLmQGBgaMy+WyQYMGsWPHjrW6nfXfncjISObv78/i4+NbfW5PUl1dzY4ePdruz0tPIOv3oLn2v7c/mZl9dJyND0lgL/g1UohO/MT559/c729ZIdFRwH/++WeD/adOnUJ0dLSkwpAqxhj4L15I/Ic1Mv9iY+p7sI4ePYqqqqpGy1y+fBkAEBYWhvz8fOF2eXk5vLy8EBcXh5SUFHh6emLSpEnIzc0FUPcY09jYGEFBQcjPz0d+fn6j9Z84cQLTpk2Dl5cXUlJSEBcXhxEjRrQYu6+vLw4dOoTKykoAdY+GPT090bt3b5FyLcVZLzg4GHZ2dkhJSUFAQAASExOxaNEiLFu2DKmpqXB3d8fGjRtbjCs+Ph5ZWVmIj49HREQEwsPDER4eLjy+fv16sTyiTkpKgpubm8g+Dw8PJCUlAQCys7NRUFAgUkZLSwtOTk7CMklJSdDW1oajo6OwjJubG+Tk5HDx4sVGrysQCDBhwgQkJiZi3759SEtLw+bNm+ldX0I60ckb+ThxPR/ychwEv2kHrgJ9v0jbSWwU8Jo1a7B58+YG+wUCAdasWYMJEyZIKhSpqamqws45b0j8uu9H/AbFfx/pNUdBQQHh4eHw8/NDaGgoHBwc4OLiAh8fH9ja2gKoG80NANra2uDxeMJz7ezsYGdnJ9z+7LPPcOTIEURFRcHf3x+6urqQl5eHhoaGyHkv27hxI3x8fLBhwwaRultib2+Pvn374rfffsOsWbMQHh6OkJAQ3L17V6RcS3HWGzt2LFauXCnc/vTTTzFhwgSsWrUKADBgwACcP38ex48fbzYuHR0d7Nq1C/Ly8rCyssLEiRMRFxcnfJSrr68PS0vLFtvXVgUFBQ2S3969e6OgoEB4vH5fc2UMDAxEjisoKEBXV1dY5mV//fUXLl26hPT0dAwYMAAA0Ldv3443iBACACiuqEbA0X8A1D36HWKsJeWISHclsR7AO3fuwMbGpsF+KysrZGZmSioM0gJvb2/k5eUhKioKnp6eOHPmDBwcHER6rRpTXl6OVatWwdraGtra2lBXV0d6enqDnrWWpKamYty4ce2K3dfXF2FhYUhISEBFRQW8vLzaHed/e70AICMjo0FPZGt6JgcNGiTS+2VoaIhHjx4Jt/39/cUycERaUlNTYWxsLEz+CCGdKzDqJp5UVGNgbw0sHddP2uGQbkxiPYBaWlq4e/dug8ddmZmZUFNTk1QYUqXA5eL9iN+kct22UFZWhru7O9zd3REQEIAFCxYgMDAQc+fObfKcVatWITY2FsHBwejXrx9UVFTwxhtvoLq6uk3X7siAkJkzZ2L16tVYv349Zs2aBQWFhh/v1sbZWZ9JRUVFkW0OhwOBQNApdTeHx+OhsLBQZF9hYaGw97X+v4WFhTA0NBQpUz+VDY/HE0lWAaCmpgbFxcVN9uJ2dEAPIaRpMf/k49i1PMjLcbD1TVt69Es6RGI9gFOmTMEHH3yArKws4b7MzEysXLkSkydPllQYUsXhcKCorCzxn47OCm9jY4OKigrhtqKiImpra0XKJCYmYu7cuZg2bRqGDBkCHo+HnJwckTJKSkoNznuZra1tu3vEdHV1MXnyZCQkJMDX17fRMq2JszEDBw4Uvu9Y7+XtrsTZ2bnBfYyNjRWOkrawsACPxxMpU1ZWhosXLwrLODs7o6SkBMnJycIyp0+fhkAggJOTU6PXtbW1xYMHDzo0tQ8hpKHiimqs/ffR7yKXvrA11pZuQKTbk1gCuGXLFqipqcHKygoWFhawsLCAtbU19PT0EBwcLKkwSDOePHmCsWPHYt++fbh+/Tqys7MRGRmJLVu2YMqUKcJy5ubmiIuLQ0FBAZ4+fQoA6N+/Pw4fPozU1FRcu3YNM2bMaNDTZW5ujrNnz+Lhw4coKipqNIbAwEAcPHgQgYGBSE9Px40bN/Dll1+2ug3h4eEoKipqcn3p1sTZmKVLl+LkyZMICQnBnTt38P333yM6OrrDyfWuXbtafORdXFyM1NRUpKWlAah7HJ2amiryHt7s2bPx8ccfC7eXLVuGmJgYbNu2Dbdu3cL69etx5coV4XuOHA4HH3zwAT7//HNERUXhxo0bmD17NoyMjDB16lQAgLW1NTw9PeHn54dLly4hMTER/v7+8PHxgZGRUaOxuri4YMyYMfD29kZsbCyys7MRHR2NmJiYjtwmQmTe+qibKCqvRn8Ddbw/rr+0wyE9gMQSQC0tLZw/fx4nTpzAe++9h5UrVyIuLg6nT5/uMStBdHfq6upwcnLC9u3bMWbMGAwePBgBAQHw8/PDrl27hOW2bduG2NhYmJiYwN7eHgAQEhICHR0djBw5EpMmTYKHhwccHBxE6g8KCkJOTg4sLS2Fg0le5urqisjISERFRWHo0KEYO3YsLl261Oo2qKioQE9Pr8njrYmzMaNGjUJoaChCQkJgZ2eHmJgYLF++XDhfXnsVFRWJ9Io3JioqCvb29pg4cSIAwMfHB/b29ggNDRWWyc3NFRlZPXLkSBw4cAA//PAD7Ozs8Ntvv+Ho0aPCOQABYPXq1Vi6dCkWLlyI4cOHo7y8HDExMSJt2r9/P6ysrDBu3Dh4eXlh9OjR+OGHH5qN9/fff8fw4cMxffp02NjYYPXq1S32/BJCmnYqrRBR/z76pVG/pLNwWGvnCCENlJWVQUtLC6WlpdDU1BQ5VllZifT0dFhbW0NVVVVKERJx8vPzw61bt3Du3Dlph9Kj1H93srOzkZCQAG9vb7i6uko7LInj8/k4efIkvLy8GrxLKitk/R7w+XxE/nESIbdUUVRejfdcLbHas/GnGz2ROP/8m/v9LSskNggEqFvRICEhAbm5uQ1eun///fclGQohbRYcHAx3d3eoqakhOjoaERER+Pbbb6UdFiGkB/s9R0746HeZGz36JZ1HYglgSkoKvLy8UFlZiYqKCujq6qKoqAiqqqowMDCgBJB0eZcuXcKWLVvw7Nkz9O3bFzt37sSCBQukHRYhpIc6eaMAyUVy/476pUe/pHNJLAFcvnw5Jk2ahNDQUGhpaeHChQtQVFTEO++8g2XLlkkqDELa7dChQ9IOgRAiIwrLXmDdsbqBX4vGWGCoibZ0AyI9jsQGgaSmpmLlypWQk5ODvLw8qqqqYGJigi1btuCTTz6RVBiEEEJIl8YYw+rfrqP0eQ1M1BiWuNJqOqTzSSwBVFRUhJxc3eUMDAyEKy9oaWnh/v37kgqDEEII6dL2X8xFwu3HUFKQwzv9aqEoL7Ff1USGSOwRsL29PS5fvoz+/fvDxcUF69atQ1FREX7++WeRqSl6Gkms+kBIT1L/naEJCogsyi6qwMYT6QCAVe790bvkppQjIj2VxBLAL774As+ePQMAbNy4EbNnz8bixYvRv39/7N27V1JhSIyysjLk5OSQnZ2NPn36gMvldnjSYEJ6MsYYqqqqcP/+fQgEgjYvI0hId1dTK8CKQ6l4zq/FSEs9zHnFFDExlAAS8ZBYAujo6Cj8fwMDgx6/MoCcnBxsbGyQk5OD7OxsaYdDSLfx/Plz5OfngzEGDocjfHWEkJ4uNCELKbkl0OAqYOubdpCTo04DIj4SSwDHjh2Lw4cPN1j1o6ysDFOnTsXp06clFYrEcLlcDBgwAMePH0d2djYMDQ1b/cuMMYbc3FyYmprKZM8htV82219TUyNcNeTFixcA6laoIaSn++dhKXb8dQcAsGHKIPTRVgGfz5dyVKQnk1gCeObMmUYf6bx48aJHr6TA4XDwyiuvoKioCBkZGVBRUWnVL3SBQICHDx9CIBDIZA8ItV+2219bW4uqqirweDwMGDBA2uEQIlYv+LVY/msqagQMnoN4mGbfR9ohERkg9gTw+vXrwv9PS0sTWcC+trYWMTEx6NOnbR/2s2fPYuvWrUhOTkZ+fj6OHDkiXMAeqOs9CQwMxO7du1FSUoJRo0bhu+++Q//+/5tFvbi4GEuXLsWxY8cgJycHb29vfPXVV2LpbejVqxdee+01XL9+HSUlJa16ub22thaVlZUwMTGBvLzsTf5J7Zft9isqKkJHRwePHz8Gl8uVdjiEiFXwnxm486gc+upcfPH6EJnq9SfSI/YEcOjQoeBwOOBwOBg7dmyD4yoqKvj666/bVGdFRQXs7Ozg6+uL119/vcHxLVu2YOfOnYiIiICFhQUCAgLg4eGBtLQ04UL3M2fORH5+PmJjY8Hn8zFv3jwsXLgQBw4caF9DW9CrVy+MGzeu1eVpDUxqvyy3H/jfPSCkJ/v7ThH2/F33nviWN4ZAV01JyhERWSH2BDA7OxuMMfTt2xeXLl1Cr169hMeUlJRgYGDQ5h6OCRMmYMKECY0eY4xhx44dWLt2LaZMmQIA+Omnn9C7d28cPXoUPj4+SE9PR0xMDC5fviwcnPL111/Dy8sLwcHBMDIyamdrCSGEkNYprqjGikOpAIAZTqYYa9VbugERmSL2BNDMzAwAEB8fj6FDh0JBQfSStbW1OHv2LMaMGdMp18vOzkZBQQHc3NyE+7S0tODk5ISkpCT4+PggKSkJ2traIiOT3dzcICcnh4sXL2LatGmN1l1VVYWqqirhdllZGYC6norOflm3vj5ZfQmY2i/b7QfoHsh6+4GefQ8YY/gwMhWPnlXBspca1ozv36CdPbn9rSHO9svqPf0viY4Czs/Ph4GBgcj+kpISvPrqq8KRfx1V/45h796i/5Lq3bu38FhBQUGDOBQUFKCrqyvyjuLLNm3ahA0bNjTYf+rUKaiqqnY09EbFxsaKpd7ugtov2+0H6B7IevuBnnkP/i7gIC5bHvIchtcNSxH/159Nlu2J7W8LcbS/srKy0+vsbiSWANbP6fWyJ0+eQE1NTVJhdMjHH3+MFStWCLfLyspgYmKC8ePHQ1NTs1OvxefzERsbC3d3d5l8B4zaL9vtB+geyHr7gZ57D+48Ksfq7y4AEOAjTyvMG2nWaLme2v7WEmf765/gyTKxJ4D1gzQ4HA7mzp0rMqKvtrYW169fx8iRIzvtejweDwBQWFgIQ0ND4f7CwkIMHTpUWObRo0ci59XU1KC4uFh4fmO4XG6jIxIVFRXF9uUUZ93dAbVfttsP0D2Q9fYDPesevODXYuVv/6CqRoAxA3phwf9Ztjjhc09qf3uIo/2yfD/riX2CMS0tLWhpaYExBg0NDeG2lpYWeDweFi5ciH379nXa9SwsLMDj8RAXFyfcV1ZWhosXL8LZ2RkA4OzsjJKSEiQnJwvLnD59GgKBAE5OTp0WCyGEEPJfW2IykJ5fBj01JQS/aUurfRCpEXsPYFhYGADA3Nwcq1atavRxb3FxcZvqLC8vR2ZmpnA7Ozsbqamp0NXVhampKT744AN8/vnn6N+/v3AaGCMjI+FcgdbW1vD09ISfnx9CQ0PB5/Ph7+8PHx8fGgFMCCFELM5kPMKPiXVTvgS/aQcDDWUpR0RkmcTeAQwMDGyw79SpU9i7dy+ioqLw/PnzVtd15coVvPrqq8Lt+vfy5syZg/DwcKxevRoVFRVYuHAhSkpKMHr0aMTExAjnAASA/fv3w9/fH+PGjRNOBL1z584OtJAQQghpXFF5FVZF1i2MMHekOV61MmjhDELES2IJYL179+7hxx9/REREBJ4+fYoJEybgp59+alMdrq6uza6mweFwEBQUhKCgoCbL6Orqim3SZ0IIIaRe3ZQv11BUXoWBvTWwZoKVtEMiRDIJYHV1NQ4fPow9e/YgMTERbm5uePDgAVJSUjBkyBBJhEAIIYRIxd6/sxGf8RhKCnLYOd0eyoqyt7wj6XrEPghk6dKlMDIywldffYVp06bhwYMHOHbsGDgcjkyucUoIIUR2pN4vwZcxtwAAAa/ZYCBPQ8oREVJH7D2A3333HT766COsWbMGGhr0wSeEECIbSp/zsfTgVfBrGSYOMcQ7TqbSDokQIbH3AP7888+4dOkSDA0N8fbbb+P48eOdtuoHIYQQ0hUxxrDm9+u4X/wcJroq2OQ9pNHFEAiRFrEngNOnT0dsbCxu3LgBKysrLFmyBDweDwKBAGlpaeK+PCGEECJx+y7cQ/Q/BVCU52DXdAdoKtPEw6RrEXsCWM/CwgIbNmxATk4O9u3bB29vb7zzzjswNjbG+++/L6kwCCGEELG6mVeKz46nAwDWTLCGnYm2dAMipBESnwaGw+HAw8MDHh4eKC4uxk8//SScLJoQQgjpzsqrauB/IAXVtQK4WfeG7yhzaYdESKMk1gPYGF1dXXzwwQe4du2aNMMghBBCOowxhk8O30B2UQWMtJQR/KYtvfdHuiypJoCEEEJIT3Hoyn1EXcuDvBwHX8+wh7aqkrRDIqRJlAASQgghHZRR8AyBUTcBAKvGD8QwM10pR0RI8ygBJIQQQjrg2Qs+Fu9Lxgu+AGMG9MK7Y/pKOyRCWiTWBPD1119HWVkZAOCnn35CVVWVOC9HCCGESBRjDKt/u467/773t+PtoZCTo/f+SNcn1gTw+PHjqKioAADMmzcPpaWl4rwcIYQQIlF7/84Wzvf3zUwH6KrRe3+kexDrNDBWVlb4+OOP8eqrr4IxhkOHDkFTU7PRsrNnzxZnKIQQQkinupRdjE3R/1vn195UR8oREdJ6Yk0AQ0NDsWLFCpw4cQIcDgdr165tdEg8h8OhBJAQQki38ejZC/gfuIpaAcNkOyPMesVM2iER0iZiTQBHjhyJCxcuAADk5ORw+/ZtGBgYiPOShBBCiFjV1Arw/sEUPHpWhf4G6tj0Oq3zS7ofiY0Czs7ORq9evSR1OUIIIUQsgk/dxoW7xVBTksd37wyDGlfii2oR0mES+9SamZmhpKQEe/fuRXp63RqJNjY2mD9/PrS0tCQVBiGEENJup24WIDQhCwDw5Ru26GegLuWICGkfifUAXrlyBZaWlti+fTuKi4tRXFyM7du3w9LSElevXpVUGIQQQki75BRVYGVk3dKl80aZ4zVbIylHREj7SawHcPny5Zg8eTJ2794NBYW6y9bU1GDBggX44IMPcPbsWUmFQgghhLTJ8+paLN5/Fc9e1GCYmQ4+nmAt7ZAI6RCJJYBXrlwRSf4AQEFBAatXr4ajo6OkwiCEEELahDGGNYevIz2/DHpqSvhmhgOUFGghLdK9SewTrKmpidzc3Ab779+/Dw0NDUmFQQghhLTJnnPZ+CM1D/JyHOya4QCelrK0QyKkwySWAL799tuYP38+fv31V9y/fx/379/HL7/8ggULFmD69OmSCoMQQghptb/vFGFTdN3AxYCJ1nC21JNyRIR0Dok9Ag4ODhZO+FxTUwMAUFRUxOLFi7F582ZJhUEIIYS0yv3iSvgfvAoBA7wdjDFnpLm0QyKk00gsAVRSUsJXX32FTZs2ISurbgi9paUlVFVVJRUCIYQQ0irPq2ux8OdklFTyYWushY3TBtNkz6RHkfjslaqqqhgyZIikL0sIIYS0CmMMq3+vG/Shr66E0HeGQVlRXtphEdKpaBgTIYQQ8h+7z93FsWt5UJDj4NuZw2CkrSLtkAjpdJQAEkIIIf86d+cxNkffAgCsm2SDERa6Uo6IEPGgBJAQQggBkPukEv4HUiBgwFuOxpj1ipm0QyJEbCgBJIQQIvPKq2qw8OcrKH3Oh52JNoKm0KAP0rNJNAH8+eefMWrUKBgZGeHevXsAgB07duCPP/6QZBiEEEKIUK2A4YNfUnCr4Bl6aXDxPQ36IDJAYgngd999hxUrVsDLywslJSWora0FAGhra2PHjh2SCoMQQggRseXPW/gr/RG4CnLYPduRVvogMkFiCeDXX3+N3bt349NPP4W8/P/+ZeXo6IgbN25IKgxCCCFE6LfkB/g+4S4AYMsbthhqoi3dgAiREIklgNnZ2bC3t2+wn8vloqKiQlJhEEIIIQCAKznF+ORwXQfE0rH9MGVoHylHRIjkSCwBtLCwQGpqaoP9MTExsLa2llQYhBBCCO4XV+Ldn5NRXSvAhME8LHcbIO2QCJEoia0EsmLFCixZsgQvXrwAYwyXLl3CwYMHsWnTJuzZs0dSYRBCCJFx5VU18PvpCp5UVGOQkSa2vWUHOTka8Utki8QSwAULFkBFRQVr165FZWUlZsyYASMjI3z11Vfw8fGRVBiEEEJkmEDA8MEvqbhV8Az66lzsnu0IVSWJr4pKiNRJ9FM/c+ZMzJw5E5WVlSgvL4eBgYEkL08IIUTGbfkzA3+lF0JJQQ67Z9Myb0R2SeWfPaqqqlBVVZXGpQkhhMioyCv3EZqQBQDY+oYt7E11pBwRIdIj1gTQ3t6+1TOpX716tVOvbW5uLpxs+r/ee+89fPPNN3B1dUVCQoLIsXfffRehoaGdGgchhBDpS8wswsf/jvhd8qoljfglMk+sCeDUqVPFWX2zLl++LJxsGgD++ecfuLu748033xTu8/PzQ1BQkHCbeiUJIaTnuVP4DIv2JaNGwDDJzggr3QdKOyRCpE6sCWBgYKA4q29Wr169RLY3b94MS0tLuLi4CPepqqqCx+NJOjRCCCES8ujZC8wNu4xnL2rgaKaDrW/Y0ohfQiDhtYClpbq6Gvv27YOvr6/II+n9+/dDX18fgwcPxscff4zKykopRkkIIaQzVVbXYEHEFTwseQ4LfTX8MNuR1vgl5F8SGwSio6PT6PuAHA4HysrK6NevH+bOnYt58+Z1+rWPHj2KkpISzJ07V7hvxowZMDMzg5GREa5fv46PPvoIGRkZOHz4cJP1VFVVoaqqSrhdVlYGAODz+eDz+Z0ac319nV1vd0Htl+32A3QPZL39QMfuQa2A4f2Dqbj+oBQ6qorY/Y49NJQ43ep+yvpnQJztl9V7+l8cxhiTxIW2b9+OjRs3YsKECRgxYgQA4NKlS4iJicHy5cuRnZ2Nn3/+GV9//TX8/Pw69doeHh5QUlLCsWPHmixz+vRpjBs3DpmZmbC0tGy0zPr167Fhw4YG+w8cOEDvDxJCSBdyOFsOCQVyUOAwLLGpRV9NaUdEupL6+YhLS0uhqSmbHw6JJYDe3t5wd3fHokWLRPZ///33OHXqFH7//Xd8/fXX+OGHH3Djxo1Ou+69e/fQt29fHD58GFOmTGmyXEVFBdTV1RETEwMPD49GyzTWA2hiYoKioqJO/wDx+XzExsbC3d0dioqKnVp3d0Dtl+32A3QPZL39QPvvQUTSPXx+MgMA8NVbtvAa0j3f9Zb1z4A4219WVgZ9fX2ZTgAl9gj4zz//xJdfftlg/7hx47By5UoAgJeXF9asWdOp1w0LC4OBgQEmTpzYbLn6dYoNDQ2bLMPlcsHlchvsV1RUFNuXU5x1dwfUftluP0D3QNbbD7TtHpy6WYCN0XXJ30eeVpjiYCLO0CRC1j8D4mi/LN/PehIbBKKrq9voI9hjx45BV1cXQF0vnIaGRqddUyAQICwsDHPmzIGCwv9y3aysLHz22WdITk5GTk4OoqKiMHv2bIwZMwa2traddn1CCCGSk5L7FMt+SQVjwPQRpljk0lfaIRHSZUmsBzAgIACLFy9GfHy88B3Ay5cv4+TJk8LJl2NjY0Wmaemov/76C7m5ufD19RXZr6SkhL/++gs7duxARUUFTExM4O3tjbVr13batQkhhEhO1uNy+IZfxnN+LVwG9MJnUwa1eiECQmSRxBJAPz8/2NjYYNeuXcKRtgMHDkRCQgJGjhwJAMJHwZ1l/PjxaOwVRxMTkwargBBCCOmeCsteYPbeS3hayYedsRa+nekABXmZmOWMkHaT6FrAo0aNwqhRoyR5SUIIIT1Y2Qs+5vx4CQ9LnsNcTxU/zh0ONa5UlrknpFuR6LdEIBAgMzMTjx49gkAgEDk2ZswYSYZCCCGkm3vBr8XCn67gVsEz6Ktz8ZOvE/TUGw7UI4Q0JLEE8MKFC5gxYwbu3bvX4LEsh8MRWbeXEEIIaU6tgGHFoVRcuFsMda4CwucNh6kezcdKSGtJLAFctGgRHB0dceLECRgaGtLLuYQQQtqFMYYNx27i5I0CKMpz8MOsYRjcR0vaYRHSrUgsAbxz5w5+++039OvXT1KXJIQQ0gN9eyYLPyXdA4cDhLw1FCP76Us7JEK6HYkNk3JyckJmZqakLkcIIaQHOnT5Prb+WTfR87rXbDDJzkjKERHSPUmsB3Dp0qVYuXIlCgoKMGTIkAazcNMEzIQQQpoT808+1hy+DgBY5GKJeaMspBwRId2XxBJAb29vABCZlJnD4YAxRoNACCGENOvs7cdYejAFAga85WiMjzwHSjskQro1iSWA2dnZkroUIYSQHuRqbgne/TkZ/FqGiUMMsel1WxpISEgHSSwBNDMza3S/QCDAyZMnmzxOCCFEdj2sANb+fFW4xNv2t4dCXo6SP0I6SmrTpWdmZuLHH39EeHg4Hj9+DD6fL61QCCGEdEHZRRX4Nl0e5fwaDDfXQeg7w6CkQEu8EdIZJPpNev78OX766SeMGTMGAwcOxPnz57Fu3To8ePBAkmEQQgjp4h6WPMec8GSU8zmwMdTA3rnDoaIkL+2wCOkxJNIDePnyZezZswe//PILLC0tMXPmTJw/fx7ffvstbGxsJBECIYSQbqKovAqz9lxEfukL9FZh+HHOMGgqK7Z8IiGk1cSeANra2qKsrAwzZszA+fPnMWjQIADAmjVrxH1pQggh3Uzpcz5m772Eu0UV6KOtjIV9y6GnpiTtsAjpccT+CDgjIwNjxozBq6++Sr19hBBCmvTsBR9zfryEtPwy6KtzET53GLS50o6KkJ5J7Ang3bt3MXDgQCxevBjGxsZYtWoVUlJSaAg/IYQQoYqqGswLu4zU+yXQVlXEz/NHwFxPTdphEdJjiT0B7NOnDz799FNkZmbi559/RkFBAUaNGoWamhqEh4fj9u3b4g6BEEJIF/a8uha+4Zdx5d5TaCorYN98J1gbako7LEJ6NImOAh47diz27duH/Px87Nq1C6dPn4aVlRUtA0cIITLqBb8Wfj9dwcXsYmhwFfDzfCcM7qMl7bAI6fGkMqGSlpYW3nvvPVy5cgVXr16Fq6urNMIghBAiRVU1tXj352T8nVkENSV5hPsOh52JtrTDIkQmSH1GzaFDh2Lnzp3SDoMQQogEVdcI8N6+q0i4/RgqivIImzcCw8x0pR0WITJD6gkgIYQQ2cKvFWDpwauIu/UIXAU57J3riBEWlPwRIkmUABJCCJEYfq0Ay35JwZ83C6GkIIfdsx0x0lJf2mERInOkthYwIYQQ2VJdU9fz9+fNQijJyyH0HQeMGdBL2mERIpMoASSEECJ2VTW1WLL/Kv5KfwQlBTl8P2sYXh1oIO2wCJFZYk0A2zK44/333xdjJIQQQqTlBb8Wi/clIz7jMbj/Pvalnj9CpEusCeD27dtFth8/fozKykpoa2sDAEpKSqCqqgoDAwNKAAkhpAeqn+fv3J0iKCvKYe+c4RjVj975I0TaxDoIJDs7W/izceNGDB06FOnp6SguLkZxcTHS09Ph4OCAzz77TJxhEEIIkYL6FT7O3SmCqpI8wueNoOSPkC5CYqOAAwIC8PXXX2PgwIHCfQMHDsT27duxdu1aSYVBCCFEAiqqajA37BLOZz2BmpI8InxH4JW+etIOixDyL4kNAsnPz0dNTU2D/bW1tSgsLJRUGIQQQsSs7AUfvmF1a/tqcBUQ7jsCw8x0pB0WIeQ/JNYDOG7cOLz77ru4evWqcF9ycjIWL14MNzc3SYVBCCFEjJ6UV2H6Dxfqkj9lBfy8wImSP0K6IIklgD/++CN4PB4cHR3B5XLB5XIxYsQI9O7dG3v27JFUGIQQQsQkv/Q53vo+CTfzyqCvroRfFzpjKK3tS0iXJLFHwL169cLJkydx+/Zt3Lp1CwBgZWWFAQMGSCoEQgghYpJTVIGZey7iYclzGGkpY98CJ/TtpS7tsAghTZD4RNDm5uZgjMHS0hIKCjQPNSGEdHcZBc/wzt6LePysChb6ati3wAl9tFWkHRYhpBkSewRcWVmJ+fPnQ1VVFYMGDUJubi4AYOnSpdi8ebOkwiCEENKJUu+X4O0fkvD4WRWseBo49K4zJX+EdAMSSwA//vhjXLt2DWfOnIGysrJwv5ubG3799VdJhUEIIaSTJGU9wczdF1BSyYe9qTZ+XeiMXhpcaYdFCGkFiT2DPXr0KH799Ve88sor4HA4wv2DBg1CVlaWpMIghBDSCWL+KcD7v6SgukaAkZZ62D3bEWpceq2HkO5CYt/Wx48fw8Cg4cLfFRUVIgkhIYSQrm3fhXtY98c/EDDA3aY3vp5uD2VFeWmHRQhpA4k9AnZ0dMSJEyeE2/VJ3549e+Ds7CypMAghhLQTYwwhsbex9mhd8jd9hAm+m+lAyR8h3ZDEegC/+OILTJgwAWlpaaipqcFXX32FtLQ0nD9/HgkJCZIKgxBCSDvU1AoQ8Mc/OHjpPgDg/XH9sdytPz3BIaSbklgP4OjRo5GamoqamhoMGTIEp06dgoGBAZKSkjBs2DBJhUEIIaSNXvBrsWjfVRy8dB9yHODzqYOxwn0AJX+EdGMSSwABwNLSErt378alS5eQlpaGffv2YciQIWK51vr168HhcER+rKyshMdfvHiBJUuWQE9PD+rq6vD29qY1iQkh5CUlldWYueci/kovhJKCHL6dOQzvvGIm7bAIIR0ksQRQXl4ejx49arD/yZMnkJcXz/sjgwYNQn5+vvDn77//Fh5bvnw5jh07hsjISCQkJCAvLw+vv/66WOIghJDu6GHJc7wZmoTke0+hqayAffOd4DmYJ+2wCCGdQGLvADLGGt1fVVUFJSUlsVxTQUEBPF7Dv6xKS0uxd+9eHDhwAGPHjgUAhIWFwdraGhcuXMArr7wilngIIaS7uP6gBPMjruDxsyrwNJUR4TsCA3ka0g6LENJJxJ4A7ty5E0DdqN89e/ZAXf1/a0PW1tbi7NmzIo9mO9OdO3dgZGQEZWVlODs7Y9OmTTA1NUVycjL4fD7c3NyEZa2srGBqaoqkpKQmE8CqqipUVVUJt8vKygAAfD4ffD6/U2Ovr6+z6+0uqP2y3X6A7oE02x+b9ggrfruOF3wBBvZWx+5ZDjDUUpZ4LPQZoPb/97/iqFuWcVhTXXOdxMLCAgBw7949GBsbizzuVVJSgrm5OYKCguDk5NSp142OjkZ5eTkGDhyI/Px8bNiwAQ8fPsQ///yDY8eOYd68eSLJHACMGDECr776Kr788stG61y/fj02bNjQYP+BAwegqqraqfETQoikMQacyefgj3tyYODAWluAuf0FUKb5nUkPU1lZiRkzZqC0tBSamprSDkcqxJ4A1nv11Vdx+PBh6OjoSOJyDZSUlMDMzAwhISFQUVFpVwLYWA+giYkJioqKOv0DxOfzERsbC3d3dygqKnZq3d0BtV+22w/QPZB0+2tqBfj8ZAb2/zvNy/Thxlg30QoK8hIdKyiCPgPUfnG1v6ysDPr6+jKdAErs33Xx8fGSulSjtLW1MWDAAGRmZsLd3R3V1dUoKSmBtra2sExhYWGj7wzW43K54HIbrnOpqKgoti+nOOvuDqj9st1+gO6BJNpfXlUD/4PXcCbjMTgc4FMva8wfbdFlpnmhzwC1v7PbL8v3s57EEsDa2lqEh4cjLi4Ojx49gkAgEDl++vRpsV6/vLwcWVlZmDVrFoYNGwZFRUXExcXB29sbAJCRkYHc3FxalYQQIlPySp7DN/wybhU8g7KiHHa8bU8jfQmRARJLAJctW4bw8HBMnDgRgwcPFvu/LFetWoVJkybBzMwMeXl5CAwMhLy8PKZPnw4tLS3Mnz8fK1asgK6uLjQ1NbF06VI4OzvTCGBCiMxIvleMd3++iqLyKuirc7F3jiPsTLSlHRYhRAIklgD+8ssvOHToELy8vCRyvQcPHmD69Ol48uQJevXqhdGjR+PChQvo1asXAGD79u2Qk5ODt7c3qqqq4OHhgW+//VYisRFCiLQdunIfa4/8g+paAax4GtgzxxHGOjSYjRBZIbEEUElJCf369ZPU5fDLL780e1xZWRnffPMNvvnmGwlFRAgh0ldTK8AXJ2/hx8RsAMCEwTwEv2kHNS4N9SVElkhseNfKlSvx1VdfNTkhNCGEEPEqqazGvPDLwuTvA7f++GaGAyV/hMggiX3r//77b8THxyM6OhqDBg1qMALn8OHDkgqFEEJkTuajZ1gQcQU5TyqhoiiPkLfsMGGIobTDIoRIicQSQG1tbUybNk1SlyOEEPKvuPRCLPslFeVVNeijrYLdsx1hYySbc58RQupILAEMCwuT1KUIIYQAqBUwfPXXbew8nQkAGGGhi+9mOkBPveF8poQQ2SLRFz9qampw5swZZGVlYcaMGdDQ0EBeXh40NTVF1ggmhBDSMU8rqvH+Lyk4d6cIADDrFTMEvGYDJQXprexBCOk6JJYA3rt3D56ensjNzUVVVRXc3d2hoaGBL7/8ElVVVQgNDZVUKIQQ0qNdf1CCxfuu4mHJcygrymHT60Mwzd5Y2mERQroQif1TcNmyZXB0dMTTp0+hoqIi3D9t2jTExcVJKgxCCOnRfrmUize+S8LDkucw11PFkfdGUfJHCGlAYj2A586dw/nz56GkpCSy39zcHA8fPpRUGIQQ0iO94Ndi3R//4NCVBwAAd5veCH7TDloqtOYpIaQhiSWAAoEAtbW1DfY/ePAAGhoakgqDEEJ6nOyiCvgfuIqbeWWQ4wArxw/EYhdLyMmJd8lNQkj3JbFHwOPHj8eOHTuE2xwOB+Xl5QgMDJTY8nCEENLT/JH6EK/tPIebeWXQVVPCT75OWPJqP0r+CCHNklgP4LZt2+Dh4QEbGxu8ePECM2bMwJ07d6Cvr4+DBw9KKgxCCOkRKqtrsD7qpvCR7wgLXXzlMxSGWiotnEkIIRJMAI2NjXHt2jX88ssvuH79OsrLyzF//nzMnDlTZFAIIYSQ5mUUPIP/gau486gcHA6wdGx/vD+2HxTkaYoXQkjrSHQeQAUFBbzzzjuSvCQhhPQYjDH8cvk+1kfdRFWNAAYaXOzwGYqRlvrSDo0Q0s1INAHMy8vD33//jUePHkEgEIgce//99yUZCiGEdCulz/lYe/QfHLuWBwAYM6AXQt6ygz6t6kEIaQeJJYDh4eF49913oaSkBD09PXA4/3tBmcPhUAJICCFNSMp6gpWHUpFX+gLychx86DEQC/+vLw30IIS0m8QSwICAAKxbtw4ff/wx5OToPRVCCGlJjQD48s/b2JuYA8YAMz1VbH97KBxMdaQdGiGkm5NYAlhZWQkfHx9K/gghpBVuFz5DyA15PKzMAQD4DDdBwGs2UONK9M0dQkgPJbFsbP78+YiMjJTU5QghpFsSCBj2/p2NaaEX8bCSAx1VRXw/axg2e9tS8kcI6TQS+9tk06ZNeO211xATE4MhQ4ZAUVF0eaKQkBBJhUIIIV1SXslzfPjbNSRmPgEA2GgLsGfhSBjpqks5MkJITyPRBPDPP//EwIEDAaDBIBBCCJFVjDH8evk+Pj+RjvKqGigrymGN50BoP76BXho0ypcQ0vkkuhLIjz/+iLlz50rqkoQQ0uU9LHmONb9fx7k7RQAAe1NtBL9pB1NtLk6evCHl6AghPZXEEkAul4tRo0ZJ6nKEENKlMcZw4FIuvjiRjorqWnAV5PChx0DMG2UBeTkO+Hy+tEMkhPRgEhsEsmzZMnz99deSuhwhhHRZ94srMXPPRXx65B9UVNfC0UwH0cv+Dwv+ry/kaW4/QogESKwH8NKlSzh9+jSOHz+OQYMGNRgEcvjwYUmFQgghUlErYPg5KQdb/sxAZXUtlBXl8KGHFeaONKfEjxAiURJLALW1tfH6669L6nKEENKl3MwrxSeHb+Dag1IAwAhzXWx5wxbm+mpSjowQIosklgCGhYVJ6lKEENJlVFTVYMdft/FjYg5qBQwaygpY7WmFmSNMaSk3QojU0KyihBAiJnHphVj3x008LHkOAJhoa4jA12xgoKks5cgIIbJOYgmgvb19o/P9cTgcKCsro1+/fpg7dy5effVVSYVECCFiUVj2AhuO3cTJGwUAgD7aKvh86mC8amUg5cgIIaSOxEYBe3p64u7du1BTU8Orr76KV199Ferq6sjKysLw4cORn58PNzc3/PHHH5IKiRBCOlV1jQDfJ2RhbPAZnLxRAHk5Dt516YvYFWMo+SOEdCkS6wEsKirCypUrERAQILL/888/x71793Dq1CkEBgbis88+w5QpUyQVFiGEdIqE24+x4dhN3H1cAQAYaqKNL6YNgY2RppQjI4SQhiSWAB46dAjJyckN9vv4+GDYsGHYvXs3pk+fTmsCE0K6ldwnlfjsRBpi0woBAPrqSvjI0wreDsY0yIMQ0mVJLAFUVlbG+fPn0a9fP5H958+fh7Jy3QvRAoFA+P+EENKVPa+uxXdnMhF69i6qawSQl+Ng7khzLHPrD01lxZYrIIQQKZJYArh06VIsWrQIycnJGD58OADg8uXL2LNnDz755BMAwJ9//omhQ4dKKiRCCGkzgYAh6loetsTcQl7pCwDAqH56WD9pEPr31pBydIQQ0joSSwDXrl0LCwsL7Nq1Cz///DMAYODAgdi9ezdmzJgBAFi0aBEWL14sqZAIIaRNLtx9go0n0nHjYd1kzn20VbB2ojU8B/ManeWAEEK6KonOAzhz5kzMnDmzyeMqKioSjIYQQlon63E5Np28hb/S697zU+cqYLGrJeaPtoCyoryUoyOEkLajiaAJIaQJT8qr8FXcHey/mItaAYO8HAczRphimVt/6KtzpR0eIYS0m8QSQDk5uWYfkdTW1koqFEIIaVZ5VQ32nsvGnnN38ayqBgDgZt0bayZYoZ+BupSjI4SQjpNYAnjkyBGRbT6fj5SUFERERGDDhg2SCoMQQpr0gl+Ln5Pu4dszmXhayQcADO6jiU+8rDHSUl/K0RFCSOeRWALY2OTOb7zxBgYNGoRff/0V8+fPl1QohBAiorpGgF+v3Meu03dQWFYFAOirr4YV4wfAa7AhzedHCOlxJLYUXFNeeeUVxMXFdXq9mzZtwvDhw6GhoQEDAwNMnToVGRkZImVcXV3B4XBEfhYtWtTpsRBCuqZaAcPvyQ8wLuQMAo7+g8KyKvTRVsGWN2xxavkYvGZrRMkfIaRHkuogkOfPn2Pnzp3o06dPp9edkJCAJUuWYPjw4aipqcEnn3yC8ePHIy0tDWpqasJyfn5+CAoKEm6rqqp2eiyEkK6lplaAY9fzsOt0JrL+XbpNX52LpWP7wWeECbgKNLKXENKzSSwB1NHRERkEwhjDs2fPoKqqin379nX69WJiYkS2w8PDYWBggOTkZIwZM0a4X1VVFTwer9OvTwjpevi1Ahy5+hDfnMnEvSeVAAAtFUUscrHEnJFmUFWiiREIIbJBYn/b7dixQ2RbTk4OvXr1gpOTE3R0dMR+/dLSuolbdXV1Rfbv378f+/btA4/Hw6RJkxAQEEC9gIT0MFU1tYi88gDfncnCw5LnAAAdVUUs+L++mOVsRku3EUJkjsQSwDlz5jR57J9//sHgwYPFdm2BQIAPPvgAo0aNErnOjBkzYGZmBiMjI1y/fh0fffQRMjIycPjw4UbrqaqqQlVVlXC7rKwMQN2IZj6f36kx19fX2fV2F9R+2W4/0Dn34Hl1LX5NfoA953JQ+Kzuu6uvroQFo83h42gMNa5Ch68hLvQZoHtA7Rdf+2X1nv4XhzHGpHHhZ8+e4eDBg9izZw+Sk5PFOg/g4sWLER0djb///hvGxsZNljt9+jTGjRuHzMxMWFpaNji+fv36RqesOXDgAPUaEtKFlPOBcwVyOFfAQUVN3asnWkoMbkYCvGLAoESv+BEi0yorKzFjxgyUlpZCU1NT2uFIhcQTwLNnz2Lv3r34/fffYWRkhNdffx3e3t4YPny4WK7n7++PP/74A2fPnoWFhUWzZSsqKqCuro6YmBh4eHg0ON5YD6CJiQmKioo6/QPE5/MRGxsLd3d3KCrK3uMpar9stx9o3z3IeVKBvYn3cCQlD1U1AgCAsY4K3v0/C0yzNwJXQeoTH7QafQboHlD7xdf+srIy6Ovry3QCKJFHwAUFBQgPD8fevXtRVlaGt956C1VVVTh69ChsbGzEck3GGJYuXYojR47gzJkzLSZ/AJCamgoAMDQ0bPQ4l8sFl9tw+SdFRUWxfTnFWXd3QO2X7fYDrbsHyfeK8cPZuziVVoj6f9LaGWth4RhLeA7mQb4bT+VCnwG6B9T+zm+/LN/PemJPACdNmoSzZ89i4sSJ2LFjBzw9PSEvL4/Q0FCxXnfJkiU4cOAA/vjjD2hoaKCgoAAAoKWlBRUVFWRlZeHAgQPw8vKCnp4erl+/juXLl2PMmDGwtbUVa2yEkI7j1woQ808BwhKzcTW3RLh/nJUBFo7pixEWus0uP0kIIbJM7AlgdHQ03n//fSxevBj9+/cX9+WEvvvuOwB1kz3/V1hYGObOnQslJSX89ddf2LFjByoqKmBiYgJvb2+sXbtWYjESQtru0bMXOHjxPvZfvIdH/w7sUJKXwzT7PvAbY4F+BhpSjpAQQro+sSeAf//9N/bu3Ythw4bB2toas2bNgo+Pj7gvi5ZebTQxMUFCQoLY4yCEdBxjDCn3S/DT+RycuJEPfm3d91tfnYsZTqZ4x8kUBprKUo6SEEK6D7EngK+88gpeeeUV7NixA7/++it+/PFHrFixAgKBALGxsTAxMYGGBv2LnRDSUHUtcDjlIfZfeoDrD0qF+x1MtTFnpDkmDDaEUjca2EEIIV2FxOYBVFNTg6+vL3x9fZGRkYG9e/di8+bNWLNmDdzd3REVFSWpUAghXdzNvFIcuHAPh5Pl8fzSTQCAkoIcJtsZYY6zOYYYa0k5QkII6d6ksu7RwIEDsWXLFmzatAnHjh3Djz/+KI0wCCFdSHlVDaJS8/DL5dz/9PZxYKyjgukjTOEz3AR66g1H4RNCCGk7qS58KS8vj6lTp2Lq1KnSDIMQIiX17/b9euk+jl3PQ2V13YTwivIcuFsbwLw2D8t8RoPLVZJypIQQ0rPQyueEEIm7X1yJoykPcSTlIe4WVQj39+2lhunDTfG6Qx9ocuVw8uRDyHXjOfwIIaSrogSQECIRZS/4iL6Rj9+vPsSl7GLhfmVFOUwYbIjpI0wx3FxHOHcfrdVJCCHiQwkgIURsqmsE+DvzMQ5ffYjYtELh8mwcDuDcVw/T7PtgwhBDqHPpryJCCJEk+luXENKp+LUCJGU9wYnr+Yi5WYDS5//ryetnoI7XHfpg6tA+MNJWkWKUhBAi2ygBJIR0WE2tABezi3H8ej5i/snH08r/JX366kp4zdYIrzv0wZA+WrQ8GyGEdAGUABJC2oVfK8Dl7GKc/CcfMf8UoKi8WnhMV00JEwbzMNHWEE4WepCngRyEENKlUAJICGm1iqoanL39GKfSCnH61iORx7vaqorwHMTDa7ZGeKWvLhTkaYUOQgjpqigBJIQ06/GzKsSlF+JUWiH+zixC9b8DOYC6nr5xVgaYaGuIUf30oUhJHyGEdAuUABJCRAgEDGn5ZTiT8QjxGY9xNfcpGPvfcVNdVYy36Y3xg3gYZqZDj3cJIaQbogSQEIKSymqcu1OEMxmPkXD7MYrKq0SO2xprYbxNb7jb8DCgtzoN5CCEkG6OEkBCZFCtgOFmXinOZDzGmYxHSL1fAsF/evlUleQx0lIfrgN7YZy1AQy1aMoWQgjpSSgBJEQGMMaQ9bgC57OKcD7zCZLuPhEZwAEAA3qrw3WgAVwG9IKjuQ64CvJSipYQQoi4UQJISA/1sOQ5EjOLkJT1BOezilBYJvpYV52rgJGWenVJ38Be6EMTMxNCiMygBJCQHoAxhtziSlzOeYorOcVIuvsE955UipRRUpCDo5kORvXTh7OlHmz7aNFULYQQIqMoASSkG6qpFeBWwTNczinGlZynuJxTjEfPRHv45OU4sDPWwkhLfYy01IODmQ6UFemxLiGEEEoACekWSiv5uPagBCm5JbhyrxhX7z1FRXWtSBlFeQ5sjbXhaK4DJwtdDDfXhYayopQiJoQQ0pVRAkhIF1NVU4sbD0pxNp+D07/dwPWHZcguqmhQToOrgGHmOhhuXpfs2RprUQ8fIYSQVqEEkBApqqkVIOtxBW7mleLa/RKkPihFel4ZqmsFAOQB5AvLmumpwu7fHj5HM10M5GnQJMyEEELahRJAQiSksroG6fnPkJZfhrS8UtzMK8OtgmciS6vV01FVhKFSFdzs+8PBXBd2xtrQUVOSQtSEEEJ6IkoACelkjDHklb7A7cJnyCh4hpt5dQnf3aIKkSXV6qkpycPGSBND+mhjqKk2hhprg6ehgOjoaHiNtYSiIr3HRwghpHNRAkhIOzHGUFhWhduFz/7zU47MR+Uor6pp9JxeGlwMMtKEjaEmBhlpYZCRJkx1VSH30qNcPp/f6PmEEEJIZ6AEkJAWVNcIkFtciZyiCmQXVeBuUTluF5bjduEzPHvReKKnIMeBhb4aBvA0/k32NGFjpAkDDWUJR08IIYQ0RAkgIahbGzev5DmyiyqQ86QCdx9XCP//fnGlyDq5/yUvx4GZnioG9tZA/94aGNBbHQN6a8BcTw1KCjTJMiGEkK6JEkAiExhjKCqvxoOnlbj/9Hndf4vr/vvg6XM8fPr835G3jVNVkoeFvhrM9dXQV18N/QzqEr2+vdRozVxCCCHdDiWApEeoqKpBQdkLFJa+QEFZ3U9+yQuRhO8Fv+kED6ibSNlMTw3memro20sNFvr/+zHQ4ILDoSlXCCGE9AyUAJIuizGgvKoGZWXVKCqvxpPyKhQ+qxImeYVlL1BQWvfzrIlBF//F4QCGmsow1lGFsY4KjHX//a+OCkx0VGGopUxr4xJCCJEJ/9/enQfHVd2JHv+eu3W3pJZsSZZsY1u2scEstvEe4A3JGDBDCIGZCZCNMmTg1eQZCOFN5UG9KSBT8yAvqVQxAQJD3oQhlRCYIgESEhYHiMPuBYRtFtsYIwNeJctS732X8/643a3WYiNAUhv37+M6dc49d/vdVlv907lLSwIoxoTWmqwb0Jt16ckUSjqsu9N59idzdBWSvK5Uns5Ejv29Ju7Lzwx7H3URi9b6CJMaYrTWR5nUEC0keDVMbYwxqSEm1+UJIYQQSAJ4RLrve/+T3g+7UUrx/x75A1bExI7HiDbUEBlfS21LE/GJUxk3cSZ1jZOJ2Da2aWBbBrapsA1j0GNFhiMING4QkPcCXF/j+sV2OJ33AtJ5j3TeJ533SeU9MoU6nfML/eH8RHmil/HozbiHvcZuaOEx1DgmTXUOTbURmusiTGqIMrEhWkryWuvD6bqIvJ2FEEKI4ZBPzCNQcncPeW9fOOECaaAbULUYViuGZWOaB3D8NI73CqbXgxH0QtAL9KJVgsBI4JtJ8laGvG2Qs6Jk7BgZq5aUFSdlNdBjNtJrNJKmjoQfJRE4+IzuDQ2GgoaYTX3MpqFQGmvD5K6pzqG5kOg1RA02rXuRv//SChpqY6MakxBCCFFtJAE8AtVPa0LvhMD30don0FkCnQadInDfJXDfxQNyqgbTmY1ROxvDOgGlhj696Xhp6tI9RHIHieYOEM12E8l1Ec2+g5PvJtDd5ByXbATyEcg54DrgRhS+rXAdE88x8Rwb34kQRKIEkRhE61A19dhOPVE7TtSup8apJxJtIBKrJVZTR01tHbV1ceJ1cerjcepiw7uZwnVddm2CGkfeokIIIcRIk0/XI9Cl/+f/4rouf/zjH/niF7+Ibdvksxn2d7zHh2+/wc7NG/nw7Tfw8mn83Ov4udcxrQg18WlY9gy0bsLzovi6Fq0cPKsGz6ohXTvpkPu08wmiuW4iuW6i2W5qk91EOw8Qy3YSzXZhuykUWSAxaN2sDakopCOQikAyAl2RMIn0Ihpth0XZGsMB5SjMiIkVsXCiNnbMIRqJUGNFiZlRYlYMx4zSuLebzj89T51TR8yuxbJjYEXAjIAVBcsptMtK+TwrCmZZbcj1f0IIIQRIAviZ4URjHHP8CRxz/AksveAr+J7Lzs0b2fryC7yz7iWyyQSJ7m3ANqaccDLzzj6X2UtPw/cU6Z4cqYM5kt05EgeyJA9kSXTnSHZlSBzI4rka14njOnES8WlD7t8IcjjeASLZTqKZTmpSncRTYXIYy3TRlMjTNDg3JLyO71Ajfl6hZPAVZCJhEtnrFNqOYktkG5kIZJxwZNJzNIEDga3RdgCWRjkaw9aYVoBlaWrQxHRALNDEtKam0I5iEjFsYoZFxHSIGjZRMxK2rRi26aCKyaJpF5JGu69tOmBaZW27ML+4vH2YdQdsx7CG3qZhhbcrCyGEEKNIEsDPKNOymXHKImacsoizrvgf7HhtPZueeZIdr23gg7c288Fbm4k3TWDBuecz78xzGD+xccjtaK3JpT2S3VmSBwoJYneWxIEcia4svV0Z0j15AiNC1plE1plET/3g7URjitpaiEXyRI00Nj3Y7gGs7D7M1D5I96KTKUilMdI5zEwOM+thZz2UBlNDXTYsZdEd5hVQcIjrFTNOWNKRYq3ociBbXmxFxvHIOh5ZJ0XW7iZnFxNLjbZBWRrD0thKE9VhiQRBX7tQR4OwHSv0RbQmFgSl+QOXcwp9FodIjQ0by7T5oq+x3o6FSWGxmGVtwwyTzCHnDVE+1ny7sP3ivAHThh2OqCoz7B9YD9WnjLJpa4i+AcsKIYQYNZIAHgVMy2LWks8xa8nnSHR1sumZp3h99R9JdO3nL7/8OS//5tfMXb6CRV/6W+KNzf3WVUoRrbWJ1to0T4kPuX0v79PblaW3MxMmhZ2ZftO5tEc2o8lmAGygoVCmFfYBta0R6k+MUd8cpb45Rm1TlHhzjHhTlBrLI0inCVJJgmRY8j09tL/4IifNnEmQSZHv7cFN9OAlEvjJRGHZNKTTqFQGI53F8MK7jGP5sDQmi0cwVCJ5uOSy9OoAirwVnuYuJo+ZQgJZnE7bcMCBrKPKEsz+yWY2EvblbcjZkLfCrUe0xtaUEkenLEF0SiUgonNEdDZcNtBE/EMt25eEHm67xdrm0OOzlWYpky+hMDbZZcnhwKTTOkQiavQlrEMmoIdKVo1CMcM3bnG637whyoit21dUoJl08DXUFsB2hrnuyOx7yPkUt6tklFqIo4AkgEeZeFMzp130dZZe8BXeev7PbPjDI3R9sJMNf3iU9if/wMl/fTZLL7iI+gktw96m5Zg0TqqlcVLtkPNzaZfeznC0sLezkCB2Zkl0hYmi7wYkD+RIHsixa9vg9U3LIN4UDZPDphjx5gZqm6bTOdsj9uUzqWuIDevGkSCfLyWQQTKJn0wSpFIEyRRBMkGQzoTT6XRZSeGnUnipZGmeTmfQ6QzK9wFwvLDUZ8r3NjiBdE1F2rHIWhY52yRrW+QtE98w8AyFZxoEhiqtqhVopVE6QBGgVV8JDA/P9PEsj5ztFxJHRdqG7kIS2VdUKanMOmGds8EzGdYHtY3CxsBWChuFgyr0KWzA1vSrHa2xS4W+NgF2ECasttbYQYCtA5xCbQcBduD3Ffq24xS3Q/l0gKU1yvOO2CR1NFnAUoAdFQ7kUAYlhkb/5BNVNj2w3+ifTB5iOxaKLySSWB/+sJDoH247xX4OE8/w9jtkwvtJ9jvksmoY+wz7jSCgrfNN1Kv7wbIP/xrDgP0Op83gY/3INsNbvt/+1MeIqex4PB/LT4OXA9sehTdxdVNa6+EMhRy17rzzTn70ox+xZ88e5s+fz+23387SpUuHtW5vby8NDQ309PRQXz/EedFPYeBNIJ+U1pr32jew9tGH+OCtzQAYpsmJZyxn6YUXMX7i5JEKeej9B5p0Il9KDBPFJLFQJ7tz6ODwb0EnahJvjlHfFI4eFkcRw2Qxiu2MzqNrdD6Pn0qh+yWMafK9vXR++D77dn/IgQP76entoSedJOu5oxKH0pqanEttqeSpzbnEs3mcwzxb0TfAtRX5QslZmrypw9pSuFaYLBaL269Wh55nDz0vbw0/6fy4DAwsw8RSZl+tTGxVbBtldaEQ1nYhkTAxsJTColAKCa+FgUWYcFnKwNKUlgnnF6cLy2j62gOnA42FxtJgoLG0xtQak7C2ggBDaywdYGowCECXlcAvtDVB4NF9oIvx4xow0P3mhbU/xLq6rG/g/AH7GjhfiCOU/1ffwzzzf4/oNkfz8/uzoqpHAB988EGuu+467r77bpYtW8Ztt93GOeecw5YtW2hpGf4I2ZFMKcWMBYuZsWAxH7y5mZd++wA7N7Wz+dnVvPHnp5nz3z7Psr+9mKZjpo7O/g1FbUOE2oYIk45tGDTf9wNS3bl+p5V7O7P07E/TuauHIG+Qz/p0fZCk64PkEHuAWL3TlxwW6nhjlLrGCHXjo9iRT5YgKsfBchzShmJnx3Y+eHMzu9/ZQufODgJ/6K+eq2kYR7ypmdrxjdSNb6SmYRxOrAYnGsWJxjAtG53PE+RyBG4eP50ml0yGJZUkn0mTTiZIJRMcTPTg+T5aQSrqkIo6g/YX1dDgBdRnXeLpLPHeJDXpbHiFZABmThPNfZJT4J/s70KtwLdNfMvAc0x8S+HaBp6l8CyFa4Jrgmdq8ia4ZpiU5g1NzgjImwE55eNa9C1rgWsGuKaHZ4ZJZjhfldrpQr9XWMctJKO+wagkpCNFoTANE1OZYW2ZWMoq9eXsGHW1DpZhYRlW33Kqb53i8oYy+q1bnGcoY9C6lhH2F9vh9gxMjLBWYbJsoDBRKBXWhjLCGoWpVBg/FPoZ0F9cv7yfQj+l/vJl+vrDoj2fV9etY9mSJTimRThGpAckwgFQnvjqsAzqO8yyQ/YPXF5/xHaKfcOJLxhWjIHvs2fPbia2thCOiZVv2y/bRnH/DB0LQ+2zfN1DrTOwPdT6h2szjO2WrXPI/yhH7v/hz7KqHgFctmwZS5Ys4Y477gAgCAKmTp3K1VdfzfXXX/+R638WRgCHsmvrW7z8mwfY0b4h7FCK4z7331h24UW0TJ85ovv6pIrHv+Ksc8j0+H2nl7syJMpGEPOZj/4O4EiNRd34voSwbnyE+PhIX9+4KKZtlJbPpVPsfGMj77+xkfc3b6Tz/Y5B24zF65l47GxaZsyi6ZgpNB4zlfGTJuPEakb0+P/mb84hl0jQvftDunfvonvXB3Tv/pADuz6gZ9/eIde1I1Gap0yledIUJkycTHNzC+Pq6jH8AJ3PEWSz6FwOncsRZAt1LovO5dHZbF87lyUo9IXL5ML5+Ry6tF7YxxH6a0QrhbZNtGUSWMXaIDAVgRnWfqlWuKYibypySpE3FHmlcJXCU+Cj8AnrQINGhZ9j4Y7C/ekwqes7za/DU/0U6sJpf9/QeGaAZ5bVVoBranJ2QM4JyNo+uUhAxgnIOD45R5O3A7RxqKOtDgqFqcKEt5j4GhgYhlHqLya3H6ddLEopDF3WLmy/1FYGqpAMf9T8QW2lwljL1lUoDGPo+TrQbH17KyeecCKWZQ1/e4eaz/COq3x5pcI/AErHXLggo3x5FH3bojBdPr9s+YHbKm7fwAjPSOsw3zMAz3VZ/eRTnHvueURidSP6PpIRwCoeAczn82zYsIEbbrih1GcYBmeddRYvvfRSBSMbfZOPO4G/u+H77Nm+jZd/+yDb17/M1peeY+tLzzFjwWKWXngRU+acVOkwgcL1h5OjNE4e+vrDbMrtuzGlLDEs3s3sZn1yaY9cOknXh0OPIAI4sTSG6sBNbyN9cAda+/3mN01pY9rJ8zlmzolMPHY29RNahnVd4qdlGCb1zROob55A29xT+s3LZ9Ls39nB/vfeZV/Hu+x/7106d3bg5rLs3r6N3dv7Lrg0TIumKVNpmXEsLdOPpWX2TFraZoxIwqq1BtcNk8FiUpkvJIvFdi5HkM+j83l03i3UebRb3g7r4nJBLs+ujg4mNjWB5w25TuAO3h5+389OaY3Ke5APryPM2SYZxyZjW2Qci4xtkTUsMoZFzjRxrbLR4mGeFVWHaIf7V4cd2PgkLL9wPaVfvNay71rK4qloGx2e7lZgKsKv4DEUgQGBocJiFtoqHCkNDBXWSuMbCt/QBCqcDmvw0ATKIlAmARa+MtFY+JhoZREQTgdYaEwCVFgrBdpAKwOtjXCasA0mmsJ0YQxQleqwoPvGExUmShfHCFUhIVGFdVThNVco7aO0Bzroawc+aA+0h9J+ofZAu6X+sO0CPhoNeH2jVaUycNSqeJ1b4Tq2YlHlMRZu0iG86UgVXrPwdSre+W6gVeGmJAy0YTKJqRxYnSrrM0rzdPF1NAw0Jhgq/KMHTfh3SBD+EVL4N7APCK87Rhf6CvNKff3rQAWgNEFpG+XLD+wrLle2jWIsKhhiH2XLl2+HgPef6+HqFf99ZP8jiepNADs7O/F9n9bW1n79ra2tvP3220Ouk8vlyOVypene3l4gHK1x3ZG9/qu4vZHebrmmadM579r/RefO91j3u9/wzisvsuO19ex4bT2TjzuBxV/+e9rmLxyTRGeg4R6/6cC4SVHGTYoOOT+f8Uh2h89ALD4LMdWdI9GdoWfPThKdb+HltpPt3t9vPWWMw7DbMKypGNYUUqka3l4HHW9BTUMHNfW7idXb1NQ71NQ7xOodYnU20VqLaJ1NpMbGMD/56zac41eWTcvMWbTMnEUxXQ98n+49u+js2MG+98KkcH/HDnKpJPs7drC/Ywdv8KfCBhTjWicyYfqxTGibwYTpM5nQNoOa+sGn6j+SUhCNQjSKauhLhD7N1Zmu67Jh9WpOPvvsYY2Ce65Lsms/PXv30Lt3D7379pDo3E+iq5NEdxepnh70MK51U0oRdSJEnShRxyFq2URMC9sIryu0VXjjjKXDa/5UEKB8H+UHGJ4X3jzk+2jPR3sugecR+D6B56H9sO0FAa7v4+sAD42vNZ4Kn4rpmkZYLBPXNMibJq5l4Jnhq+mZBp5pkPkYJwaUBjMwMLWJEViYvo3h2hg4KBVBEQEVCx+kriJoI0pgRNFGFG3ECMwo2nQIjKF3+nF/zuGJp0LChYcuJl792i5au6DzoF00bik504X5pXa/5cPtfGQMA+rRNJL7UAPqoZcoJpEWqpR0WvQln1ZfMkrZDRxlCXVfEjtgGkX/ZLg43N2/T5fP14WkuXjNKwHgF/4/Fvv9UluXLYMOsHa8jfvXo/MZW82q9hTwrl27OOaYY3jxxRc59dRTS/3f+973WLNmDa+88sqgdW6++Wa+//3vD+q///77qakZmVN/lZRP9HDwzY307tgaXjAOOOMaGX/CPOqmzUSZo/s9waMt8D0ye3aR+rCD1Ic78TPpsrkKZ9xEIuOmY9XNQNGEn1MEORXW+eIvvuHS4aPyCg+pNpwAw9GYpenCfKvwDSl2+MxBNQrPgdZa46WT5A50kevuLNRd+JnUkMubsVqc+gbseEOptuMN2HVxVIW+TUVrTeC6+Jk0biqBl0ripZKFdgI3lRzw8zwEpbBq6rBr67AKxa6tw6qpw4zVYEVrMCLD+7rCMC7CzzcfdKAK91YU60JfoabfdNlyZcton75S/EwsLBf4Gu3lCYIs2s+igxxaZ0Bn0DoLQaEuTOsgAzoL+B9xFMNlgbIpH+VSqjxpKJz+LvuQ1wNGy3TxA364w6ufltbhzTZB+KxRM9CYgcYIijfl6FKfGQSYQYDlh21Dh+OSFGql6T8N/QYA+xJKVbwiIEx/lCrUYTtQxZHXQjEoa4e1XzZdWqff8sXpvu0ezcbHptL0t38zottMp9N8/etfr+pTwFWbAObzeWpqanjooYe48MILS/0rV67k4MGDPProo4PWGWoEcOrUqXR2do7KNYCrV6/m7GGOfoykZPcB2h//HZueeRI3Gz6ZOVZfz0lfOJu5y88h3jxh1GMYqeNP9/bwXvsGdry6lo5N7XhlPz87GqVt3gJmLFzK9PkLicUP/TMMfE0mmSfdkyfT65LuzYelJ6wzSZdsoeTSHz36cEgqvOvZiZrkvAyNE8YRrbVxYhZ2xMSOmFiOge2YWGVtO2JiRQwsxyzMC/sNy8A0FcoY/AGR7u0JRwVLI4XvcnDP7kOHpgxqGhqoa2yidnwTdY2N1I5vIhaPE6mpDUttHZGaGkzbwbQsDMvCME0M00L7PoHv43tuofbw8jly6RS5VCqs0yny6RTpnh4SB7rY1bEDB0j3dOPl8x/58llOhLrGZmrHTaCmoYlYfROxeCORuvFEasZjReIEvsL3Anw3LJ4XEHgBnhsU+nU4r9jn+niuxnd9fFfjuX6hPywV/w2qwLINTNvoX1sGpq0wDA/Igc6idQYdZAn8NIGXxvcy+G4aL58Kv1rSzeJ7Lr6bw/fyBKN0Z3s5w7SwIg62E8F0wtqKRLCcCJbj0NV9kCltbURiNdiRKHY0ghWJhu1IFDsSwY72ta1ItDRtOc6Qybwu3figS3/sojU6KL/ZQ5f1ARSW1Xrw+rpwQnXA+rrfMoAOyvr6Rsd02fy+/Wo8z2XdK2tZsmQxVvEP8OIbrlRpgiAg8Dw83yPwPHzfw/c8fN/Hdz38wC/1Bb6PV/g/6PkeOgj3rynUhbjDUrwjvZDAB+H7PXyyS/kfARSu7Qtv/Auv7YPiHwfF5Q0VXqupCrVhFK85LLsO0uib1kHAO+9sZ9GXL6Bx8eIRfd/19vbS3Nxc1Qlg1Z4CdhyHRYsW8fTTT5cSwCAIePrpp7nqqquGXCcSiRCJRAb127Y9aknaaG77UMa3tPLXK6/kc3//VV5/6o+8/qfHSXZ1sv53v2HD7x9m5qKlnPT55cxYsARrlGP7JMd/YNeHbF//Mts3vMKuLW/3O+1X19TMsYuWMWvRUqacNG/48dsQiTqMa/7oRQM/IJvywoQwFSaHmURfgphJ5sNEMeORS3vkMx65jIfvhh8C+YxPPuMDJnsTQ36/3sdmGArDNjAthWkWkwMDw1SY1kxMaxZNbYrmNpd8dh9uppN8tgs300U+00ku3YkOXFIHu0kd7AbeGZG4hqPfl8MoB8OsR5kNKFUPKo4y6gulAVSUbE6R3Qtd/e6RyQF7CmX0DEzCLMfEtAwsxyjU5hDJmlk2v285DM1r7Rv43KnLiMScwvb65he3YZhq1C7TCAIfL5fDLRQvnyPw/TARCAKCwCcotn0frXXhg91EmSaGWWgbRuEPARPTsrCcSJisORGMw5xZKN0MNgo3w30WuK5Ldt8+4kuXVu3xv/XHP9K4ePGIH381vp4DVW0CCHDdddexcuVKFi9ezNKlS7nttttIpVJcfvnllQ7tiBCri/O5v7uEpRd8he3rX6H9qcfYuXljmFytf5lIbS3HLTudOad/gSknnHTYX+SjKZtK8v4bG+nY2E7HptcGjWK1TD+WYxcv5dhFy2iZceyoX9NomEbp2kAY+uaVofhuQC4TJoSp3izPr3mRU+YtxMtpchkPN+fj5ny8nI+b9/FyAW7Ow80Fhemwv7hM+chUEGiCnI+XO/T++9QWSls4aYNTr0Gn0UESHSTCWifRQbIwspQDnUMHYR1eg3W403yFi/iVhVJRUBGUivTVRgylalFGHcqoBVWLMmpR6vC/tJUKkzDTNrAKSa5pm2UjYoUEyjaGWK5s5KzQZzlhgjYosSv2DUjcRvK95boub+/yOeb4cRX7sDIMM3yM0Qjd3S6EOHJUdQJ4ySWXsH//fm688Ub27NnDKaecwhNPPDHoxpBqZ5gms5edxuxlp9H1wfts/vNq3n5hDckDXWx65ik2PfMUkdpa2uYuYMaCxbTNO2XQV86NpNTBbnZv28LubW/z/pub2PPOtn6jfIZpMfWkuRy7eBnHLlpKffNn45mOpm1QY4eJY22jTfRNn5kLJnyiD3+tNb4XEHhh7ZfqgMAvnOb0Anw/PI0ZeDpse0HhLFR4Ciq8dEsXzmz19Q2cXzwthOo73aNLF3/76MAvGxWyMAxVWt4wFIZZLEaprXXA2vVrOe20z2FHbMyyeQOXLSZ1hlnlz0gRQohhquoEEOCqq6465ClfMVjTlKl8/pvf4oyvX8YHb23mref/zLa1L5FNJtj68vNsffl5AOJNE5h03BwmHjubxslTaDxmCg0TWoc9Sqi1xs/n6dz5Hj17d9P1wft0fdDB3ne307t/8PPvxk+eQtvcU2ibt4CpJ84lchTclPNpKKWwbDP87rbPKNd12bjDZ+KxDXK6RgghRljVJ4Dik1GGwdST5jH1pHmcdeUq9ryzjR3t69nx2gb27dhOoms/iZf2s/Wl5/qtU1PfQE3DOGL1DVhO4UYB08J3XdxcFjeXI9N7kMSBLrxcjh0P3TfEzhXNU6YxafbxTD7uBKbNPYX6MbgxRQghhDhaSAIoPjXDMJl83BwmHzeH0y/+Jvlshr3bt7Fr2xb2vfdu+O0Vuz7Ec/NlNxEMT6S2jsZjptB0zDSap06jeep0Js46rupH+IQQQohPQxJAMeKcaKw0Olikg4DkwQOkDx4k3dtDprcHzy0+JNfDtO3wzsBolFi8nmi8gefXruNLX/6ynP4TQgghRpgkgGJMKMMg3tg87JtDXNfFsOTtKYQQQowGuWVOCCGEEKLKSAIohBBCCFFlJAEUQgghhKgykgAKIYQQQlQZSQCFEEIIIaqMJIBCCCGEEFVGEkAhhBBCiCojCaAQQgghRJWRBFAIIYQQospIAiiEEEIIUWUkARRCCCGEqDKSAAohhBBCVBlJAIUQQgghqoxV6QA+y7TWAPT29o74tl3XJZ1O09vbi23bI779I50cf3UfP8hrUO3HD/IayPGP3vEXP7eLn+PVSBLATyGRSAAwderUCkcihBBCiI8rkUjQ0NBQ6TAqQulqTn8/pSAI2LVrF/F4HKXUiG67t7eXqVOn8v7771NfXz+i2/4skOOv7uMHeQ2q/fhBXgM5/tE7fq01iUSCyZMnYxjVeTWcjAB+CoZhMGXKlFHdR319fVX+xy+S46/u4wd5Dar9+EFeAzn+0Tn+ah35K6rOtFcIIYQQoopJAiiEEEIIUWUkATxCRSIRbrrpJiKRSKVDqQg5/uo+fpDXoNqPH+Q1kOOv7uMfbXITiBBCCCFElZERQCGEEEKIKiMJoBBCCCFElZEEUAghhBCiykgCKIQQQghRZSQBPALdeeedTJ8+nWg0yrJly1i7dm2lQxozf/nLXzj//POZPHkySikeeeSRSoc0pm699VaWLFlCPB6npaWFCy+8kC1btlQ6rDFz1113MW/evNKDX0899VQef/zxSodVUT/4wQ9QSnHttddWOpQxcfPNN6OU6lfmzJlT6bDG3Icffsg3v/lNmpqaiMVizJ07l/Xr11c6rDExffr0Qe8BpRSrVq2qdGhHFUkAjzAPPvgg1113HTfddBOvvvoq8+fP55xzzmHfvn2VDm1MpFIp5s+fz5133lnpUCpizZo1rFq1ipdffpnVq1fjui4rVqwglUpVOrQxMWXKFH7wgx+wYcMG1q9fz/Lly7ngggt44403Kh1aRaxbt45///d/Z968eZUOZUyddNJJ7N69u1Sef/75Soc0prq7uzn99NOxbZvHH3+cN998kx//+MeMHz++0qGNiXXr1vX7+a9evRqAiy66qMKRHV3kMTBHmGXLlrFkyRLuuOMOIPy+4alTp3L11Vdz/fXXVzi6saWU4uGHH+bCCy+sdCgVs3//flpaWlizZg1nnHFGpcOpiMbGRn70ox/xD//wD5UOZUwlk0kWLlzIT3/6U/71X/+VU045hdtuu63SYY26m2++mUceeYT29vZKh1Ix119/PS+88ALPPfdcpUM5Ilx77bU89thjbNu2DaVUpcM5asgI4BEkn8+zYcMGzjrrrFKfYRicddZZvPTSSxWMTFRKT08PECZB1cb3fR544AFSqRSnnnpqpcMZc6tWreK8887r9/ugWmzbto3Jkyczc+ZMvvGNb7Bz585KhzSmfve737F48WIuuugiWlpaWLBgAT/72c8qHVZF5PN5fvnLX/Ktb31Lkr8RJgngEaSzsxPf92ltbe3X39rayp49eyoUlaiUIAi49tprOf300zn55JMrHc6Y2bRpE3V1dUQiEf7xH/+Rhx9+mBNPPLHSYY2pBx54gFdffZVbb7210qGMuWXLlvGf//mfPPHEE9x1113s2LGDv/qrvyKRSFQ6tDHz7rvvctdddzF79myefPJJvv3tb3PNNddw3333VTq0MffII49w8OBBLrvsskqHctSxKh2AEGJoq1atYvPmzVV3/dPxxx9Pe3s7PT09PPTQQ6xcuZI1a9ZUTRL4/vvv853vfIfVq1cTjUYrHc6YO/fcc0vtefPmsWzZMtra2viv//qvqrkMIAgCFi9ezC233ALAggUL2Lx5M3fffTcrV66scHRj6z/+4z8499xzmTx5cqVDOerICOARpLm5GdM02bt3b7/+vXv3MnHixApFJSrhqquu4rHHHuPZZ59lypQplQ5nTDmOw6xZs1i0aBG33nor8+fP59/+7d8qHdaY2bBhA/v27WPhwoVYloVlWaxZs4af/OQnWJaF7/uVDnFMjRs3juOOO4533nmn0qGMmUmTJg36g+eEE06oulPhHR0d/OlPf+KKK66odChHJUkAjyCO47Bo0SKefvrpUl8QBDz99NNVeQ1UNdJac9VVV/Hwww/zzDPPMGPGjEqHVHFBEJDL5Sodxpg588wz2bRpE+3t7aWyePFivvGNb9De3o5pmpUOcUwlk0m2b9/OpEmTKh3KmDn99NMHPf5p69attLW1VSiiyrj33ntpaWnhvPPOq3QoRyU5BXyEue6661i5ciWLFy9m6dKl3HbbbaRSKS6//PJKhzYmkslkv7/0d+zYQXt7O42NjUybNq2CkY2NVatWcf/99/Poo48Sj8dL1342NDQQi8UqHN3ou+GGGzj33HOZNm0aiUSC+++/nz//+c88+eSTlQ5tzMTj8UHXfNbW1tLU1FQV14L+0z/9E+effz5tbW3s2rWLm266CdM0+drXvlbp0MbMd7/7XU477TRuueUWLr74YtauXcs999zDPffcU+nQxkwQBNx7772sXLkSy5JUZVRoccS5/fbb9bRp07TjOHrp0qX65ZdfrnRIY+bZZ5/VwKCycuXKSoc2JoY6dkDfe++9lQ5tTHzrW9/SbW1t2nEcPWHCBH3mmWfqp556qtJhVdznP/95/Z3vfKfSYYyJSy65RE+aNEk7jqOPOeYYfckll+h33nmn0mGNud///vf65JNP1pFIRM+ZM0ffc889lQ5pTD355JMa0Fu2bKl0KEcteQ6gEEIIIUSVkWsAhRBCCCGqjCSAQgghhBBVRhJAIYQQQogqIwmgEEIIIUSVkQRQCCGEEKLKSAIohBBCCFFlJAEUQgghhKgykgAKIYQQQlQZSQCFEEeVyy67jAsvvLBi+7/00ku55ZZbhrXsV7/6VX784x+PckRCCDGYfBOIEOIzQyl12Pk33XQT3/3ud9FaM27cuLEJqszrr7/O8uXL6ejooK6u7iOX37x5M2eccQY7duygoaFhDCIUQoiQJIBCiM+MPXv2lNoPPvggN954I1u2bCn11dXVDSvxGi1XXHEFlmVx9913D3udJUuWcNlll7Fq1apRjEwIIfqTU8BCiM+MiRMnlkpDQwNKqX59dXV1g04Bf+ELX+Dqq6/m2muvZfz48bS2tvKzn/2MVCrF5ZdfTjweZ9asWTz++OP99rV582bOPfdc6urqaG1t5dJLL6Wzs/OQsfm+z0MPPcT555/fr/+nP/0ps2fPJhqN0trayle+8pV+888//3weeOCBT//iCCHExyAJoBDiqHfffffR3NzM2rVrufrqq/n2t7/NRRddxGmnncarr77KihUruPTSS0mn0wAcPHiQ5cuXs2DBAtavX88TTzzB3r17ufjiiw+5j40bN9LT08PixYtLfevXr+eaa67hX/7lX9iyZQtPPPEEZ5xxRr/1li5dytq1a8nlcqNz8EIIMQRJAIUQR7358+fzz//8z8yePZsbbriBaDRKc3MzV155JbNnz+bGG2+kq6uLjRs3AnDHHXewYMECbrnlFubMmcOCBQv4+c9/zrPPPsvWrVuH3EdHRwemadLS0lLq27lzJ7W1tXzpS1+ira2NBQsWcM011/Rbb/LkyeTz+X6nt4UQYrRJAiiEOOrNmzev1DZNk6amJubOnVvqa21tBWDfvn1AeDPHs88+W7qmsK6ujjlz5gCwffv2IfeRyWSIRCL9blQ5++yzaWtrY+bMmVx66aX86le/Ko0yFsViMYBB/UIIMZokARRCHPVs2+43rZTq11dM2oIgACCZTHL++efT3t7er2zbtm3QKdyi5uZm0uk0+Xy+1BePx3n11Vf59a9/zaRJk7jxxhuZP38+Bw8eLC1z4MABACZMmDAixyqEEMMhCaAQQgywcOFC3njjDaZPn86sWbP6ldra2iHXOeWUUwB48803+/VblsVZZ53FD3/4QzZu3Mh7773HM888U5q/efNmpkyZQnNz86gdjxBCDCQJoBBCDLBq1SoOHDjA1772NdatW8f27dt58sknufzyy/F9f8h1JkyYwMKFC3n++edLfY899hg/+clPaG9vp6Ojg1/84hcEQcDxxx9fWua5555jxYoVo35MQghRThJAIYQYYPLkybzwwgv4vs+KFSuYO3cu1157LePGjcMwDv1r84orruBXv/pVaXrcuHH89re/Zfny5Zxwwgncfffd/PrXv+akk04CIJvN8sgjj3DllVeO+jEJIUQ5eRC0EEKMkEwmw/HHH8+DDz7Iqaee+pHL33XXXTz88MM89dRTYxCdEEL0kRFAIYQYIbFYjF/84heHfWB0Odu2uf3220c5KiGEGExGAIUQQgghqoyMAAohhBBCVBlJAIUQQgghqowkgEIIIYQQVUYSQCGEEEKIKiMJoBBCCCFElZEEUAghhBCiykgCKIQQQghRZSQBFEIIIYSoMpIACiGEEEJUmf8PGMibFYFYIo8AAAAASUVORK5CYII=", - "text/html": [ - "\n", - "
\n", - "
\n", - " Figure\n", - "
\n", - " \n", - "
\n", - " " - ], - "text/plain": [ - "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Simulate Different Static Margins by Varying Fin Position\n", - "simulation_results = []\n", - "fitted_values = []\n", - "max_time = 7\n", - "\n", - "for static_margin in [-0.1, -0.01, 0, 0.01, 0.1, 1.0]:\n", - " DummyRocket = setup_rocket_with_given_static_margin(DummyRocket, static_margin)\n", - "\n", - " # Simulate\n", - " print(f'Simulating Rocket with Static Margin of {DummyRocket.staticMargin(0):1.3f}')\n", - " TestFlight = Flight(\n", - " rocket=DummyRocket, environment=Env,\n", - " inclination=90, heading=0,\n", - " initialSolution=[0, 0, 0, 100, 0, 0, 100, 1.0, 0.0, 0.0, 0.0, 0, 0, 0], # Start at 100 m of altitude and 100 m/s of vertical velocity\n", - " maxTime=max_time, maxTimeStep=1e-2,\n", - " verbose=True\n", - " )\n", - " TestFlight.postProcess(interpolation=\"linear\", extrapolation=\"natural\") # Compute Augmented Angle of Attack\n", - "\n", - " # Augmented Angle of Attack\n", - " timeSource = TestFlight.angleOfAttack.source[:, 0]\n", - " angleOfAttackSource = TestFlight.angleOfAttack.source[:, 1]\n", - " # Loop through the data and invert sign when a first derivative singularity is found near zero\n", - " for i in range(0, len(angleOfAttackSource)-2, 1):\n", - " i0, i1, i2 = i, i + 1, i + 2\n", - " x0, x1, x2 = timeSource[([i0, i1, i2])]\n", - " y0, y1, y2 = angleOfAttackSource[([i0, i1, i2])]\n", - " y2_linear_prediction = y1 + ((y1 - y0)/(x1 - x0))*(x2 - x1)\n", - " if np.sign(y2) != np.sign(y2_linear_prediction):\n", - " angleOfAttackSource[i+2:] *= -1\n", - " # Make sure maximum angle of attack is positive (convetion)\n", - " if np.max(np.abs(angleOfAttackSource)) == -1*np.min(angleOfAttackSource):\n", - " angleOfAttackSource = -1*angleOfAttackSource\n", - " # Transform data into function\n", - " augmentedAngleOfAttack = Function(\n", - " np.array([timeSource, angleOfAttackSource]).transpose(),\n", - " inputs='Time',\n", - " outputs='Augmented Angle of Attack (DEG)'\n", - " )\n", - "\n", - " # Store Results\n", - " simulation_results += [(augmentedAngleOfAttack, f'Static Margin: {static_margin:.3f} c')]\n", - "\n", - " # Fit augmented angle of attack curve\n", - " from scipy import optimize\n", - " popt, pcov = optimize.curve_fit(augmented_angle_of_attack_theoretical_function, timeSource, angleOfAttackSource)\n", - " theoreticalAugmentedAngleOfAttack = Function(\n", - " np.array([timeSource, augmented_angle_of_attack_theoretical_function(timeSource, *popt)]).transpose(),\n", - " inputs='Time',\n", - " outputs='Theoretical Augmented Angle of Attack (DEG)'\n", - " )\n", - " # simulation_results += [(theoreticalAugmentedAngleOfAttack, f'Fitted - Static Margin: {static_margin:.3f} c')]\n", - " fitted_values += [(popt, f'Static Margin: {static_margin:.3f} c')]\n", - "\n", - "Function.comparePlots(simulation_results, lower=0, upper=max_time, xlabel='Time (s)', ylabel='Augmented Angle of Attack (DEG)')" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[(array([0.01632274, 0.14708815, 1.07998145, 1.09671736]),\n", - " 'Static Margin: -0.100 c'),\n", - " (array([ 1.75584946e+03, -1.75593120e+03, 6.72428545e-01, 6.71191834e-01]),\n", - " 'Static Margin: -0.010 c'),\n", - " (array([-2.99046199e+03, 2.99617261e+03, 3.51354962e-04, -3.53551230e-01]),\n", - " 'Static Margin: 0.000 c'),\n", - " (array([ 1.75585292e+03, -1.75586082e+03, 1.04843976e+00, 5.42382160e-01]),\n", - " 'Static Margin: 0.010 c'),\n", - " (array([-9.55929173e+03, 9.56512275e+03, 1.02319091e+00, -4.25697732e-01]),\n", - " 'Static Margin: 0.100 c'),\n", - " (array([-3.26129944e+04, 3.26187513e+04, -3.31543819e+00, -4.78319665e-01]),\n", - " 'Static Margin: 1.000 c')]" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fitted_values" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Time tests" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "13.5 s ± 601 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" - ] - } - ], - "source": [ - "%timeit TestFlight.postProcess(interpolation=\"spline\", extrapolation=\"natural\")" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "4.3 s ± 360 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" - ] - } - ], - "source": [ - "%timeit TestFlight.postProcess(interpolation=\"linear\", extrapolation=\"natural\")" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "d6b6104057cbd8e3515b495d4ad438447abc2a04d02aeef1e410f2c6dd1be54c" - }, - "kernelspec": { - "display_name": "Python 3.9.7 64-bit ('rocketpy_tests': conda)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.0" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} From 56e421ce19ff97b284bd9809792bc1a2b259477f Mon Sep 17 00:00:00 2001 From: Mateus Stano <69485049+MateusStano@users.noreply.github.com> Date: Sat, 12 Feb 2022 10:30:57 -0300 Subject: [PATCH 52/59] Reformated M3d equation. Changed Ymac to Yma. Corrected the PDF --- .../technical/aerodynamics/Roll_Equations.pdf | Bin 300477 -> 300826 bytes rocketpy/Flight.py | 4 ++-- rocketpy/Rocket.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/technical/aerodynamics/Roll_Equations.pdf b/docs/technical/aerodynamics/Roll_Equations.pdf index b2307bb43719f74f6f6372b9e214b178184c9515..c6c71e64692141394b6c966f2b3b32c27b550797 100644 GIT binary patch delta 25198 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%0DQzI5Uy6BbLQRA`)ekY{v!p| z(~s846OO$esgOaf-mCLrWMEH@5KN4D_Ev1~Ub{zSY4+IQ8CwQf3sc)aVV?Y;CBd^6r8Mb2a zJX~#WA23ISqkR7kB1FJVf-DD0?n=g=%iu%&pO*Q4sBc!2yDsXUB@4LRh%uUhzk~sE z8iu32Ah-_SHJ>?QY3`(t^RvzRG6d20`TwfVr#7q~#*oVY z(+K6hkDAes*I~^50D4^Hnfa_gnM+}S)A)7A_#3WR@0`APYDB3SYpaGngSEo>rKnFs zFdW_|yELic(-CL@CJY1b`B58u4wNuXvCbaK;;|EEv;A{v-%I|A5J;oZ$En*o%jSX` z^|)@u?1EkMbJWf-)b*&QuquB4AQ(3wsCu8-GT#D){->F$!nvOwCMpZ{bxcG5@FT9I zbKHHkwZh(g3A_VVYG0f?eRzHy9Tk84p=_Pegwhk7RWnghpO3-BNHJ&239vI;xuid(+>D)!P&dnt$R)l-UU%QpNfX1!u9XH%3fprvsZT!{ z0Uq+&#n!lxUTLY=DC7`nSwmlM3KTIwLY(SfZhMJ$c(9r*NZC9sg@wNK74PSNuKY& zEEd(`-}^AV+eNM$`!s_*fvIiqzoxiU0i*@jc}NM&TUuc5zE|0FWkIN zH?bXj>M$MZ_`T2{=bhZ|d~aob`j6sgI-FV_FE3Ai>VmmCkTEHgHu(x#2+qpAZF(S( zi$tl@!%g`Ta2SA!Sjk9`%w!cf@j!!1*IPfBY1O?_#x~Qt4{k9s6;lpqLt2u<(N zha1lzCf3At@u~L_%vif7Z6=~fOv1}bG8}uv3V%EMf$yufKLWFQyVAj(&+=}V(o$?|7d^gNOL>^zr7{IO~9Gi znL4|KEhB(6FC&2OZvk2UuMF%`OD}G}3DY;nfaE|rsG{}b>pMzrh8>o4JpGKhQm)i} zZX-J@xD6fMczfE%TQ;2v(WvNpqIqIi(@hXX0;#9xH2?Fj$iRInxIc*S8<-MON1fCu z8RgHKa>$*h_Lfe)th^nx_G!et`hM-d2hX2?XZ9}UMGHX1}@W^QNeewS8RM-@%ZrtG#>DC-u|hCSJadc6~#-eIM7X^ig^|!8JKsQjVW< z=0oasx+_gl>)7c~mA8yqOq6!SvOmw+5f-~D$|?IcQ~T0AD45V-fI$N^;gv)sn}BBzZLl+KQs|^TCk4E;Eh` z+xsQBST`8Im~j^__WaJC-)UDDn`=*(+pI^Ax01ITOiv}9Ts{Mc&acGz$Y~(%*CrKd zbYSUw#y%~H;u`>*t|CjS_(5h%YqJByER@g)OtWIFtjg)2h{$qdmJ#!*fVgv@k97Pk z1rU`plP{#${F&6QO&W3Bt^GX1Z#(h0ILUhV#0u7Vjc67hCN^BdLe2GKA{C7dc0gBNUo5TCctLgTqBfh&AG zm{xEzbeyBG;N#GZaAJRFjCUu{I&Zys_Q?I=?nZnlDo~cP50!|4i&glRW1ng`FhRA$ z52Tlf>nJp}PJiKvvj2^zVS+x=vv`>K@5IFl)A6Itu;7kVE1iLv21cwSVG-|NzA#TO zyyXiP>oc&SdG_}S<4D}AVrx_)g|ySO{;s(M;3WNNT6{g`wgjDU53L2T#8hE*e{fz% z5X6~%?PC0Ul?cJ@esln(Thn0s2X`z;5qBCP)KWnKHtE^#4TMeS;-~3Q6v!xmB+8jK z;~Z4%dP}Bq98Y*`Cnz@v+JUXPrXiK+o>G80lHojFWq{$Tds?CR6)P#qJx@+CXxbFz-Mj}}@I(i(mta(YB>l83~iiHvnwRZ7KgFVo{l zq397YjE4p*%7Flxe&;Z+zl~N}6joT}#-GWS&WwSo>$5kHCo4b^X$Z@JaNfukg{ye{ z@=w~pZ~*c14vNWWz z1(3YZ$le@T*R52Gi#VDp@b+rjWR+*teCKq$%7_bow3ZP!rUbQ|S0R!{JGqAX66WpK z?5|gCnwslT!@>fO5BZq8syMnc(~?w{NZ5r!g^yG1b$RsBOlM`T$Mxy~OX@JcMR2*@ z{A}LdS299de~YD46PB2vtl-q0m9?+jB@siP!@Z=`rLZ+|5e_YP#_|>vdp24quUI8P=-L^I zArLZO)-Fn!Xkq$}@|d=)P5-V$qjAm-Sw)-Z;P<1U;XTbW#pI_}Wf)p`0`e?4ZFExc z(}PQRH}@+r-=;vwlc&#C{U&fT{Jf9pzSaGN)-4L zr^-}LrJ-#Ly-{Hz0%qp}IM~$`s?1Dj2X`s0Qmt}bE={3Iw7sXnH`on3lx*AU49wdWcy<+jgODKOGZy_*#XsRqiH z8XF= zw7{gda3eKxma3I=oPc6RyKqUQLVT99h6Asr42kxPj^~b&5fVWe!I%r{7Rm><;0r+I zrz?&FOTM_H%NUr;zN)*>xF}^j(4uLTb9wzVyk40+zWBblwd5fK%GN*aih_6MhQ$Di zsD%Qwcc*on?(FGR#3sBaHx4x2`d7Vau6x=luf=6<0Y0_4IM~1msEyxYxmlssW}=dg zOQNZ82g9Z0^<(mI2l3VM%GJ<0?Xld-BBkCOJh<&15oj9x7wRQLRtXq? ztd0I{m*yte>(=oXpG0M zb6{+~)1_raYq)#7n)`nPtRc^(qvyUJH2%58(VU_9?8|B2xD?|jU>{TK(Ij|8m6Q7E zw4BxUB?TB|vqyUVETe1D9PbjGP`B*5N_qbPmpnec#;z8(PK#E~Ta*)C&9rgUWO)p` zlY)S1BRI3bbugV*spei}@$L zNwJHr3bgm9zpt`v%+BnOkY(n4{VCn^vQ_O}_N@5~$G70D&n|ysXlcvS5phN?u{$6M zxp0Rs;~-vCbqG0O(2G~-)i-gwko8Ir2<0qSR+?Khc-ndiWOae76_uX434iywF&X5P z0_;#z>P)`=u9l~<2VQ3i&^zo|vXU9TJSlaI!LLShBGm4hUZo$C3MxK!Z(AmpLjsQ%i3zD zLndVOlyPdgB-pwjC5#VDWtrJL>Hb8uc|!I0#9j#YnN}VGNfVx03Lw^wS<0$9I3C`|vw;&4FCY>nVjycx}9j?67Heg^4&WH$jFo8_II)UzrD+)xUme-|k=B5@SDa2BnR z4idT9o%Y3p(5ri2E1(57*#T&XoscDMkglsfx==xT#O-J-)x&4#GO1oelNKYH!4hGz z%h!ZvA?FrrB6OO}4YR)kfYcFG#uOm@=P+oF#po8s3Z58j-+0PuUx*Y^9rV=O zPjK|+(@Y3n2vlY!=KnLsm#OTz5G=rkBL4c(KD!vP-_2M1nfmuZtzjrG2Vf?JFrV=ASfG z9Lh$U$XZ}*J|0P0KY5C0@%?+9UP;3U>!4Zxy+2TC-g;;gFo3+_V2qWFwF}&zCM$!n zT2APgrT6%=M?H=K?T8h4nSvf!Gs={2OU4Z10#U3vc4@I^G$v{NI0yhNOd4FGz&_={mUqtHku%BplMUxjs)eJj5A zQ2D%gU#KR;M5V-8;=8O|3Fx?JB%OipP)rJr52Q5Fu=~YnzZdnSNdmZBz?kfz4E5E6 zS!_bOVJ27RsiZT8a-TFcb#K|Ch6n-Aha`v@!~vn9EfmkF8X~)eyG)O17)>Uaf<|Gc zYp~V1y~WUo7?oomqgU}HXdCyst@wOfZNTRa!J&Il?AL)Awdwr6baks?Jn*z>)Hr=z zp&9pT{kK(bFW>h0$`ANC@AufTd4PPKgY*g|fE~5SGj%7>?fenn-Lf^fxb*t&x%+_9 zGm{G@=8-YL=y+hV~NO*j$B#B_6B{Up z-+zWR3e}5Ce;KZwIQGjynZxuk#U_1A!-ZLfD3e4;%*8#H^iUg260V7HohVi6_roNO zb5!1=_C@4*0v`n?{{YvXN*pbbB+CnwAaqF{n+{$rQNNNkCjK#E;|3ZB{xF9R)ZQL{ zh0HfL)bXbsgM?;G7KfILug(gZ-nM5NyxYBL=}kMF@-d zQ#q)_flQC~Qdw<`LT$mXQmnl+eyX=&30}H@S?>A8id+-uM+;<-UWO0)2c?HQ*El4Q zqX6Ud@r5`K&A)G}#U zhfa%9w3m+T!V$0%v&jQ5LtUTqJKW3S=SxU1KjR#t5gS(pB}1)SXc+2Na{$PZy;IF2 zu(ct^#Soap(+j)k7aoqY+c<rHmSzCpA(=y8PB~b3uxpMW~j=YjVupbM~L(Eve zuuP^RD8vt_s3I@Bah_R{g!AP=KNqsRP$suni!vGuAf^umRHw~3MLW?y_+y)7&QF?= zss5_{hZ}#daLjk%Q=cwn1PB=L6t!H3?a-RhW&mN$Wc(F@?nY_B#|=<;mYlSEu4vX| zr24oc5?qTrux5$^8i1gztOw?;t(-Sc71YJp2(`0gN9)j4X@~EEws&sp<#{5D@jp^( zn2jOyfAqbvL*7cB8F8v2o@=W28>QfV`M$w)SL4MdbEqQaOpr1oJvhW}c4$0TY%!?g zeg{@G*Y;L}Iha(!O-46TkSMFLnv3;*hm)$J2X%W$4cp2QFsoQp!qH2(@}wr2c+fB= z_!(YTgxx=MxGy#CTg`VYAH&IML0XI8R@_rnhUT#;wT z6X^?6PC@5$1ATm-q#;waJ6jPuZwPvlt^P7j&CDEGwp8Nrt5-nsPVKmQXX&fu;!8Py64D6wtDh4X> zAl@3-T%X3IM7-bJ?_5hwiSkcm%@)lk8{hCTYZE3cvEp$dPBZXc`~5!4WKk1RESrJ2 zsW0t(i>838%lJ(_0zloc^d#k|v1d_lOOk~s!2qKfQ}PTYjrqYOH~iJ~AU>GEia%^( zhSC*!AZ;t^V_$kBG0d!_HAmm&*#Qi3&u$KTzchMpiS^i-*efr-Xz&nd*|NRIfh*@8 z9(KKj@IeWBScbcp8M(Nsnuv7VW{Wl3fVQF`7@9HzIRe}Bb}b3`$)0PIlEr_ zHsiVc(OF<*Hfr&Y@4e4Lzg?<6DBNn;wv1LkXYHVxn6<3%T2f2*GEVX53_s9k#h&+K z-R^FhyMm#Uoi#+7_fqCF!}JX7IPp+i$z7 zo>o5aH17II7cQXIHUeBz6zs+Ats7N*FR_7<^&%T`Czl+o$I#30n)(|&avK!16aj0&OKTGr2_#!!M)uo`^2!XLO570q`=q?_-e?S)n*CBg66B|lhN z>BdLLr>%G>#^VCVbO}sCyMNc;*S0P%uJF+@t@I5rfu$+F514mBGiIb5kV48f_o^hf z$*IL**8qJFB04Ej&xW6{Ol2s>$QrB7K(Xi}QYm!x4)BT}abdKU=}yz}GD37{$`ZxH z6A5XrZ3*omkTIjKdZbZ^K37-t!ZaO$9|@nF==c*}jI!1mnF2gZQkEMkf?KtGlj^HY z1n5P3>GjbhHWo7wl130RV437=s=Hh;#xA}AD0?g&j`poT#e+qqYN9S`tHrtMU1|Yq zvUvQ^C&~6_`&0*x)kE@4!}19;7ycbgxMb4ouWy<8bcJl?ETQu{eVoB;&R8 zvUGjkB}u74dNNpqRfvzwg|~qm!g1Rug(amH1BoMlw;0vP2iys#M~^&iGdt(~E#(EX zZgc){QMR~TK^dWMyuwKS(%G{?;M>^jtz>+d=Ak;r>!;-m^_>++t-^2k_j~yohCKa3 zw@yqR|8E^0IO?H5DcY9KzcyLPxPwes{OD(qQUxAC;CGf66akaTk^shtr=Pw9pT+PV zZIE9rrjK3mRrv#c5~X^3;Ii+X}!c5-3$eg2+_1MG)L6;f!E{ zrbNF@{f!|m-|pKM$WX18VnY4seJ9$H{0)DIVCdoTPXt{c1ca>4yfz}yp=6qMq>cn~0!?E;x$%NVW(o>8QQFh}7HIgsKBLt5C&k^UGU&jj;( j0>Ll=+2&3gaugxO>|^rVx3_5wivP@8a8E5shQ$02MvbHE delta 24845 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 diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index 91757e371..291c90f65 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -1355,10 +1355,10 @@ def uDot(self, t, u, postProcessing=False): M3d = ( (1 / 2 * rho * freestreamSpeed) * self.rocket.area - * 2 - * self.rocket.radius ** 2 + * (2 * self.rocket.radius) ** 2 * Cldomega(freestreamMach) * omega3 + / 2 ) M3 += M3f - M3d # Calculate derivatives diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index 50d856fa7..325aaccb8 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -587,7 +587,7 @@ def addFins( Yr = rootChord + tipChord s = span Af = Yr * s / 2 # fin area - Ymac = ( + Yma = ( (s / 3) * (Cr + 2 * Ct) / Yr ) # span wise position of fin's mean aerodynamic chord gamac = np.arctan((Cr - Ct) / (2 * span)) @@ -761,7 +761,7 @@ def cnalfa1(cn): # Parameters for Roll Moment. # Documented at: https://github.com/Projeto-Jupiter/RocketPy/blob/develop/docs/technical/aerodynamics/Roll_Equations.pdf clfDelta = ( - rollForcingInterferenceFactor * n * (Ymac + radius) * clalphaSingleFin / d + rollForcingInterferenceFactor * n * (Yma + radius) * clalphaSingleFin / d ) # Function of mach number cldOmega = ( 2 From 0acce211245c70a87e59f18b536e66de3bfed3dd Mon Sep 17 00:00:00 2001 From: Mateus Stano <69485049+MateusStano@users.noreply.github.com> Date: Sat, 12 Feb 2022 14:21:04 -0300 Subject: [PATCH 53/59] Removed cantAngleRad != 0 check on rollParameters --- rocketpy/Rocket.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index 325aaccb8..37d643ffb 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -773,11 +773,7 @@ def cnalfa1(cn): / (Aref * d ** 2) ) # Function of mach number - rollParameters = ( - [clfDelta, cldOmega, cantAngleRad] - if cantAngleRad != 0 - else [Function(0), Function(0), 0] - ) + rollParameters = [clfDelta, cldOmega, cantAngleRad] # Store values fin = { From cf47bfa4d0dc110099f276fd3fa7671a5c33c311 Mon Sep 17 00:00:00 2001 From: Lint Action Date: Sun, 13 Feb 2022 15:10:47 +0000 Subject: [PATCH 54/59] Fix code style issues with Black --- rocketpy/Flight.py | 2 +- rocketpy/Rocket.py | 40 ++++++++++++++++++++-------------------- tests/test_flight.py | 4 ++-- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index da8e398f4..877f50e25 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -1345,7 +1345,7 @@ def uDot(self, t, u, postProcessing=False): if aerodynamicSurface["name"] == "Fins": Clfdelta, Cldomega, cantAngleRad = aerodynamicSurface["roll parameters"] M3f = ( - (1 / 2 * rho * freestreamSpeed ** 2) + (1 / 2 * rho * freestreamSpeed**2) * self.rocket.area * 2 * self.rocket.radius diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index 7a488d1d3..585184201 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -591,36 +591,36 @@ def addFins( (s / 3) * (Cr + 2 * Ct) / Yr ) # span wise position of fin's mean aerodynamic chord gamac = np.arctan((Cr - Ct) / (2 * span)) - Lf = np.sqrt((rootChord / 2 - tipChord / 2) ** 2 + span ** 2) + Lf = np.sqrt((rootChord / 2 - tipChord / 2) ** 2 + span**2) radius = self.radius if radius == 0 else radius d = 2 * radius - Aref = np.pi * radius ** 2 - AR = 2 * s ** 2 / Af # Barrowman's convention for fin's aspect ratio + Aref = np.pi * radius**2 + AR = 2 * s**2 / Af # Barrowman's convention for fin's aspect ratio cantAngleRad = np.radians(cantAngle) trapezoidalConstant = ( - (Cr + 3 * Ct) * s ** 3 - + 4 * (Cr + 2 * Ct) * radius * s ** 2 - + 6 * (Cr + Ct) * s * radius ** 2 + (Cr + 3 * Ct) * s**3 + + 4 * (Cr + 2 * Ct) * radius * s**2 + + 6 * (Cr + Ct) * s * radius**2 ) / 12 # Fin–body interference correction parameters τ = (s + radius) / radius λ = Ct / Cr liftInterferenceFactor = 1 + 1 / τ - rollForcingInterferenceFactor = (1 / np.pi ** 2) * ( - (np.pi ** 2 / 4) * ((τ + 1) ** 2 / τ ** 2) - + ((np.pi * (τ ** 2 + 1) ** 2) / (τ ** 2 * (τ - 1) ** 2)) - * np.arcsin((τ ** 2 - 1) / (τ ** 2 + 1)) + rollForcingInterferenceFactor = (1 / np.pi**2) * ( + (np.pi**2 / 4) * ((τ + 1) ** 2 / τ**2) + + ((np.pi * (τ**2 + 1) ** 2) / (τ**2 * (τ - 1) ** 2)) + * np.arcsin((τ**2 - 1) / (τ**2 + 1)) - (2 * np.pi * (τ + 1)) / (τ * (τ - 1)) - + ((τ ** 2 + 1) ** 2) - / (τ ** 2 * (τ - 1) ** 2) - * (np.arcsin((τ ** 2 - 1) / (τ ** 2 + 1))) ** 2 - - (4 * (τ + 1)) / (τ * (τ - 1)) * np.arcsin((τ ** 2 - 1) / (τ ** 2 + 1)) - + (8 / (τ - 1) ** 2) * np.log((τ ** 2 + 1) / (2 * τ)) + + ((τ**2 + 1) ** 2) + / (τ**2 * (τ - 1) ** 2) + * (np.arcsin((τ**2 - 1) / (τ**2 + 1))) ** 2 + - (4 * (τ + 1)) / (τ * (τ - 1)) * np.arcsin((τ**2 - 1) / (τ**2 + 1)) + + (8 / (τ - 1) ** 2) * np.log((τ**2 + 1) / (2 * τ)) ) rollDampingInterferenceFactor = 1 + ( ((τ - λ) / (τ)) - ((1 - λ) / (τ - 1)) * np.log(τ) - ) / (((τ + 1) * (τ - λ)) / (2) - ((1 - λ) * (τ ** 3 - 1)) / (3 * (τ - 1))) + ) / (((τ + 1) * (τ - λ)) / (2) - ((1 - λ) * (τ**3 - 1)) / (3 * (τ - 1))) # Save geometric parameters for later Fin Flutter Analysis and Roll Moment Calculation self.rootChord = Cr @@ -648,11 +648,11 @@ def beta(mach): """ if mach < 0.8: - return np.sqrt(1 - mach ** 2) + return np.sqrt(1 - mach**2) elif mach < 1.1: - return np.sqrt(1 - 0.8 ** 2) + return np.sqrt(1 - 0.8**2) else: - return np.sqrt(mach ** 2 - 1) + return np.sqrt(mach**2 - 1) # Defines number of fins correction def finNumCorrection(n): @@ -770,7 +770,7 @@ def cnalfa1(cn): * clalphaSingleFin * np.cos(cantAngleRad) * trapezoidalConstant - / (Aref * d ** 2) + / (Aref * d**2) ) # Function of mach number rollParameters = [clfDelta, cldOmega, cantAngleRad] diff --git a/tests/test_flight.py b/tests/test_flight.py index 062e2e762..6ce0110da 100644 --- a/tests/test_flight.py +++ b/tests/test_flight.py @@ -255,7 +255,7 @@ def mainTrigger(p, y): assert test_flight.allInfo() == None - + @pytest.mark.parametrize("wind_u, wind_v", [(0, 10), (0, -10), (10, 0), (-10, 0)]) @pytest.mark.parametrize( "static_margin, max_time", @@ -334,7 +334,7 @@ def test_stability_static_margins(wind_u, wind_v, static_margin, max_time): or (static_margin < 0 and np.all(moments / wind_sign <= 0)) or (static_margin == 0 and np.all(np.abs(moments) <= 1e-10)) ) - + @patch("matplotlib.pyplot.show") def test_rolling_flight(mock_show): From a68475f451324f445c944edf3a4e6a7911fc1ab6 Mon Sep 17 00:00:00 2001 From: Guilherme Fernandes Alves <63590233+Gui-FernandesBR@users.noreply.github.com> Date: Sun, 13 Feb 2022 12:57:53 -0300 Subject: [PATCH 55/59] Delete TODO.md I'm deleting this on develop branch, I've saved old version offline. I'm sorry I'll not follow Pull request workflow for this one --- TODO.md | 41 ----------------------------------------- 1 file changed, 41 deletions(-) delete mode 100644 TODO.md diff --git a/TODO.md b/TODO.md deleted file mode 100644 index 1ecf698a5..000000000 --- a/TODO.md +++ /dev/null @@ -1,41 +0,0 @@ -# New Features that Contributors can Implement - -| Feature Name | Description | Programing Difficulty | Theoretical Knowledge Required | Current stage | -| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- | ---------------------------------- | --------------------------------------- | -| Rail Buttons | Finish rail buttons implementation, allowing for the calculation of loads they carry during launch. | Easy | Basic Dynamics | Not started | -| Custom Aerodynamic Surfaces | Create a new method in the Rocket Class that allows for custom aerodynamic coefficients such as Drag, Lift and Moment. | Easy | Basic Dynamics and Aerodynamics | Not started | -| Custom JSON weather files | Add option to import weather conditions as JOSN files such as those used by Windy.tv | Easy | JSON | Almost finished | -| Airfoil profiles | Currently, the Rocket class supports only flat fins, although the fins in real life can have more sophisticated aerodynamic profiles. To start solving this problem, we could allow the user to change the CLalpha of the fins before simulating. | Easy | None | Finished by @brunosorban | -| Geodesic models | Make RocketPy capable of converting impact coordinates to useful lat / lon coordinates, based on different models of cartographic representation, such as WGS84 or NAD83 data. | Easy | None | Almost finished | -| Recovery Class | Create a new class regarding all parachute calculations and analysis. | Easy | Bascic OOP | Not started | -| Rocket Add Discrete Controller Method | Add a method to the Rocket Class that allows the user to set a time-discrete, closed-loop, control function to be simulated during the flight. | Easy | Basic Dynamics and Basic Control | Not started | -| Rocket Add Continuous Controller Method | Add a method to the Rocket Class that allows the user to set a time-continuous, closed-loop, control function to be simulated during the flight. | Easy | Basic Dynamics and Basic Control | Not started | -| Parachute initial force | Calculate the Parachute deployment impact forces | Medium | Rocketry Parachute literature | Not started | -| Graphical User Interface | Desktop or Web graphical interface that can be used to run RocketPy in a more user friendly way, possibly also writing the code so the user can learn how to used RocketPy as a module as well. | Medium | None | Not started | -| 3D Rocket Attitude Animation | Create a 3D animation of the rocket's attitude during flight, allowing the engineer to better visualize the behavior of the rocket. Can also me used for marketing purposes. | Medium | Quaternions | Almost finished | -| Elevation profile data | Since the Earth is not flat, we can implement some functions that allow us to more accurately determine the impact coordinates by researching the point at which the rocket crosses the Earth's relief. Good candidates for this job are SRTM data. | Medium | None | Started by @Gui-FernandesBR | -| Export pressures | Improve the exportation of pressure values to facilitate the simulation of the apoggee detection algorithm. It currently supports the "noisy" pressure output only after parachutes have been defined. | Medium | None | Not started | -| PyRX + RocketPy | Integrate the GUI telemetry software PyRX with RocketPy | Medium | None | Not started | -| Maximum distance | Calculate the maximum distance between the rocket and the Telemetry base station. The objective is to improve the choosing and testing of the antennas. | Medium | None | Not started | -| Optimize apogee detection algorithm | Optimize the detection filter coeffitients for the specific launch. | Hard | Adaptive Digital Filtering and C++ | Started by @guilhermebene and @Lucas-KB | -| Plane Motion Flight Phase | Modified dynamics equations. | Hard | Advanced Dynamics | Not started | -| Hybrid/Liquid Motor | Derive the equations of motion for non-constant propellant center of mass. | Hard | Advanced Dynamics. | Started by @lucasfourier | -| Integration with Fusion360 (or similar) | Make RocketPy able to read a 3D geometry file that contains the entire Rocket description. This could save us a few minutes, as we would no longer need to measure multiple distances in our CAD software. | Hard | Autodesk Fusion 360 API | Not started | -| Parachute oscillations | Analysis of all Parachute stability | Hard | Rocketry Parachute literature | Not started | -| Multibody Dynamics Parachute Flight Phase | Currently, descent under parachute is simulated as a 3 degree of freedom (DOF) system. However, parachutes can and should be modeled separately from the rocket, creating a 6 (DOF) system, 2 for the parachute (spherical constrain) and 3 for the rocket. This can greatly enhance the prediction of the landing point. | Hard | Dynamics | Not started | -| Deployable Payload simulation | Allow RocketPy to simulate the trajectory of objects deployed during flight | Hard | Dynamics | Not started | - -# New Usage Examples and Documentation that Contributors can Create - -| Feature Name | Description | Programing Difficulty | Theoretical Knowledge Required | Current stage | -| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------- | ------------------------- | -| Rocket Class Notebook | Notebook describing functionalities of the Rocket Class. | Easy | Basic | Not started | -| SolidMotor Class Notebook | Notebook describing functionalities of the SolidMotor Class. | Easy | Basic | Almost finished | -| Flight Class Notebook | Notebook describing functionalities of the Flight Class. | Easy | Basic | Not started | -| Dispersion Notebook | Notebook describing how to run dispersion analysis and process results. | Medium | Monte Carlo | Finished | -| Multi-Stage Rockets | Notebook showing how RocketPy can be used to simulate multistage rockets. | Medium | Basic | Not started | -| Neural Network Controls | Implementation of neural networks to control the 6 degrees of freedom of the rocket during flight. | Hard | Neural Networks, Very Basic Control Theory | Not started | -| Two-way Coupling with Fluent | Make use of discrete control method to couple an aerodynamics CFD simulation in Ansys Fluent and flight simulation using RocketPy, getting accurate aerodynamic forces. | Hard | Ansys As a Server (AAS), Ansys Fluent, Aerodynamics, Dynamics | Not started | -| Communication platforms | What if we create a server on discord or WhatsApp so everyone interested could talk and contribute more easialy? | Easy | None | Started by @giovaniceotto | -| JOSS publication | Write and publish a paper on the Journal of Open Source Software | Hard | Scientific writing | Started by @giovaniceotto | -| Github page | Create a website page using the github tools. See more in https://pages.github.com/ | Medium | None | Not Started | From 09573c75546fae78fdf624b50fd54a4456fb1aca Mon Sep 17 00:00:00 2001 From: Lucas Kierulff Balabram Date: Sun, 13 Feb 2022 15:44:06 -0300 Subject: [PATCH 56/59] BUG: remove absolute value from lift calculation --- rocketpy/Flight.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index 877f50e25..6d07e73a8 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -1324,7 +1324,7 @@ def uDot(self, t, u, postProcessing=False): compStreamVzBn = compStreamVzB / compStreamSpeed if -1 * compStreamVzBn < 1: compAttackAngle = np.arccos(-compStreamVzBn) - cLift = abs( + cLift = ( aerodynamicSurface["cl"](compAttackAngle, freestreamMach) ) # Component lift force magnitude From fbef6d3c9b4a8a1adf70707eca06d21d195e9438 Mon Sep 17 00:00:00 2001 From: Giovani Hidalgo Ceotto Date: Sun, 13 Feb 2022 18:18:44 -0300 Subject: [PATCH 57/59] BUG: set infinite speed of sound in stability static margin test --- tests/test_flight.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/test_flight.py b/tests/test_flight.py index 6ce0110da..075da6579 100644 --- a/tests/test_flight.py +++ b/tests/test_flight.py @@ -3,7 +3,7 @@ import numpy as np import pytest -from rocketpy import Environment, Flight, Rocket, SolidMotor +from rocketpy import Environment, Flight, Rocket, SolidMotor, Function from scipy import optimize # Helper functions @@ -275,6 +275,9 @@ def test_stability_static_margins(wind_u, wind_v, static_margin, max_time): pressure=101325, temperature=300, ) + # Make sure that the freestreamMach will always be 0, so that the rocket + # behaves as the STATIC (freestreamMach=0) margin predicts + Env.speedOfSound = Function(1e16) # Create a motor with ZERO thrust and ZERO mass to keep the rocket's speed constant DummyMotor = SolidMotor( @@ -294,7 +297,7 @@ def test_stability_static_margins(wind_u, wind_v, static_margin, max_time): DummyRocket = Rocket( motor=DummyMotor, radius=127 / 2000, - mass=100e3, + mass=1e16, inertiaI=1, inertiaZ=0.0351, distanceRocketNozzle=-1.255, @@ -319,7 +322,7 @@ def test_stability_static_margins(wind_u, wind_v, static_margin, max_time): maxTimeStep=1e-2, verbose=False, ) - TestFlight.postProcess() + TestFlight.postProcess(interpolation="linear") # Check stability according to static margin if wind_u == 0: From 861001d787c969fdd11a1bcbd1d360503fad8b7a Mon Sep 17 00:00:00 2001 From: Giovani Hidalgo Ceotto Date: Sun, 13 Feb 2022 18:24:30 -0300 Subject: [PATCH 58/59] MAINT: black formatting --- rocketpy/Flight.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index 6d07e73a8..3824af5ab 100644 --- a/rocketpy/Flight.py +++ b/rocketpy/Flight.py @@ -1324,9 +1324,7 @@ def uDot(self, t, u, postProcessing=False): compStreamVzBn = compStreamVzB / compStreamSpeed if -1 * compStreamVzBn < 1: compAttackAngle = np.arccos(-compStreamVzBn) - cLift = ( - aerodynamicSurface["cl"](compAttackAngle, freestreamMach) - ) + cLift = aerodynamicSurface["cl"](compAttackAngle, freestreamMach) # Component lift force magnitude compLift = ( 0.5 * rho * (compStreamSpeed**2) * self.rocket.area * cLift From 6bbc3fe4ac32aae178e51488b26204d986a7827f Mon Sep 17 00:00:00 2001 From: MateusStano <69485049+MateusStano@users.noreply.github.com> Date: Tue, 15 Feb 2022 13:51:15 -0300 Subject: [PATCH 59/59] Revert "WIP: Airfoil fins normal force coefficient derivative calculation." --- .../aerodynamics/Fins_Lift_Coefficient.pdf | Bin 201281 -> 0 bytes rocketpy/Rocket.py | 19 ++++++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) delete mode 100644 docs/technical/aerodynamics/Fins_Lift_Coefficient.pdf diff --git a/docs/technical/aerodynamics/Fins_Lift_Coefficient.pdf b/docs/technical/aerodynamics/Fins_Lift_Coefficient.pdf deleted file mode 100644 index b4ee192f19d4edc8cc52c44412880830fef0b046..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201281 zcmeFYQ%NZQHhO+s5=e|8vfqGjlHH=9{Z8*UFU{ zk+C8(_Vet$VnysElNS}IW1?q+A?tq5`+{NS05Ae<4J~1Kc>xSE7Qajk94tIci~&r4 zO8{m@CT7mRcMF>-P+vjZ4@0@wfy%72?Paei{GMC*c3x0mIDsp9Z4rZf62uP**fD{W}bkUuI6`0It8^DQ;oyWa9AmYHi?T zB5Gn}Yy7v>zpnBI4mOT}e?SniwRX1o<@nE#sj7{ABR{VvKgY#b%rnY|}`uiP<00u={TPFZB*S`u%e=+@w*1x)R`4>=3|2sGg zlA-`DUM_Y==n0u88k^vj7`oeLONMBH$J;*tdT|{co@Oe;@S!9l`&<{Qn^WF#j`||6MBN4a`jb za^&Cg`(Jz$F>o@lwl(`t0>HxfpGf)NvQO!+urU4yNtrm<|7-5*>;IFuqbB+$`a3Vf zfDs^YeRdj&1i!+3zdySbmRcnu5g?%RiSQNGk+^W#jTN+#lXRYLU4`l#-IGUs%A2KH zw$1C%Ki9q0>HDqPv@W9dLYRx!E4DUYd<)RcaRfl)mC$1_APhBXRNMubAP80u0Ppa- zh)db#tWXHsN{;MgO*Enl1_AkI^Q5ZiRRVe0D*@LHm>HeU@-glxY5@y~^N6u9fK8yT zJl^I1lM8=k@_(tTi0v;YlV47b02bzdse_5Kx~M|35Co@`m|bD6mMCF9QkU3F=FjH}+8|D`cr0>lyj6|MF0c0Yg68mW z4i-&PQ6ecYIgIi^^PmQ_KcpZ`vhjn=uW?gnyr|%w%?~Bgqhss4q1gIK|MWZ_= z&uXnzP3Lvh>*VikEkRJ+L|_&~CE)-vYA|UB%^YD=Lj9|b(uT2}+f6>1?_2N=zj-m$ znS})0V;FYif)pu-zL=w+?T_4x$)@|I?6*3LO~u0I^`qgX1#C$hF6$yVN!lJrkqqhX z=OJa&eGq;)poqs`ltlwZX1uYNLi5n1eHz`i-nj-cx}R zxolaRuKV51G~Zeth!5l)OD>B`R(h^QNEj&cAjH&DVg)bK#DmJj0YqF<1uuG{O|mz@ zp6;kb@>h2~oPE)v31tDnCB*LXImm=gfojm9-KEK|jAPM^zhfX|0JKR2O3#jh)>*=d z>9$s=rNke9uq5Wo!&q?qP-H|#t1a8}OHa?X#5_}RcBt3rwebo#9viELYU_ zsJENyIg_ISH)4$KvCvqN)R^FlaS0jk^|HRalTr6q@xha>(OfX_sG5!jEF|m&lIS2E zq5JtEi)((XMzttga?Ys;_u_Kpx5!?sYABC$sw#P?&hHnm7eaQ~%4AQ9o-HGrFH|Dr z*ck3dA)^}lPyDbT4iDLBiLHXy?(`!MqhN>X>(1DKaCY`I`)w}m)NC8f! z0ki>%fh#aQ6iD^E*3e-4;2?vP>U8pdLvfb>JJK-$m^hd?{$1&q|IP-O+5b*S{>8|D z`uO*W%HN3=JKKLz!N>-1dF@pU`Uo(nD}o$**qN4g)D2J}oWJ=xv`MCJ=L(MkXpy#q zN6`+j@r^W~%ebf0^YpTsS1hxv2~A&3^)0_Wc2ZC4&uo z@$u17{cQ&sy6%rpR0Ndi8DqPc$lMf+((kG7 zfiQ##=H~Nk5uEIa@;yEPf_E454dcUlE3VzkhNuSi$%OaKO#HmI^Kt)10Q39Wg=1!G ztZ#%A;seOT`f?3Gz{$rd7(2VTdcy+=O?u<{TW4HkeF{|pLg7aaR(GPugn+Q^*?>-3 zd%M>hnVkbycz9~Lg{-}sN1k{l?y00jCP^=?ZF=R+C=#|GC57;Mi>8OKdY_JsD|20b z$yay#a)DWzezilhV0yCCQ4aKi(=t3JkJdvS5~hN$VE4d-fw;f60_j5nt!ysDUAnr- zB6{8sNi4^yQBYj2fEX}-(gVRla`5INTeSy}nW zHGL8J{#FRECSoV>!RB>b8hlOtmU5Za0{YZb!oSJpDF!SW!z2(%qfGBUe_S+t~YR8TI0& z_|->tYGH8p_Vwz`s5xu+jqqbw3>u<6Kvn_6^il>qpwiNRy{ddba#Ou&II!5f*;x@= zqXPqPUFR25OdJ*s3#b}C!(e=HTWu0YAvXO01{FaELfUzZuolXK=5@z);S|{^!n4CB8oVHr#ryVEXw^Ur26RwCCj#&AINnS{o}0b9-fz z(&#id4}Fq$~pfbSGYCYt)`Hvkfn3#r%lOIvfnVMA zhp=Bgt)g|)r=Pffh)(~zo&0d7?mg$@;gA2Zamx7@c|819wc|Wo`&U$^0tJhfp~wp9 z+S{ApZf99i0UnjI=^P?hqlPhk^2cNW6sf|3Wa??_WX5Az38**(+d5=P1a_ilrPnXY zWdkn(_FJh&sq6t7f#W+9Lm$y3k+45q7J;xjgw8}UpH1|DMt{_{DkO~05u`YuqWji& z>xc2xS|MOq`OwA%VG$5i*;R66H3ls*)mt}ehP3pBnC>dbYlWN_Sy)v6XF2SIo*jzn zEV~}V5}(tGhjW#^3!V^mPT^P=njC|$cOi#J&25s-U(;W)+h6ZD>`+W=F@V~Tt(dbQ z$NBKd-<%+^#b>W3?>Y`oK=7B;>e(s4etA=giZiL$Gj*<0hC9 zGl{r*XijHx!sFE)dOE64O4$um+kaM

8`q#Go*iGTFb@OpG0yX8bu)F4j0NO%A`(>BNWtmKy5F1Dz63dP*A5<#7;Z@p*Nh__iEKpw z0zKEN@k}H+Arz~JhO|L53)TkXk~AE>{Z?`vr3Ghw|E}u2?z+`H+cx-IK+Bec=#18h zYQkKs-uV=j*_xq0lFXlcd3KE?VlLJntZDY*apf0{LGlKpOfTl4%8p(~Vm0W9RX?ma zF8t^ji>x(%J2%?U=NU+d#2b|#+QM*iiR!~vdTg%4mbo_v545f+WoHC>8n3a$%)fZE zOD@YfF7T(FB@%6>LWy2WzN8;@^wp}TgBn%&dM=o2PV-&>t+0VAOi`0Ed#9#HWmU^? z(6f4VJYCRfeTO}3XP9ygPLJ}{fsI3B9V~j;uAiIaeLl!vzm&QN36II8yK%Vv$2Z4DW*fP2Y96#cY=1pj)f_V3z)kj~&xMx1|w! z@Fz4@A>&k5LqRh`_J*;GoCE&iBXlY9C!;?d&-foYG4dD`^A#keY>q_Kana=oXG4MO zmR$np?kV_Sis?wEhJlG144zp=oIhJdF%3+tqIkC&*8284m{zIk-~yF^aFu3$45CAJ zj~^{mVw~hDd$-kPdo0!_up0M`#40f4iFXJiwPa|l4uvHQW5|sTKCiro(VXp-D$xSZ znn#Jxl=BYq#*Dnb+`&Q(*ZJ`RC?zyNFVp$SHqF2`R@BzLSiQGc)S4RXh|@0jmsHLf zp7C|I)H>0X{KZ+@B2Ka9!{YSIZeugsM;$a{UIk#9a?{X>+3D8d)`_CySRHwD$jmFV zby}S6tP7;3ymQD-JArOdr55y^V5FbV6$)wSq|xpB3vqx>A0IT3=*IPmm_)_ zKQImmq^CW4SZ}mUZ*e3c_+WW6-V3nJ7#~`aNi&CsL(hh*^JH{ySv=NwXvZoLAPl3C zci@Hw_@)lr`_N)Wr?L#}7sPae%Qy z<7UX9b(@JDD^O^I*5Q`NGs0789IK(0HE=`r(!`X(gcP=w-J=oJ@wDHjj%K1Mc(7I7 zd%B%DoWnES7=+37*!jq58t%ZU_78~z%hXb-wfsev+ov6faygr55OQZDckHJ6Y%;nQ zbn6-=qlAs(-F2%r{1$pna8~)lVkP8tP!@;POqcJ~u>{%hJpp@gP;AUpG55nsLN3k) z`rEWL-LW12{lKZ4J4a^FL0jlIfUdJicAy3;WSh;5dMV%!+8^DmrB;hF;U1aPH%_t| zfP#IP6J)_v*1E{+*H%QG4n8_NQ$GW3XVxhxCR2`4xDQ3Le14wX7~HZ)R|x4=V9}ZC zyD^|(VTLPpd^iplubH?Q?`VbQS)=QwQHlfw@l%uN_KmYi)|*aD0z&FWDYR}3F;C3W z6$$RHCd~9n`qCyzHCS9K=uNznfuOB?}&1_3_pTUrZAxZ(- zc}pZ7=0Vf50FOEthFV=L&lLuw;iX1|YS|q5Z#&3@^v@HCE2rs93?D|m6KVWk*wf?P zK2}eeL@APh_ci*l2~Ju8J?&G~MN&@YK=3yvdZ+HWSFsLYXD8MGGCLzW}m zI_PHXE3o)5R%TaPkH(~;L%Lg6++~C>RYel1w0ew(K;9=52YOe#L~4l$FcZA09Wrh{-9n zcn;8rPoO383*K2{yTOK-vBEE;Erh8qZvjdh%Q=^ZXgYJQc8X%2j>E_8^(;l1i=EBqcZH`_Tz^jTBg~&WPHf75bwL|4MTX1yV z_s)F21Bn z&D0V~sBwpLRaeUVD!&)qpH>{_L`~%+pauxRcX}gEyVQDmqdfb|iz&sxsU^5Mwqwm0 z+{w6Y4mU&u1}J)lkf^fh(v#~$1EE;7r%{=1{5e_Cbtpr*s*mFL$#%Hs`8>C%cgpS5 zGxbbpe1@CMqCYUlFvULMqgM1a4iR)rJa2D|=|$-%Kv9LlIo0ndF~s~fM`+kT?gqn< zJ+)_k-$~2(P1;^uae)3Q4$vC14_(WYq;Q&>v*QBJgD+AS#j0O+Gmn#|0=4MqV51!Z zg=J-+7NBXZBK`!t3+?E$i z(#j7S$rgP{$HJQf6}|-&SdgXETp_hB?%?Tk~&yLXS`qoXVW+_QrHbw?ti7HJl zdCy5=h3R9UR5iElm4xErv8Gb{I@cc9cBD<2R0AquP@od_9#zv0mhcp-Ejo%3&;q&e z$WLb~{T{34OvinXZ1_rfoH0H2LmD2EVyHOSHK7nw(McX+00q9c67Zsg{nEoevg7>V zJVYm9wdVl0Rwfb{6W)f;B?Q*v7r-y&a3A^N#}~K+6)D4w|C_;PP9p_ofGnTlK{29n zYtN%8ffZjV0qDWzDbW22FPgJUQ<1$PNkjB9X>x4uK4|YKYu>kqmX=%un-B%YQh`-v zF7t%k2V>yfXxkWNoj|W#?@#J2gNe4D#WN^n-}XnE*`Tn;k8k$xI)OKB21a5?jxbtY z>m^UfkZc61`c6cn!Hrl<$If28%1O+%5fJ$U1hxKEe#7}_Un?K6f^4Ld>bxrudh!m; z)uc=OA9N3at(6UmpPH|0Qf3^0SV6DazM$qQ;Ln=JwXr1#GE(A9mJo+mOr~z5-#5UL zXkhMy<12;9(RIP;!39eXVxy5ss%xENH96JOiqNL0PmQS(b_0OXaf68116(JV@FWHa zs2X<7XP2rVL}adsl}2UDhOE9$Rx(Y-8hYW#7Z~2NI;!M;=W&wUswNt(#=r(l4!%mR z#&|b~!@jaO{@&+talCQR`6Wb5w-zVJPrH(L{~b$>tyZ@{;n#!n5tp1acT6qm4KjxT zeDK>ddvW#@MWg<75^kZRbo~WuTD0wKr5)iVYW9b)*=24jFJqxUx*sC9ac!Xob2t3%&f@JrNZks7JRCn30q@99vlhp4~b>h(x*Oz9UoW)GZHyb(1A#6YOgI<$f)_+K^=rqFJ0^e;O}Z72uF@u?^95`O=gm< zt4fK`nwiRfx?4UYcugyEzp8dGVIwS;BsmV*`XEQoIL~bmH<-84F}cpXAowHfO|~?B zX^yDVd5O5nf_8L4P+3b*lbKDVrZr24?!F^r-e zqa}7ln5qnq#rF8>h^-(<2r=R>->GuZ8T?uz&M$S$K+=VRkFEp+4e>8rI^af=qIc+O znWcZ3oKTL?N%aZve#0t>(kZ$BR7LbhQ||Ie#5RjXF=V(vXEq7sN`c5o!bLZD(LBzZ z=T|v7&CKOeY%Zm%ZqTrpYS2WQn2(HRHEh$WHK$C7E1lvy8{1RuZKw?7B1Cm@Oqw7l z$9=xY1W^jtESQ{CSJ@j@RJ45Do0WngIw2tTibUeI|R57Z){h_j~D%+3G^VT%7 zO+bw=9SmCOsIF{mwfaN4{k#jjv4iB~X4GqNiBiYjBpt7f&ZcbdJv5-q_hmJnV=Sa-1Q|_TG zf(^M`0OA(eq;*3eZV`YuqMmUmx1!mAWtCYV{2;(0~aq;MrWZ?Bek-?4T2C^S>= z@2xiPS^p@ax^Sk?e139dZ7r#8=onEa#+4!mA?uTz2I7h(B1H&qwRoij7$qXxhD_Sk zD+hKYJ~B;tp}dr4VWd40TAOXfOPw`G(hkKISS6ZggSopT{OWvn@Sy!I_gTFKqAm4U zZu1lSVhtk;sTh=2V$QmN32_qzC%w%yAoY{v^J01u!^+v_#<0Lihw|pG-b5jNRF*Sg zrzd;1xj(hX(Q&yP>5)vwwafIj6V0Lo;^!QX^9S#Mb~M^)sq=(y#IKizD}ZA8t*5NF zOPuu~rys z0d9BnIIx(PVx{3tW1dPSlm!kRO0Q^X@?x!|B3uemkn}jrX4$v1lGE#+=LSVv6_j)` zELNL~gZ&B;PQ^%1iN)Hwx%a$lnYnTuoHC8M7j7X3BIYB}c?gt9rjDCrygFmnwO&Wq zgrq@{)XE)&O`n!E4E5qxOt?gNw>oK6v|+N&L~ER5^om>fYE!ia3%3S4*g4wxoKZFM zAN3_N4XyZdfG-Nv^z=0XyBMo{_T61VMKGcb@}s=PY>LUIf$n?(dlyGh8YCFtS!>ut z(=pU6)Ox-XhPmRk>qo^E7m;-oepmK{n~ee47oXo2--4*{qD+ZH{fr&++ans8sa)3i zMAId28HkBCTfDp&Te>*>hCW9|%^XyBG=1t<9QW~CB`0LPL(D4hVlYhv9Ae#rSjQI= zjp^1(LROta4jR>}=`(#08M3#r9|!nUHAg$~Mm(WfCdWpPiO|HI zYJjnrPkhR2>333IDcvndYevN23jq%^6))43F>6#^P0HZkrGU1kI1CKxrrFUPJ@uz86CJn&uXPk(=*J9okaDxiSEavBjpiFw z<+2?DOySUtwoPU2lmy5srV4`%S(3WBtOnSk_LuR)HvE?|&S3s1Bgd?R=*+CC*Gc1y zW5`+v^8ylPM3k^ugQgz?o#&a1Clk!G8k6}GYPwVndOeVjA7Df2!wstgzeAdS=1NG5 zqB*^}jG;eP7qB)fN*`I-|7Z*hlrA{$F%O0-i zpm0wX=TMbq0FQln(_f^vO|pG1oQvUsU#*yx1S?Zlvl3F&l@GVx;{~DVFYdDt*Y6_W z&{RiBmzzgUeP-J-#QTm+;47|KwFo`TELMLVV2h$l9$O33UoA(JF(GDFzcHMB>w=e6 z;%EpRRxWx|D;fwO5T)YYi5la)@d`lFJI@WzjrVI8>rQ7OI>*U+r4UmYb>;k1&s<32 zGk!Bb#{EX>-5f%LN6=uS-POseBBy&9(X}0 z8n>){C8(ZKWkpZ@WCx7-U3O4@m6kzq#W{4S1G1@U3xHMZQPNscV-jDUcLhuUu}H@W zjUp4Kkr;&yo}pUENFR$d@924Mu>L#iX`1}c+0iyOHX?i*tD${rc=#Ir0NSxytexzS zUr$i(o2}Xw8nkRX{^rFd{0QXeTYI>@y=Q;`!gycl`2(Gh$WaLub^knqgJ4BFI8huAc{{B2P27?2+E1y1i; z@daq>oRmm@nnzhR5f$?MQD=fMYLQ~XU~~1Tr3rQ{SaJegLALyJz!$O|N~POW^ZY2g zsXmgXMK}le+M}0+Zb67nUz(`X=7Q^W6G0aevrPC=l#gCn643@~lm!WbL8B~3f`~Oi z9L9?ZjQqa8G%g%HF`X_Yt3%RscfQYm7yjDR_SJ_!iv6R4tq>V>@Fmvj;@e+Onr9lXW(YZmJ zvF&zTGWsODo3W}le)DD!<0%#_}!cbFmlBl z9V>6}q1?V3{T5z26L4E~BF_NcJQ4abzkJQ}!D0Nxs@2e?tGx4kn{$n5ZqY}F*!Ju) z+P=w}Q@JHOi+D}tRMg7yl#+F)Gm4&LWmgz*k3SyAs3t`9aV`Kx7*^R;Bt7I!jM-39 z%(<(9$!wINjs(xA=1|<0zom=M=86s&Ice8=IEY;1f zdiNJ%bH{r7f-w@Ti(iGd*wBpb-Gs|K=B_(2+-1Tr3LVWz;BQL)5sD~iGH=se1;NcB zvMku-^_vlfEgIW!h>KGsG&2hx1NQ2bAF-rSH7-e^*z-AY@N(oAz`AxvvV>h4Z|MoR zWvUF6`nwE@34iL!p~2O^kU}ILYp&1>Xa+>(DlDd;yM89G?EIkH`J8a~1&K9*q&WgW*3E(bW7hj13VXkp=*+P|Wnus7l6 zey25S#xH!+7j?O{P`aB=B;v9PF3IB&mOkX4r&m>^dJ2>1!OVtA zBbvT?dju@JC3N^fj)1-&Y0 zqZB?isXbW6ZJmsLQ(YAbO{U9vx?6W$vX*!^m*37t&`{qKPauuf_CF0Y%iF;!i+~bz z0(bJYWKgF(Y6(gfhtOXa5Yf7W{pQ;Z3Pc+kt(y52@kW{Yw!t2dL9twp*?fyLYYo?d z?kPip<2r6PZ8#LkP(!V>DKMYIY?|fy4v)^D5GB(J}Vv8=AKm3M1b`#dk zBRCyP6V@|2CMAyrIQ(}54wp&}_KMi+T9r(OSR6FK*l$Fsfhlx^*sjmJ4Ee9Z4lZgv zpw`dx_hQ(LY1eH(j9=4y>@$DsQVwDLb`9Ip_?m2ujTeMLVsj)%NOcs>U#E%h>uW{rH%Au^Fst-Oxmh)P?kf zYfJBA=dPIdLq)a$Y^Xt!rL2*SPwds_g{N4e{kQz=*{h+F$3VKe>dbHYvcn`TVcZ$+ zk--B)JGQ;r0EDfWTxby#I};9tU$pKYV4U+DwwPPk4VLQh*x&F=_U&lk+n-cFwJoi#(^RIj;a}C*cQa~3eLQ^Ev5R-M=MDj3 z4kt^K>(z}1ejwZ{x(HaPReXFh=o)skdZWo)o+0pr0pD)hlk@2ys+`>p3dP684ed$||GQi@HDn_)6%ZIBIBsUFeSNQ*F? zk_nsz7S;q1jb5y1jl`HQdZ|~`pt6q`?;t_YSsDkF{mMD0Pbup${Z~`4&aL-`^o|^G zN4}3-p*tU%v&)$RBMrnT_Q4YI=rbJ2vc$P2kQinYwJB zAf2)s)=M-k>D}^LhsWw?_9d8(>zc{pE_<_Q5pCwZS!B9ZoK4zI%rDV8k=tx6v3+Y?NFWc3>>~)~IqO9^&FL=yZ zx!Q|%?i6w`FamE)n+gcu{vD&Q*;>?JOdr0br z;3|_+Hn?E=C7LTGCr9M$xQfZo1gj}#Zw>X=DeH5110zX-2bqu3F+%EEbH2MkG+bPl=9MXfk)FPuX4vgk1S z+0TSa5UgXxZcTL8RqB^T-YGlT_RS6KY`XD_?Cczz!Dj1DjK{HPiQaUIU$dR8#ahMB z9$AD@m3}s9oAK*k?ufSPF_O^7T!-VK_5MXyMwdN4^f;sn_eH z+=cl9_}TrAKMBo#AAot)t?TZVYj*-mJ#^W*idw=@3NLtt3~qrMN*%Y8mP-a zaPFBXUQev2Xq`yQU>AYgxOAPNH%fDh|NJn%v@PCSU{o> zvxgxfr9ZH-O(?>+xh1z~TM-Y$5%k;xOg4kftQoP^Ho)8ALaZK&j|Dh^EbXHb(6*~o>M}LPP2`8xEfTq{hbrQD_(Y##uQPP}mXF1L-WH z)b=%W@R=+)5H?mB)@bg4bo(WXEx*g*Mzwf5z3~P1&k8qqXU{$qdt{0?;go&u0DqI^ zQSqT1*QOzjtCLh|rgeB8O?^q-^rp5Bt!ruK4HmO-WdEc?)5i zh(dG;_N~Bqi=`RVsFLU%66nbleL0L<8__0X-$yhmy3+zLWM61x$+%?Gbtp|8_khu_ zD>p{&N6}Dcdv{zZJ=ho|wU0nTAx!@}qvJ9X47CoYYq77P>BaK#?NzQGao2%-9xG`wzk+h>AV5U)Pk}O#Z8j)!*#_O*#AEwqQGHlH z^PM%Tx%b2>^i(NUqj|+Ulkv+GwqDfsEP*{-P_cMa#*8wpGB?9yjzb5Sl3%ogcFDaZ ztwGioZ+cv1lJR0Zb2lCb+jwt*0}VgNHi_ax`%6*9>Aq&V%>@u{i7(>EoT zAf3isWG0MFqFT!TQ?>lKJW%XmfTZ{0GTS4 zCi$dM-=R?(QLqF=oQV`Ivw^Ur9)Jc$^a;ShVsDnUHxHnv@qWl!YiBmgI{V?YG2Zz&6O?tWy{}|PP zI6||yUTRnp$T_F(H8~!&vf&qe#LG2AYs(J$$ZIqIPft@US$zJUq!IfIt^U!PzOiJ4 zco|+i-+UK{u#hAJ!}LLf%OC88%Q|CZ-hrDDU7e6Ccr0Nrm)#ys2zzHisqnh8oc=>U z5WuGB^pd=#IS+q0S=d`(j{v7Ckg?3fe&Fd}pC3U*vxcd9QdGMCwLmif>|~g%i!15l zIFqTUq0*agcY$GP>sny-Y&`kQvvlfFHlRk7DYIX-_cw15!i~o^>Lv`EBSY>@oy@SLvL3+tM5X5`6L%d+VFGcU8rTXOf zX89A06WKf36;OAXw0ZtXrs~4CP02tz|S2&KG zqUf5dtJbz9fJ)?r5$6wdCGMNsNAQ%L0b+}~C^x41cYlZKI)C%Kz*0CxGgk?`NfzVN5MW2*~VP&^Via|7A+X_A35Bk(b zZcOG>$eu>1&!L-4ZE@<&kcy8n3yIA=ylHcWDb&F!O3-1bs(Wdk&>=_#bed^*NKVC7 z_uTUO*3FZzZ@wL}z|GIp@aHdW?XBLZ1E2QWPivjgRk(_A?~+v6(0q2J66{gl1OkC? zqy8ITGwc7gubGXF_21pg%m7X%&i^R=XInEDGb87Jbv3(yE2mr4v(a5$VN`H}(OmUz zZbBoG_Tq=}*yPG@|7Oi+I`P-p1TdD&2tdtM z>BBz%z#ZxPj4cKU072u!1J>pRsyY_d{t*7_YQ}{^`#?lKq6P!fa1*Worp5yj!$P|V z9sqfY{6!9}w&A2*KEU zvg?8E?Cm}iuclA*{s3mSdofg187a(QOAx^5TQypRGd4FlHvm!Hng<_=NA_dP@>Uip@u*m5 zSHVx^{73`n){mSngi``Pmw;jJ{og*JtpV~@>3Xv2o}7+nf<*KL`rtF!2|rNRw%N66 zczh9|!0ur0fP3hHYMK-AkE?5XSrw37B z?OdG!Biy_f?{7mzhQsQ^*E&F|``Zx7H+0tvr1i4<>eR(ju zCnU4Mot@lsd_KQAP-9`4k4V;i&ED$qQ&FXG^h9TdK=w>cLV`iv-2uP2g98J9Pv!jr zeyxYu+0KQL$Hfx7i8drGe#rLc`{wm25^xQ`zPZ*etNAhO4=m$jwShGP+2HZ9_a;E| z={oW)x6@tsVT<#9?QhJ7hwsy#>izyr*c^m9FncW5mv73qLHJk=;<*8G;-mD~<8x5~ zvx2j?`>?GG?ixPK7ZbR~{lz98noc`_Yh8(8-(2@DLhG~Q>`j+S0tTZR(kkS=Ne$#e z54h?69i47+c;n{S!bg4A4Exc-`R!c@w*X`MY1QBIngvR$twZ;F#y47c?`R+N#h$M! zk8S0>IT$ztPd??{2x_Oc6UY~S0{wFN5C1Wwozyq;r}&2;Q1Qj~37470313nSDS|#>58`i}B*4Fmr1+s+omS@Ts<;-`m#paIxmWND&9lWb>D+DRkQY z`lPv|k!WXrkN~Nb2c-hlN+Vg<+jjfQIRsCSkH?)xEYb3y2#_=%;rCd%)>L~@v6DTe zp{dsX`S7vSiEAP1#Vxn}Q174;oO_bSJZXc()kOj&t=o^S6{Ta$csH(m#Dy^E3Ugr3 zTV65mV5<#=>SC|t@y6E8HOW&+cuC6L>D%C;>{rRl4i(a@M;dp`@c9v@kxZZJ6q7p4 zNcLihe&aU$g+nueyahkFwRZJz_apcybNmkvY&73MhXa~*Vx4f5cNK;W!KrqUhEd4? zkfep^af3&+;hVks@5P4Uu01zF&V%k+NSRG`|R6`LxLlDEdKK_A+917eS?U+fo$5mD7thDWugloWK61#Y)} z>OYBy)$Cd7)~Iot^V`J8sPE*KPn%4Kz2FWt<13=}%^PSQmzC&2t?{+N>JM&1pBew4 zOnp*caglxIRSi@Tv-Uq%LvOk8uP>x;@g2i&wd&t))ufwi97a~;E8lpWM{vbZ#=)bc za53-9l5O3}d^3OT>iUK4(|;haH{lg3+2j$gt4zBzx4joiR@2cxq{z0LrmfwO&yx!w#lb_?lfXfPTLL(o|rMCNLTN|KVYTDb<2Uu!2TGNSRup*johvIRKf}1dP z=cH&?_mb0Gv&ILC3|-%TQG({O9>vsd@}!pVy(BRqRbD;GVr`8!of%1+UibPpM=X^$ z6x2WY{`Od3Mq$rZ&UIAB#>Kdn0Los0<7R0!NbI$PqbtHEd4RzMR`F`(Cgg;^%Wl&4 zYWx&mEbDrPJ7ULK$HMxJLUQ)L71##i?Y?%)+S`Kp*>xi8uNR@ceJD7=)>LxL+paE9 z1OVPj=IIdpBYvPxlffEqfGSp}64#qt*_c<-Vct6Is2h{7LG3=VcklFzcri*M+!5O< zy?%%oj9t{ToEcbyK~I46&GzPrWKZOC69*rm$C3=k#yj3 zU6(10ZY!uGyAVpV-m<^0@&;3ALC4%X<+>$Gt~{5=l8E;wo-41*z+|{7t7I0KT%?%1 ziN61ng-TX2n)k+QNR~5`Y5HEXd_2(kt=g<2ESqsmcI6CSRsr^JchB7dPFF-2$wkIW zpuWl*%KO7eSV%^QA+AH}|U-?k1vUaYmh;lyTO zPp-%hVxIKv;Newua3^1XHfj-@haDt;9nHaCoO=%(SVQTKvgt) zYLLx`_fI6P?WvIJiy(AF5#%bJH~v?cZoc%iXJh03SH-fXAIkf}>59q0;toLjrCt6% zkvC|L1@}-Uat2ZlqMn~SQDtk6V2=wG91=J6rwg>qPZh5pvUH6LoWo%i=!oBywO>JQ zA(}$uR+1y`FavBM{8vi)_NCCMsSx>H#<-!3v@I3yCTT~Kud&{{w?c@tN%XGfT)d#y zOh>Qb7stV<;r)pl=Er8NF!~OLAmox8ibW8Wn((S(Ud-ByR_?bxtwX*wicRB*2DQPf zS?Fy@NO}|kN^>9|v{qk;IUcV7ycUp+2zq5_%%+^$FnaL|sZ&+%*wC0(&-cM`tCk0^ zW{LIT?mqbP6H=P1PPF4U{L<4O3d4bI%}QD>g*1!wyB-xil*M1Z>{LWP<)$fU#gM?k z%ZdE1Hzqk-zQ3%|bEp;`<`BSE`ARQe;HCgkW zYps{~LI^Yb&8rBP9>3sdvGCUXqfvk77?J*9rvK%Z9ogu6#apM9l`}G|ruxVD9CrGf zdqwqU7qO*s8r93;$HAqr4JV{$R>ueq)fgj{OM@Vb#9!Obj6>B?&_)7B?OOd2=u6Da z7eT<^-5s`#t#*x39T~y{ahRLDs?v&i#Rl_UAuQ*c$w_oYZTq%bmh5%($yJU z!+!VdkoELeWAQNX`JmIh)$h!UH4RgIA}h$QoF=$4-8CmxAhs>f8;c!1ykr=5JtlqJ zuRcdSZKFxVuH>B(t=Hght=~>gu}1}s5?u+KLU)FNh^u7QP1-^1`lZYV4cMvXl)yPs z!Pa|>btw2%mKf2EM=UXKoIYY!C&>he=867*@1!D3@?>NIfJWguj3?&85t@5fRJd7f zz`!OnsnxCPA;?&bWw>=7iC*vmcq+Y3tJdBjdb;1ISKkC;rIGY1v%(bg?Gy7Oa&Y#1i?Knl9apMrea5gw4jkUD(Y$VhN|(0tZT7bL~%r?9Tz3c zMuDZobQBHA!iC?`TQ3`C96yb6k#eSaVXVXJ>}~ovekT! z%+G8+j4Y|G^e{DWSM0Avyw}A?V6xm?Ive|+}GDRoGs2%A64t#?s%nSk zTmo$(0Y%Xq0@lr2};f10X=vOU-9)-se!s13j zW{Kc!z1qJYi+Mpv$Lr32_K9;_)R;K-N|ijt1uiFgI}AP)0d-gge5p0_*q;MZ2z>cTAr{F#cIoq>g&b&)=?P(H7eO3NVOzs4xtBwx&X)+J+DX!1f{(0LH0#XEy46Io337X;mi7jzyI{(TzT*%j zPEb#qq6nC&jB+ZO0@UTa#?RQ-W00b)=^hR-!5r;-$vB@Rq%sJ(lkT`RN!>9+ z6DscX$)aV%4?5DtOr4J3+&em9ka@4c%DVri(o=FUPDC9Hi}WmJc1M}eYPh{XVUZpD znt$%+8(39GT-2JOx>1!q+XERwt9L~}L_L92g7_E}9Y0=ncE72i*0QVy{SZXi8oj)V zj}2wYg)KmN`AFtl;rU6PD%)-~Dd9!UT=7E(ohZz_kTdiR8 zErjsVa*Xs2W!j!)i>F)_oQ|)?J3-!)83mpJ<5n z+ssH;5v7>zO_eEMvkX5cBI@}bikt-`o3p3ND8};2E~ra>>iUnbe|=8r2@E zDuP+gI3D=mTm&o(%^Zp0UYe=N6iY&@_huo>ia?w$8Oqc;tEDDVtWNsJ=WM$VG)I5S zsDD(cj%0MxvgvODIY+6xAEPO}a!&%Wg~8?HQDe5VEqj8IAX48bIh%NXr0p@TR`Uk| zDkB}-lJ$N4%=l7f|?J7|FVsEPJag}wCJ1@TR(1jk7?kp_2%c2G_C&ZF0E%>E=tDVMGT-I z7aDQS_Fa7ScMHk@Y}be8hCQSz{wrSvDAvr?1w=l2RlnJg&i4v}(B-GCO#xs#BqokN+*rGccst*8a@j3%wB$aI6ynquv^Z}kjjO}vCJ@;i=W-lAu?ANDCO2wsjD{^DGX=FJd%qZ=N(+DAgieT>D$)FLDxIhNdQqh_ z)>Rp$0%`+@?flPOI2A0~_*WQjKGjp@`uw4~^>ViJcHAe(u?GL69XQn1vYu)C}-XLC8~VwE## zSIF>GH;X*nW?y?_>vyVtUi-*i8@3kvml}GOF;8iiU!JyW513n1Zq<>9Yx!BLT4rda>z{@><6iVo1d!nUU3i9{RpORT4x12 zG2Kja%@rrss`-VTvxsDbh|45(B)C}0`9nSlyWT zOEK*h@H#@JOX)9fpZfmLRz1GQ8IySwuMMla|X@)`YXqQMl3B`r|GDBJi{&VH8tUo(f+-rD6$+hII7FM%!goEF>q-!Z=8Y0jabyO+m*s0EIR?% zMJ9wuYKY)3isUx@m6*GNNux@>jtRHqm}1kLWfz1_Y|}G&JDJOIRJQSt$7JQpL7jFk zs-lC*ZHt~^<>c)_PMfPk=>`~2*kUOSRGHUKO7%!RKmJ#jeL5oC%t+E+we;fwlWLj> zfUy!_0J2O2y*Jro0~PC$izUrUW72a7Uo|EUkFy#ZmZT?i8S}Mamdn zQR(c2XZX@h%p?~K-B&hpqkUB1kEcU5v07jgE`LZJU*S-rL}Lrq&k^Hid)L+Be)dU( zyKZg6cQz)r;YhhejMG8S(j6RP*dBwB#JNPdmTXqEwr%Bn5wj=odXA|-U1qmLO&y(| zjCuaE3z5r|iXth1X$I)7v(GVS(AIu_WsND9S6PbOSIiM9i_im8(82=aD4ne=w@u~S z$!|gqh$Df2Ao(x97uk$Rwd0$!pDlY!K{DyPkW@WM3R8>IrYO4Inq*r+?0ciUi%yZ;22JceigHqJ3-I zubI0)85`jHQ(M^)2Ooa+;S3j4xhOG_X+Mmhl31yYx!|etAC80kYoH4TW@qC6zu{4@L`VTkD|!n|OhVMZ7X&-@_cG4A6Ks2pQny$S$- zOZZLQCLaMuKglG}&oERHCVl?4H))I&EJZZ6U$<&-Ekw+Mxn|esx?h-cJL&jt*43Eb zf$`kZcB)#rjBSrohgZC%oJXgNA(kIWnnhKRTjOG7LS1qYK@gNMg-$2D*SDpRQ*y0x zfwmO2V*fa7L7BVURR9e;kro7Jwhy~$#f2-UxXyd^TS;UE!=7BtII>(6lB4JZF-H*U zyZm!fvvnXWL(K0?wNn{Kyjg+!bGh#OsI4QT{8>3iH+xzmLk+#q!_#366@a-H0*WRc zQ&HhvHa1uJ+^R*E`913Gyvqt$EZzOq#4D0a=|rFz4BDIkZhE%jy(cB`s**zB+O{Nk zkOi7CKAEcd2;G4(jfjipPh+I99!J2~n>k0%2}|RD{VmUr62@${gXP830f`y)<#}>+ ze|Ud6HPM7qvRH9spiW!Ov3r}QMNt%U<}+1Ts(Q&YM28<_G69aRcTf?jr^~JI(T4S= zumy4BP`f%?l3Aad7B}~|2QzV7NL6yw6q|%>MLN^EtRzSoTcpE)Xl`*J2+=ikawIxy zV)N0CbD347Bb2llitzQ%}m=g^cf1sbOScw))VME&-zG)_zpIq(4N0Z(4-J%BzrG+ ztu)`RbBT+_*dr&63ZF-w5ob6Dwdn*sX*?2Bxs<9!NY1atzF+98Xfg}}<0U0+E1-9) zWUxn*Cwr#HaxiZ|PLtz=CEV=>{Bj79YQz#CeA~^ZH7108+4o=kys~r#(DqVE?eRId zF%h_^9S%Ij%*8Fxu%Vp5k4C~1DD05vtdL7(^_{jAS*&_XzEUEKfsByx?*x!VP4Zla zEPX@DhreXZ%N%QQkbU~}+(V9t(Nb6^n$*^+kSXP7ym6%3R%#{rK$P{u6{6#!6yLT0 z4(cAl)4NXDG%x}f*RGf)^Ah+=rYSJmbgIa)8@*=Pkfv!{$IwmY<11|^bisPOY_Fx+ z!T!P^eM4SfEErcr2LV>Jx9v;*H7J&BdJ8&?b^;86n09nbLc#Fh2x`8ORGV?9Y>_H;w4^XR4nnVk6az`&tV(KW!=X2!Y1)9zuFMN%CaeAe3^ZrAi{cp*hyxRb zlkp!5bF9FN@L_RwIB`mQj1)T=W4U$wkW?h9O6RmKMMt5t?oLVG%nzq;u)eI0D(|7O zgag(kjf{(08V$-E58GH16JYcUsy0(Z2&tNrRejEG)K(ZJRrwy<%`N-qhL~P0Y_VY2 z)SjLVGF>yFGdU-}@7VdZU5_-f>HdZ+Te>&c;K?$hQ%QDYfwL;p9{O`?Sf?3Z`p#Ee#+ruZ3Txj<)NvyP?h&7Gu0EYZdHT zBeS7%vVaVyXaXQs7y((luE59L*l;VT)=V4MQGuXx;!%@3N z3BueCf&0vavF-AqTk?3S8CRT{0IcZiOZ&c5w!`4HrbwEM?`i#c-SIE5#m&vnnIAvW zEsdJeiUfizk~n3Oa!vA}Ix=#!+e{-NZXmq~*Ic^Nx-v(@ zeGQJR%P;1m&iI~){X8hsGs*oIfvBVheJOP zLAg9)8I^xu1pK22P~CzL2U?zBzS6?YpRwe-OnB21@7>|D)MKG3l!#$;08b0O-}b7# z@7~4s3??4tJr-&ZEhs>N_~;Gbpwkz84`&k5Q(x4U98bPgc~);%P;07o95XA8hzkvT z;Jq3v(1v=)9cW`Q0)nZJnENkK!0>>eCHan>ibP^KCY)pkW{g40kZGw|9BKx#Qj$XM zBF>WtuI|e|UuT}^!F&LxdIRKTE+p8nZn?16{(hxtQx}MiwdN4K3kU{f*V_YdB03+h z$l#_NY(>=wqJ~45=k>^Pfr$pzRUWT#z9GdnJ=P{{s7Ksm%{PU7(`JK4IKT7P@OuKv zegV5~k;+l#vch$FBQ5_`B+j-9jx`Xb*;2?^zR&DH^5}RasE^oX)RWtz;gIgW1R@A? zmG-3HEsdUp?cBpZgjh?6;jW0uJ-2~&;RFb(joWe8J=*B zddN+~C`vH!x$pp^%7MO0(ff;{Bi2aiYj;%&`d8^c?f1)E&ictn^5dsWrNbx;O`om^|{F(vmp&s6BDixrV3 z=02%Rx~Pf)0L0h|BgR#XOV|=!a`+S+w!8iALLA+|xpE80Ba*TWYIPn|aQa((E#oFvSGTb=!DdTi)Sq{P^ zLR47|F8uhlRV8zG%}xTVT&n1rCx!6HLc%L*mm3G={Z;%|L9O@8r3u$5J;K3+A+dZqhU zldg70Nxs_TLBOfWSX>TZnVs;rimqc$HMCu;^_5GEH-j4sy60f^U*G+$4 zYoIsr;EE!Uhu&vFZvZj{_VP*Uy^2!qM&k>z!1jmMWv|}(pCE_c4d`ytgz)5*3&i}? zXjVMu&1#Ur3jNpq*B+XvzUCa7bt-P(9JD%jLSBV+0s0-h{HI&{DAD>pc3dEi$9s(u~L9-x7}t=nDC+=IZA?^gB=%%?T%L2aGA^ zIW>$q;X!SUaSc$WeL4G5I4CY=b&J>~!#8u|QUFRov`!eOHC0|S0kyI%la zdrwwpoLKiyf!UDNxpT^%HoVf+@UTVJy#u~drW}_>MxKmitAnFbD2fH;Zz{`}@JJ`* z6hVnVhB3$MsgtjDb!#`sPuC`d&{|Y`PNhNrnQy9#>(q}Zm&>0r zcZH#8$%xSU%8Ts3itcsaWm5WLST)Qi^hu9zW^}T<&90zr1!(J{-le3Ms?OhKw0Zersk`=1VpDW$r(rRRVw z8C`|7W6ACu8$a!+i~P2WtbYr(v}W_hL(sB8AsN>5?|8Ypqv0a1&S2UZHWCF`272t` z{Gk8!W{V=Ox|~*?UwMWki#U!ovAwUFnpz6k%Z*K3k)h<5ZkbGKWduzWV`G5uWA$H$kKS8<_mR zLoH=z`5$cQ{|Pp>Q5~>7WI*XYqwWs-H!fqyO%eb_xB;2KaotL_Vp$iTZc8FjNP_e6 zcJ)BqZtVpSlQ%ZU{AzIP+igu=Y5i)7#OL^G`Ek09YMS`7-7>JFyNYs_R1u~>np}!w z_DTM_$U3qLbIrG7oYjeiN8_Q4KIUX0w)#e5vs<;PTo2#n$LvQoQi1H)$ge(DP)Uxn z-Db(5HS4xCy}B+N(?QxNyQVJtJv>Z&wvD#xlEFsqejaoo3Z4}^38$*-iq2>aZxIk* zT^)JAq&Gu3NnJUfZ(~|T(@52!SKk(c^EvvqAcl{%lk+YGz^=h6U z_+ZdtSi-p;y82nSGf{ux23D8c7Prc9F&e0XDr@oKs-AAE-j`)C@g7P0Phje5OqbTwpLD%5f>TR*L7Q%69!FlWKKgG7eKmF;2##udLMm{#ZidMVK1}((s6yg zDpZED_(Fp05Dh$gz<5B_y1jME@Mk`A|SOQ4Z%T z^abOCw0Lo=o1iif0cgvo&s~KJPc_v8`aY=Z{O&v)U&3LNDtb;V|;r%9$5l z+bp!I?J?ftqdhROIgfjI>iBZ4|E5^j{*M()=>Ml!6d=NWzCFJn=(g|#j?NyQqIuK1 z@aeA-YBy_eN8+-3HkG|@rMM@3ZDSX9bazwFf^0tYSJhgvOy%XTORT0^ZZ>>cC)H(l z_&FXcDc{Z};i~T>M|;;~^9}G_e@%a*Cx!pLx_Z^V`Rqhhs~VLeIv zZr!T1%^)MkWjm>Bu&J)%?H{1T&~vT3E3{T+Rd$8{(Uyn`HdfVrO-uNtgTG~{cmH;{ zy!o?oy=l&8cBIbkaoGi5cTb4L@0N0Nd787cN8!YL_4Lr*rZC{%tWiICt0R2&y>@D_ z@s~SDeR6ATf$3r_P$k92M1D-xqD%J4wuti#nvFhE)Hv(1k5iPowJV?!Cq@1N^~xA= z#^kzQMsXjm3y91}IHZDlIAjPC6({zz!d}Bd-<~6rTBZ^vrd!Bd@tn<2onSG-Xpxs# z?ow8~V_rucXY;r;2cqtFL;-$+y-;)H@)>6|5ySx#VSDOOoi^ubiM5R2YQYEGrMXzy z>7Jwe!_H!0o{7>R_GFL_NcM@O?;)YZ1p4P0j)%fQlNE5iM82_nk^?zea_A6VtZ zd}op(gmb4!jweV6<;h?@n5d2?Wd1GC98a9blN$-;%Ah?OKgN?c!FVu;-V{4m5pClY>rt9}*=&Q9= zt|VFmd*#9fD6hCoOlqH$EIZ1ssK}{K4o_Z4iF-1otaLiII_|2@sunyfR~O2rK&whs zIyNXx&YM*x!<9b564rM<29IB8c<55%pKqv8VX1p)SD=*dscK!6KK3qVl6@*zY|VFT zScoTiS2`=Cx{^pG*9BHO7kUIwmWNU>rZiBg45*D>sDP?xh&Y4DlQ5SQG)^pX8IFQt zkw^AeP@PU{e-zWQ%EmUE6#5hrqOf38R6yD}t47CE7S<(}%ovrcERkRlgkonoqed8g zh#w6%Hp(g|aGYyaM2e+I#d?NY)wGb}EZ38y9c#$JzPKYL6FDHtfvO?>VcTug(S#(y z+-y)vWl)H+*G5i<@@&i%#~QRHCMNPGxgq;n+xyj95pTLO2?>p?E-m#Oxf%9MW}C=) zPTh)R&D_dN$=*tcA#6j|4sMn;Y}$Y2|504wpD{BdziIqP$&8Du{BZg7(EJt?&ObJ2 zG#8ZpzE0Ek_3iv^8%nDSU-&TR(x-u^CwD5;Klj=G*SK5CIQ@$@8{w0EU!=`ZE208e6&_U z7;sZKYEwpLU26I}hAyv%i^K|k7ka#JApwWE!^P=|&bew!K4wRDb~d!MlqW}!U0Pg< zIW@`~pWdE>(Uy_kR>uGJ#cXwX(nQGWJSld3o^a5fb9}9kvLiG5X*Tv*7bhUs9)-nS zIC@u1W?eRFjX0YWbcDaxSUQLsiKRJ%n<%+uv5;l){^0!k_Z?c|9}61uNnqldW52Ta z)ZSIvsQDXy=?S!hgt!Pubc4wF&s`hbiF{I&>jEKVciE|VN{`vTM9S9Qp(?F-@3t!r z>ROMbkI2G=Tke`;x@Ucx&!_G0J}36*)r+!`*yg_bBLRGwTYIu;lS8-n)8YG+n;$o) z=S!jxmg4hqrh;r8JqHhT5om-ja7@vVv1`_}8j|p)%;Ch(&sEYHNn?`!t)mxC${MVD z+1`>TH>bAY;L_2Xe5^*0{O-<0$Vxa?S5l@aH>$xv6lVy8}d>BLdv#D{>TM%vRJtKm4QR4qP4u7K7?)=BTEn`9-S z3{-e@(K}!c6@h&EGo^0nNq_m@n!#;K2sY5Arb4*ry?M*85W2oEYQu16l9tcT52f zGs3_wwSh?iD|ja!lwmGT4*Ts6n_Gt@mfQ3($jx(j^P+fQTSsp^o}%GnByxpdbE723 z@5;rZkx1nY%15Z)%5O~1EMeHT9TVTIuN~u5*w_^rA;}1fYy%S;Xx#}aR4^pd5WnxELIpw!NNkv%`ws?O8OybZ?`!5lWv5K7A!EJ5sO74g4?Q_ybErc4Vv6D z$+?J3GbmuhVGKDJOB(|_$PL@Yx*g>~CWM!10w7++c|NRSfW$oT(G6T!_{0I(7&Hwc z13A!mevvqpq9a|A%p(bZ1><>@*Vz5p>j?W6c`70-q)v&xzf`%V(TcZJ^NLq`t7(Y# zXs{)n_(4XZlnjt$jdPYXEsMUJ-WRSc_K;=6sAe~9+5*=~9 zd1ioVgbL3*edZ} zIa0nh?WoZdxfx84rHmrtj3NXik*6@aN-&kwo}w$;540lGU_2F;KRp;&&@Z8HE2uHw z)$FeU=VM%UNRzF#v9N+x6S|d#$M`ZcR2VY)y8Qe6eX4O#Vrf`tOP&l!6A4-)s@B;! z`GHIW=)|~ZR87JZR~%HtAEIq8;i3)@rh4NrB~$EVA06cNE=l>mBp&4rV-a<4u6BMS z@MO+G!418crqwrwyZS*y+Q&Q8Qo8_BU7&#wK^3szuVJ%<-^YKP=>UBbOb}!QW&^Es zi;3b+7A~+Xm(;7_YBDw4R3l&xIXjgwy;F?|9o;4^GT$Ui1orrWcHLJ7!-cgF-Zd6U0L7>Z`L!_f;fOxQD0#rnOz7Hw%Lns)G854qOKi5>dsk6Yj;ObY9X8(?$yS zcKy>O3S9R67p!+=eY*RAmj&WjOb!0AJCK}%uVE1Uh2xf05*(hE$_+MOi3jTXYP>$s zRE~e(ZM}x(LSZ&Ra@`}>{=>zv>)i|2_pKxFGhBr4zW;!JeaV1d+? z61kGt*SsRo*a_gKU?JpXfG!akNF_u{ldr{to2u|>p zPq0YQ9VqA=mCiE%WUyPFWhE8L(Aa^B$ct4r!)^|v>glVetiN-fRPh9_Hd^Xu#9B95 zrZh=0)(~ zc7O!+GynV~O22Krt(8)Xt!alq_|sSwnWJwC-wBj?h7hN+yMJ3}{E1)3rqmWC95HV# zJ_HkYy{$$b^bbQaM@a;<+W%!y%9@FnZ$h>N0)ke1^vQ@$vUxx(u^c@9fol_ct$d7S z(%!7n+!#Y+hJx|2Vh?!>z%&xXI3S5g<@Py2R(7t}*AQWcAre$JuNBo(k ztIUr6+~1GkVd9qA-^vKqT0e1R!Ku^4C3GB4!jffEi(EvtfO>W)q24V^7Mn;&3RH^9 zy{8m)EYQEjHRoka##?||eQ`3`=JG!9A6%|A{Ubv{as%`9V({9a59%`it$&YG!Rb#FuZ!*)u41llVtm(>mDYrX1W~?m~8FZ?vZ*R(*5uq zBphylq%HzKkwz|N6eEl@-{LG}a5>fh@ zmRyuRZ0R1K;l5~8;Yn3zzHsKS#oTMm$UuZkfWzd)A3k1Ix(K5r~Gp3(Z^pEe~J2N z_f_qyC4UL~sOGEN`Y`%-kox^CUcGkJ(_dZssQgjUUu*jJ8NAB=(yg}~b#dmYNl$-f zqfP(IT4i_D_fuB+&I`EvH{mcRu9gfvimFe_%bwv==Ua={vDCBp-N)91WZ+wNG_F*g zHmB^%5Yz=np0A~-O(Bn#Tz#qO`wBX9+U}laOTO%j*5ch$@S#!Yo32SNq223-aB8%I zbt7Gg?aaVata=yCnl;OVNM;!6jD|2;L&-9y{t9 zO3}xU5=Q_|UIIz}stnomQ}a8!5F*bXpD+tKlFaV1jk7R&rq*;#QvgTTzt#4)Jx9l( z_~3U*wZ9`V-APdK>~U(w#A-i!pl|&6X(s8zDPR(V>fygA?0>16===}n^w^;Lee3`wE|~$h z41;j)GhR*zj*-)BvD3t!v#W>PjDYEGxYCC5uxySKm5R7KtZxq;5neOeC>>bCknZXP zRx;`>t~rVxuDW4&eRjvSzHZTIde3COL|-AXd4akDM}XhgbR`b+;9_F$#{Bl8DJ-l{HjNXiSRpa8_ALjIh?1fjt5-!8| z71oi$uhoN(cK*erKO#(BVCKs5HoY=iiGSLE48TzjwG25c`9u2{*GG5V+HSvzCi%3Z zYE5)_?{?5bW(AkOdgwQ88}ZZ3Ur%!BwqM8%g1|A(vWD_rtrL>s^a;s-D%1$cd0rh2 zA!Wf9QtS1RcbTLc;IIXnj09LcZPVrG~V}DsB8U_^gu9EPfY*D_~^m=}6 z5B$U_!`WMIYc2699XD0n?&-a8`v#Fh5p8pl7V0Y4#@fByfri`tfLG}X|A*x9e>MLx z|EGfS|HnV}Pld$6{I9w4U+$xSDkMfGrvK?b`p=nRMkeNej->yT8OF5zmkJ4nupMme zp9e|W-Ysk&mSvtJrmG7a^0szhM<~$i9$L^QpjKJ#~9T}P$8;KPaE&OwA1b!2U6)ge?;2>OaVkq{j+;;#~~x6 zws!}Bfm-XGeJ7ssX2a(xOWRu>CuGC^3$& zAM^>$L1}YxaQ|v*Y;SL;2eisfzal^ra*6q4uWumbgE;~T>IjawZ|HfpXrlu}tVgPfq*DVC|BjevgcxTW+ z8-Fr-Fu!Ct5Q&INAb)z?pOw5MN|5XQ>)~sV*7qIasXGRGqts?*6rw@20@U4uDU)!PSkpR&pxa)JE#FW2Nr=r2nannG@F#Cok zCMO4{!2URZ1a8XGse6ztJU9Y=6dS%#`kwa>j`eN;>3z+BkAPW0dU_IiasuiI{g{V9 zj}IShhkb}h*x3Cr)|W60fSUd{@jnqiL|_@e5&EBvO@1IlqA%9F? zUD@z{(|;X?X$mKy5-ks5{93-+lw_uNarZ}tM*s~B|Lt{sgTpD8x?{ z+^V0q$<6c)ptoP@CsWyP^7RKgxcRRZ0$0D^m{OzPA36wuPxyrw%?=G&ec$z;yo;Z( zsbBmlKk@fIq;Eg!M8}4PcVYR@vVmW5_-4>8_b-!&K^^q7G+KpbzYWl?U)B|{?~YEx zS2ok%sw5Y%-s`~foRFD4BM@%MfE__oDg!g+DgKMcGM%Tl!VUi$0jgKI{XKPP|A?5B z7e8nEEfdRcM<0$J`$u@xa}$pr?vmo1ik^)-TBEZ=FaSb?d~l>I=#=%2b^twV`YUrV z$KRk405nr>uQPP?erYE@04Fbq#XIDaQ%}NKyM?@P@P48n_QOA*^%CDf?SM2;zXW;! zQHy)wX}JA`ukeQ;_2yqOfAtK3eg)}$|H+W}0HQAT&fR`#On(Ed0nq0A_N9@Y{PyiY zez1GzKS4WxjAmc7?e2iy(|)BjQ-1^LbAoLj)pPy9f0@R~{afTa@lPiP_+8bIrj)&N{d;oH zWRT`Jb3)p2hJW7|Zg>e4(5;i^SN#Yb^%L~lo+U`&7Eif&nB7w$P_L?MKQ=?INW@-x z^We5u-rAykk=~6)m_z4gem~*Nni0THpk6p3oX42TPHI6fnks?c1E+<(KeUOYx^>rs zAC0tJ+Pam1M&|HI4h1iA)t5+s#B33M?at5TX$7h=)GXvSrFg>Cd0$v@Y_!wvli*tS ztM%i<;%uw!QWmO>_g>(gNh!vx#h-5+N;OAfg_egin-KvLfcLbF>vQ^eiETPN%v_-Z z1e`ec2Sz+0?H0@H`lk9!ssyY{86J={fQ}Dxn)LJ>r6p}$FA`_BTiwDTTgP0bfivPj zr%8dFYd)bVwc1Ou-rLyF2jsU*(chi(<5a~wyW$coWqn>A`z4#sdwSb5H}OK8tq6#O ze5H0rTxYJlGDAip-oCHpDFMn$Lu(H_t8E~ydC*?h>yH=Z(>657`?vnPcbNqiAJ1n5 z2~B<0G3V8bC*Y1^T&Lc{_Sa)ZdVH(!_-fa@yB|q0Bcv#g2q2DW6Uh{!KQrItD&BS7 zsCO$`AQ@Fuh9{{VtJbG*?H2M)hdkwHKZ}I>go6E<8pz4YW_QtOtMq-KW(S@*728gv ze(l=rOZb-$322w+4|z{wpUnYl(otA1M(&*gw+gBcc;6P>{dw zLn<529FOu%Sd2~ZyUL9xNn?aep|%H+=PRhl1W=F>$gR~-a5uw&xe%ud6Hm6BraHIp zmzYQcDzHE!1;USF1qKj&w1Oo{`v7vTP?KT^qM-^+wW@b1CO-4<_*k5LguWa8L~a6P=r-8>!uRA40)$l zc%|0PI%QXPqhBzeI^sEoU-c`jVMhIw90R5oD7&2+Xrgjpv+nU-Vbvzb2n1gxyg5H!57jWof-RmH$#KqarV!KwyAy|hS6 zZ|?C4bxe{PtdP62s0&Q^ck88l(`O*gd&W7#*V z^RPj<1eQ*ycpW2%SPl>mRMI=oKj3ch)$(~>+;4TL{#w&VE9+Xqr@)nKK$;+%kW8I> zzbsk-xN~=&^PXf%JA%c4;}InMt99>bF%%wb-x?#M`^?YgwaO9IK#88zOyZnjspMI; zWZIl|tc-(Yr4ak1o%!g^s#6;!ca{u)xnYk)HDL=J?h}By%#$4=*j2y4pH|k@H^|&; zWrRVwmN>|~bMSZa!6Mkef9-?1@uUFp8Zldzd$zV5SLh4g;KS9(;3-9E4&YLT{ntV- zLJ#XiBNp?QWF5tfZst<)OE1A^$~_rcsRqGqR^Pu*RiDGXO>KqswCmM4Gm5j$JX)g@ zEkM+C){LaMQU552Kvlz4l@z3_J}EL~I~l4kraxm{aPSJ!vm~OQAj}WMOWNQ&6hKrV zTyeB*v)&LvOSydX4feE>e#eTh8|4Cr%(}=RG$MncJ?@$v_o4M-KWFQKhK)kP#&P3d zM4fOa@@PTzAYz?y7Zz35e5=Qu14=tScydI=(}KedTTy6{R=?qjTY3VI7X-9NaHG79bkOuKxd-ASz>b!R5yGrB2^^JD$PmeMYp ziWv{h=6u_9G}1#Kxveo0kt@bwhm@_Nd6ylA#{3K(!dne~eMfgsb@Z?`yR;EC&XE~p zJFrGPqai$j3*G1NaY02abN1kqgSiJ_XQHZ+^(kC&6?PVzf=B*1h=jhN7Y9@IoywO` zPO6o}D>AQti14;UPpe^o%q*P=*hONw!MuYnQ=XB6>pUZr+bgJj$@xgdg%Xt3X=Ghz ziEH9d=a~xPh?HX!%f)L_#|eP+2M9RZWdZsIo~Isp)xowxqPLg-Lelif^B~mw;eN$v zq0c9B3}gduK8iUBbk|b4`9E(H920-hh55tYiqo_?ouI*NCbF3e;p%iB8RvB|-QLeE z1y{)VsK{);rhJDM3CoUF`bTUb773Aj-FKxhQ{m`)%K}1@j@cqWBjkj;pvFK)t>(5x zhKYuhx30=II-y%hQRA0t*bE1G`eC)21?aEn36XTcQ?}hJBl;ekqjVF5SAOa-h};Rr zvrWRNWW))?ZO20xzc#YL$m|B#eZmlB0YEfqsn-jaJfK(Vwyj>_d1>ICT9vL3lh}f4 z{&18pfy|P)CwIiG9}i2~omqRiAu)7$B&DQETNmwD=Y=%lk=b)7-?BeRmm9aD~@DK3h?+E@HDs65byblUBQBPEm8lX*0ycGsd=}H)K;g0x*&|at}2mm$cC<3 zi4W`8Gj-$LGmkJG)FkfFoy^y$cN~7S+A#wD2(U>AXooNA0FhO`J68$|&U-rrMi~X& z-!!*`C*vtMAK_5W-d!91EhycC7X>g8kDQzlbkDO+tfijsX&OW+ndyYK_9Pnl3>kmj z`mpp>K!fA^Drxx)J%`Jw#C|LN&(c?%1dV4+;Fbx$A?z1nK5g$;V+@i;d{ZnC~BGvL#G8)ar)zL5n$X|y4tT)&jdn;pgLVEtrVhySzcm# z7eIJ~mc8i5iz6wf#scOjHq-vVF_AX?H}o&0;3uhBG*u7!&Ji~w1;R}vTvMT&*Wmnb z(jAzv5n~~H24o0bk&~doCdq8K6Vwo38cw%1ZFqMVTN|Z&+pE^A6<0G-RLCz(Tc!OT?N#HbKIDt6@khcM7J@aIN5mo)+JXQ2g2iW&GoLq zi?Yc?a6Z_Vm*OtgKbf8T z=%^apS|**@Y5ws8Otu`&*Yy0X;H0@jW9^Dj=7s3TUunv zZAyYMmCjbmY^WHkAFkD9*f^@1<=2E3msdMVsba;i$8Pb;u7_1xwS23iVp^YM1!;eR zPh(D`X>xc&_bx+h>zCXgH{Cz0^vBvRpsjbUBpQSEflVFuTXc_8kmzl zSi}yhoe8iX9KHOq0{?O(0B`wOC?$Nx?t|@(hAKbbPCy-aTk~`c!q2Lt15?u%J-_04J2`9m;MY6C`^#>9xemPD4V^VGh)Z(L`JKFFX_@*%()M)LBofw&0k~RCOoVBjzqXX@9 zH}-K#eS~_fjk1;D$Sp~~&!ksl7{Zg5K{om|NGQwXOsld+)~~iumPLzK(;o&W8CxS7 z+AJn>@EbC1PRALeG)Al+%BMZMVlEp#g@zU#OqxKK{hobPbuK$CR;P!a&J^bSau z-5ketqMgq^`O?Wd>7CR9Jrkh~Hfl5@9tS{C@x8pS8rBQ;+O}R3q3>;cp^kk&JWL+U z6TFlX6Po{rn}gqw@7|7NEmPw5)DjbH6YWnV@!UR5 zlHXqga~onkx5I$lRvFPR5h->_leJ=A>XeFUppcsIgj2;6_F&$oE3ewCbq|$R5vbG| zc*uO3Sw#GW@q9OUs$WZc{oX7gH$kY`fKb=dhdvmZ&}FtgB*42EGA7;~_(*G3%-Y%Wa0h;*qv{Fcoc^|uUPu0-f3kz7Zpm~5NPNS(Zx&KpG21XfMP_h-n_rGJI$lTcg5Xw(G;^eP}J5s1lie8 zwe&Ud^m||~`U{m-ccBN&oI(iJ=(=XqIBEZQHhO+j?T#wr$(C{k>IlGcz?8^Cxyy*Y35NkHU>d z&VNb;56Y$ zdmh9#yYTo{SMNb0k(M&26V1}_vbdfpFJ2yZZXggM8M;J9->{R`+7CDDRAmx#H1;(% zcW>%`aaXE>p4(o@x=o)lPIh|xElw^si?Aax{0#k)bW$L9o)Fg7XeiXZ?kz0ax%B)1 z6Mf#PPG*8IBF1rmkDX_+AYy%n&kUldk)Hq2@;RJkeKT$~tBhxU;u#7M&^s1`r!fgR z(PNqbAr~0cAKF%96O=*hRJkn40?+5EgQI0LY**@8V+0VbN^`Z3=}6XPZ2VK-D7lVr zlc>riLUx}Y@Xc+;n*PdvrUH+o$%$ZH@+_-E_wXV^_|_yxcg)`L5)o&SwHYS783Hp@&%HVETD5rbi;(b zxJFd@=zDm3l&5PdzW&f^tea%h5Svp@Y3omiij5>Q()B=u>e?0OueoVCPk7LzG#hH4 z*rGZR8YnP8gK6OSLqF%@jP`CEjT;b0NAP@}jvVt}$@o(`NxxP$&L?l`vc$yMYxHuU z4DjzEWQ$D$-;<{)t$Z>uC5z}jV+sDjc&ciK@0>d7fN4sO!OU#NBXQr*rsQe?eY?d4 zj5(n@Oup0ZK~q+3`)-|TBka9fjGU`Y?eT=e#Fh_zT3yKZeF8#AVgzGdcj`;htva%d z$>6Ih?M9aXtByDPo>#bt!v$Wj%71lB$VqI1X~0gKbb^H7v~p0tDQTlvl&G7m;(2)e zkD}o+TytdroI~ugUl4EKG31roENl{8ms~)3Za4zL-65eu56M+L9-uzS_QgZ=xHy879MOx}qbR}G zDU1=dV8gA2PVu-PNW*bELWpVS*hAcU1|uyOQlC6a<~Tt?SN@IkYf&!_Hns{A^{qI2 z{m+Fxe?-N==lfthW(&j)MmZW>N#(Z63j0vo!#5fM1s`4Pr9_qaulJQ(pfhB?2;XAV zsFW49Nl#2NlH<4k;?Gk0WLiM=b`+4qD4@F~h7Rb+4$m#>xu->JMcfixTEurcE8aC@ z1GF@`IJ_8gJMntL@njW3t{cMrJ@D!1C*J_~=X_5C z(4M4h;0|AEQz_$3hD^wLuA9^5Xc58k6z$VhGm50|Nk}4Kc`$uMklBv%9_jvcetuG< zKRht>*CMoBW^kLHLerDMhicR@Q2Lxk7DZ~MZa*oi%(q z27zF14f)#Vp><)zS8y)&NuL|{HAFzi1+R0x0w@!-WPo@?t?tGvKB#>cYWk=nJK=`x zrvFp)5jLT)oVnpq>n_{Re|V`TNJF z(e5UV%VH1*Xm$Wrqb+j;B%S!uI2rMgKsidgdHZ9vbIJCSL+NhLb?R zZOLy=@gds;j1l{Dn>DPH_z>M*QGJrNFZG>x`-d?`omlw~!WFZ5Oc;-Pbko~frhYa= zR`PBrI!p5A6{9iTM{khFj3fNP^>~#AwSPIc`ieHtiRap9&>a*y=TERP<(6KQJZKv0 zmoW;B9{fp06H)~-g7Mp*h&lf=Mh4#e83g*|9e`#fi==sGW#P;TjF92)D98uE%SQdK zg~jvkVc4!(DYgYN@X~Vay4>xBZQ0teX^agMSNP~BSR`dG>EyU2&i3F~Mr@?s0=Je| z$iZ1^W~9R<3qsVN%4QxYG{57~e!y9yJC+mD;Kt@vba996u)r~PFObS`(2@#tTk)-Vdy)N;I2 z!$GJrFrtW7Yqme|^HgF|uy@eS z_830nYutc^>iM=nuU5t~bllsi2XgT?Jy2;3)nXLk1Um9htKH_zkiEq_aX`2!AWP`8 zX1e)`cgbU;E9gpSPnk0QN2Pfth$=|Vzh%3#C@P^0{e}%7?2KIkj_z<}+Obh~WA)-G z=r!-7cxFxcD}5$YkqwLyD}}fP8A9m0K1#R^9aqO4SMuHMYiaqH|KXhe5RU7|#CG7W1_@`HTL)Z|+b1bW!!7ql(&nlwsH45=iD- z4Tz@sB{2MJ^hdT%$^1dJp;p~^!A>`E{W_Q&GqSMe99JgeFiM~>oGhS!YDx^%xb+c*hes(t{4R!p_+p( zeK7)IHSS(reiCjnLH~K9aIxg zf%7-`=h82bph%l4^4$s~5QqKtV!8E`b5&KQI*X4DYL+F2FSXW`*>lv;n|IE3KU zy<4%hHA`=8r^!b-C{01JMHQ;tg$YjRkTIR6bPN2*t{ZHp9i=Qccj@z;v-{3 z^MnV#%gGdJps7k^r5!J!c&XJq8G`&vDePZ5E+CrGzaD|KTaTSB!F$&q?Urc?5^ zo9L6-hOiRt*l}ZSkAW=~vZ~+>=)R;jT5;VC%_}F7o%mDwYr|z4l}O@P{Qd>2x|1p! zU&}$^lZs$|Ll*M;W)3AiA4glkVs1WM`cFrO`nul8Qi@hpcq=8$sgReVZ!YQcvnsy+ z-p(1BF;-WNnft(ZfpBX=Au}1->tLYi?^W3)JU1I20&k8vJl8MIl5TnEelWw-rCm<4 zm?ja4Z^%z=MvN~JQP}Hszh6Lm>Ri(>hvqCD^Pg+faRs!h%ZT9?T02wh#}3jz69{k& zSY=hrOnuR$EiUnj+bw0@yGx_6!bY>QC_x?NnhLZX zgMY@nwHs{ON1O+Rjh+a_Cdjrlm8z{9>7UoVCiTMdf&b=#5>$it0Og<_rJ7DZWBr(6la%h1de`X*A z3WA1)gOkW?iHP0%Mi)*wJQcqvrSNKP`IweF@p?H^d)1sbn*DYuxY7;wBk&P+R8}~w z=v0BWa=B^U(CIjG(mH{~0JIBJEdJ-`eiK39H`h%?T4C4IBqbt3Q#NT&I44$Yl}MST zxEBw!%@V%wTvk@e2EXAQ)AOhCX9u}DvV5&9EU|=0BIr$CTJ;>{YwI1%&6Q;b?oEj& z&|TLlw?PeVfFr!UOe~R2WzJ&AwDsk$?jCD^&OH?<*gCYLyIZk>0mAl7 z8RJ7YLlL*hOW^lKh7@GJ5`W025QObd9WbT=8If*ZsSGid8O_5(!oQ8Ea(yi6GF{k@ zy4M}g*l8g>1kpAc=LJ9oz%6duJq=qaZV|zFj98@-Z`^kAq160XRs_!YxMe#7(xu== zsv%9hb7~mJr;HDo&RK~qr?UVT{Vb;4mo#WwWVEC4e-PH`-J8)rQ zMqIQ$Nh1FzwhGkwRSXB!n4VF~ZG!uRN@BgoD6sI+Sl@$pB^VcLW08{=e>8t;@V;pu zy+C6ksuXwIQzKBy%Qn$4VTiZ?xi!II1KdUptrbjYMId}PU9{YS;jiT!t%JYUhlOLm z(M|fl@?EXiZE!J4vcW5skcPvBszlXk6mZ(?Q}#*HW){ByrZajl1DS1_F=oAh50L`~ z59fSg(J$w{zFJJfCncx9=&=m4(|ip~633bbi*E(e^X*%R@oiWRWPT#M6SRrUqBDf) zZq>@SjPMY!65#Lv-*N=DqoP00O^(Af)`gRWHy@G(dHTNfiUO(OaGE#L&keh1OB!&8 zE}&7P#^(8a9*z)oh{d4&^ZHe%AKs( zZ-mvXyVjPkAu*+30KYyPKGq}rYIx^LNpZ;|qt)0F@=gv7(rnZoGtI*n!FLE$+72s6 z%JSW)n=CTaxv`P1z>~Dr2CjFerYKqfC96uvq9~!`-H^8naq9YnxA_@bZ8~Jwx*ug< zS(kKEHrlV)Jl5n0K^gMD%q15$HA1Jd_7^fm^m>yZSp9l`sMY-+b6SfTw75%Xn_*<^ zhVbtHg!e?NQRY&>h`9$-RK7SS?vCDNv0#@*C53pO6ACZMa=DwB$wj#HAzqn>8w4t? zPDuEPz_nz^9Mh`U=@rTErMXcorNj2;Za5=*D;+$?x7EnvEMs6aXMh%4pMC~(!A%@= zmJs0Es4CC8G(^HWHd=@4T{2=sr`>w|W})h<0?Anq+ixLhfbBwi;L2Q{N}PN1n#`ns zYA6fbd1~#(UY|KBp0e=5qQJEezHra{upJ$WW5#i?Kr6&G)GB8$?&y5rNDPbZjFg@j z%45u{g7zX*@|H+8*dOm3?RCpV!b>VqVBL_vSON0(s%Rx_e)F#}0S`^tT1&U)cm-Hw zAcVBJah*o_kBv#O2}MjC+Z(qmZtO&~Zc47K3X3M-KmYkrbPHb{>()2+V7{7k9Iw=s zj>)|pV$eSJ090D75cGL{RM{SrLTxdZ8cUbOw+Vx15H3o-AC5TpPkU9^e@6s z9<2B!mn{KedZkkwXQ~uOwB~Ogb=UVKYQ9Zz%7=6OUq{Gscw5Qy(YW6)rD`{t?_uQd z`Z@Hqkp;$EhKPA|(ubzq23~M=P}fqS#W88UM+`RD-i%V5+$SH*UAFD%JO_#6tz%0U zK7ok#Gc*)JfgSJ(F0~H)ap0eKxP5{Z$hTsjPM`~U-Bw#iVo4KH#E6A`A;dAQyan&d z$jYj%Z~h*f^#4NaOBks<5K<(Wq){b543Q?rQ-XU@FpLNKAY9{m3EW+D2O>y`WzA;! zKOenPT;RFFn4r@)>?IXB{wjQ3QJRvtihz9n*nAxbHe~2g$I)ueAD)7g#)mvwUm0zX`*%(^@@;+b?pGDgbtk=*a=U*+g;>CE{)3 zVZ-+N-aEWv4T|;^aQo<_h7=mYRhikezLm~6{z2`wc(8OY;Z$lZla*R8X_CoG#wwQN zb(n0VTxH&I!R@;+`Tgc=tH=vObXeAsXhGzWNon{pjX2u?HEtpwGNX3$^>OYKN+@tW zPcuOuAr;a5U#R2O5h7IDV(}|V?+VTNCrR1vhA9c6d#URi2Y@zgQC1TUP+8mL(POGM zTf@7*);$d}Zv1LcQ6JK@4&4Whk-1w^x8}s`vwmptMA6{jN|`&d)l~Qzrse%n+A)ns zGyak^jd;z8#OO^Qh)%)4(gSCGOymjwd+;u;7N2QTz)mA#N3HwcP@vA(oudjke}=a) zZ!^~z7A!7mNbb{NDa4eNqum8|^I}$i9=}CceJTMFUh#V819>VBBh+@Md+|aK{CyH z9woCnO%NH>&zw*smtUGfMIUfNT8l&pH8rXRZ%kcXdqqUL7XI^D7mRjIrAt&719PYh zshtQypxE691s{R!as;z)35$SkOHN}xf&bAn{3RmBFt!)9V8W+s zZ4^sbG@Li!HD%A2i^LOxx|WEbLT+2j#+Ds5g#mHXlK%wD%X?Sd8hF1W#T|(kuqdT6l=inl>PzXjShQl*o}1`4cYwYy3Iml9iXz-`Su z0U$N_Y7iJ5@RI1{;}g^Xn6qeJr~l6Y-rb6UiZ32LF}OZjS7ZK zp%1)y?Z!p@#u8U624lU;#mgz-H3Yi%So|N{_wg-#qEY@O>k_`?e|5H*?qRpmazQ*E zYOMuYi}G4`w$2pc_B_-9$z6SDs^SUBxcz zt7~~$JzD-B502H7#^Xd!ry1k6%(!hl191d?5_wfF7sk-DF!#em%O&|{%jd)p$w`T) z^BH{PCY2sqmmn{Q);PC_EmU?}!v--_7;lKkktvlBOLqS_F$i+*yZBn4^5iai(2CIj zXs5b5mC^rBBltX=)C~D@e6!H1&XE~RtBxh#LcBDK`{Vm3mnBK`3Q4Iw8nGDpg?G|N z(Cp5$uKS7Fxw_}bEnBkWRdiM|J-4quMBo|q{So>cw*p~(05Yn)G!zzFi@yTqgzAct-}-}K zG|Ako<<{)5hvYN|aLLE|?sW@kknG9H^GDN6Ocdac6}>Mw{O6@1de#TF;q z4~_@v%%_FWP0bwjGr~Iw%bRLKISG24YoL130-6u@mG&&b4BM-X!g!`zJW1}68U%OC z36(0MY{2pc{Y9lJkIE)q=pjwk0Av6N0cG3UAHu2YJJ*c)@#{UGMiV*6o)es! z1cTJX+_08o3cEwYv^b^FXQ0TAhY17vyr<(^R<_zaxk#F*l{OFimTmA2yK&D&h%=W6 zcWo_?iouoB)o_frPKs{F5c!J6K8lvyWw2i*osu2a=@PyzP1sM{oj>a*=VAT?*j}P8 zp@%zU)n{;b(IE#=Zv$I>P^C%D~9P1$C!uIwy`~ndbh@>PHS){XsIFvYy_gl{`2f*pa zuliQ25#v#NwdbYh)%RuR6({`+aOpU)CRp7cDX#`bfru%O_NO#Ie*hE=D8O5r{|^HK zY7zn1KHLvx+@LW~Xs1wKO~G$|d{B@;IHW8=usf0^zYcH(LpCtCHxPk<0s)c2AEZ85 zu*fedsE{a-BLM;=Eq@41e)J0%*HMGSpn|2c#V6#(s5`xeB_k7O4A9JE)vBmg9WZ3A?cKj3%a)EXe959LPh z7XEmP)9x4M;XVyh)8Z(PiCIVU-}a-M?*r1mwUhmBFQ?x{Z3?xr(#qT3c>JN|l^Zwg z76$#Tj~b*_OnvlsKNdu^8NwNYXdoz{kdU`va3FnlptZ@7fX`Q8&mG1)JyF2!lMwt* z4l(p9p*_E z(#f9;ocn=N`I2lQ(113$zxLn#0I$8;KffbiZppuwMZb2Ukqp^6zYUFFbZ@_F0`y2` zw|;1dg`Xhzbr3jnVJ7z9dgVlKx7*7=n}WJ+U$rXWz@F-m*lM3)2`5MUryvi%(?VP5 zM7sK$r%1sugS$qL?6tpM``JV_d#CblW4AOX{jgA9gqwq@>;HJPNp27u-&>)Ne(D^< zdvV@zg9uYEdLQNOn*%m}c6fDx1%RLsAUzJbS$=_`fxJBkR+ccXo>!eg+uF7B!yz&I zgrX-3r0MfwunkmiHzg`D@)EqCnVB{^CLd18+t8%?0Id5I*gd-b3=dS^VHa zKZ3Nm{QMCBYVGfxAB?mQ$~HjAjWm8 zasDCk7+ZdSwfb_J13mnpI19pgVN8XzyWfYn_k)`IN@UXp`ouSd_|QA} ztHx!m+qaMS{b3bH;Q7q(wK@$2;T2$G-{T#)5gx+97UrVIHX-lnXe$$0NNA#ibMGjd zs-aH=fnGwls_6Xqh_O_G-V1j}srm24a-u^AgLXFe!?tCv=i!9!v`A&EzO-5P!`UyE zJL|$rK;$GxDw&NPu)glPHBb{fz# zQo-$_NR1qHd&wCtdx_jl7r@+L7IH}+k&o+OI-ilr@nm_xqxO#q03TdASV$5j47y}z z6r{o<*b<9Pf+P%MNTU4kl@1RPMfTPUL&Njp6z)@tXR6I+1^8zTxXN0r zFM5XNP%mB|zW07@FCY)3OB^%pkCJRPvhKwYUMOfmlq%6}!+kOnO5UYgtybbH7Y(iS zV3>N5tN!uKPc1k6FrbVM5h4*esBwMl^rKnKa!2fhO0F@B!4}SfxhnFg^7?VjCliXE zd5=1!-ER!-DjCo~*!E0Bk0LhE5fByj_KxHJqw)OlwpG0w$}|}>>*MowD=F*cX`F$% zg=4657;)&Ws)h0GI1yPJ=iav4+c0h$ne=$?tiknab*IU!M(7%l`nme<+zEwOHG@hv zBp?FZ1kUj4X*6&!-qulYe%WISC;VMhE+Ww&Qn5f=(asA?o`V(WN^-yNt_(h^bNjh< zQ+Nc#;-FvaJy)5_hs>OQ(~OBnk3A%k@HOD@E7U-vL?fQED+2M)w{mdxr93Idc&Ih3 zJGjXzNj=z{4)4M6GDvizB$Xu~i0|~UmKHirP`pV@&`k;Du){=kmJ`-U!z`214Dqg` zk~FZsO<31=a+B|{v9##lbW&d_>vermcWY0WCND>7@n1@f!=nr&9NS0(%k+O| zG8waTXmInh>JDaJiJ0cg!v~3HILS`e%&JgfgSjwf?5LvZ>tC^Q-0w}zA2LtFeJlga zAu{$l4Xl`NDd93H{F2mAV>S-SI4s#~w;XLGt!hf`e^!{p%t*=ov%VqRoRXXo+L1GuML&PcEdp4d~}jkZS_N0jk&&amAZi8bp% zGe^tf&zw$5r<&16p9HTH<7R{Ai)hK^@Lw1Ophc-^coG60-+bYGr3DT&(Q+8o^4j*S zs$WgJHW5e+zw^pw*fo7Tb2%z%5zUq;^^A?044*#^>Rdz=so(AgPH4IdW=ZCR@Mp6# zSQWCxGqvqckr7^@U7c4ESeLc_D&A%VA$b4R6^IYL1S&|FV|L5WMc@)!FW+qR#<_b@ z$22nuV#%nPjZkiXQq{WyK52AEo#~=(n&;>ROL)74zrSkkRP@Hz-ERsuLem`S=ThkQ zNR_Jnn656BHtl*4ioOz=hM3YZ01xP+3;Ng0T3^6RJV-+;?h}S89jz)bu%VFqsD+jY zsrXmP`4GEXb8xxeLqa(PwMvca+bu)=97$i#KWPNck_FK*7Y?JJ^;WkHc?@uMqgc`F zA4$r2k$ES1-oQ4xsJsddU#=6#4o1aPdVonUTu}4}QDp%PsWymj6BgnvHcCq8a!n_` zz|}1X5KXRAzV5Vt1pt4u-j}o{)s&b++_1SW?(kji7sL(aBjc&!*=F*5Ba3H;#MPC0(eP%t!&}Z& z7q}y?eOt@K+{e{v{X0FA-0CLU9j=MGW6gCrF-tXeR-;B`Z&X}Z+a=#3Ib3qc#+{6K zjLxexAr#=-zciT*LkG!UFujr;74ey*QDG#*c*ZVn8i3_6BNUlU3j=I=KjHN<>MBnM zaP1E9ShoY&ax+_`w}@BYj*AMH8)jE~)YHh0`T&XMXE)zMkVS{RC96Ia`@#_j@u28x}W*kPnuU7+=ihp97}eb>%wd{ z#+*K&yItmd5xc8MV>Vkhp@gM$mSh{Jf0!gZy-tmWEEQ zqzgLMRd88L!lJf8-D0dfXTU&|w1f}F=ygM8U^w&Xweni3^z|5-JWII5yQz9chhJ9} zg|tg$joqT5z%A<`OMVndDbZiOXYQeV#lD=RQP-U9cA8mhH;Iy5m;7 zzk|u-+8Psl(lrq=PU4x^xDCRSUikFf(LJ5}D8irZu-V*LbY~qlc05yd1ho$cJ>Rpy z!BslVw)gO`{Wm~oYAG+{j41iph{sVeWc)DKcN zN^rCe?_u*e(P$hT-HE}<;63pPqY+*E!}$Dn=3C)6?dEOn*^2({uPO=kba~*plVnKY&pj~df&Xa1>b4==Z;k&KDn7pstRxV1PFxC2HM(rgEAgZ}f_PSmQlv|BHgx=murd&NEdwPm^hFi}&74*LSI4tq0|<56Xbs ztlHHU&|r2uSiQ?dzblv zZX}r$g4Pm`_qLvs^~hDQE~MHlk)e2-4xsBvwe3VErjLA;WT7K`ls-hj$!1NNct+>y z=RMR9#R*e9_rBqNZJYK|(R9_AAr&8kir5t4!-YiS=1TlB0z8>Zd8X~E|- zR6T#_ld`atzfQ~YhTB+cb1S&BTf2MapRY_Wo) zU*6NbB~P)6=TB&pIIRxGlC&lddQqB1O;F#r?B3$$U3B2}bx4moSm^-Tu&O)tQ#0WC zL$S8cRLJYLmc7e@Cy{k`xohj~V^VEbiD(Ku^Gd(O*d)dqp#YhF(!$JGgBQDg?$m2* zFZI##<#c|e9FNmyx?9Z7dQ@(di@3!f6lNTC%aR#ZyA!?|s5_gjT#m^FcOvjvIt-^rrO&jUE%3b2p^2|>cVu^ZJv4b(!`niW?c`jgMcQe6r^C<9@={mvoD>BK^f0hMTi((h&9 zO_kbKY6KXR!Tc13;}fbAdw*TY+~2|)p_KTnAnhHp2hUKk;{@|{H?N?QwU~^5PE>3R zw%uIME`d3!3P}XM2~Dx0N-NS}ucE>4F1S3obbsBM#~LmhxtmW9F7L_n^-%j&|NW4R zh9XJuc3NZ;gRd&W?Xz@FWn}e^%1tY4tcTX9ySOCF#JaUR&q)VFQx~d?DH87g?9@a= znA}6KQT?i90Mf8|qEIn{DqYd$uxz>=M#L!Y1^1P`*y&KCO!RcMtA^_x^qamtkE145 z&}+G%T_iRqVy0+5p^BHFWw!URvWRxp^>iNX4Qs-S;qy7#!C*Po3!2w*L{TEh+!vBn zMxZ4CjavAyweN~{E#&Ec^=v5M*95z|R@M=Lu%#zXGWg!Ep_@mIi({e4$fvJLgj>231FI7o*i(x?)q6T$AJ> zyXwG8+A#1cu)Sn=rFT!lC%ZHd!G0PZyiNVOR0yB#he(_FS zJ)6(h)wKC+5i3iJ>6@9O7bHu%v!=Ph7mU(#e`p)D^H4hEO1e)1))}kG8qkRj`D9hC zLpx7w1p0{fO|V~ELy+D+*IMa3o>uS0$CXQ<&2}Cv^gNk# z;Am*E6|0N{Ua@@vRl?M&m0&L4NJwLdEJr_~Nm8tOh@!LX#3a*Q*L2?}{?0z+!MLC# zc*P8$6Fz|O^n$+U0U5sUabDR8@+H@zul@%`t*_|l(Lo)WGG=AO_T$RMZ2pq!gin`H zM?s~s>Lem*^T}x~GfnSw(`i_>gJ|Yi5}50>1xS=%(Zd-b!mO+H#!$rUDx_pWdWc+A zb<1U^zie>VMta1%{S;(vSx}xC9%#>B=u>{qkLb0^7k?F)teo9P({LtJiVd{%Y@C&c z8jU91c@=1e+ucF)Dx_ux=~a-nid@-(#UhRFc6BVHH5Jn@MNA;MCm+o7dJ-01MjW)^ zf7Rt%QZe2z*eBx}=S6dn=&r6(2yhhk^X2-WkdY;Kc#1z*MS|z7J#tVwC3e;Gt+f{= zrEdYkkQlg+?sWk97<+zwV-%s4rwjR7rw=ZJ4GNp4=^#5!JY~BLnjH**h{&USii~WPZ#}J=a1ft7 zkbIKkC|0_b=CWXzfO7W2sc%xET&7U!NqW#_uJ$7T+SGriY#7efM|bgp!CQTv94196 z2P?;Ij93NjJ{}#&`DSG%=mM-hQ?td#!)GZ6&oO6W1H}rE9tzj#-F2BL5ywPzA@pyk zPgA7>j8E>~aKxO^25Zy4fvM#y3)`QUNd%dvt!X#537*Y72tF9Y%BBiJhv@+~ zSH^vzJ}w%S9o5F#&ZLnzrZ*(#xIG+=LOL=E`v-~(W-sQQ=rrmdij!4YjhrjeO6;(6 zZ7+FM_~TgpVz{7#z*QP+npFQ-8Nyw8pYIMQ9U`t&>*Q7FBk|+`$X*I^1GAzLeX*bi0}te04qV zse+d;Mkl3huJ>DXQuWd?zsf<3&*?By@+S?5NO5T3=O`^{fyvlt%AxT^Vk*QczXjZ! z4qtGgz3O;7L(tLGmbi)t0*DAeHa8k(jzF6Od<>Ob@NN;n&8Ww37~Zyx601CO`@ZFvz}(YQ9RNktFnQEoNae;*Z!fUCvh7iVEiW^!ZF_ewhhIwRgCJ-GyH_$Xx&N0d(tVqD&39 z162bgw%U_OYAGoACn*VF90|y{aWenH{#iBf8#tRsoQ`Lh)vb$D@9%g-=-Hsz0G=1! z_eolH4!NzvkI7yAL|f+44)twkfj6zeGLF6K+y#6ekEjrGc}i?|KGkzSoc9^O|I|5U z24L>Wb$?lQIgz_q5yHS(>Evdp9mvlYacr~K02{~=0eolMSx#&XbH^0?FB~%{{!~9M zPA3qgXZG}bO2cNCIN*Y3Yg~oo3~9?-RD_h(of2muTOe2C1%`7YM-?+V)H7rv)WP$) z7&&}f`l9jjnMv+%97COS7RbQ<`CjBA#Sr`Z<>bwI~)TDzpcDi7Wx*;HN#}5yDsb6%$`zM=rhdw7pp?Tu5AEjSR%X6Yo?4x6Ym;d zZWNt|; z&|#Vpv;9uTo^x|7O3cmUf)obrN1;_g?APLIPeRbRi0!a7~pK zR)7XJBHhy7 zw%=Pmr!BT)D;}e6_N&|%kXzi=4~W?anic(1>dL0ERLzX@uSH!0+3%4)oR2vtx((xl zFxl&p6~?HBchRcxm=!o!#e227a1i{P3Eyzr1%oJnn$8q`CRpD;Mv5EX{7UZX8?ss_ z@QLk_Iso5ko;%GT_`~9p5^5hSYG);19ufh8*vZ4}o9TrmRJFX(QNvv~H%q&*iIB8J>Xn2- z{GK!xF$ArUu(T=~Upk{xFoe!cN}%K{E)oh;Q82$xL|IO@UZGnUkjdd|^;VMohE0WzBU@&#&XHNqZrT3KO#zU16R+ zXk~CORxW@?leh7epGyC-y$4t>-D`=>Ezxfa$~ra zJzoeo(!lBYx!ADZ7#y?I#%xYkQ57Xc&(Yf&67eY=!m;q>=T8eI!Hvv!?OHqCV%!e+ z<}DQNiS82KjisZOa$h1^10&A-C$lejE6Xz?Mf)I2wYMGeg!GyPrnG$XTp?4M*CN?e zP)fzXGin#Qu}e<-)cwMN+uG$5B93wUHI;xj`N>%z|-AbB_ni zWzDE4VbLFyzHYp4gu%E!hT-0vP8G;QHBG&`uze{S>P1nd*FR0S(KWd&awX(9 zi$8xOc#OQssI#%)Waw$8<=fUQCHV9BsM4H-g;@`_;wFy_ojTgYkolWuw`6Edw3@8y`brEsV4Ms=>ireS#aE<25xP%Wa{AnJcWhcNCB{s zGjpl5;Z{y#w0=}vSa*;}Yk`HK470cq?!6Vqv%ZM#b-;vL{1Q_$uU#;Bimnovq)P1V zV&NFiax!@sbv$cnglTDK2kEzF!6=ot9 z(m>uDrYqy$^-yT4Gda8SLEc!+E;bphYgpbhX+^JSdiO=@SmjqwDPRo@8p4OH=-XGt zG=%k2?WGA2*(DXD2tTBBX^nytBYrM!c>ekNf!--!b+e0DfX$*Apuxkvq)G8cvh64& zH}RstrPooD%&x`pr3q#{Qd=fsP4Ya}=W)Qv1zARUst9>oueh;`z3o&9&)?_TJs*>gDx;zrxdySdSdfwmJc;s@jM@w-jo_|EA7K5l6yV0=m6!omyR}1cd+LLsdjE0is0M1Bb_{drT z&tvyR)In<*@mTsuG*|hKNUxHPzUDQ>u0%@$ZXhsfmUo0#LJQ}OvYQ;mqMPM?gQbX^ zuOe{6<|AE!E#!K#afV|ZHRU?;`xU|@W<`M6XmuqxTc=y-rn9o@`a(3CqTOftiZo*p znnp(EyvJZsC)ZiEkGcpv44wCn&wBKT$Rpuj*^T#QvQ)vP*4fhRO*JxW6HXXbC9OPy zab(eT%?QE%60nO1b>`Q6u00z%asXuv{s*mfByn-m@zUbI-QkADSI|B5Ibs; zNy*|uGsyWj5l&H42;~JNb90%gu;)Xk^o}4_k~pM<8z<49?tF0BS-CCyM=tdg8_1Hd*F$wvPZcx4Xy(^7~g14qx*`R zAU|@bgV?*%m_A@==CT!0PCv|ilOJ5In&cP{@2j)cOW>CFu4DxzZ$gqnP+uRJD^nMP zqtKc3T%lLBzLfd>H#lsWN1H&xLg=mZv;}r>^JDZnH$qW`{$a92&S0TNnrKdn%9Rev)ev4%ib(85GV&WEi!wmAH+EA89CiL9hNvJe=X6$|$yV zN5bd@1}BDTIRP?c(*VHuDmi;>l5^XYwv$%PjngA(^#Psmvw!eU7<9F%?s}DF1@lRm zSI*|NFpU`c0bC4I-qISRF;Ewap|zU-7pqd99#zCFqsm>MYeVU^SDL#GxDM`4#2qiv zzuy%Tpsn3&^>lMBXUSnjN!D0w&mzDWKRmPTkt9~b`wtV2sH z$4_&=Vp_iSD(_?2rY_!7`B$PZ?*$H3Ivlr(Umd73(jUon$Ryl_;#BT$X|%3>9<+H^ z>p-S{K(0W$$h9a;Wce7$TcydZXn9}0?feEMQF7&Z%nQFu;K$UuA_1Wa)4fe2|0pT? zL_*|n3RIE8jJShRkuqm`=k^}H&qV7sEVP-Kd`TML`tkCho6QC;5FSKpQD{UeXLstVHi0p<%=6q$|Mg^oMP0+TH)sx(Kn0*~>7nj|-hFQU%&znpZD8m!<5EX4p? zNy&yi)}0JvD*1PCxrXnip7(+5U&WgbodJtaf-Tr5IpovJWVQvW=68&LHM7$=Nh}6Q zXQFH2xFgJWL`6bqXy@XaHDiNKs9U9yOU!kWNjt60*IR8pY!!XWK-cDS2PVmNDfrf1 zA7dxX>nl!~d`Oi=EXb*n@aU)H$Mzea-F%T-!IRfh~T8YXS%Mkb2w zg#zWDalxeXI}k&QNo&k=YCtItq_+iR(2bEVRI`d&3gd$~j%2FQ9=ju_JUZNG@+YxT zqHG6Pt4WB0iD?Oy|2-=~Cku>;?MjS@7++JFqPFmXM|uQ`qX+lkrax}9Zb4DRh9AYt6`dhTBm`Q^6$YO@;N@;+3k>%i4OSdD88$1&nQ(NBMI*&iU~M<*R}cZ{DDFtuPl^MJ|5 zhwnqMa0@P>uqo7qdjn{m?cp)2KFO#zB>SX#%hsbmK+TMs)x4Y$jg}9SOR;d}-q4Z1@HsqL*$T4#{ zee=+6U%YWJ-)A2;1sc2*O|pMg79*Br9CZB(<#6Vbet_zjxwCef#`Jo(5`1NJL>iRq z;UzYucgt5j4~kd7doe(5rkRW=>51-W7`d*TCB=liWEh*XM4HUp2y6QijSDsYU5DzQ zseS#Be3o55KZ)vhDocTwi3!8$;`P=My4}oYpxNmmB!(P{C8vr@U(zuuspxLH>~~<% zQ{nZOVGWUrzn%W`JoGwUs^NQ8D-^UrymW}LP*y4SjpABAP7D9{3fq~NIp-F&C#(4j zGB2v)WChoHAUiWoyc@1~U)_XxN^es$#?WKO%|`z*iNFk*rk`CY}2nXB3j1q?>w~Mya`>_(rVzsFy$RC{DW8!d zUa5G=DynROv{x1{q3U|GiBh|~N_xkxc85U~-Xu4=loiWdg#`{_@8z8lhOjrvi$j#| zDSA{Z{!8ZN&}Tjf5i!B~K?IDT%N~}FPQ&v(6vwYd@j+T#v5+J9Q0t#>nT@ir-sYNi z)jt{SZBHvQa0bejLTX51kxBP!+bE;D`;ev}=&+NQ{TEn)w+&ay(UDoqPi-Lx6(W*p zaEjE7gT{}I-9@w`Pm?-GPg_oT%D5d7+g5le*YK1H3|SWrU=8=5AoWdpduH1^mT*NU zw&vqfY9G`uidms;23VOAz{;W|WBB5VCUkmyxjsKfvb%VH7k%4O6!z4L9P7!2bXR;F zWgdmoSPE;GHRuly$&8^j&vCwebV|xMOezyv-)t@=G@7ljO0uXh&j!6fY2@TQ{2kW4 z?n=fdwX`ckA}A6QcQg-jorp4vCI{*lgPf022$eV)GdrVs3Nl?@!s!#E1J2mz4>(Bl z@cZMiyh}&MQx4pk?$|3&xU0#-%J=yv`><5wB;dH(DJhNkX6-+q6J^dZ6hivj^&%_} zjar8$ymAY+IyCI=ZP?W*eNE8-QhHZro#QIbqOo8br{kVYCilAn)3va~Y?aSrb3CzF znikqZ4&e&KcX18ldmcPiv}9~ax@PAdSx@s@S{`YsZ5H|bjyh6CUcsdKA!nusN?LIA zGNRnBmphht}hr7o(Ig(Oi3KaUIA) z=CN+~<{Wn=*(Q>Pxl2}a%A05KmpQVBm-d)b2L9wGeBmFZjuHI7F7dxu>HjKg`p+e1 zVPpI+d6M>Au<)dLCwVi5!buVKE6V#gy3z?%XC5_kR12dZuX2G}DW zpS(Oh9RYE6I`r?oBwFMAYbg!@=0m#z5Ayc4`0M!tW)hg);TvnW$pH9(hi~Hd;!VNr zLk0!`N`xT~fx);4tF;N+^xFeG90Ks7y7;F;V|g^=n*6-wJb9}cCNAE)kKf;3tc)NVPWp^U!wl+{8zwKT0yG_%YR1i~E{T|03 z`i&i*80Z4%@fHG*(*-0*tob4WAUultKmvGsAON+5e)*WT24F`=2^B~M zh)@3pbY*0{$PNw~Sn$&9ERgr66x+(!`vHb2W5`5q@Dd@4*r7 zSW};v3ssCJE%9lmD_8L|pJThf$b5gTkn+;=$JO^C?A8+1rcgpw{HAH2Q&%*ad z>F1}J3$!|X|E7Viu)jmxPj-(SReGht$$LzyN>e4%bcC4oeipq=GS_4%YTJjmkpvfB z%P6Epeuy_v2&(Z4865= zb*#A0V$Bmhq^9OeOnWMN=;*5nO*(*&AD}Teg-aua!wI>AUQ;+4?y=b2Y*O8jh?o$c z^*uJcC`bOIP#j{V`Ev(j(i=gMaZ?;#Mz%vTzhOwkj0e{eqHSQD*SCK-T763wZl^@* z7R8p_%Rl9_v7Z>f*s%y*Rpyr9;x;69rB0z=R(9>|&7#yU;9UBku?ltq8b;aFu<4sn-E=SZ3H>k+O88jHd~{oi@ei_i1nYOog0}&+oG=n+ z0awQq!hj1H9o-y;GVOfL-BxMiP6{jM+eCo5xa9qXX;Xx)h z$9Z04j^Qlw`&zf74(DqrRr^F53fb5pp~otw)r8t_M4@(0KV(#m_lemFPz+2$e~hz7 z`p4SPlR9*L?g=%Y9ZZHSkx+*u7ILe4L7�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 z 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�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 diff --git a/rocketpy/Rocket.py b/rocketpy/Rocket.py index c0a6c3f21..585184201 100644 --- a/rocketpy/Rocket.py +++ b/rocketpy/Rocket.py @@ -534,7 +534,7 @@ def addFins( distanceToCM, radius=0, cantAngle=0, - airfoil=False, + airfoil=None, ): """Create a fin set, storing its parameters as part of the aerodynamicSurfaces list. Its parameters are the axial position @@ -564,10 +564,11 @@ def addFins( cantAngle : int, float, optional Fins cant angle with respect to the rocket centerline. Must be given in degrees. - airfoil : bool, optional - Fin's airfoil shape. If True, generic airfoil lift - calculations will be performed. If False, calculations for - the trapezoildal shape will be perfomed + airfoil : string + Fin's lift curve. It must be a .csv file. The .csv file shall + contain no headers and the first column must specify time in + seconds, while the second column specifies lift coefficient. Lift + coefficient is dimensionaless. Returns ------- @@ -710,7 +711,7 @@ def finNumCorrection(n): "Cl", ) - else: # Calculate lift parameters for trapezoildal planar fins + else: def cnalfa1(cn): """Calculates the normal force coefficient derivative of a 3D @@ -741,8 +742,8 @@ def cnalfa1(cn): ) return Cnalfa1 - # Fin–body interference correction - clalpha *= 1 + radius / (s + radius) + # Import the lift curve as a function of lift values by attack angle + read = genfromtxt(airfoil, delimiter=",") # Applies number of fins to lift coefficient data data = [[cl[0], (n / 2) * cnalfa1(cl[1])] for cl in read] @@ -750,6 +751,8 @@ def cnalfa1(cn): data, "Alpha (rad)", "Cl", + interpolation="linear", + extrapolation="natural", ) # Takes an approximation to an angular coefficient