aedmi computes the solution of the aeroelastic equation u/l * M * p^2 + K - 1/2*r*u^2 * Q(k) = 0
, where M
and K
are the modal mass and stiffness matrices of the structure, Q
is the modal aerodynamic loads matrix, u
and r
are the freestream fluid velocity and density, and l
is a reference length. p
is a non-dimensional parameter defined as p = (g+1i)*k
, where g
is the true damping and k is the reduced frequency.
The flutter solution is obtained using a kind of reduced order modeling technique called dynamic mode interpolation. This technique was originally developed by Hüseyin Güner during his doctoral thesis. Practically, the mode shapes of the structure are first pre-computed. Then, the aerodynamic loads at some reference Mach numbers and reduced frequencies are pre-computed by imposing the motion for each structural mode shape. Finally, aedmi will compute the modal load matrix Q
for each Mach number and reduced frequency, and solve the aeroelastic system by interpolating this matrix for any reduced frequency.
The code is split into several submodules:
iops
: classes to read and write from/to diskmsh
: simple mesh data structureflutter
: classes to perform flutter analysisutils
: various general utilitiesThe flutter
(core) submodule contains:
structural
: read mode shapes and structural matrices from diskaero
: read unsteady aerodynamic pressures from disk and compute reduced aerodynamic load matrixfluid
: compute fluid density and velocity from Mach number using a matched or unmatched strategysolution
: compute the flutter speedSeveral issues are opened (#1, #2, #3), but none is critical.
Battery successfully passes on ubuntu 18.04, python 3.6 and on windows 10, python 3.8.