Skip to content

Commit

Permalink
create horizontal tail using aero surf
Browse files Browse the repository at this point in the history
  • Loading branch information
mjburton committed Oct 12, 2017
1 parent 883e1c3 commit 9158380
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 33 deletions.
10 changes: 5 additions & 5 deletions gpkitmodels/GP/aircraft/tail/empennage.py
Expand Up @@ -11,21 +11,21 @@ def setup(self):
mfac = Variable("m_{fac}", 1.0, "-", "Tail weight margin factor")
W = Variable("W", "lbf", "empennage weight")

self.horizontaltail = HorizontalTail()
self.htail = HorizontalTail()
self.verticaltail = VerticalTail()
self.tailboom = TailBoom()
self.components = [self.horizontaltail, self.verticaltail,
self.components = [self.htail, self.verticaltail,
self.tailboom]

state = TailBoomState()
loading = [self.tailboom.horizontalbending(self.horizontaltail, state),
loading = [self.tailboom.horizontalbending(self.htail, state),
self.tailboom.verticalbending(self.verticaltail, state),
self.tailboom.verticaltorsion(self.verticaltail, state)]

constraints = [
W/mfac >= (self.horizontaltail["W"] + self.verticaltail["W"]
W/mfac >= (self.htail.topvar("W") + self.verticaltail["W"]
+ self.tailboom["W"]),
self.tailboom["l"] >= self.horizontaltail["l_h"],
self.tailboom["l"] >= self.htail["l_h"],
self.tailboom["l"] >= self.verticaltail["l_v"],
]

Expand Down
58 changes: 31 additions & 27 deletions gpkitmodels/GP/aircraft/tail/horizontal_tail.py
Expand Up @@ -2,47 +2,51 @@
import numpy as np
from gpkit import Model, Variable
from tail_aero import TailAero
from gpkitmodels.GP.aircraft.wing.wing import AeroSurf
from gpkitmodels.GP.aircraft.wing.constant_taper_chord import c_bar
from gpkitmodels.GP.aircraft.wing.wing_interior import WingInterior
from gpkitmodels.GP.aircraft.wing.wing_skin import WingSkin

class HorizontalTail(Model):
"horizontal tail model"
def setup(self, lam=0.8):
Sh = Variable("S", "ft**2", "horizontal tail area")
def setup(self, N=3, lam=0.8):

Vh = Variable("V_h", "-", "horizontal tail volume coefficient")
ARh = Variable("AR_h", "-", "horizontal tail aspect ratio")
Abar = Variable("\\bar{A}_{NACA0008}", 0.0548, "-",
"cross sectional area of NACA 0008")
rhofoam = Variable("\\rho_{foam}", 1.5, "lbf/ft^3",
"Density of formular 250")
rhoskin = Variable("\\rho_{skin}", 0.049, "g/cm**2",
"horizontal tail skin density")
bh = Variable("b", "ft", "horizontal tail span")
W = Variable("W", "lbf", "horizontal tail weight")
Vh = Variable("V_h", "-", "horizontal tail volume coefficient")
g = Variable("g", 9.81, "m/s^2", "Gravitational acceleration")
lh = Variable("l_h", "ft", "horizontal tail moment arm")
CLhmin = Variable("(C_{L_h})_{min}", 0.75, "-",
"max downlift coefficient")
mh = Variable("m_h", "-", "horizontal tail span effectiveness")
cth = Variable("c_{t_h}", "ft", "horizontal tail tip chord")
crh = Variable("c_{r_h}", "ft", "horizontal tail root chord")
lamh = Variable("\\lambda", lam, "-", "horizontal tail taper ratio")
lamhfac = Variable("\\lambda_h/(\\lambda_h+1)", lam/(lam+1), "-",
"horizontal tail taper ratio factor")
CLhtmax = Variable("C_{L_{max}}", 1.5, "-",
"maximum CL of horizontal tail")
mfac = Variable("m_{fac}", 1.1, "-", "horizontal tail margin factor")
tau = Variable("\\tau", 0.08, "-", "horizontal tail thickness ratio")

cb, eta, deta, cbarmac = c_bar(lam, N)
subdict = {"\\lambda": lam, "\\bar{c}": cb, "\\eta": eta,
"\\bar{c}_{ave}": (cb[1:]+cb[:-1])/2, "\\tau": 0.08,
"\\bar{c}_{MAC}": cbarmac, "d\\eta": deta, "C_{L_{max}}": 1.5}

self.surf = AeroSurf(N=N)
self.surf.substitutions.update(subdict)

self.skin = WingSkin()
self.skin.substitutions.update({"\\rho_{CFRP}": 0.049})
self.foam = WingInterior()
self.foam.substitutions.update({"\\bar{A}_{jh01}": 0.0548})
self.foam.substitutions.update({"\\rho_{foam}": 0.024})

self.components = [self.skin, self.foam]

constraints = [
bh**2 == ARh*Sh,
mh*(1+2/ARh) <= 2*np.pi,
W/mfac >= g*rhoskin*Sh + rhofoam*Sh**2/bh*Abar,
cth == 2*Sh/bh*lamhfac,
crh == cth/lam,
lamh == lamh
W/mfac >= sum([c["W"] for c in self.components]),
mh*(1+2.0/self.surf["AR"]) <= 2*np.pi,
self.skin["W"] >= (self.skin["\\rho_{CFRP}"]*self.surf["S"]*2
* self.skin["t"]*self.skin["g"]),
self.foam["W"] >= 2*(
self.foam["g"]*self.foam["\\rho_{foam}"]
*self.foam["\\bar{A}_{jh01}"]*self.surf["c_{ave}"]**2
* (self.surf["b"]/2)*self.surf["d\\eta"]).sum()
]

return constraints
return constraints, self.surf, self.components

def flight_model(self, state):
return TailAero(self, state)
2 changes: 1 addition & 1 deletion gpkitmodels/GP/aircraft/wing/wing.py
Expand Up @@ -56,7 +56,7 @@ def setup(self, N=5, lam=0.5, hollow=False):
self.components.extend([self.foam])
constraints.extend([
self.foam["W"] >= 2*(
self.foam["g"]*self.foam["\\rho"]
self.foam["g"]*self.foam["\\rho_{foam}"]
* self.foam["\\bar{A}_{jh01}"]*self.surf["c_{ave}"]**2
* (self.surf["b"]/2)*self.surf["d\\eta"]).sum()])

Expand Down

0 comments on commit 9158380

Please sign in to comment.