Rhino / Python code
In order to run these examples, you will need to install AirCONICS, if you have not done so already.
The example script
wing_example_transonic_airliner.py illustrates the flexibility of the AirCONICS wing model (the liftingsurface class) via a wing geometry similar to that of the Boeing 787, featuring a curved leading edge and trailing edge. After running this example (and pressing ‘Zoom extents on all viewports’), you should see something like this in the Rhino window:
There are other examples included to illustrate using the liftingsurface class. For example,
wing_example_box_wing.py produces the blended box wing discussed in detail in Section 9.3.1 of the book.
nacelle_as_wrapped_around_wing_example.py shows an unusual application of liftingsurface: by using a user-defined dihedral function featuring a linearly varying dihedral from 0 to 360 degrees, it folds a ‘wing’ up into a turbofan nacelle. After running the script, zooming to the extents of each viewport and setting the view to ghosted/shaded, you should see something like this:
wing_example_Jetstream31.py reconstructs the wing geometry of a commuter airliner, the twin turboprop BAe Jestream 31. It’s a nice, simple geometry, with which you can explore, for example, the effects of the scaling variables (refer to Figure 8.18 in the book)
This example also illustrates the use of high level design variables, such as wing projected area and aspect ratio. It is quite common in engineering practice that the designer has target values in mind for these (for example the wing area may result from a constraint analysis process).
liftsurf can take these as inputs and, through an internal optimization procedure, find the ScaleFactor and
ChordFactor that yield these area, aspect ratio, etc. values.
wing_example_Jetstream31.py we set two target values: an aspect ratio of 10 and an area of 25.08. The target values each have a weighting associated with them (the optimizer’s objective function biases the solution with these), though in this example their value is of little relevance, as the two numbers (aspect ratio and area), in conjunction with the user-defined epsilon-functions (twist, dihedral, etc.) define a wing unequivocally. The weighting would matter if we also wanted to specify, say, a span, as there are countless trios of these numbers that cannot be satisfied at the same time by a wing – in this case the optimizer would look for the best compromise, with the weightings defining the relative importance we wish to assign to each target.
Here is a further initial experiment you may wish to try. Open a fresh document and run the script
You should see a geometry resembling this Boeing 787-8…
When it comes to building a 3D wing model, the key function in the Aircraft Geometry Toolbox is
liftsurf. As ever,
help liftsurf is a good place to start, but, considering that this is a rather more complex beast of a function, we have also included two example scripts.
The first is
wingblend, which builds a wing with a smooth blend at the root:
The blend – like any other spanwise geometrical feature – is achieved in
liftsurf by defining the relevant variables (twist, dihedral, chord length, airfoil shape) as a function of the
Epsilon spanwise, curvilinear coordinate.
Another example is
blendedwingbody, which builds a UAV style geometry, where the wing model is defined in such a way that, near the centreline, it effectively forms a fuselage too:
How to export these surfaces for use elsewhere?
Courtesy of Bill McDonald’s
surf2stl all of these surfaces can be exported from Matlab and loaded into CAD packages and other geometry tools. Once you have run the examples above, for instance, you should see the relevant STL file in the same folder. In the case of the UAV example above, opening it in a CAD engine should look like this:
An alternative offered by
liftsurf is to export a series of streamwise sections through any wing model built – you can do this by including a
2 in the