A Python library of aircraft conceptual design tools.
Project description
![ADRpy](https://github.com/sobester/ADRpy/blob/master/docs/ADRpy/ADRpy_splash.png)
Aircraft Design Recipes in Python
=================================
A library of aircraft conceptual design and performance tools, including virtual (design) atmospheres,
constraint analysis methods, propulsion system performance models, conversion functions and much else.
version number: 0.1.0
author: Andras Sobester
Installation / Usage
--------------------
To install use pip:
$ pip install ADRpy
Or clone the GitHub repository:
$ git clone https://github.com/sobester/ADRpy.git
$ python setup.py install
A 'hello world' example: atmospheric properties
-----------------------------------------------
```python
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")
```
A design example: wing/powerplant sizing for take-off
-----------------------------------------------------
```python
# 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))
```
A complete example: wing/powerplant sizing for a single engine prop
-------------------------------------------------------------------
[View the single engine prop example as a Jupyter notebook on nbviewer](https://nbviewer.jupyter.org/github/sobester/ADRpy/blob/master/docs/ADRpy/single_engine_prop_power_requirements.ipynb) (click on the binder icon in the top right corner for of the nbviewer page for an editable, 'live', online version of the notebook).
Aircraft Design Recipes in Python
=================================
A library of aircraft conceptual design and performance tools, including virtual (design) atmospheres,
constraint analysis methods, propulsion system performance models, conversion functions and much else.
version number: 0.1.0
author: Andras Sobester
Installation / Usage
--------------------
To install use pip:
$ pip install ADRpy
Or clone the GitHub repository:
$ git clone https://github.com/sobester/ADRpy.git
$ python setup.py install
A 'hello world' example: atmospheric properties
-----------------------------------------------
```python
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")
```
A design example: wing/powerplant sizing for take-off
-----------------------------------------------------
```python
# 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))
```
A complete example: wing/powerplant sizing for a single engine prop
-------------------------------------------------------------------
[View the single engine prop example as a Jupyter notebook on nbviewer](https://nbviewer.jupyter.org/github/sobester/ADRpy/blob/master/docs/ADRpy/single_engine_prop_power_requirements.ipynb) (click on the binder icon in the top right corner for of the nbviewer page for an editable, 'live', online version of the notebook).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ADRpy-0.1.1.tar.gz
(955.2 kB
view hashes)
Built Distribution
ADRpy-0.1.1-py2.py3-none-any.whl
(979.5 kB
view hashes)
Close
Hashes for ADRpy-0.1.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b2914e5ed171a58f3da3cde520b04f8c387174d3ab2b775c83f6e3b22f86acb |
|
MD5 | 535a9b4e9e55cb055a75e2f7c9c436f5 |
|
BLAKE2b-256 | 1d8472866ad17f039c3cfb4a8cccf2ed88b3124d74804a86545b64d68b60c72f |