Uploaded by alex.moss

am15293-Report AlexanderMoss

Department of Aerospace Engineering
AENGM0032 Research Project
Alexander C. J. Moss
Department of Aerospace Engineering, University of Bristol, Queens Building, University
Walk, Bristol, BS8 1TR, UK
Adaptive control and aeroelastic tailoring are both areas of research which have the potential to drastically improve the aerodynamic efficiency and structural performance of aircraft
wings. Active aeroelastic tailoring utilises the benefits of both methods to optimise the shape
of the wing over the span. One promising technique involves varying the rib orientation to
alter the twist response, while still maintaining the aerofoil shape. In order to understand
the full potential of this adaptive device, a study has been conducted into the effect of it on
the structural properties of a wing. A series of finite element models were built and tested
using MSC. Nastran, with various sweep and rib orientation values. This paper describes the
issues with analysing the response of swept wings due to the lack of clarity in many structural definitions. The report seeks to clearly define the structural axes and their affiliations
with different methods of adaptive control, such as adaptive bend-twist coupling. A method
of approximating the elastic and global flexural axes is presented and the implications of this
include a potential to accurately idealise any wing to an Euler-Bernoulli 1D beam. The initial
investigation involves finding the position of the local flexural axis of each wingbox and then
applying distributed loads to assess the twist response. This study shows that there is the
potential for large alterations in tip twist due to this adaptive device, further optimisation of
the model would be required to prove this. There is currently not enough evidence to prove
that varying the rib orientation of a wing will lead to beneficial aerodynamic and structural
Keywords: Aeroelastic Tailoring, BendTwist Coupling, Adaptive Structures, Finite Element
Analysis, Global Flexural Axis
Worldwide air travel is predicted to expand by 8.2 billion by 2037 [1]. The market is facing
new challenges to improve fuel efficiency due to pressure for ‘green’ air travel, reducing CO2
emissions [2] and noise pollution. Due to locally variable oil prices, profitability can be seriously
affected by market volatility. Between 2014 and 2016, North America had large airline market
growth due to fuel price declines [3]. To protect airlines’ profits against potential uncertainty in
the future oil markets, aircraft manufacturers must find methods of improving fuel efficiency in
the design of future aircraft.
In the last 50 years, aircraft wingspans have been increasing [4], currently the largest span of
any civil aircraft is the Airbus A380 at 80 metres. Increasing the wingspan contributes to a
higher aspect ratio, a key factor in reducing the induced drag. Due to the gate sizes at airports,
there are regulations governing the maximum wingspans for different classes of aircraft. As
many aircraft families have already reached this limit, manufacturers have begun incorporating
new methods of extending the span, such as the Boeing 777X, with its folding wing-tips. This
enables it to have a wingspan of 72 metres and an aspect ratio of 11 while still being able to fit
within the 65 metre airport gates. Further improvements in aerodynamic efficiency can only be
achieved by drastic technological changes in wing design.
High aspect ratio wings are flexible, if not then there is a large weight penalty associated with
the amount of material required to stiffen them. Negative aeroelastic effects such as flutter,
divergence, localised stall and gust response issues become more prevalent for flexible wings. It
is the field of aeroelasticity which can help to alleviate these issues, by optimising the shape of
the wing at each spanwise section. To alter the geometric form of the wing, a technique referred
to as adaptive control is required. Ideally this would include a system which could vary the
span, sweep, bending, twist and airfoil shape of the entire wing, however this is unrealistic for
the current technology level.
Many adaptive control methods involve ‘smart’ internal structural design, varying the bendtwist response of the wing through a technique called aeroelastic tailoring. This is defined as
“the embodiment of directional stiffness into an aircraft structural design to control aeroelastic
deformation, static or dynamic, in such a fashion as to affect the aerodynamic and structural
performance of that aircraft in a beneficial way” [5]. There are many distinct methods of tailoring
the structural properties of a wing, both by altering the structural elements of the wing-box and
changing the material properties of those elements, to achieve a desired response under loading.
Examples include static tailoring such as element thickness variation and composite laminate
fibre manipulation and include in-flight tailoring such as varying the position or orientation of
web spars.
The method which this report focuses on is an adaptive internal structure which changes the
orientation of the ribs in a wing-box, which has previously been investigated by Harmin [6].
This is an active aeroelastic tailoring method which is similar to the passive tailoring techniques
of laminate fibre direction optimization or the inclusion of out-of-plane stiffness elements. As
the role of ribs is to prevent buckling to maintain the aerofoil shape, their orientation can be
varied greatly before structural design assumptions break down and there is an increased risk of
problematic deformations such as buckling. This report first covers the technical background of
adaptive structures and the importance of clarity when defining the structural properties used
to describe how they work. The investigation focuses on the effect of varying rib orientation on
the structural properties for different amounts of wing sweep. The results of the investigation
are then used to determine the usefulness of the technology in its ability to vary the bend-twist
coupling thereby improve the aerodynamic efficiency of the wing.
Active vs. Passive Control
It is important to discuss the available methods of adaptive control, as they all benefit the
aircraft in different ways. Passive tailoring devices such as out-of-plane stiffness elements and
tow-steered composites are much simpler to model and can be included in complex models
more easily than moving parts. They also lead to optimal deflection response of the wing for
alleviation of flutter and divergence. Active tailoring devices such as moving spars have been
used for active flutter suppression [7] as well as improving the aerodynamic efficiency of the wing
throughout the flight in a variety of conditions and phases. For example, a different optimal
wing shape exists for cruise than it does for cruise-climb. New developments in adaptive control
technology can only occur if improvements over current methods can be clearly shown. In terms
of active control, the ability to vary the twist response over the entire wingspan would enable
fully aerodynamically optimised design and therefore reduced fuel consumption. Despite this,
most civil aircraft do not require this level of optimisation to provide improved fuel efficiency,
as the expense and weight required for complex active systems may mitigate any savings for
airline companies. The passive method of a fixed optimal design provides not only improved
aerodynamic efficiency but also flutter protection and therefore weight reduction.
Active control systems rely entirely on external power to operate the actuators and supply
the control forces [8]. By extension, passive control relies entirely upon external forces for
actuation, for example the aerodynamic forces a wing experiences during flight. Passive control
involves the wing being aeroelastically tailored at the design and manufacture stage to optimise
the bend-twist response under loading. All adaptive wing structures fall under the umbrella
of active control, as they either vary the shape of the aerofoil or planform directly or vary
the wing structural properties leading to deformation under aerodynamic forces. Either way,
external energy is required to cause adaption, however the latter is commonly referred to as
‘semi-active’ due to the major contribution of the aerodynamic loads to the deformation. Semiactive adaptive control can be described as active aeroelastic tailoring which, using Weisshaar’s
definition of aeroelastic tailoring, is defined by this report as the following.
Active aeroelastic tailoring is the ability of an aircraft wing to vary its structural properties
to control aeroelastic deformation, to affect the aerodynamic and structural performance in a
beneficial way.
Weisshaar [5, 9] varied the orientation of the principal bending and torsion axes in order to
change the bend-twist coupling, which is why the term “directional stiffness” is used in the
definition of aeroelastic tailoring. The structural properties of a wing can instead be defined
through simplifying the wingbox to a beam which is then modelled using Euler-Bernoulli theory.
Although this method allows for a more intuitive approach to understanding how adaptive
control techniques work, structural properties such as the global flexural axis, which determines
the bend-twist coupling, can’t be defined. To improve on the methods used in the previous
study [10], a comprehensive review of the definitions of the structural properties is required, to
make a clear foundation on which to build a better analysis.
Clarifying the Structural Property Definitions
As stated by Stodieck, Cooper and Weaver, there are many conflicting definitions of structural
properties [11]. It would be beneficial to clearly define the structural properties which help to
describe how various adaptive control methods work. Table 1 summarizes these definitions.
Table 1: Structural Property Definitions [11]
Shear Centre
Elastic Axis
Flexural Centre
Local Flexural Axis
Global Flexural Axis
Location on a 2D cross-section where a shear load can be applied and
no rate of twist is generated at that section.
Locus of Shear Centres along the wing.
Location on a 2D cross-section at which a shear load can be applied
and no twist occurs relative to the fixed root at that section, not
necessarily at any other points along the wing
Locus of Flexural Centres along the wing.
Position of a distributed set of loads applied simultaneously along a
wing that will result in zero twist along the entire wing.
Shear centre is a key property of a beam, the locus of shear centres is referred to as the elastic
axis. If a shear force is applied at the shear centre of a section, there will be no rate of twist
generated at that section. This is shown by Equation 1, as no torsion (T ) is generated at that
section so there is no rate of twist (θ0 ) produced. The denominator is the torsional stiffness,
which is made up of the shear modulus of the material (G) and the polar second moment of
area (J ).
θ0 =
For a homogeneous wing, the shear centre location is the same along the span and therefore the
elastic axis is straight in the spanwise direction. A homogeneous wing is uniform and unswept,
with the same structural properties at every section along the span. Altering the position of
the shear centre of a wing is known as adaptive torsion, Ajaj [12] achieves this by varying the
locations of the front and rear spars, moving the shear centre location, this technique is shown
by Figure 1.
Figure 1: Adaptive Torsion Structure [12]
This method also has the potential to vary the torsional stiffness through the polar second
moment of area, as the enclosed wing-box area is changing. Combining Equation 1 and the BredtBatho twist deformation equation, Equation 2 is formed, which shows that (J ) is proportional
to the square of the enclosed area of the wing-box (A).
J = H ds
Raither [13] demonstrated a variable torsional stiffness concept by altering the shear modulus
of a material to ‘open’ and ‘close’ 3 cells inside an adaptive aerofoil, shown in Figure 2. The
concept uses the variable stiffness of polyvinyl chloride under changing temperature to control
the shear modulus. It is shown by the analysis that it is effective at varying the shear centre
location and torsional stiffness. The concept was able to increase the tip twist to be 40 times
larger than the minimum, therefore has the potential for finding optimal wingbox properties for
shape control. There is also indication that the structural properties can be altered along the
Figure 2: Cross-section of the Adaptive Aerofoil [13]
A similar method of adaptive control involves varying the spar orientation, the effect of which
is a change in the second moment of area, which contributes to the bending stiffness of the
wing. Implementing variable bending stiffness for roll control has been discussed by Chen [14],
Amprikidis [15] and more recently Florance [16] using the Variable Stiffness Spar concept, shown
in Figure 3. Florance conducted wind-tunnel testing on the concept being used in a F/A-18A
model aircraft but found that the structure had to be made very stiff to handle the design loads
and the VSS performed worse than in the analytical model. The loads must be carried through
the structure throughout any changes to that structure, making the ‘flexible’ wings are only as
flexible as the design loads allow them to be. Adaptive bending stiffness therefore isn’t relevant
to high aspect ratio wings.
Figure 3: Variable Stiffness Spar Concept [16]
The concept of adaptive bend-twist coupling has been discussed numerous times, but rarely has it
been clearly defined in terms of the local section properties, as it does not occur in homogeneous
unswept wings. Raither [13] made this error, assuming that the variation in twist was due to
structural coupling when actually the torsion and the torsional stiffness were changing. This
error made was due to the calculation of twist being taken from the centroid of the wingbox
rather than the shear centre. When the elastic axis is straight and perpendicular to the chord,
there is no bend-twist coupling.
Upon reflection of the previous study [10], this error was also present where a change in torsion
was mistaken for bend-twist coupling. In this study, a wing-box with a single translating and
rotating spar was investigated to find the effect on bend-twist coupling, but instead found
changes in shear centre position. The method used by Moss, taken from Weisshaar [9], defines
the amount of bend-twist coupling using the non-dimensional term ψ, a function of the terms
in the stiffness matrix from Euler-Bernoulli beam theory, shown in Equation 3. A limitation of
this method is that it treats the wingbox as a one-dimensional homogeneous beam with constant
section properties and can’t easily be scaled up to a heterogeneous wing model. A bend-twist
coupling (−K) distribution has not been determined in any previous research for this reason.
EI −K u00
Weisshaar [9] assigned principal stiffness directions and calculated bend-twist coupling values in
order to conduct aeroelastic analysis of flutter and divergence. Rather than modelling a specific
method of changing the structural properties of a wingbox, it was assumed that the wingbox had
those properties already. Equation 3 is the ideal end point of this report’s structural analysis,
to simplify the wing to a beam with a stiffness distribution, which is where Weisshaar begun the
investigation from. At that point the static and dynamic response of the wing can be determined
from the moment and torsion distribution along the span.
To reach this point, it must be made clear why, in terms of structural properties of a wing,
bend-twist coupling occurs. Swept back wings are a good example of where bend-twist coupling
is usually present, as under design loading the wing will twist leading edge down, this is referred
to as “washout,” which is shown in Figure 4. Swept forward wings do the opposite, twisting
leading edge up which is referred to as “wash-in.” In conventional civil aircraft design, the
tailoring effect of the swept-back wings is considered, as the level of “washout” does factor into
the cruise lift-to-drag ratio and therefore affects the fuel efficiency. Sweep leads to a change in
the directional stiffness of the wing, as the principal torsion axis, i.e. the elastic axis, changes
Figure 4: Washout [17]
position. To define how the sweep affects the twist response of the wing, the positions of the
flexural axes, local and global, must be found.
Local and Global Flexural Axis
The position at which a shear load is applied on a chord-wise section of the wing and no twist
of that section occurs relative to the fixed root is known as the flexural centre, or local flexural
axis position. This is an important definition, as for homogeneous unswept wings it is the same
as the shear centre. If the aim is to use bend-twist coupling to achieve aeroelastic tailoring then
the local flexural axis must differ from the elastic axis.
Figure 5: Positions of Elastic and Flexural Axes for a Uniform Swept Wingbox
Figure 5 shows an idealised uniform swept wingbox, where the flexural centre is located at the
mean elastic axis position up to that section. This is a simplistic relationship which relies on the
wingbox being analysed as if a homogeneous wingbox has undergone rotation about its centroid
at the root. This does not account for the effect of any structural constraints at the root or any
potentially out of plane elements such as ribs on the wingbox properties. On a realistic swept
wingbox, assuming that it is approximately uniform, the gradient of the local flexural axis will
be roughly half the sweep.
For a general case where the shear force is applied at the tip flexural centre, no twist occurs
relative to the root because the mean rate of twist between the root and tip is zero. The elastic
axis must move spanwise from forward to aft of the flexural centre chordwise, or vice versa, in
order to change the torsion and therefore rate of twist from positive to negative over the span.
Using the fact that the mean rate of twist must be zero allows for a calculation of the position
of the shear centre at every section, as long as all flexural centres are known. Figure 6 shows an
example of how the elastic axis position can be calculated from the known local flexural axis,
assuming constant torsional stiffness. The triangular area enclosed by the local flexural and
elastic axes is the total rate of twist over that section of span and is defined by Θ0 . Along the
linear slope of the local flexural axis, the elastic axis position is correct as long as Θ01 = Θ02 .
Θ01 and Θ02 represent the total leading edge up and down rates of twist respectively. When the
local flexural axis is parallel to the wingbox spars, the shear centre must be at the same location
as the flexural centre so that the balanced rate of twist remains at zero. The shear centre and
flexural centre coincide at the root also as there is no rate of twist to measure, due to it being
Figure 6: Demonstration of the Method of Calculating Elastic Axis Position
This proposed method of calculating the shear centre along the span is easier to implement
than the analytical methods described by Rohde [18] and Katori [19] as they require additional
derivation for each specific case and section. This is not an issue for the proposed method as this
only requires knowledge of the local flexural axis and torsion and torsional stiffness distributions.
There also exists a global flexural axis which Stodieck [11] defined as “position of a distributed
set of loads applied simultaneously along a wing that will result in zero twist along the entire
wing (i.e. the global flexural axis is characteristic of the wing under a specific load case).” This
is the axis which defines where there is no bend-twist coupling for a distributed load, the local
flexural axis is a special case of the global axis which only applies to point loads.
Stodieck calculated the positions of this flexural axis for a swept wing under different loading
conditions, shown in Figure 7. Although there is a skew of the results in Section #1 and #2,
the trend is clear. This skew occurs due to the effective increase in the rear spar stiffness at the
kink, moving the local elastic axis aft. The work of Stodieck has created a starting point in a
method to calculate the position of the global flexural axis in a similar way to how the shear
centre distribution could be calculated from the local flexural axis.
No twist along the span means that no torsion is generated at any section, in other words,
the torsion is balanced. Figure 8 shows a method of calculating the global flexural axis of a
Figure 7: Local and Global Flexural Axes and Elastic Axis [11]
Figure 8: Demonstration of the Method of Calculating Global Flexural Axis Position
simplified wingbox with an arbitrarily discretised constant lift distribution applied. The tip
global flexural axis position must coincide with the elastic axis as the torsion must be equal to
zero and if there is any end loading, the moment arm will cause torsion to be generated. At
each load application point along the span, working from the tip, a rate of twist is calculated
from each of the applied forces and their distance from the elastic axis at each point. For the
torsions to balance, the positive and negative twist rates must be equal over the span. For this
simplified case, that means if Θ01 = Θ02 and Θ03 = Θ04 + Θ05 , then the global flexural axis has
been determined. Reducing the step size between each load application point would lead to an
accurate approximation of the continuous global flexural axis position.
When upscaling this concept, a numerical optimiser would be required, as the number of calculations scales triangularly. Assuming that the load distribution and torsional stiffness is constant
would simplify this problem, however using an elliptical or triangular load distribution with reducing torsional stiffness spanwise due to taper would be more applicable to civil aircraft wings.
Figure 7 also shows that the global flexural axis position is different under constant, triangular
and elliptical distributions. Both the elliptical and triangular distributions have reduced loading nearer the tip, meaning that the global flexural axis moves closer to the elastic axis. This
is because less torsion is generated from the lift in the tip region, therefore less of a moment
arm near the root is required to balance the rate of twist at every section along the span. The
loading near the root is also higher for the triangular and elliptical load distributions, meaning
that the moment arms in this region, i.e. the distances between the elastic axis and the global
flexural axis, are smaller. Under realistic distributed loading at the 25% chord, the constant lift
distribution would cause the largest twist, then the elliptical, then the triangular.
Using swept wings is a great way of defining how the flexural axes help to better understand wing
twist response due to bend-twist coupling. For adaptive devices, such as the translating spar,
the shear centre position will be proportional to the displacement of the spar and the torsional
stiffness will be dependent on the area enclosed by the wingbox, whose cells will change size
with the spar movement. For the adaptive interfaces presented by Raither [13], the torsional
stiffness and shear centre can be determined, for each configuration of open and closed cells.
If further work into this concept had included modelling of a heterogeneous wing, with the
interfaces having the ability to be scaled from open to closed along the span, the distribution of
torsional stiffness and shear centre could still be calculated.
For the variation in rib orientation, this cannot be done so easily, as the rib elements are not
included in analytical models of calculating the cross-section structural properties using the
boom and skin idealisation. This is because they serve to maintain the shape of the aerofoil,
preventing effects such as buckling. Using them as out-of-plane stiffness elements to vary the
structural properties of the wingbox can be thought as adding a secondary set of principal
stiffness directions, which alters the overall directional stiffness of the wingbox. In theory, the
same method described earlier for swept wings can be used to describe the effect of varying rib
Figure 9: Harmin’s ‘Realistic’ Wingbox Model [6]
Harmin conducted a study into the effect of varying rib orientation on the bend-twist response
of a realistic wingbox based on a twin-engine single-aisle aircraft wing under distributed loading.
The model used is shown in Figure 9, where rib angle was varied from -20◦ to 30◦ . A smaller
model with a 1-metre span was also investigated with rib angle variation of ±45◦ . The tip twist
of the realistic model varied by less than 0.2◦ over a 30◦ rib orientation change. The reason for
such a low twist variation was due to the chosen lift distribution did not apply enough force to
generate sufficient twist. Scaling the twist relative to the loading shows that, for a total lift of
900000N which a wing of that size should be experiencing, the tip twist variation should have
been 10◦ over the 30◦ rib orientation change. Such a large potential variation shows that this
adaptive control device has the potential to optimise the twist distribution along the wing of a
civil aircraft and produce beneficial results for the aerodynamic performance.
Aims & Objectives
The overall goal of the project is to fully assess the feasibility of varying rib orientation being used
to improve the aerodynamic efficiency of a wing through optimal bend-twist coupling leading
to a desired deflection response. The scope of this report details an initial study into the effect
of varying rib orientation on the twist response of a flexible wing. The effect of sweep on this
adaptive control technique is also analyzed.
The methods of approximating the elastic and global flexural axes detailed above are examined
in more detail, applying them to a wingbox using the local flexural axis results to calculate the
structural properties. Comparisons between the results of this study and the work of Stodieck
[11] and Harmin [6] are made for verification and validation.
In this method, the variation in rib orientation’s effect on bend-twist coupling is investigated
by finding the position of the local flexural axis. Variation in sweep is also used to study the
combined effect of rib and sweep angle on the coupling. Linear static finite element analysis is
used to produce deflection results from which twist distributions and local flexural axis positions
are calculated.
The model’s sweep and rib orientation can be altered by the use of a MATLAB script which
generates an input file for MSC. Nastran. This file contains the finite elements’ node connectivity
and global positions as well as the material and element properties and finally the constraints and
forces to apply to the model. MSC. Patran was used to check that the MATLAB script output
file was working correctly as a Nastran input file and that the correct loads and constraints were
being applied. The MATLAB scripts used in this method are shown in the Appendix.
Table 2: Computational Tools Used
MSC Software
MSC Software
Details of the Model
The baseline wingbox is similar to Moss’ previous study [10], with an 8-metre span, 1-metre
chord, which the front and rear spar positions at 15% and 65% chord respectively. The thicknesses of the elements have been changed for this model, with 5mm for the spars and ribs and
1mm for the skins. Having the ribs the same thickness as the spars will lead to a greater effect of
varying rib orientation, simplifying results analysis. The rib pitch is chosen to be 1 metre for this
model, as the analysis will assume an approximately uniform wingbox, which will begin to break
down if there are too many ribs varying their orientation. This is also the reason for the upper
limit of rib orientation, as the ribs begin to act like additional spars, increasing the bending
stiffness of the wingbox. A square wingbox was chosen for the model, as no stress analysis was
required so it would simplify the calculations of global positions greatly. The thickness-to-chord
ratio was chosen to be 12%, which was again the same as Moss’ study. This is a realistic wingbox
height and is arbitrary as the bending stiffness is not being studied.
The wingbox model is shown in Figure 10 with Λ and ν representing the amount of sweep and
rib orientation respectively. The sweep variation was chosen to be from 0-30◦ , as the forward
Figure 10: Model of the Uniform Swept Wingbox with Rib Orientation Aligned with the Root
sweep results can be intuitively determined by changing the sign of the results from the sweptback wingbox. 30◦ was chosen as the upper limit as this is the approximate sweep of most civil
aircraft. The rib orientation can vary from 0-45◦ . The lower limit was derived from Harmin’s
results [6], as they describe an anti-symmetry between the effect of the variation of positive and
negative rib deflection, shown in Figure 11.
Figure 11: Effect of Varying Rib Orientation on the Tip Deflection, Bending And Twist, taken
from Harmin’s Study [6]
Generation of Input Files for NASTRAN
The MATLAB script to generate Nastran inputs files was broken down into four sections, plotting
the geometry, plotting the nodal positions, assigning node IDs to finite elements and finally
populating files with the data.
Firstly, the geometry of the wing-box was constructed, using a function called ‘plot geom’,
which took the geometric constraints, detailed in Section 2.1, and converted them into a usable
geometry from which the global positions of the nodes could easily be calculated. Geometric
positions of the corners of each square rib surface were the basis for building the network of
The order of the nodes is arbitrary, however it is ideal to have a system to make element
creation simpler to compute. The node ID number ascended from root to tip, going around the
circumference from the bottom of the forward spar in an anti-clockwise direction about positiveY. Version 1 had a very small number of elements and used only CQUAD shells, however this did
not allow for accurate modelling under loading, as the model must be loaded at nodal positions.
Therefore a new node set was chosen, to allow 6 potential loading positions along the chord at
each base rib location, the positions of which would not change with the rib orientation. This
required the use of CTRIA shell elements to complete the model with full node connectivity.
Finally CBEAM elements were used as ‘spar caps’ as this would lead to increased bending
stiffness, allowing for a reduction in skin thickness and therefore reduced torsional stiffness,
ideal for finding the change in twist under different loading conditions.
A function called ‘plot nodes’ calculates the coordinates of each node from the geometry; it also
varies the node setup depending on whether the ribs are deflected or not. Figure 12 shows the
different finite elements used for no rib deflection vs a rib deflection. Figure 12a shows the setup
where the ribs are aligned with the root, so the ribs are modelled with CTRIA elements so that
the six nodes along the chord are positioned correctly. For the setup shown in Figure 12b, the
ribs are modelled with a single CQUAD element and the CTRIA elements are now used on the
skins to maintain the six nodes. This method has very high skew angles for the CTRIA elements,
but when the model is scaled up with many more nodes, this problem will be alleviated. The
number of nodes in the model in each case is shown in Table 3, for the initial study this number
is small, future versions would have far greater numbers of elements to provide highly accurate
results of an approximately continuous distribution of structural properties.
(a) Finite Element Setup used for the Undeflected Rib Case
(b) Finite Element Setup used for the Deflected
Rib Case
Figure 12: Different Finite Element Setups shown in MSC. Patran
Table 3: Breakdown of Finite Elements used in the Model
Element Type
Number Used in Un-deflected Case
Number Used in Deflected Case
This method currently only works for positive rib deflections. The associated nodes for each
element are defined in ‘plot elems’. The outputs from which are then used to print the .bdf and
.txt files. The properties of the material used were a Young’s modulus of 70GPa and a Poission
ratio of 0.3. The Nastran library was especially helpful in determining the correct format for
file printing.
Calculation of Local Flexural Axis
Each station has 6 nodes along the chord, at 15%, 25%, 35%, 45%, 55% and 65% chord; and
there are 8 stations along the span, at each undeflected rib location. A shear load of 1kN is
applied and the twist is calculated for each of the 6 loading positions at that station. A 6th order
polynomial solver MATLAB script called ‘findZeroCrossing’ fits a curve to the measured twists.
The position at which the shear load would be applied to generate no twist at that section,
i.e. the local flexural axis, is then calculated. It is expected that the relationship between the
position of the applied load and the twist is linear, however the function helps in the case of any
nonlinearities to provide an accurate result, or to help explain unexpected results.
Deformation Under Distributed Load
A discrete load distribution is applied to the nodes placed at 25% chord. The total lift applied
to the wingbox is 2kN, as it was found that at a load of 10kN, the bending deflections indicated
the strain was large enough to have caused failure. Further study into the reasons for this
occurence would be required for future work, especially using Nastran for stress analysis to keep
the structure in a pre-failure condition for the larger loads it would experience.
A constant, triangular and elliptical distribution are all applied and the response of the wingbox
recorded. The distributions applied are shown in Figure 13, which is not constant for the
constant lift distribution due to the positions where the forces must be applied at each station
along the span. The average load for the first 1.5 metres and last 0.5 metres at the root and
tip of the span is applied at the first station and tip stations respectively. This approximation
maintains the full 2kN of load whilst increasing the bending moment or torsion loading by a
negligible amount.
Figure 13: Simplified Lift Distributions Applied to the Model
(a) Unswept Wingbox
(b) 15◦ Swept Wingbox
(c) 30◦ Swept Wingbox
Figure 14: Effect of Varying Rib Orientation on the Local Flexural Axis
(a) Unswept Wingbox
(b) 15◦ Swept Wingbox
(c) 30◦ Swept Wingbox
Figure 15: Effect of Varying Rib Orientation on the Spanwise Twist Distribution
Figure 16: Effect of Sweep on the Change in Relative Tip Twist due to Varying Rib Orientation
Figure 17: Effect of Different Lift Distributions on the Twist for a 15◦ Swept Wingbox
Both Figure 14b and 14c confirm the effect of sweep on the local flexural axis discussed in Section
1.3, however it is not exactly where it was predicted to be, as shown in Figure 18. This means
that one of two things is true, the prediction is incorrect, or the shear centre has moved forward
due to the sweep. The effect of the increasing the rib angle makes the wing more uniform, as
the ribs are more perpendicular to the spars. This may be why the prediction isn’t accurate, as
the ribs’ directional stiffness effect is acting while they are aligned with the root. Further study
would be required to find out the truth, but it is still a reasonable estimate for the position of
the local flexural axis on an approximately uniform swept wing. This result is still proof that
Figure 18: Predicted and Measured Local Flexural Axis Position for a 15◦ Swept Wingbox
the elastic axis of a heterogeneous wingbox can be calculated, just from applying loads and
measuring deflections.
Figure 14a shows that the flexural centre moves aft of the centroid within the first two rib bays
due to the deflection of the ribs, indiscriminate of the rib angle. The act of changing the rib
direction any amount leads to the flexural centre, and by extension the shear centre, moving
further from the forward spar. Past 3 metres of span, the local flexural axis is approximately
linear for all cases. This shows that close to the root, the results are not indicative of the effect of
varied rib orientations, as the structure is less homogeneous due to the fixed root. This problem
may be alleviated by adding more ribs in the root half of the span to homogenize the structure.
The effect of changing the rib angle is non-linear. At 15◦ rib angle, the local flexural axis has
moved further back from the forward spar than the uniform 0◦ axis, but at 30◦ rib angle it
moves back towards the forward spar. This trend continues for the 45◦ local flexural axis, which
has moved past the 0◦ axis closer to the forward spar. This confirms the results of Harmin’s
study [6], which Figure 19 shows for a similar unswept wingbox.
The twist distributions due to an elliptical load distribution are shown in Figure 15. The elliptical
distribution is the most representative lift distribution for the untapered wingbox used in the
model, therefore ideal for demonstrating a realistic twist response. The largest change in tip
twist occurs between 15◦ and 45◦ for the unswept wingbox, causing 0.1◦ of twist over length of
span. If the lift distribution was scaled up to a realistic design load of 100000N, the amount of
twist would be 5◦ . This is a simplistic scaling up of the effectiveness, as the wing twist due to
other effects would be wildly larger and therefore the wing would need to be stiffer than it is in
the model. This does however prove that this technology could lead to an ability to significantly
change the twist distribution over the span.
It is clear that the highest rate of twist is in the root-half of the span, especially for the swept
cases, as this is where the largest torsional forces are acting. Varying the elastic axis in this
region leads to the biggest change in torsion and therefore rate of twist, which impacts the twist
distribution over the rest of the span more than any variations closer to the tip. This is therefore
where the adaptive device has the most effect and further study should focus on just altering
the ribs in this part of the span. The importance of the adaptive device in the root-half of the
Figure 19: Effect on The Tip Twist due to Changing Rib Orientation from Harmin’s Study [6]
wing in combination with the non-linearity of the flexural centre shown in the first 2 rib bays of
the model indicates that this study has not demonstrated the full potential of this technology
in its ability to vary the twist distribution.
Figure 14b shows that there is a change in the effect of changing rib orientation due to sweep.
The 45◦ rib angle no longer causes the local flexural axis to move forwards, however it is still
further forward than the 15◦ and 30◦ rib angles, which have very similar axis positions in this
case. The effect of a further increase in sweep is shown in Figure 14c. The trend indicates that
as sweep increases, the effectiveness of the variation in rib orientation reduces past 15◦ . Figure
16 shows this in more detail, as the absolute variation in tip twist for the 30◦ sweep case is much
smaller than the unswept and 15◦ cases. Also the unswept case has more variation from 15◦ -45◦
rib angle variation, whereas the 15◦ sweep case has the most variation from 0◦ -15◦ . This shows
that for each sweep, there is an optimal rib angle variation range where the most change in twist
occurs, which would need to be identified to make full use of this technology. For the 30◦ sweep
case, this is especially important, as most civil aircraft use 25◦ -30◦ sweep. Currently there is not
enough evidence to show that this adaptive device could be used to improve its aerodynamic
Figure 17 confirms the predicted effect from Figure 7 detailed in Section 1.3. This proves that
the global flexural axis for a swept wing is the furthest forward under a constant distribution
and that the triangular distribution is the furthest aft. The issue with applying this technology
to civil aircraft is that they tend to have large taper ratios of 0.3 or less, meaning that the lift
distributions they experience are more triangular than elliptical, which would reduce the effect
of any adaptive torsion or bend-twist coupling device.
Calculating an Estimate for Global Flexural Axis Position
Using the approximation methods mentioned in Section 1.3, an estimate for the position of the
elastic and global flexural axis for the 30◦ swept, 45◦ rib orientated wingbox is calculated. The
result is shown in Figure 20. A constant lift and torsional stiffness distribution was assumed.
The global flexural axis position does appear to take a similar form to the results presented by
Stodieck [11], however further study would be required to check that this approximation method
is accurate. Once this method is proved, any wing can be simplified to a beam model with a
stiffness distribution, shown in Equation 3, using an adapted version of the method used in
Moss’ study [10].
Figure 20: Calculated Elastic and Global Flexural Axis Positions from the Local Flexural Axis
A linear static finite element analysis of a series wingbox at 0◦ , 15◦ and 30◦ sweep with an
adaptive control device which varies the rib orientation between 0◦ and 45◦ in 15◦ intervals.
The local flexural axis position was calculated in each sweep and rib orientation case from
the resulting deflections under point loading. Constant, triangular and elliptical distributed
Loads were then applied to simulate the response in realistic loading conditions. A method of
approximating the position of the elastic and global flexural axis was proposed and attempted.
An estimate was produced and compared against the research of Stodieck [11]. The implications
of the success of this method could lead to improvements in analytical dynamic aeroelastic
analysis due to accurate determination of the structural properties.
The study conducted confirms the work of Harmin [6], where the twist response due to varying
rib orientation is non-linear. More detailed study of the effect of varying rib orientation was
not possible due to the limitations of the model, such as the large resolution of the measured
local flexural axis. This meant that there is currently no explanation for the non-linearity of the
local flexural axis in the first two rib bays. Aspirations for further work into this are detailed in
Section 6. This study does show that there is the potential for up to 5◦ alterations in tip twist
due to this adaptive device, however further optimisation of the model would be required to
prove this. It is for these reasons that this study cannot say for certain whether or not varying
the orientations of the ribs in civil aircraft wing would lead to improvements in aerodynamic
This study has produced sub-standard results due to the limited structural optimisation conducted before the creation of the final model. A future model would require more detailed
analysis in the root-half of the span, as it has been shown that this is the region which not
only has the most potential to affect the twist distribution, but also has provided potentially
inaccurate local flexural axis data. The combination of which means very little has been learned
about the effect of varying rib orientation on the bend-twist coupling of wings.
To improve the accuracy of the model, the finite element setup process will require changing,
as there are too few nodes and therefore too few load application points. Also the way that
the elements are connected leads to more potential for buckling and non-linear responses. It
would also be important to study the effect on the twist response of both varying the number
of ribs in the model, but also varying the individual rib orientations. This could lead to in-situ
optimisation of the shear centre position throughout the structure.
With the increase in number of load application points, the calculated local flexural axis could be
approximated to a continuous distribution and therefore the effects on the shear centre position
in the region where the ribs are being deflected can be studied in more detail. This will lead to
better analysis of the adaptive control device of varying rib orientation. This would also further
test the method of approximating the elastic axis and global flexural axis positions, which if
proved accurate, could be useful for future structural analysis of all wing structures.
Further study into the effect of varying rib orientation would involve aero-structural analysis to
find an estimate of drag and lift-to-drag ratio, thereby measuring a quantifiable difference in the
aerodynamic efficiency due to the application of this adaptive device.
[1] International Air Transport Association, “IATA Forecast Predicts 8.2 billion Air Travelers
in 2037,” Oct. 2018.
[2] International Air Transport Association, “IATA ”Green” Taxes Fact Sheet,” May 2018.
[3] Boeing, “Current Market Outlook 2016 2035,” 2016.
[4] Y. Ding, “Boeing Airplane Overview,” 2016.
[5] T. A. Weisshaar, “Aeroelastic Tailoring - Theory, Practice, and Promise,” Journal of Aircraft, vol. 23, no. 1, pp. 6–18, 1986.
[6] M. Harmin, A. Ahmed, J. E. Cooper, and F. Bron, “Aeroelastic Tailoring of Metallic Wing
Structures,” 04 2011.
[7] R. Ajaj, M. Bourchak, and W. Harasani, “Twist morphing using the variable cross section
spar: Feasibility study,” Journal of Aerospace Engineering, vol. 28, p. 04014146, 07 2014.
[8] Z. Xu, Y. Guo, J. Zhu, and F. Xu, “Chapter 4 - Semiactive Intelligent Control,” in Intelligent
Vibration Control in Civil Engineering Structures, pp. 85 – 149, Oxford: Academic Press,
[9] T. A. Weisshaar and R. J. Ryan, “Control of Aeroelastic Instabilities Through Stiffness
Cross-coupling,” Journal of Aircraft, vol. 23, pp. 148–155, 02 1986.
[10] A. Moss, “Exploiting Aeroelastic Effects for Optimal Aerodynamic Performance,” Individual Exploratory Project, 2018.
[11] O. Stodieck, J. Cooper, and P. Weaver, “On the interpretation of bending-torsion coupling
for swept, non-homogenous wings,” 56th AIAA/ASCE/AHS/ASC Structures, Structural
Dynamics, and Materials Conference, 12 2015.
[12] R. Ajaj, M. Friswell, W. Dettmer, A. Isikveren, and G. Allegri, “Conceptual Modeling of
an Adaptive Torsion Wing Structure,” 04 2011.
[13] W. Raither, M. Heymanns, A. Bergamini, and P. Ermanni, “Morphing Wing Structure
with Controllable Twist Based on Adaptive Bending–Twist Coupling,” Smart Materials
and Structures, vol. 22, p. 065017, may 2013.
[14] P. C. Chen, K. Griffin, R. Jha, D. D. Liu, D. Sarhaddi, and R. Yurkovich, “Variable Stiffness
Spar Approach for Aircraft Maneuver Enhancement Using ASTROS,” Journal of Aircraft,
vol. 37, pp. 865–871, 09 2000.
[15] M. Amprikidis, J. Cooper, C. Rogerson, and G. Vio, “On the Use of Adaptive Internal
Structures for Wing Shape Control,” 04 2005.
[16] J. Florance, J. Heeg, C. Spain, T. Ivanco, C. Wieseman, and P. Lively, “Variable stiffness
spar wind-tunnel model development and testing,” vol. 1, 04 2004.
[17] A. Web, “Wing Twist and Dihedral.” http://www.aerospaceweb.org/question/dynamics/q0055.shtml.
[18] S. E. Rohde, P. G. Ifju, B. V. Sankar, and D. A. Jenkins, “Experimental testing of bend-twist
coupled composite shafts,” Experimental Mechanics, vol. 55, pp. 1613–1625, Nov 2015.
[19] H. Katori, “Determination of Shear Center of Arbitrary Cross-Section,” World Journal of
Mechanics, vol. 06, pp. 249–256, 01 2016.
Appendix A - MATLAB Scripts
clear all
close all
r_v = 45; %rib angle from straight
lambda = 30; %sweep (deg)
c = 1; %chord (m)
tcr = 0.12; %thickness-chord ratio
bcr = 0.5; %box-chord ratio
fwd = 0.15; %front spar position
s = 8; %semi-span (m)
p = 1; %rip pitch
r_n = ceil(s/p-1); %number of ribs
%Set material properties
E = 7e+10; %GPa
nu = 0.3; %poission ratio
t_spar = 0.005; % (m)
t_skin = 0.001; % (m)
t_rib = 0.005; % (m)
%Set Forces & Moments (Just end loaded at this point)
P1 = 1000; % (N)
n_f1 = 103; % force applied at this node
P2 = 1000; % (N)
n_f2 = 108; % force applied
M1 = 0; % (Nm)
n_m = 103; % moment applied at this node
%%PLOT WING BOX (Square to begin with, straight lines, simple)
%plot geometry
bc = c*bcr;
bt = c*tcr;
[x_g,y_g,z_g] = plot_geom(bc,bt,s,lambda,p,r_v,r_n);
geom = [x_g;y_g;z_g;];
[nodes] = plot_nodes(s,r_v,r_n,geom);
n_l = length(nodes);
if r_v == 0
n_1 = n_l-9;
n_1 = n_l-2;
,cquad_ribs,cbeam1,cbeam2,cbeam3,cbeam4] = plot_elems(s,p,r_v,r_n,n_l);
fileID = fopen(’30degsweep_45degrib_wingbox_GP.txt’,’w’);
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
Material Coordinates System
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’CORD2R 999
%-5.4f %-5.4f %-5.4f %-5.4f
%-5.4f %-5.4f\r\n’,0,0,0,0,0,bt);
fprintf(fileID, ’$
fprintf(fileID, ’
%-5.4f %-5.4f %-5.4f\r\n’,bc,0,bt);
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
for i = 1:1:length(nodes)
fprintf(fileID, ’GRID
%-15u %-5.4f %-5.4f %-5.4f\r\n’,i,nodes(1,i),nodes(2,i),
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
for i = 1:1:length(fwd_spar)
fprintf(fileID, ’CQUAD4 %-7u %-7u %-7u %-7u %-7u
ID = length(fwd_spar);
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’$\r\n’);
for i = 1:1:length(aft_spar)
fprintf(fileID, ’CQUAD4 %-7u %-7u %-7u %-7u %-7u
ID = ID+length(aft_spar);
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’$\r\n’);
for i = 1:1:length(bot_skin)
fprintf(fileID, ’CQUAD4 %-7u %-7u %-7u %-7u %-7u
ID = ID+length(bot_skin);
for i = 1:1:length(ctria_skin_bot)
fprintf(fileID, ’CTRIA3 %-7u %-7u %-7u %-7u
ID = ID+length(ctria_skin_bot);
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’$\r\n’);
for i = 1:1:length(top_skin)
fprintf(fileID, ’CQUAD4 %-7u %-7u %-7u %-7u %-7u
ID = ID+length(top_skin);
for i = 1:1:length(ctria_skin_top)
fprintf(fileID, ’CTRIA3 %-7u %-7u %-7u %-7u
ID = ID+length(ctria_skin_top);
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’$\r\n’);
for i = 1:1:length(ctria_ribs)
fprintf(fileID, ’CTRIA3 %-7u %-7u %-7u %-7u
ID = ID+length(ctria_ribs);
if r_v ~= 0
for i = 1:1:length(cquad_ribs)
fprintf(fileID, ’CQUAD4 %-7u %-7u %-7u %-7u %-7u
ID = ID+length(cquad_ribs);
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’$
for i = 1:1:length(cbeam1)
fprintf(fileID, ’CBEAM
ID = ID+length(cbeam1);
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
for i = 1:1:length(cbeam2)
fprintf(fileID, ’CBEAM
ID = ID+length(cbeam2);
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
for i = 1:1:length(cbeam3)
fprintf(fileID, ’CBEAM
ID = ID+length(cbeam3);
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
for i = 1:1:length(cbeam4)
fprintf(fileID, ’CBEAM
ID = ID+length(cbeam4);
fprintf(fileID, ’$\r\n’);
fileID = fopen(’30degsweep_45degrib_wingbox_props.txt’,’w’);
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
PSHELL thicknesses
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’PSHELL %-4u
fprintf(fileID, ’PSHELL %-4u
fprintf(fileID, ’PSHELL %-4u
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
PBEAML thicknesses
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’PBEAML %-4u
fprintf(fileID, ’$
fprintf(fileID, ’
%-5.4f %-5.4f %-5.4f %-5.4f\r\n’,0.005,0.005,0.001,0.001);
fileID = fopen(’30degsweep_45degrib_wingbox.bdf’,’w’);
fprintf(fileID, ’SOL 101\r\n’);
fprintf(fileID, ’CEND\r\n’);
fprintf(fileID, ’TITLE = FYPmodelver1.1\r\n’);
fprintf(fileID, ’ECHO = NONE\r\n’);
fprintf(fileID, ’SUBCASE 1\r\n’);
fprintf(fileID, ’SPC = 6\r\n’);
fprintf(fileID, ’LOAD = 5\r\n’);
fprintf(fileID, ’DISPLACEMENT = ALL\r\n’);
fprintf(fileID, ’BEGIN BULK\r\n’);
fprintf(fileID, ’PARAM
fprintf(fileID, ’PARAM
fprintf(fileID, ’INCLUDE ’’30degsweep_45degrib_wingbox_GP.txt’’\r\n’);
fprintf(fileID, ’INCLUDE ’’30degsweep_45degrib_wingbox_props.txt’’\r\n’);
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’MAT1
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
for i = 1:1:12
fprintf(fileID, ’SPC1
123456 %-u\r\n’,i,i);
fprintf(fileID, ’SPC1
123456 %-u\r\n’,13,n_1+1);
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’FORCE
fprintf(fileID, ’$
fprintf(fileID, ’$
fprintf(fileID, ’FORCE
fprintf(fileID, ’$
fprintf(fileID, ’$
fprintf(fileID, ’MOMENT %-4u
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’LOAD
%-6.1f %-6.1f %-4u
%-6.1f %-4u
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’$
fprintf(fileID, ’SPCADD 6
fprintf(fileID, ’$
S13 $\r\n’);
fprintf(fileID, ’
fprintf(fileID, ’$\r\n’);
fprintf(fileID, ’ENDDATA\r\n’);
function [x_g,y_g,z_g] = plot_geom(bc,bt,s,lambda,p,r_v,r_n)
%effect of sweep at initial rib positions
p_sw = p/cos(deg2rad(lambda));
for i = 1:1:r_n
x_sweep(i) = (i)*p_sw*sin(deg2rad(lambda));
x_tip = s*tan(deg2rad(lambda));
%root geometry
x_g(1) = 0;
y_g(1) = 0;
z_g(1) = 0;
x_g(2) = bc;
y_g(2) = 0;
z_g(2) = 0;
x_g(3) = bc;
y_g(3) = 0;
z_g(3) = bt;
x_g(4) = 0;
y_g(4) = 0;
z_g(4) = bt;
%effect of rib orientation
rc = bc*(sin(deg2rad(90-lambda)))/(sin(deg2rad(90+lambda-r_v)));
x_rib = bc - rc*cos(deg2rad(r_v));
y_rib = rc*sin(deg2rad(r_v));
%ribs geometry
for i = 1:1:r_n
x_g(1+4*i) = x_sweep(i)+x_rib;
y_g(1+4*i) = i+y_rib;
z_g(1+4*i) = 0;
x_g(2+4*i) = x_sweep(i)+bc;
y_g(2+4*i) = i;
z_g(2+4*i) = 0;
x_g(3+4*i) = x_sweep(i)+bc;
y_g(3+4*i) = i;
z_g(3+4*i) = bt;
x_g(4+4*i) = x_sweep(i)+x_rib;
y_g(4+4*i) = i+y_rib;
z_g(4+4*i) = bt;
%tip geometry
x_g((4*s/p)+1) = x_tip;
y_g((4*s/p)+1) = s;
z_g((4*s/p)+1) = 0;
x_g((4*s/p)+2) = x_tip+bc;
y_g((4*s/p)+2) = s;
z_g((4*s/p)+2) = 0;
x_g((4*s/p)+3) = x_tip+bc;
y_g((4*s/p)+3) = s;
z_g((4*s/p)+3) = bt;
x_g((4*s/p)+4) = x_tip;
y_g((4*s/p)+4) = s;
z_g((4*s/p)+4) = bt;
function [nodes] = plot_nodes(s,r_v,r_n,geom)
%check for double nodes so the order of nodes is preserved
num = 12; %number of nodes per rib
%root node locations
for i=1:1:num/2
node(1,i) = (i-1)*(geom(1,2)-geom(1,1))*0.2+geom(1,1);
node(1,num+1-i) = (i-1)*(geom(1,3)-geom(1,4))*0.2+geom(1,4);
node(2:3,i) = geom(2:3,1);
node(2:3,num+1-i) = geom(2:3,4);
root_nodes = node(1:3,1:num);
skin_nodes = zeros(3,0);
rib_nodes = zeros(3,0);
for i = 1:1:r_n
for j = 1:1:num/2
node(1,j) = geom(1,4*i+2)-(num/2-j)*(geom(1,2)-geom(1,1))*0.2;
node(1,num+1-j) = geom(1,4*i+3)-(num/2-j)*(geom(1,3)-geom(1,4))*0.2;
node(2:3,j) = geom(2:3,4*i+2);
node(2:3,num+1-j) = geom(2:3,4*i+3);
if r_v ~= 0
rib_nodes = [geom(1:3,4*i+1),geom(1:3,4*i+4)];
skin_nodes = [skin_nodes,node(1:3,1:num),rib_nodes];
for i=1:1:num/2
node(1,i) = (i-1)*(geom(1,2)-geom(1,1))*0.2+geom(1,4*(r_n+1)+1);
node(1,num+1-i) = (i-1)*(geom(1,3)-geom(1,4))*0.2+geom(1,4*(r_n+1)+4);
node(2:3,i) = geom(2:3,4*(r_n+1)+1);
node(2:3,num+1-i) = geom(2:3,4*(r_n+1)+4);
tip_nodes = node(1:3,1:num);
if r_v ==0
for i =1:1:r_n+2
ref_nodes(:,i) = [geom(1,4*i)+(geom(1,4*i-1)-geom(1,4*i))/2;i-1;
ref_nodes = [(geom(1,3)-geom(1,4))/2 geom(1,(r_n+1)*4+3)-(geom(1,(r_n+1)*4+3)
s;(geom(3,4)-geom(3,1))/2 (geom(3,(r_n+1)*4+4)-geom(3,(r_n+1)*4+1))/2];
nodes = [root_nodes,skin_nodes,tip_nodes,ref_nodes];
function [fwd_spar,aft_spar,bot_skin,top_skin,ctria_skin_top,ctria_skin_bot
eam2,cbeam3,cbeam4] = plot_elems(s,p,r_v,r_n,n_l)
if r_v ==0
dum = num;
ref = num*9+1;
X1 = 0;
X2 = 0;
fwd_spar1 = zeros(4,0);
cquad_ribs = zeros(4,0);
ref = 7*dum + 2*num +1;
X1 = -2;
X2 = 10;
ctria_rib = zeros(3,0);
% set up beam element IDS
cbeam1 = zeros(2,r_n+1);
cbeam2 = cbeam1;
cbeam3 = cbeam1;
cbeam4 = cbeam1;
cbeam1(:,1) = [1;num+1];
cbeam2(:,1) = [num/2;1.5*num];
cbeam3(:,1) = [num/2+1;1.5*num+1];
cbeam4(:,1) = [num;2*num];
for i = 1:1:r_n
if r_v == 0
cbeam1(:,i+1) = [i*dum+1;(i+1)*dum+1];
cbeam2(:,i+1) = [i*dum+num/2;(i+1)*dum+num/2];
cbeam3(:,i+1) = [i*dum+num/2+1;(i+1)*dum+num/2+1];
cbeam4(:,i+1) = [i*dum+num;(i+1)*dum+num];
cbeam1(:,i+1) = [i*dum-1;(i+1)*dum-1];
cbeam2(:,i+1) = [i*dum+num/2-2;(i+1)*dum+num/2-2];
cbeam3(:,i+1) = [i*dum+num/2-1;(i+1)*dum+num/2-1];
cbeam4(:,i+1) = [i*dum+num-2;(i+1)*dum+num-2];
% set up root panel elements
for i = 1:1:num
ctria_root(:,i) = [ref;i;i+1];
ctria_tip(:,i) = [n_l;ref-num-1+i;ref-num+i];
if i==12
ctria_root(:,i) = [ref;i;1];
ctria_tip(:,i) = [n_l;ref-num-1+i;ref-num];
% set up root rib bay elements
fwd_root = [1;num+1;2*num;num];
bot_root = [num/2;1.5*num;num+1;1];
aft_root = [num/2;1.5*num;1.5*num+1;num/2+1];
top_root = [num/2+1;1.5*num+1;2*num;num];
% set up the rest of the elements spars skins and ribs
ctria_ribs = zeros(3,0);
ctria_skin_top = zeros(3,0);
ctria_skin_bot = zeros(3,0);
ctria_top_skin = zeros(3,0);
ctria_bot_skin = zeros(3,0);
fwd_spar = zeros(4,0);
bot_skin = zeros(4,0);
aft_spar = zeros(4,0);
top_skin = zeros(4,0);
for i = 1:1:r_n
fwd_spar(:,i) = [i*dum+1+X2;(i+1)*dum+1+X1;(i+1)*dum+12+X1;i*dum+12];
bot_skin(:,i) = [i*dum+6+X1;(i+1)*dum+6+X1;(i+1)*dum+1+X1;i*dum+1+X2];
aft_spar(:,i) = [i*dum+6+X1;(i+1)*dum+6+X1;(i+1)*dum+7+X1;i*dum+7+X1];
top_skin(:,i) = [i*dum+7+X1;(i+1)*dum+7+X1;(i+1)*dum+12+X1;i*dum+12];
if r_v == 0
ref = ref+1;
for j=1:1:num
ctria_rib(:,j) = [ref;i*dum+j;i*dum+1+j];
if j==12
ctria_rib(:,j) = [ref;i*dum+j;i*dum+1];
fwd_spar1(:,i+r_n) = [i*dum-1;i*dum+11;i*dum+12;i*dum+10];
for j =1:1:num/2-1
ctria_top_skin(:,j) = [i*dum+12;i*dum+11-j;i*dum+10-j];
ctria_bot_skin(:,j) = [i*dum+11;i*dum-2+j;i*dum-1+j];
cquad_ribs(:,i) = [i*dum+11;i*dum+4;i*dum+5;i*dum+12];
ctria_ribs = [ctria_ribs,ctria_rib];
ctria_skin_top = [ctria_skin_top,ctria_top_skin];
ctria_skin_bot = [ctria_skin_bot,ctria_bot_skin];
if r_v == 0
fwd_spar = [fwd_root,fwd_spar];
fwd_spar = [fwd_root,fwd_spar,fwd_spar1(1:4,r_n+1:2*r_n)];
bot_skin = [bot_root,bot_skin];
aft_spar = [aft_root,aft_spar];
top_skin = [top_root,top_skin];
ctria_ribs = [ctria_root,ctria_ribs,ctria_tip];
function[y_zero, y_2] = findZeroCrossing(x, y, x_2)
%Create the matrix of the variables (first order so 1,x)
M = [ones(length(x),1),x]
%Perform the least squares approximation to get p1 (c) and p2 (m)
p = (pinv(M’*M)*M’)*y;
y_2 = p(2).*x_2+p(1);
for i = 1:length(x_2)-1
if x_2(i)<=0 && x_2(i+1)>=0
y_zero = ((0-x_2(i))/(x_2(i+1)-x_2(i))) * (y_2(i+1)-y_2(i))+y_2(i);
elseif x_2(i)>=0 && x_2(i+1)<=0
y_zero = ((0-x_2(i))/(x_2(i+1)-x_2(i))) * (y_2(i+1)-y_2(i))+y_2(i);
Appendix B - Full Results