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. $$ 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 [ ]:
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']

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

Cr = # Chord, root (m)
Ct = # Chord, tip (m)
W  = # Semispan (m)
MAC = # 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.)

## 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*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*sqrt(Ta)     # Speed of sound (m/s)
    return Pa, rho, Ta, a

a = atmo(x)[4] # Speed of sound (m/s)
P = atmo(x)[0] # Pressure at altitude x (Pa)
Po = atmo(0) # Sea level pressure (Pa)

## 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

X = (39.3*AR**3)/((AR+2)(t/c)**3)
Y = (P/Po)*(La+1)/2
Vf = a*sqrt(GE/(X*Y)) # Flutter velocity (m/s)

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

#Qf = # Flutter dynamic pressure (Pa)

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)')