From 777f4782fa36a2c0ddc748b96aef09e9939fa2ba Mon Sep 17 00:00:00 2001 From: Ali Saab Date: Wed, 4 Jul 2018 15:41:02 -0400 Subject: [PATCH 1/2] added uncertainty --- gpkitmodels/GP/aircraft/tail/horizontal_tail.py | 2 ++ gpkitmodels/GP/aircraft/tail/tail_boom.py | 8 ++++++-- gpkitmodels/GP/aircraft/wing/capspar.py | 9 +++++++++ gpkitmodels/GP/aircraft/wing/gustloading.py | 1 + gpkitmodels/GP/aircraft/wing/sparloading.py | 2 ++ gpkitmodels/GP/aircraft/wing/wing.py | 16 ++++++++++++++-- gpkitmodels/GP/aircraft/wing/wing_skin.py | 5 +++++ gpkitmodels/GP/materials/composite.py | 13 +++++++++++++ gpkitmodels/GP/materials/foam.py | 2 ++ 9 files changed, 54 insertions(+), 4 deletions(-) diff --git a/gpkitmodels/GP/aircraft/tail/horizontal_tail.py b/gpkitmodels/GP/aircraft/tail/horizontal_tail.py index 8b3efd01..bff402c2 100644 --- a/gpkitmodels/GP/aircraft/tail/horizontal_tail.py +++ b/gpkitmodels/GP/aircraft/tail/horizontal_tail.py @@ -42,6 +42,8 @@ class HorizontalTail(Wing): def setup(self, N=3): exec parse_variables(HorizontalTail.__doc__) + # Vh.key.descr['pr'] = 4 + # lh.key.descr['fix'] = True self.ascs = Wing.setup(self, N) self.planform.substitutions.update( diff --git a/gpkitmodels/GP/aircraft/tail/tail_boom.py b/gpkitmodels/GP/aircraft/tail/tail_boom.py index c6427a78..0f8f748a 100644 --- a/gpkitmodels/GP/aircraft/tail/tail_boom.py +++ b/gpkitmodels/GP/aircraft/tail/tail_boom.py @@ -38,7 +38,7 @@ def setup(self, static, state): V = self.V = state.V mu = self.mu = state.mu - return [Re == V*rho*l/mu, + return [Re <= V*rho*l/mu, Cf >= 0.455/Re**0.3, ] @@ -58,7 +58,8 @@ class TailBoomState(Model): """ def setup(self): exec parse_variables(TailBoomState.__doc__) - + rhosl.key.descr['pr'] = 1 + Vne.key.descr['pr'] = 8 class VerticalBoomTorsion(Model): """ Tail Boom Torsion from Vertical Tail @@ -83,6 +84,7 @@ class VerticalBoomTorsion(Model): """ def setup(self, tailboom, vtail, state): exec parse_variables(VerticalBoomTorsion.__doc__) + # taucfrp.key.descr['pr'] = 1 J = self.J = tailboom.J d0 = self.d0 = tailboom.d @@ -134,6 +136,7 @@ def setup(self, tailboom, htail, state): self.htail = htail self.tailboom = tailboom exec parse_variables(TailBoomBending.__doc__) + # kappa.key.descr['pr'] = 2 Beam.qbarFun = [1e-10]*N Beam.SbarFun = [1.]*N @@ -189,6 +192,7 @@ class TailBoom(TubeSpar): def setup(self, N=5): self.N = N exec parse_variables(TailBoom.__doc__) + # rhoA.key.descr['pr'] = 10 self.spar = super(TailBoom, self).setup(N, self) if self.secondaryWeight: diff --git a/gpkitmodels/GP/aircraft/wing/capspar.py b/gpkitmodels/GP/aircraft/wing/capspar.py index c58bd3bc..e6bb0c34 100644 --- a/gpkitmodels/GP/aircraft/wing/capspar.py +++ b/gpkitmodels/GP/aircraft/wing/capspar.py @@ -58,6 +58,15 @@ def setup(self, N, surface): self.surface = surface exec parse_variables(CapSpar.__doc__) + E.key.descr['pr'] = 1 + wlim.key.descr['pr'] = 3 + hin.key.descr['fix'] = True + I.key.descr['fix'] = True + Sy.key.descr['fix'] = True + w.key.descr['fix'] = True + t.key.descr['fix'] = True + tshear.key.descr['fix'] = True + cave = self.cave = surface.cave b = self.b = surface.b deta = surface.deta diff --git a/gpkitmodels/GP/aircraft/wing/gustloading.py b/gpkitmodels/GP/aircraft/wing/gustloading.py index a3c66861..d8e9a073 100644 --- a/gpkitmodels/GP/aircraft/wing/gustloading.py +++ b/gpkitmodels/GP/aircraft/wing/gustloading.py @@ -44,6 +44,7 @@ def return_cosm1(self, c): def setup(self, wing, state, out=False): exec parse_variables(GustL.__doc__) + vgust.key.descr['pr'] = 7 self.load = SparLoading.setup(self, wing, state, out=out) cbar = self.wing.planform.cbar diff --git a/gpkitmodels/GP/aircraft/wing/sparloading.py b/gpkitmodels/GP/aircraft/wing/sparloading.py index f5f82db7..3b592946 100644 --- a/gpkitmodels/GP/aircraft/wing/sparloading.py +++ b/gpkitmodels/GP/aircraft/wing/sparloading.py @@ -53,6 +53,8 @@ def new_qbarFun(self, c): def setup(self, wing, state, out=False): self.wing = wing exec parse_variables(SparLoading.__doc__) + kappa.key.descr['pr'] = 3 + twmax.key.descr['pr'] = 2 b = self.b = self.wing.planform.b I = self.I = self.wing.spar.I diff --git a/gpkitmodels/GP/aircraft/wing/wing.py b/gpkitmodels/GP/aircraft/wing/wing.py index d192797b..dbb41afd 100644 --- a/gpkitmodels/GP/aircraft/wing/wing.py +++ b/gpkitmodels/GP/aircraft/wing/wing.py @@ -83,6 +83,16 @@ def return_cmac(self, c): def setup(self, N): exec parse_variables(Planform.__doc__) + # CLmax.key.descr['pr'] = 10 + #CM.key.descr['pr'] = 7 + # lam.key.descr['pr'] = 12 + #AR.key.descr['pr'] = 0 + # S.key.descr['fix'] = True + # b.key.descr['fix'] = True + #croot.key.descr['fix'] = False # True # <----------------- + # cmac.key.descr['fix'] = True + # cave.key.descr['fix'] = True + return [b**2 == S*AR, cave == cbave*S/b, croot == S/b*cbar[0], @@ -122,6 +132,8 @@ def setup(self, static, state, self.state = state self.static = static exec parse_variables(WingAero.__doc__) + # CLstall.key.descr['pr'] = 3 + # e.key.descr['pr'] = 6 df = pd.read_csv(fitdata) fd = df.to_dict(orient="records")[0] @@ -154,7 +166,7 @@ class Wing(Model): Variables --------- W [lbf] wing weight - mfac 1.2 [-] wing weight margin factor + mfac 1.0 [-] wing weight margin factor SKIP VERIFICATION @@ -196,6 +208,6 @@ def setup(self, N=5): self.foam = self.fillModel(self.planform) self.components.extend([self.foam]) - constraints = [W/mfac >= sum(c["W"] for c in self.components)] + constraints = [W >= sum(c["W"] for c in self.components)] return constraints, self.planform, self.components diff --git a/gpkitmodels/GP/aircraft/wing/wing_skin.py b/gpkitmodels/GP/aircraft/wing/wing_skin.py index 2849342f..12b29c65 100644 --- a/gpkitmodels/GP/aircraft/wing/wing_skin.py +++ b/gpkitmodels/GP/aircraft/wing/wing_skin.py @@ -38,6 +38,11 @@ class WingSkin(Model): def setup(self, surface): exec parse_variables(WingSkin.__doc__) + Jtbar.key.descr['pr'] = 2 + Cmw.key.descr['pr'] = 4 + rhosl.key.descr['pr'] = 1 + Vne.key.descr['pr'] = 4 + croot = self.croot = surface.croot S = self.S = surface.S rho = self.material.rho diff --git a/gpkitmodels/GP/materials/composite.py b/gpkitmodels/GP/materials/composite.py index 99649ff9..d3431e22 100644 --- a/gpkitmodels/GP/materials/composite.py +++ b/gpkitmodels/GP/materials/composite.py @@ -21,6 +21,12 @@ class CFRPFabric(Model): """ def setup(self): exec parse_variables(CFRPFabric.__doc__) + rho.key.descr['pr'] = 2 + tmin.key.descr['pr'] = 1 + tau.key.descr['pr'] = 2 + E.key.descr['pr'] = 2 + sigma.key.descr['pr'] = 2 + G.key.descr['pr'] = 2 class CFRPUD(Model): """ Carbon Fiber Reinforced Plastic Unidirectional Material Properties @@ -41,6 +47,10 @@ class CFRPUD(Model): """ def setup(self): exec parse_variables(CFRPUD.__doc__) + rho.key.descr['pr'] = 2 + E.key.descr['pr'] = 1 + sigma.key.descr['pr'] = 2 + tmin.key.descr['pr'] = 1 class Kevlar(Model): """ Kevlar Material Properties @@ -60,3 +70,6 @@ class Kevlar(Model): """ def setup(self): exec parse_variables(Kevlar.__doc__) + rho.key.descr['pr'] = 1 + tmin.key.descr['pr'] = 1 + tau.key.descr['pr'] = 2 diff --git a/gpkitmodels/GP/materials/foam.py b/gpkitmodels/GP/materials/foam.py index 995e4f59..2ad1c918 100644 --- a/gpkitmodels/GP/materials/foam.py +++ b/gpkitmodels/GP/materials/foam.py @@ -14,6 +14,7 @@ class FoamHD(Model): """ def setup(self): exec parse_variables(FoamHD.__doc__) + rho.key.descr['pr'] = 5 class FoamLD(Model): """ Foam low density material properties @@ -29,3 +30,4 @@ class FoamLD(Model): """ def setup(self): exec parse_variables(FoamLD.__doc__) + rho.key.descr['pr'] = 5 From 9e26254e68f7c1469e7d8d809ccf3d3c29794363 Mon Sep 17 00:00:00 2001 From: Ali Saab Date: Thu, 5 Jul 2018 20:44:01 -0400 Subject: [PATCH 2/2] added uncertainty --- .../GP/aircraft/tail/horizontal_tail.py | 4 ++-- gpkitmodels/GP/aircraft/tail/tail_boom.py | 8 +++---- gpkitmodels/GP/aircraft/wing/wing.py | 22 +++++++++---------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/gpkitmodels/GP/aircraft/tail/horizontal_tail.py b/gpkitmodels/GP/aircraft/tail/horizontal_tail.py index bff402c2..d051a8be 100644 --- a/gpkitmodels/GP/aircraft/tail/horizontal_tail.py +++ b/gpkitmodels/GP/aircraft/tail/horizontal_tail.py @@ -42,8 +42,8 @@ class HorizontalTail(Wing): def setup(self, N=3): exec parse_variables(HorizontalTail.__doc__) - # Vh.key.descr['pr'] = 4 - # lh.key.descr['fix'] = True + Vh.key.descr['pr'] = 4 + lh.key.descr['fix'] = True self.ascs = Wing.setup(self, N) self.planform.substitutions.update( diff --git a/gpkitmodels/GP/aircraft/tail/tail_boom.py b/gpkitmodels/GP/aircraft/tail/tail_boom.py index 0f8f748a..94b9ded9 100644 --- a/gpkitmodels/GP/aircraft/tail/tail_boom.py +++ b/gpkitmodels/GP/aircraft/tail/tail_boom.py @@ -38,7 +38,7 @@ def setup(self, static, state): V = self.V = state.V mu = self.mu = state.mu - return [Re <= V*rho*l/mu, + return [Re == V*rho*l/mu, Cf >= 0.455/Re**0.3, ] @@ -84,7 +84,7 @@ class VerticalBoomTorsion(Model): """ def setup(self, tailboom, vtail, state): exec parse_variables(VerticalBoomTorsion.__doc__) - # taucfrp.key.descr['pr'] = 1 + taucfrp.key.descr['pr'] = 1 J = self.J = tailboom.J d0 = self.d0 = tailboom.d @@ -136,7 +136,7 @@ def setup(self, tailboom, htail, state): self.htail = htail self.tailboom = tailboom exec parse_variables(TailBoomBending.__doc__) - # kappa.key.descr['pr'] = 2 + kappa.key.descr['pr'] = 2 Beam.qbarFun = [1e-10]*N Beam.SbarFun = [1.]*N @@ -192,7 +192,7 @@ class TailBoom(TubeSpar): def setup(self, N=5): self.N = N exec parse_variables(TailBoom.__doc__) - # rhoA.key.descr['pr'] = 10 + rhoA.key.descr['pr'] = 10 self.spar = super(TailBoom, self).setup(N, self) if self.secondaryWeight: diff --git a/gpkitmodels/GP/aircraft/wing/wing.py b/gpkitmodels/GP/aircraft/wing/wing.py index dbb41afd..c224f595 100644 --- a/gpkitmodels/GP/aircraft/wing/wing.py +++ b/gpkitmodels/GP/aircraft/wing/wing.py @@ -83,15 +83,15 @@ def return_cmac(self, c): def setup(self, N): exec parse_variables(Planform.__doc__) - # CLmax.key.descr['pr'] = 10 - #CM.key.descr['pr'] = 7 - # lam.key.descr['pr'] = 12 - #AR.key.descr['pr'] = 0 - # S.key.descr['fix'] = True - # b.key.descr['fix'] = True - #croot.key.descr['fix'] = False # True # <----------------- - # cmac.key.descr['fix'] = True - # cave.key.descr['fix'] = True + CLmax.key.descr['pr'] = 10 + CM.key.descr['pr'] = 7 + lam.key.descr['pr'] = 12 + AR.key.descr['pr'] = 0 + S.key.descr['fix'] = True + b.key.descr['fix'] = True + croot.key.descr['fix'] = False # True # <----------------- + cmac.key.descr['fix'] = True + cave.key.descr['fix'] = True return [b**2 == S*AR, cave == cbave*S/b, @@ -132,8 +132,8 @@ def setup(self, static, state, self.state = state self.static = static exec parse_variables(WingAero.__doc__) - # CLstall.key.descr['pr'] = 3 - # e.key.descr['pr'] = 6 + CLstall.key.descr['pr'] = 3 + e.key.descr['pr'] = 6 df = pd.read_csv(fitdata) fd = df.to_dict(orient="records")[0]