示例#1
0
    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
示例#2
0
    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
示例#3
0
    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