def setup(self, **kwargs): self.wns = WingNoStruct() self.wb = WingBox(self.wns, "wing") Wwing = Variable('W_{wing}', 'N', 'Wing System Weight') Cwing = Variable('C_{wing}', 1, '-', 'Wing Weight Margin and Sensitivity Factor') # w.r.t. the quarter chord of the root of the wing. dxACwing = Variable('\\Delta x_{AC_{wing}}','m','Wing Aerodynamic Center Shift') #wing induced drag reduction due to wing tip devices TipReduct = Variable('TipReduct', '-', 'Induced Drag Reduction Factor from Wing Tip Devices') constraints = [] with SignomialsEnabled(): constraints.extend([ self.wns['\\lambda'] == self.wb['taper'], TCS([Wwing >= Cwing * self.wb['W_{struct}'] + self.wb['W_{struct}']*(self.wns['f_{flap}'] + \ self.wns['f_{slat}'] + self.wns['f_{aileron}'] + self.wns['f_{lete}'] + self.wns['f_{ribs}'] + \ self.wns['f_{spoiler}'] + self.wns['f_{watt}'])]), TCS([dxACwing <= 1./24.*(self.wns['c_{root}'] + 5.*self.wns['c_{tip}'])/self.wns['S'] \ *self.wns['b']**2*self.wns['\\tan(\\Lambda)']]), ]) return self.wns, self.wb, constraints
def setup(self): self.HTns = HorizontalTailNoStruct() self.wb = WingBox(self.HTns, "horizontal_tail") #HT system weight variable Wht = Variable('W_{ht}', 'N', 'HT System Weight') fht = Variable('f_{ht}' ,'-', 'Rudder etc. fractional weight') #margin and sensitivity Cht = Variable('C_{ht}', 1, '-', 'HT Weight Margin and Sensitivity Factor') #variables only used for the TASOPT tail drag formulation cdfh = Variable('c_{d_{fh}}', '-', 'VT friction drag coefficient') cdph = Variable('c_{d_{ph}}', '-', 'VT pressure drag coefficient') coslamcube = Variable('\\cos(\\Lambda_{ht})^3', '-', 'Cosine of tail sweep cubed') constraints = [] with SignomialsEnabled(): constraints.append([ self.wb['L_{ht_{rect}}'] >= self.HTns['L_{ht_{max}}']/2.*self.HTns['c_{tip_{ht}}']*self.HTns['b_{ht}']/self.HTns['S_{ht}'], self.wb['L_{ht_{tri}}'] >= self.HTns['L_{ht_{max}}']/4.*(1-self.wb['taper'])*self.HTns['c_{root_{ht}}']*self.HTns['b_{ht}']/self.HTns['S_{ht}'], #[SP] Wht >= Cht*(self.wb['W_{struct}'] + self.wb['W_{struct}'] * fht), ]) return self.HTns, self.wb, constraints
def setup(self, **kwargs): self.vtns = VerticalTailNoStruct() self.wb = WingBox(self.vtns, "vertical_tail") #total weight variables Wvt = Variable('W_{vt}', 'N', 'Total VT System Weight') fVT = Variable('f_{VT}', '-', 'VT Fractional Weight') #Margin and Sensitivity CVT = Variable('C_{VT}', 1, '-', 'VT Weight Margin and Sensitivity') #variables only used for the TASOPT tail drag formulation cdfv = Variable('c_{d_{fv}}', '-', 'VT friction drag coefficient') cdpv = Variable('c_{d_{pv}}', '-', 'VT pressure drag coefficient') coslamcube = Variable('\\cos(\\Lambda_{vt})^3', '-', 'Cosine of tail sweep cubed') numspar = Variable( 'N_{spar}', '-', 'Number of Spars in Each VT Carrying Stress in 1 in 20 Case') constraints = [ self.vtns['\\lambda_{vt}'] == self.wb['taper'], Wvt >= numspar * CVT * (self.wb['W_{struct}'] + self.wb['W_{struct}'] * fVT), ] return self.vtns, self.wb, constraints