Defining aerofoil databasesΒΆ
Here is an example of how to save aerofoil data into the npz file format
expected by bemused.AerofoilDatabase. Of course, you can load the data
from another source rather than embedding directly in a Python script.
import numpy as np
adata = {}
# Add data for different thicknesses. For example, 100% thickness is easy...
# The three columns are Cl, Cd and Cm
adata[100] = """
-180.00 0.000 0.500 0.000
0.00 0.000 0.500 0.000
180.00 0.000 0.500 0.000
"""
# Add other data for other thicknesses...
def parseData(s):
a = np.array([tuple(map(float, row.split('\t'))) for row in s.strip().split('\n')],
dtype=[('alpha', float), ('CL', float), ('CD', float), ('CM', float)])
a['alpha'] *= pi/180
return a
parsed_adata = {k: parseData(v) for k, v in adata.items()}
# Save the aerofoil data
keys = sorted(parsed_adata.keys())
np.savez('aerofoils.npz',
thicknesses=[float(k) / 100 for k in keys],
datasets =[parsed_adata[k] for k in keys])