# The following line turns off unit checking. Make sure things are working before it is turned off
#
from os import environ as _environ
_environ["scalar_off"] = "off"

import numpy as npy
import pylab as pyl
from scalar.units import FT, SEC, LBF, MIN, IN
from Aircraft_Models.Reg2014Aircraft_AeroCats.MonoWing.Aircraft import Aircraft

pyl.figure(1)

#
# Get the design point
#
dsgnGR = Aircraft.Groundroll() / (FT)
dsgnCR = Aircraft.Rate_of_Climb(1.07 * Aircraft.GetV_LO()) / (FT / MIN)
pyl.plot([dsgnCR], [dsgnGR], 'ro', markersize=8)

#
# Set up ranges
#
Vstl = npy.linspace(31, 35, 5) * FT / SEC
WT = npy.linspace(30, 34, 5) * LBF
Vplt = Vstl / (FT / SEC)

lgnd = ['Design']
arealist = []

# Initialize data arrays
grndroll = npy.zeros((len(WT), len(Vstl)))
#from os import environ as _environ; _environ["scalar_off"] = "off"

from Aerothon.ACControls import ACControls
from Aerothon.ACXFoil import ACXFoil
from Aerothon import AeroUtil
from scalar.units import SEC, ARCDEG, LBF, IN, FT, OZF
from scalar.units import AsUnit
import pylab as pyl
import numpy as npy
from Aircraft_Models.Reg2014Aircraft_AeroCats.MonoWing.Aircraft import Aircraft


Execute = True

Vs = npy.linspace(Aircraft.GetV_LO()/(FT/SEC), Aircraft.Vmax()/(FT/SEC), 9)*FT/SEC
des = npy.linspace(5, 20, 3)*ARCDEG
alpha2d = 3*ARCDEG

# Use the following to investigate the effects of changing geometry
#Aircraft.Wing.Aileron.Fc = 0.15
#Aircraft.Wing.Aileron.Fb = 0.334 #Need adjusted to make aileron 3% from tip
#Aircraft.Wing.Aileron.Ft = 0.1337

#This are the ratios of the servo arm to the control horn arm. The control arm length is the distance to the hinge.
# ArmRatio = (Servo Arm)/(Control Arm)

Aileron_ArmRatio = 0.75
Elevator_ArmRatio = 0.95
Rudder_ArmRatio = 0.65

#Aircraft.Wing.Aileron.PlotHingeMoment(fig=1, RunDir='XFoil/Aileron/', alpha2d=alpha2d, Ht=1, ArmRatio=Aileron_ArmRatio, des=des, Vs=Vs, Execute=Execute)
示例#3
0
from __future__ import division  # let 5/2 = 2.5 rather than 2

#
# The following line turns off unit checking. Make sure things are working before it is turned off
#
from os import environ as _environ
_environ["scalar_off"] = "off"

import numpy as npy
import pylab as pyl
from scalar.units import FT, SEC, LBF, MIN, IN, ARCDEG
from Aircraft_Models.Reg2014Aircraft_AeroCats.MonoWing.Aircraft import Aircraft
#from Aircraft_Models.Reg2014Aircraft_AeroCats.TradeStudies.WeightTrade.Aircraft_40 import Aircraft
#from Aircraft_Models.Reg2014Aircraft_AeroCats.TradeStudies.WeightTrade.Aircraft_106_2050 import Aircraft
# from Aircraft_Models.Reg2014Aircraft_AeroCats.TradeStudies.WeightTrade.Aircraft_NickSchwartz import Aircraft
Aircraft.Draw(fig=2)
pyl.figure(1)

#
# Get the design point
#
dsgnGR = Aircraft.Groundroll() / (FT)
dsgnCR = Aircraft.Rate_of_Climb() / (FT / MIN)
pyl.plot([dsgnCR], [dsgnGR], 'ro', markersize=8)

#
# Set up ranges
#
S = npy.linspace(1500, 1900, 5) * IN**2
Span = npy.linspace(92, 102, 6) * IN
from Aircraft_Models.Reg2014Aircraft_AeroCats.MonoWing.Aircraft import Aircraft
from scalar.units import AsUnit, IN
import pylab as pyl

Aircraft.Refresh()
Aircraft.Draw()


def PrintLiftSurf(surf):
    print 80 * '='
    print surf.name
    print
    print 'X : ', AsUnit(surf.X, 'in')

    y = []
    y.append(0 * IN)
    print 'Span  : ', AsUnit(y[0], 'in')

    fac = 2 if surf.FullWing else 1

    for Fb in surf.Fb:
        y.append(surf.b / fac * Fb)
        print 'Span  : ', AsUnit(y[-1], 'in')

    for i in xrange(1, len(y)):

        print
        print 'Section    : ', AsUnit(y[i] - y[i - 1], 'in')
        print 'Chord Root : ', AsUnit(surf.Chord(y[i - 1]), 'in')
        print 'Chord Tip  : ', AsUnit(surf.Chord(y[i]), 'in')
import numpy as npy
import pylab as pyl
from scalar.units import FT, SEC, LBF, MIN, IN, ARCDEG
from Aircraft_Models.Reg2014Aircraft_AeroCats.MonoWing.Aircraft import Aircraft
#from Aircraft_Models.Reg2012Aircraft_AeroCats.MonoWing.Aircraft import Aircraft
#from Aircraft_Models.Reg2012Aircraft_AeroCats.TradeStudies.WeightTrade.Aircraft_40 import Aircraft
#from Aircraft_Models.Reg2012Aircraft_AeroCats.TradeStudies.WeightTrade.Aircraft_42 import Aircraft
#from Aircraft_Models.Reg2012Aircraft_AeroCats.TradeStudies.WeightTrade.Aircraft_44 import Aircraft
#from Aircraft_Models.Reg2012Aircraft_AeroCats.TradeStudies.WeightTrade.Aircraft_46 import Aircraft
#from Aircraft_Models.Reg2012Aircraft_AeroCats.TradeStudies.WeightTrade.Aircraft_48 import Aircraft
#from Aircraft_Models.Reg2012Aircraft_AeroCats.TradeStudies.WeightTrade.Aircraft_50 import Aircraft
#from Aircraft_Models.Reg2012Aircraft_AeroCats.TradeStudies.WeightTrade.Aircraft_52 import Aircraft
#from Aircraft_Models.Reg2012Aircraft_AeroCats.TradeStudies.WeightTrade.Aircraft_55 import Aircraft
#from Aircraft_Models.Reg2012Aircraft_AeroCats.TradeStudies.LowMoment.Aircraft import Aircraft

Aircraft.Draw(fig=4)
fig_wing = 1
fig_htail = 2
fig_vtail = 3

CD = [0, 0, 0]

Aircraft.Wing.o_eff = None
#
# Get the design point
#
dsgnGR = Aircraft.Groundroll() / (FT)

V = Aircraft.GetV_LO() + 0.1 * FT / SEC
a2dw = Aircraft.AlphaTrim(V)
a2dw = 0 * ARCDEG
示例#6
0
from os import environ as _environ; _environ["scalar_off"] = "off"

import numpy as npy
import pylab as pyl
from scalar.units import FT, SEC, LBF, MIN, IN
from scalar.units import AsUnit
from Aircraft_Models.Reg2014Aircraft_AeroCats.MonoWing.Aircraft import Aircraft
# from Aircraft_Models.Reg2014Aircraft_AeroCats.TradeStudies.WeightTrade.Aircraft_NickSchwartz import Aircraft

pyl.figure(1)

#
# Get the design point
#
dsgnGR = Aircraft.Groundroll() / (FT)
#dsgnCR = Aircraft.Rate_of_Climb(1.07*Aircraft.GetV_LO()) / (FT/MIN)
dsgnCR = Aircraft.Rate_of_Climb() / (FT/MIN)
pyl.plot([dsgnCR],[dsgnGR],'ro', markersize = 8)

#
# Set up ranges
#
MinCumpRate = 150
S    = npy.linspace(1500,1900,5)*IN**2
WT   = npy.linspace(32,35,4)*LBF

lgnd = ['Design']
arealist = []

# Initialize data arrays
#VTail.Rudder.Fc = 0.5
#VTail.Rudder.Weight = 0.05*LBF * 2 # * 2 For symmetric vertical tail
#VTail.Rudder.SgnDup    = -1.0
#VTail.Rudder.Servo.Fc  = 0.3
#VTail.Rudder.Servo.Fbc = 0.1
#VTail.Rudder.Servo.Weight = 5*GRAM*gacc
#VTail.Rudder.Servo.Weight = 0.58 * OZF
#VTail.Rudder.Servo.Torque = 42*IN*OZM
#Set the sweep about the rudder hinge
#VTail.SweepFc = 1.0 - VTail.Rudder.Fc

if __name__ == '__main__':
    #    print 'Aircraft   V_LO     : ', AsUnit( Aircraft.GetV_LO(), 'ft/s')
    #    print 'Wing       V_LO     : ',  AsUnit( Aircraft.Wing.GetV_LO(), 'ft/s')
    #    print 'Wing       Area     : ',  AsUnit( Aircraft.Wing.S, 'in**2')
    print 'Ground Roll Distance: ', AsUnit(Aircraft.Groundroll(), 'ft')
    #    print 'HTail      Area     : ',    AsUnit( Aircraft.HTail.S, 'in**2')
    #    print 'HTail      VC       : ',     AsUnit( Aircraft.HTail.VC)
    #    print 'HTail      Span       : ',     AsUnit( Aircraft.HTail.b, 'in')
    #
    Aircraft.WriteAVLAircraft('AVL\AVLAircraft144.avl')
    #
    Aircraft.Draw()
    #
    #    Aircraft.PlotPolarsSlopes(fig=2)
    #    Aircraft.PlotCMPolars(3, (-10*ARCDEG, -5*ARCDEG, 0*ARCDEG, +5*ARCDEG, +10 * ARCDEG), XcgOffsets=(+0.02, -0.02))
    #    HTail.Draw2DAirfoilPolars(fig=4)
    #    Aircraft.PlotCLCMComponents(fig = 5, del_es = (-10*ARCDEG, -5*ARCDEG, 0*ARCDEG, +5*ARCDEG, +10 * ARCDEG))
    #
    pyl.show()
import numpy as npy
import pylab as pyl
from scalar.units import ARCDEG, FT, SEC, LBF, IN
from scalar.units import AsUnit
from Aircraft_Models.Reg2014Aircraft_AeroCats.MonoWing.Aircraft import Aircraft
#from Aircraft_Models.Reg2012Aircraft_AeroCats.TradeStudies.Performance.WeightTrade.Aircraft_48 import Aircraft
#from Aircraft_Models.Reg2014Aircraft_AeroCats.TradeStudies.WeightTrade.Aircraft_48 import Aircraft
#from Aircraft_Models.Reg2013Aircraft_AeroCats.TradeStudies.Performance.WeightTrade.Aircraft_45 import Aircraft

#print 'Aircraft   V_LO     : ', AsUnit( Aircraft.GetV_LO(), 'ft/s')
#print 'Wing       V_LO     : ',  AsUnit( Aircraft.Wing.GetV_LO(), 'ft/s')
#print 'Ground Roll Distance: ',   AsUnit( Aircraft.Groundroll(), 'ft' )

Spans = npy.linspace(92, 106, 8) * IN
#Spans = (105)*IN
legend = []
for span in Spans:
    Aircraft.Wing.b = span
    #legend += [AsUnit(span, 'in')]
    Aircraft.PlotPropulsionPerformance(1, Vmax=70 * FT / SEC)

pyl.subplot(131)
#pyl.legend(legend + ['Thrust'])
pyl.subplot(132)
#pyl.legend()
pyl.subplot(133)
#pyl.legend(legend)

#Aircraft.Draw(ii+1)

pyl.show()
示例#9
0
from __future__ import division  # let 5/2 = 2.5 rather than 2

#from os import environ as _environ; _environ["scalar_off"] = "off"

import numpy as npy
import pylab as pyl
from scalar.units import LBF
from Aircraft_Models.Reg2014Aircraft_AeroCats.MonoWing.Aircraft import Aircraft

WeightRange = npy.linspace(40, 48, 5) * LBF

Aircraft.PlotVNDiagram(2, WeightRange)  #nlimit = 5) #,WeightRange)
Aircraft.Draw(1)

pyl.show()
# NoseGear.WheelDiam = 4 * IN
#
# NoseGear.Strut.Weight = .3*LBF #math.pi*(0.125/2*IN)**2*8*IN*Steel.ForceDensity #1/8 inch diameter steel, l=8in
# NoseGear.Strut.WeightGroup = "LandingGear"
# NoseGear.Wheel.Weight = .16*LBF
# NoseGear.Wheel.WeightGroup = "LandingGear"
#
# NoseGear.Strut.Weight = 0.2*LBF #math.pi*(0.125/2*IN)**2*8*IN*Steel.ForceDensity #1/8 inch diameter steel, l=8in
# NoseGear.Strut.WeightGroup = "LandingGear"
# NoseGear.Wheel.Weight = 0.1*LBF
# NoseGear.Wheel.WeightGroup = "LandingGear"

if __name__ == '__main__':

    print
    print 'Aircraft   V_LO :', AsUnit(Aircraft.GetV_LO(), 'ft/s')
    print 'Wing       V_LO :', AsUnit(Aircraft.Wing.GetV_LO(), 'ft/s')
    print

    H = max(Aircraft.Wing.Upper(0 * IN), Aircraft.VTail.Tip()[2])
    W = Aircraft.Wing.b
    L = Aircraft.TotalLengths - W - H
    print 'V max climb    : ', AsUnit(Aircraft.V_max_climb(), 'ft/s')
    print 'V max          : ', AsUnit(Aircraft.Vmax(), 'ft/s')
    print 'Ground Roll    : ', AsUnit(Aircraft.Groundroll(), 'ft')
    print 'Total Weight   : ', AsUnit(Aircraft.TotalWeight, 'lbf')
    print 'Payload Weight  : ', AsUnit(Aircraft.PayloadWeight(), 'lbf')
    print 'Wing Height     : ', AsUnit(Aircraft.Wing.Upper(0 * IN), 'in')
    print 'Vertical Tail H : ', AsUnit(Aircraft.VTail.Tip()[2], 'in')
    print 'Width           : ', AsUnit(W, 'in')
    print 'Length          : ', AsUnit(L, 'in')