Tutorials¶
The below tutorials showcase the capabilities of the framework, whilst giving clean working examples on how to use the
package. Each tutorial is a Jupyter notebook, and can be run interactively in a local environment. Some examples will
write .vtu and .pvd files to disk, which can be visualised in ParaView.
- Structure
- Geradin beam static deformation - Clamped cantilever beam subject to a tip load,
causing large deflections. The tutorial demonstrates how to set up a simple structural problem, and use the beam
static_solve()routine to solve for the deformation when subject to follower and dead external forces. - Geradin beam adjoint gradients - Follow-on to the static deformation tutorial that
uses the beam
static_adjoint()routine to compute the gradient of the tip vertical displacement with respect to the tip load and the beam bending stiffness, then verifies each against finite differences.- Flying spaghetti free dynamics - Free-flying beam subject to time-dependent external
forces, making use of the beam
dynamic_solve()routine to find the time-doman response.
- Flying spaghetti free dynamics - Free-flying beam subject to time-dependent external
forces, making use of the beam
- Flying spaghetti mass optimisation - Follow-on to the free dynamics tutorial
that uses the beam
dynamic_adjoint()routine to drive an SLSQP outer loop, redistributing per-element mass to minimise the final-time strain energy of the beam subject to a total-mass constraint. - Flexible double pendulum - Two very flexible beam segments connected by a hinge joint,
with the root mounted to a hinge. Demonstrates multibody dynamics with
GroundedHingeandMultibodyHingeconstraints using thedynamic_solve()routine.
- Geradin beam static deformation - Clamped cantilever beam subject to a tip load,
causing large deflections. The tutorial demonstrates how to set up a simple structural problem, and use the beam
- Aeroelastic
- Simple HALE gust response - Free-flying high aspect ratio aircraft configuration subject
to a one-minus-cosine gust. This first uses the aeroelastic
trim()routine to find the thrust and elevator deflection that satisfy trim conditions, before using the aeroelasticdynamic_solve()routine to find the time-domain response of the aircraft. This tutorial demonstrates using batching to efficiently parallelise for multiple gust cases at once.s - Simple HALE hinged wingtip gust response - Variant of the above with
free-hinging wingtips, using
MultibodyHingeconstraints. Demonstrates trimming a multibody aircraft, where the trim solver also finds the equilibrium hinge angles, before flying it through the gust as a free-flying body.- Cantilever wing adjoint — Cantilever wing subject to a one-minus-cosine
gust, using the coupled
static_adjoint()anddynamic_adjoint()routines to compute the gradient of the peak wing root bending moment with respect to structural and aerodynamic design variables. - Patil wing open-loop control — Open-loop control of ailerons for a pair of very
flexible wings mounted on a central hinge, performing a roll manoeuvre. Makes use of the aeroelastic
trim()anddynamic_solve()routines to find the time-domain response. - Patil wing optimal roll manoeuvre — Follow-on to the open-loop control tutorial that instead optimises the control-surface velocity profiles with an SLSQP outer loop, using gradients of a target roll angle objective from the coupled dynamic adjoint.
- X-HALE free-flying gust response — Half-model of the X-HALE aircraft, trimmed
with the aeroelastic
trim()routine, then released as a free-flying body through a one-minus-cosine gust using thedynamic_solve()routine.- Pazy wing (both straight and swept configurations)
- Static
deflection straight, swept —
Grid of cases with varying root angles of attack and velocity, running the
static_solve()routine in parallel. Evolution of the tip deflection is plotted. - Deformed mode
frequencies straight, swept —
Evolution of the first five natural frequencies with tip displacement, controlled via freestream
velocity
and
making use of the
static_solve()and structuralmodal()routines. - Flutter analysis straight, swept — Compute
the
stability of the wing across a grid of angles of attack and freestream velocities using the coupled
linearise()routine. - Time-domain LCO straight, swept — Time-domain
limit-cycle
oscillation computation for the wing, plotting the deflection of the beam tip over time, obtained
using
the
static_solve()anddynamic_solve()routines.
- Static
deflection straight, swept —
Grid of cases with varying root angles of attack and velocity, running the
- Pazy wing (both straight and swept configurations)
- Cantilever wing adjoint — Cantilever wing subject to a one-minus-cosine
gust, using the coupled
- Simple HALE gust response - Free-flying high aspect ratio aircraft configuration subject
to a one-minus-cosine gust. This first uses the aeroelastic