From 80ed0e43d701222379ab539d32c3362115e69f9b Mon Sep 17 00:00:00 2001 From: Giovani Hidalgo Ceotto Date: Tue, 15 Feb 2022 14:03:47 -0300 Subject: [PATCH 1/2] Revert "Revert 117 develop" --- TODO.md | 41 +++ .../technical/aerodynamics/Roll_Equations.pdf | Bin 300826 -> 246243 bytes requirements.txt | 3 +- rocketpy/Environment.py | 135 +++------- rocketpy/Flight.py | 215 +++++++-------- rocketpy/Function.py | 66 ++--- rocketpy/Rocket.py | 248 ++++++------------ rocketpy/SolidMotor.py | 28 +- rocketpy/utilities.py | 2 +- setup.py | 8 +- tests/test_environment.py | 3 +- tests/test_flight.py | 227 +--------------- tests/test_solidmotor.py | 22 +- 13 files changed, 317 insertions(+), 681 deletions(-) create mode 100644 TODO.md diff --git a/TODO.md b/TODO.md new file mode 100644 index 000000000..1ecf698a5 --- /dev/null +++ b/TODO.md @@ -0,0 +1,41 @@ +# 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 | diff --git a/docs/technical/aerodynamics/Roll_Equations.pdf b/docs/technical/aerodynamics/Roll_Equations.pdf index c6c71e64692141394b6c966f2b3b32c27b550797..758a6d616f29251cb117b6e0e83244d185724889 100644 GIT binary patch delta 129974 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 diff --git a/requirements.txt b/requirements.txt index 4a59f377b..30001b109 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,5 +2,4 @@ numpy>=1.0 scipy>=1.0 matplotlib>=3.0 netCDF4>=1.4 -requests -pytz +requests \ No newline at end of file diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index 0ce542171..675803c40 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -9,7 +9,6 @@ import bisect import warnings import time -import pytz from datetime import datetime, timedelta from inspect import signature, getsourcelines from collections import namedtuple @@ -26,27 +25,12 @@ 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 - - -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 @@ -96,11 +80,7 @@ class Environment: Environment.elevation : float Launch site elevation. Environment.date : datetime - Date time of launch in UTC. - 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. + Date time of launch. Topographic information: Environment.elevLonArray: array @@ -310,7 +290,6 @@ def __init__( longitude=0, elevation=0, datum="SIRGAS2000", - timeZone="UTC", ): """Initialize Environment class, saving launch rail length, launch date, location coordinates and elevation. Note that @@ -347,13 +326,7 @@ 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 : 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. - timeZone : string, optional - Name of the time zone. To see all time zones, import pytz and run + datum: Returns ------- @@ -370,14 +343,12 @@ def __init__( # Save date if date != None: - self.setDate(date, timeZone) + self.setDate(date) else: self.date = None - self.localDate = None - 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 @@ -407,30 +378,21 @@ def __init__( return None - def setDate(self, date, timeZone="UTC"): + def setDate(self, date): """Set date and time of launch and update weather conditions if date dependent atmospheric model is used. Parameters ---------- - date : Datetime - Datetime object specifying launch date and time. - 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". + date : Date + Date object specifying launch date and time. Return ------ None """ - # Store date and configure time zone - self.timeZone = timeZone - tz = pytz.timezone(self.timeZone) - localDate = datetime(*date) - if localDate.tzinfo == None: - localDate = tz.localize(localDate) - self.localDate = localDate - self.date = self.localDate.astimezone(pytz.UTC) + # Store date + self.date = datetime(*date) # Update atmospheric conditions if atmosphere type is Forecast, # Reanalysis or Ensemble @@ -516,7 +478,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: @@ -525,7 +487,6 @@ 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 @@ -554,7 +515,7 @@ def setTopographicProfile(self, type, file, dictionary="netCDF4", crs=None): if type == "NASADEM_HGT": if dictionary == "netCDF4": - rootgrp = netCDF4.Dataset(file, "r", format="NETCDF4") + rootgrp = Dataset(file, "r", format="NETCDF4") self.elevLonArray = rootgrp.variables["lon"][:].tolist() self.elevLatArray = rootgrp.variables["lat"][:].tolist() self.elevArray = rootgrp.variables["NASADEM_HGT"][:].tolist() @@ -1725,7 +1686,6 @@ 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. @@ -1984,7 +1944,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 @@ -2119,7 +2079,6 @@ 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. @@ -2402,7 +2361,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 @@ -2861,18 +2820,9 @@ 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.strftime(time_format), - "UTC |", - self.localDate.strftime(time_format), - self.timeZone, - ) - elif self.date != None: - print("Launch Date:", self.date.strftime(time_format), "UTC") + print("\nLaunch Rail Length: ", self.rL, " m") + if self.date != None: + 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)) @@ -2889,7 +2839,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) @@ -2900,7 +2850,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 @@ -2909,8 +2859,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") @@ -2997,18 +2947,9 @@ 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.strftime(time_format), - "UTC |", - self.localDate.strftime(time_format), - self.timeZone, - ) - elif self.date != None: - print("Launch Date:", self.date.strftime(time_format), "UTC") + print("\nLaunch Rail Length: ", self.rL, " m") + if self.date != None: + 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)) @@ -3017,7 +2958,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) @@ -3028,7 +2969,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 @@ -3037,8 +2978,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") @@ -3308,7 +3249,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 @@ -3331,9 +3272,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) @@ -3406,7 +3347,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) @@ -3430,20 +3371,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 ) @@ -3506,8 +3447,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) ) @@ -3565,7 +3506,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 :(") diff --git a/rocketpy/Flight.py b/rocketpy/Flight.py index 3824af5ab..2ac4d1a7e 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 @@ -1297,7 +1297,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["cp"][2] + compCp = aerodynamicSurface[0][2] # Component absolute velocity in body frame compVxB = vxB + compCp * omega2 compVyB = vyB - compCp * omega1 @@ -1314,23 +1314,23 @@ 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["cl"](compAttackAngle, freestreamMach) + 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 @@ -1340,50 +1340,37 @@ def uDot(self, t, u, postProcessing=False): M1 -= (compCp + a) * compLiftYB M2 += (compCp + a) * compLiftXB # Calculates Roll Moment - if aerodynamicSurface["name"] == "Fins": - Clfdelta, Cldomega, cantAngleRad = aerodynamicSurface["roll parameters"] - M3f = ( - (1 / 2 * rho * freestreamSpeed**2) - * self.rocket.area - * 2 - * self.rocket.radius - * Clfdelta(freestreamMach) - * cantAngleRad - ) - M3d = ( - (1 / 2 * rho * freestreamSpeed) - * self.rocket.area - * (2 * self.rocket.radius) ** 2 - * Cldomega(freestreamMach) - * omega3 - / 2 - ) - M3 += M3f - M3d + if aerodynamicSurface[-1] == "Fins": + Clfdelta, Cldomega, cantAngleRad = aerodynamicSurface[2] + if cantAngleRad != 0: + Clf = Clfdelta * cantAngleRad + Cld = Cldomega * omega3 / freestreamSpeed + M3 += Clf - Cld # Calculate derivatives # Angular acceleration 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) @@ -1392,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, ] @@ -1463,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 @@ -1483,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 @@ -1510,7 +1497,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, interpolation="spline", extrapolation="natural"): + def postProcess(self): """Post-process all Flight information produced during simulation. Includes the calculation of maximum values, calculation of secondary values such as energy and conversion @@ -1528,43 +1515,43 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): # Transform solution array into Functions sol = np.array(self.solution) self.x = Function( - sol[:, [0, 1]], "Time (s)", "X (m)", interpolation, extrapolation + sol[:, [0, 1]], "Time (s)", "X (m)", "spline", extrapolation="natural" ) self.y = Function( - sol[:, [0, 2]], "Time (s)", "Y (m)", interpolation, extrapolation + sol[:, [0, 2]], "Time (s)", "Y (m)", "spline", extrapolation="natural" ) self.z = Function( - sol[:, [0, 3]], "Time (s)", "Z (m)", interpolation, extrapolation + sol[:, [0, 3]], "Time (s)", "Z (m)", "spline", extrapolation="natural" ) self.vx = Function( - sol[:, [0, 4]], "Time (s)", "Vx (m/s)", interpolation, extrapolation + sol[:, [0, 4]], "Time (s)", "Vx (m/s)", "spline", extrapolation="natural" ) self.vy = Function( - sol[:, [0, 5]], "Time (s)", "Vy (m/s)", interpolation, extrapolation + sol[:, [0, 5]], "Time (s)", "Vy (m/s)", "spline", extrapolation="natural" ) self.vz = Function( - sol[:, [0, 6]], "Time (s)", "Vz (m/s)", interpolation, extrapolation + sol[:, [0, 6]], "Time (s)", "Vz (m/s)", "spline", extrapolation="natural" ) self.e0 = Function( - sol[:, [0, 7]], "Time (s)", "e0", interpolation, extrapolation + sol[:, [0, 7]], "Time (s)", "e0", "spline", extrapolation="natural" ) self.e1 = Function( - sol[:, [0, 8]], "Time (s)", "e1", interpolation, extrapolation + sol[:, [0, 8]], "Time (s)", "e1", "spline", extrapolation="natural" ) self.e2 = Function( - sol[:, [0, 9]], "Time (s)", "e2", interpolation, extrapolation + sol[:, [0, 9]], "Time (s)", "e2", "spline", extrapolation="natural" ) self.e3 = Function( - sol[:, [0, 10]], "Time (s)", "e3", interpolation, extrapolation + sol[:, [0, 10]], "Time (s)", "e3", "spline", extrapolation="natural" ) self.w1 = Function( - sol[:, [0, 11]], "Time (s)", "ω1 (rad/s)", interpolation, extrapolation + sol[:, [0, 11]], "Time (s)", "ω1 (rad/s)", "spline", extrapolation="natural" ) self.w2 = Function( - sol[:, [0, 12]], "Time (s)", "ω2 (rad/s)", interpolation, extrapolation + sol[:, [0, 12]], "Time (s)", "ω2 (rad/s)", "spline", extrapolation="natural" ) self.w3 = Function( - sol[:, [0, 13]], "Time (s)", "ω3 (rad/s)", interpolation, extrapolation + sol[:, [0, 13]], "Time (s)", "ω3 (rad/s)", "spline", extrapolation="natural" ) # Process second type of outputs - accelerations @@ -1596,12 +1583,12 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): 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)", 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) + 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") # Process third type of outputs - temporary values calculated during integration # Initialize force and atmospheric arrays @@ -1628,54 +1615,44 @@ def postProcess(self, interpolation="spline", extrapolation="natural"): # 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)", 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.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.windVelocityX = Function( - self.windVelocityX, - "Time (s)", - "Wind Velocity X (East) (m/s)", - interpolation, + self.windVelocityX, "Time (s)", "Wind Velocity X (East) (m/s)", "spline" ) self.windVelocityY = Function( - 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.windVelocityY, "Time (s)", "Wind Velocity Y (North) (m/s)", "spline" ) + self.density = Function(self.density, "Time (s)", "Density (kg/m³)", "spline") + self.pressure = Function(self.pressure, "Time (s)", "Pressure (Pa)", "spline") self.dynamicViscosity = Function( - self.dynamicViscosity, "Time (s)", "Dynamic Viscosity (Pa s)", interpolation + self.dynamicViscosity, "Time (s)", "Dynamic Viscosity (Pa s)", "spline" ) self.speedOfSound = Function( - self.speedOfSound, "Time (s)", "Speed of Sound (m/s)", interpolation + self.speedOfSound, "Time (s)", "Speed of Sound (m/s)", "spline" ) # Process fourth type of output - values calculated from previous outputs # 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] ) @@ -1684,9 +1661,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] @@ -1707,9 +1684,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 @@ -1801,11 +1778,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)") @@ -1817,7 +1794,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)") @@ -1833,9 +1810,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)") @@ -1944,9 +1921,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 @@ -1966,7 +1943,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[ @@ -1974,7 +1951,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] @@ -2328,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 @@ -3019,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 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 585184201..b42ae84c2 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,14 +370,12 @@ def evaluateStaticMargin(self): # Calculate total lift coefficient derivative and center of pressure if len(self.aerodynamicSurfaces) > 0: for aerodynamicSurface in self.aerodynamicSurfaces: - self.totalLiftCoeffDer += Function( - lambda alpha: aerodynamicSurface["cl"](alpha, 0) - ).differentiate(x=1e-2, dx=1e-3) + self.totalLiftCoeffDer += aerodynamicSurface[1].differentiate( + x=1e-2, dx=1e-3 + ) self.cpPosition += ( - Function( - lambda alpha: aerodynamicSurface["cl"](alpha, 0) - ).differentiate(x=1e-2, dx=1e-3) - * aerodynamicSurface["cp"][2] + aerodynamicSurface[1].differentiate(x=1e-2, dx=1e-3) + * aerodynamicSurface[0][2] ) self.cpPosition /= self.totalLiftCoeffDer @@ -418,13 +416,8 @@ def addTail(self, topRadius, bottomRadius, length, distanceToCM): Returns ------- - cl : Function - 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. + cldata : Function + Object of the Function class. Contains tail's lift data. self : Rocket Object of the Rocket class. """ @@ -436,20 +429,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 - cl = Function( - lambda alpha, mach: clalpha * alpha, - ["Alpha (rad)", "Mach"], + cldata = Function( + lambda x: clalpha * x, + "Alpha (rad)", "Cl", + interpolation="linear", + extrapolation="natural", ) # Store values as new aerodynamic surface - tail = {"cp": (0, 0, cpz), "cl": cl, "name": "Tail"} + tail = [(0, 0, cpz), cldata, "Tail"] self.aerodynamicSurfaces.append(tail) # Refresh static margin calculation @@ -481,13 +476,8 @@ def addNose(self, length, kind, distanceToCM): Returns ------- - cl : Function - 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 + cldata : Function + Object of the Function class. Contains nose's lift data. self : Rocket Object of the Rocket class. """ @@ -509,14 +499,16 @@ def addNose(self, length, kind, distanceToCM): # Calculate clalpha clalpha = 2 - cl = Function( - lambda alpha, mach: clalpha * alpha, - ["Alpha (rad)", "Mach"], + cldata = Function( + lambda x: clalpha * x, + "Alpha (rad)", "Cl", + interpolation="linear", + extrapolation="natural", ) # Store values - nose = {"cp": (0, 0, cpz), "cl": cl, "name": "Nose Cone"} + nose = [(0, 0, cpz), cldata, "Nose Cone"] self.aerodynamicSurfaces.append(nose) # Refresh static margin calculation @@ -572,11 +564,8 @@ def addFins( Returns ------- - cl : Function - 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. + cldata : Function + Object of the Function class. Contains fin's lift data. self : Rocket Object of the Rocket class. """ @@ -587,40 +576,16 @@ def addFins( Yr = rootChord + tipChord s = span Af = Yr * s / 2 # fin area - Yma = ( + 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) + 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 cantAngleRad = np.radians(cantAngle) - 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 - τ = (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)) - - (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 + ( - ((τ - λ) / (τ)) - ((1 - λ) / (τ - 1)) * np.log(τ) - ) / (((τ + 1) * (τ - λ)) / (2) - ((1 - λ) * (τ**3 - 1)) / (3 * (τ - 1))) + 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 @@ -628,55 +593,6 @@ def addFins( self.span = s self.distanceRocketFins = distanceToCM - # Auxiliary functions - - # 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: - return np.sqrt(1 - 0.8**2) - else: - return np.sqrt(mach**2 - 1) - - # 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] - else: - return n / 2 - # Calculate cp position relative to cm if distanceToCM < 0: cpz = distanceToCM - ( @@ -691,35 +607,44 @@ def finNumCorrection(n): # 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) - clalphaSingleFin = Function( - lambda mach: 2 - * np.pi - * AR - * (Af / Aref) - / (2 + np.sqrt(4 + ((beta(mach) * AR) / (np.cos(gamac))) ** 2)), + # # 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] ) - clalphaMultipleFins = ( - liftInterferenceFactor * finNumCorrection(n) * clalphaSingleFin - ) # Function of mach number + # Store values + fin = [(0, 0, cpz), cldata, rollParameters, "Fins"] + self.aerodynamicSurfaces.append(fin) - # Calculates clalpha * alpha - cl = Function( - lambda alpha, mach: alpha * clalphaMultipleFins(mach), - ["Alpha (rad)", "Mach"], - "Cl", - ) + # 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 @@ -729,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)) @@ -738,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 @@ -747,7 +672,7 @@ def cnalfa1(cn): # Applies number of fins to lift coefficient data data = [[cl[0], (n / 2) * cnalfa1(cl[1])] for cl in read] - cl = Function( + cldata = Function( data, "Alpha (rad)", "Cl", @@ -756,39 +681,26 @@ def cnalfa1(cn): ) # Takes an approximation to an angular coefficient - 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 * (Yma + radius) * clalphaSingleFin / d - ) # Function of mach number - cldOmega = ( - 2 - * rollDampingInterferenceFactor - * n - * clalphaSingleFin - * np.cos(cantAngleRad) - * trapezoidalConstant - / (Aref * d**2) - ) - # Function of mach number - rollParameters = [clfDelta, cldOmega, cantAngleRad] + clalpha = cldata.differentiate(x=0, dx=1e-2) - # Store values - fin = { - "cp": (0, 0, cpz), - "cl": cl, - "roll parameters": rollParameters, - "name": "Fins", - } - self.aerodynamicSurfaces.append(fin) + # 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] + ) - # Refresh static margin calculation - self.evaluateStaticMargin() + # Store values + fin = [(0, 0, cpz), cldata, rollParameters, "Fins"] + self.aerodynamicSurfaces.append(fin) - # Return self - return self.aerodynamicSurfaces[-1] + # Refresh static margin calculation + self.evaluateStaticMargin() + + # Return self + return self.aerodynamicSurfaces[-1] def addParachute( self, name, CdS, trigger, samplingRate=100, lag=0, noise=(0, 0, 0) @@ -1074,18 +986,16 @@ def allInfo(self): # Print rocket aerodynamics quantities print("\nAerodynamics Lift Coefficient Derivatives") for aerodynamicSurface in self.aerodynamicSurfaces: - name = aerodynamicSurface["name"] - clalpha = Function( - lambda alpha: aerodynamicSurface["cl"](alpha, 0), - ).differentiate(x=1e-2, dx=1e-3) + name = aerodynamicSurface[-1] + clalpha = aerodynamicSurface[1].differentiate(x=1e-2, dx=1e-3) print( name + " Lift Coefficient Derivative: {:.3f}".format(clalpha) + "/rad" ) print("\nAerodynamics Center of Pressure") for aerodynamicSurface in self.aerodynamicSurfaces: - name = aerodynamicSurface["name"] - cpz = aerodynamicSurface["cp"][2] + name = aerodynamicSurface[-1] + cpz = aerodynamicSurface[0][2] print(name + " Center of Pressure to CM: {:.3f}".format(cpz) + " m") print( "Distance - Center of Pressure to CM: " 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 diff --git a/setup.py b/setup.py index 4ecc61447..7910006b5 100644 --- a/setup.py +++ b/setup.py @@ -6,13 +6,7 @@ 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"], maintainer="RocketPy Developers", author="Giovani Hidalgo Ceotto", author_email="ghceotto@gmail.com", diff --git a/tests/test_environment.py b/tests/test_environment.py index 12753df13..8015d3620 100644 --- a/tests/test_environment.py +++ b/tests/test_environment.py @@ -1,5 +1,4 @@ import datetime -import pytz from unittest.mock import patch import pytest @@ -33,7 +32,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, tzinfo=pytz.utc + tomorrow.year, tomorrow.month, tomorrow.day, 12 ) diff --git a/tests/test_flight.py b/tests/test_flight.py index 075da6579..eea06b013 100644 --- a/tests/test_flight.py +++ b/tests/test_flight.py @@ -1,56 +1,9 @@ import datetime from unittest.mock import patch -import numpy as np import pytest -from rocketpy import Environment, Flight, Rocket, SolidMotor, Function -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 +from rocketpy import Environment, SolidMotor, Rocket, Flight @patch("matplotlib.pyplot.show") @@ -254,181 +207,3 @@ 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", - [(-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) - Env.setAtmosphericModel( - type="CustomAtmosphere", - wind_u=wind_u, - wind_v=wind_v, - 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( - 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 to keep the rocket's speed constant - DummyRocket = Rocket( - motor=DummyMotor, - radius=127 / 2000, - mass=1e16, - inertiaI=1, - inertiaZ=0.0351, - distanceRocketNozzle=-1.255, - distanceRocketPropellant=-0.85704, - powerOffDrag=0, - powerOnDrag=0, - ) - DummyRocket.setRailButtons([0.2, -0.5]) - 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(interpolation="linear") - - # 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)) - ) - - -@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 diff --git a/tests/test_solidmotor.py b/tests/test_solidmotor.py index da8b6411d..8f5a9efc3 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 3afe357c9349e9b785377ab8d2327da1babbc92d Mon Sep 17 00:00:00 2001 From: Lint Action Date: Tue, 15 Feb 2022 17:06:33 +0000 Subject: [PATCH 2/2] 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 +- tests/test_solidmotor.py | 22 ++++---- 7 files changed, 136 insertions(+), 136 deletions(-) diff --git a/rocketpy/Environment.py b/rocketpy/Environment.py index 675803c40..62eee271f 100644 --- a/rocketpy/Environment.py +++ b/rocketpy/Environment.py @@ -348,7 +348,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 @@ -1944,7 +1944,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 @@ -2361,7 +2361,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 @@ -3249,7 +3249,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 @@ -3272,9 +3272,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) @@ -3347,7 +3347,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) @@ -3371,20 +3371,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 ) @@ -3447,8 +3447,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 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")