Flutter Calculations

This document is a TEMPORARY repository of flutter calculations and other math relevant to determining the failure critera of the LV3 fin assembly.

Here is the source for this equation. (page 14, equation 18)

$$ V_{f}=a \sqrt{\frac{G_{E}}{K_{1}*K_{2}*K_{3}}}\\ K_{1}=\frac{39.3(AR^3)}{(\frac{t}{c})^3 (AR+2)}\\ K_{2}=\frac{\lambda+1}{2}\\ K_{3}=\frac{p}{p_{o}}\\ $$

$V_{f}, $ Flutter Velocity (m/s)

$a, $ Speed of Sound (m/s)

$G_{E}, $ Effective Shear Modulus (Pa)

$AR, $ Aspect Ratio

$t, $ Fin Thickness (m)

$c, $ Fin Chord (m)

$\lambda, $ Taper Ratio (Tip Chord to Root Chord)

$p, $ Air Pressure (Pa)

$p_{o}, $ Air Pressure, Sea Level (Pa)


In [1]:
import math as m
import numpy as np
import matplotlib
import matplotlib.pyplot as plot
import pylab
from matplotlib import rc
%matplotlib inline
% config InlineBackend.figure_formats=['svg']

In [2]:
## Try ZAERO
## Fin Geometry
## Note: Shorten and Thicken:
##       From t = 0.25 in. to 0.4 in.

Cr = 18*25.4/1e3# Chord, root (m)
Ct = 5*25.4/1e3# Chord, tip (m)
W  = 6.4*25.4/1e3# Semispan (m)
MAC = (Cr+Ct)/2# Chord, mean aero (m)
S = W*MAC # Fin area (m^2)
AR = W/MAC # Aspect ratio
La = Ct/Cr # Taper ratio
# t = 0.25 # Fin thickness (in.)
thick= 0.25

In [3]:
## Atmospheric Parameters

t = np.linspace(0, 200, 100000)
x = np.arange(100000) # Altitude array (m)
def atmo(x):
    if np.all(x < 11000):
        T = 15.04-0.0065*x
        P = 101.3*((T+273.1)/288.1)**5.26
    elif np.all(11000 <= x) & np.all(x < 25000):
        T = -56.46
        P = 22.65*m.exp(1.73-0.00016*x) 
    else:
        T = -131.2+0.003*x
        P = 2.488*((T+273.1)/216.6)**(-11.4)

    rho = P/(0.29*(T+273.1)) # Density, ambient air (kg/m^3)
    Pa  = P*1000             # Pressure, ambient air (Pa)
    Ta  = T+273.1            # Temperature, ambient air (K)
    a   = 20.05*m.sqrt(Ta)     # Speed of sound (m/s)
    return Pa, rho, Ta, a

# def atmo(x):
#    return [atmo_helper(xi) for xi in x] # give atmo_helper() the x values one-at-a-time

In [27]:
a = [atmo(xi)[3] for xi in x] # Speed of sound (m/s)
P = [atmo(xi)[0] for xi in x] # Pressure at altitude x (Pa)
Po = atmo(0)[0] # Sea level pressure (Pa)

In [11]:
## Material Properties

GE = 25.5 # Effective Shear Modulus

## Flutter
## Influences: Stiffness
##             Mach
##             Mass
## Guidelines: 15% FS for velocity V/Vf
##             32% FS for pressure Q/Qf

In [63]:
K1 = (39.3*AR**3)/((AR+2)*(thick/MAC)**3)
K2 = (La+1)/2
K3 = [Pi/Po for Pi in P]
Vf = [a[i]*m.sqrt(GE/(K1*K2*K3[i])) for i in range(0,len(a))] # Flutter velocity (m/s)

#def velo(t):
#    if np.all(t < number):

#Qf = # Flutter dynamic pressure (Pa)

In [65]:
print('\n')

rc('font', **{'family': 'serif', 'serif': ['Computer Modern']})
rc('text', usetex=True)
pylab.rcParams['figure.figsize'] = (10.0, 10.0)
f, (ax1, ax2) = plot.subplots(2, sharex=True)
ax1.plot(x, Vf)
ax1.yaxis.major.locator.set_params(nbins=6)
ax1.set_title('LV3, Altitude (m) v Flutter Velocity (m/s)')
# ax1.plot(x, V)
ax1.yaxis.major.locator.set_params(nbins=6)
ax1.set_title('LV3, Altitude (m) v Velocity (m/s)')



Out[65]:
<matplotlib.text.Text at 0x7fdfb8e415f8>