Aircraft Design Recipes in Python: a library of aircraft conceptual design tools.
Project description
Aircraft Design Recipes in Python
A library of aircraft conceptual design and performance analysis tools, including virtual (design) atmospheres, constraint analysis methods, propulsion system performance models, conversion functions and much else.
For a detailed description of the library, please consult the Documentation. To get started, follow the instructions below.
author: Andras Sobester
Installation / Usage
ADRpy is written in Python 3 and tested in Python 3.4, 3.5, 3.5-dev, 3.6, 3.6-dev and 3.7-dev. It is not available for Python 2.
On most systems you should be able to simply open an operating system terminal and at the command prompt type
$ pip install ADRpy
or
$ python -m pip install ADRpy
NOTE: pip
is a Python package; if it is not available on your system, download
get-pip.py and run it in Python by entering
$ python get-pip.py
at the operating system prompt.
An alternative approach to installing ADRpy is to clone the GitHub repository, by typing
$ git clone https://github.com/sobester/ADRpy.git
at the command prompt and then executing the setup file in the same directory by entering:
$ python setup.py install
A 'hello world' example: atmospheric properties
There are several options for running the examples shown here: you could copy and paste them
into a .py
file, save it and run it in Python, or you could enter the lines, in sequence,
at the prompt of a Python terminal. You could also copy and paste them into a Jupyter notebook
(.ipynb
file) cell and execute the cell.
from ADRpy import atmospheres as at from ADRpy import unitconversions as co # Instantiate an atmosphere object: an ISA with a +10C offset isa = at.Atmosphere(offset_deg=10) # Query the ambient density in this model at 41,000 feet print("ISA+10C density at 41,000 feet (geopotential):", isa.airdens_kgpm3(co.feet2m(41000)), "kg/m^3")
You should see the following output:
ISA+10C density at 41,000 feet (geopotential): 0.274725888531 kg/m^3
A design example: wing/powerplant sizing for take-off
# Compute the thrust to weight ratio required for take-off, given # a basic design brief, a basic design definition and a set of # atmospheric conditions from ADRpy import atmospheres as at from ADRpy import constraintanalysis as ca from ADRpy import unitconversions as co # The environment: 'unusually high temperature at 5km' atmosphere # from MIL-HDBK-310. # Extract the relevant atmospheric profiles... profile_ht5_1percentile, _ = at.mil_hdbk_310('high', 'temp', 5) # ...then use them to create an atmosphere object m310_ht5 = at.Atmosphere(profile=profile_ht5_1percentile) #==================================================================== # The take-off aspects of the design brief: designbrief = {'rwyelevation_m':1000, 'groundrun_m':1200} # Basic features of the concept: # aspect ratio, engine bypass ratio, throttle ratio designdefinition = {'aspectratio':7.3, 'bpr':3.9, 'tr':1.05} # Initial estimates of aerodynamic performance: designperf = {'CDTO':0.04, 'CLTO':0.9, 'CLmaxTO':1.6, 'mu_R':0.02} # ...and wheel rolling resistance coeff. # An aircraft concept object can now be instantiated concept = ca.AircraftConcept(designbrief, designdefinition, designperf, m310_ht5) #==================================================================== # Compute the required standard day sea level thrust/MTOW ratio reqd. # for the target take-off performance at a range of wing loadings: wingloadinglist_pa = [2000, 3000, 4000, 5000] tw_sl, liftoffspeed_mpstas, _ = concept.twrequired_to(wingloadinglist_pa) # The take-off constraint calculation also supplies an estimate of # the lift-off speed; this is TAS (assuming zero wind) - we convert # it to equivalent airspeed (EAS), in m/s: liftoffspeed_mpseas = \ m310_ht5.tas2eas(liftoffspeed_mpstas, designbrief['rwyelevation_m']) print("Required T/W and V_liftoff under MIL-HDBK-310 conditions:") print("\nT/W (std. day, SL, static thrust):", tw_sl) print("\nLiftoff speed (KEAS):", co.mps2kts(liftoffspeed_mpseas))
You should see the following output:
Required T/W and V_liftoff under MIL-HDBK-310 conditions:
T/W (std. day, SL, static thrust): [ 0.19618164 0.2710746 0.34472518 0.41715311]
Liftoff speed (KEAS): [ 96.99203483 118.79049722 137.1674511 153.35787248]
More extensive examples - a library of notebooks
Click on to open a library of examples recorded in Jupyter notebooks. You can play
with these 'live' in Binder, or you can click File / Download as / ... to create your own local
copy in any number of formats. [Note: if you don't want to wait for Binder to generate the library,
you can still access the 'static' versions of the notebooks through nbviewer - click on the required
notebook in the lower half of the holding page. ]
Project details
Release history Release notifications
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size ADRpy-0.1.10-py2.py3-none-any.whl (983.0 kB) | File type Wheel | Python version py2.py3 | Upload date | Hashes View hashes |
Filename, size ADRpy-0.1.10.tar.gz (959.5 kB) | File type Source | Python version None | Upload date | Hashes View hashes |
Hashes for ADRpy-0.1.10-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10d06acbf7969567b1c806075f3886ce86390cf792d6c9e1bfdc1a0d3f27e945 |
|
MD5 | 8d40d36a2de2e1b69beb9525858cc270 |
|
BLAKE2-256 | a1abad9d456d4b032c722160fea899eb0999023d754e4a830306c4a869f27d0f |