Example #1
0
    def test_Power(self):
        """
        Tests that the engine class is working properly 
        """
        # Create the propeller defined in the mathcad pdf documents
        Prop = ACPropeller()
        Prop.D          = 14.2*IN
        Prop.PitchAngle = 12*ARCDEG
    #    Prop.Pitch      = 7.1117*IN 
        
        Prop.dAlpha     = 0*ARCDEG
        Prop.Solidity   = 0.0136
        Prop.RD         = 3/8
        Prop.AlphaStall = 14*ARCDEG
        N = 11400 * RPM
 
        self.assertAlmostEqual(Prop.P(N, 0*FT/SEC, 0*FT) / HP, 1.2950, 4)
import numpy as npy
import pylab as pyl
from scalar.units import IN, LBF, SEC, ARCDEG, FT, RPM, OZF, GRAM, gacc, W, K, degR, inHg, MM
from scalar.units import AsUnit

# Set Propeller properties
Prop = ACPropeller()
Prop.name = 'APC 22x10E'
Prop.D = 22 * IN
Prop.Thickness = 0.5 * IN

Prop.Pitch = 10 * IN
Prop.dAlpha = 11 * ARCDEG
Prop.Solidity = 0.0126

Prop.AlphaStall = 20 * ARCDEG
Prop.AlphaZeroCL = 0 * ARCDEG
Prop.CLSlope = .22 / ARCDEG  #- 2D airfoil lift slope
Prop.CDCurve = 2.2  #- 2D curvature of the airfoil drag bucket
Prop.CDp = .02  #- Parasitic drag

Prop.Weight = 240.9 * GRAM * gacc

Prop.ThrustUnit = LBF
Prop.ThrustUnitName = 'lbf'
Prop.PowerUnit = W
Prop.PowerUnitName = 'watt'
Prop.MaxTipSpeed = None
#
# These are corrected for standard day
#
import numpy as npy
import pylab as pyl
from scalar.units import IN, LBF, SEC, ARCDEG, FT, RPM, OZF, GRAM, gacc, Pa, degR, W, inHg, K
from scalar.units import AsUnit

# Set Propeller properties
Prop = ACPropeller()
Prop.name = 'APC 13x4'
Prop.D = 13 * IN
Prop.Thickness = 5 / 8 * IN

Prop.Pitch = 3.5 * IN
Prop.dAlpha = 4.9 * ARCDEG
Prop.Solidity = 0.015

Prop.AlphaStall = 15 * ARCDEG
Prop.CLSlope = 0.065 / ARCDEG
Prop.CDCurve = 2.2
Prop.CDp = 0.01

Prop.Weight = 1.80 * OZF

STD = STDCorrection(30.16 * inHg, (1.667 + 273.15) * K)
#                  RPM,        Thrust
ThrustData1 = [(12080 * RPM, (10 * LBF + 4 * OZF) * STD),
               (11650 * RPM, (9 * LBF + 6 * OZF) * STD),
               (10980 * RPM, (8 * LBF + 13 * OZF) * STD),
               (10280 * RPM, (8 * LBF + 0 * OZF) * STD),
               (9630 * RPM, (6 * LBF + 12 * OZF) * STD),
               (8400 * RPM, (5 * LBF + 3 * OZF) * STD),
               (7215 * RPM, (3 * LBF + 14 * OZF) * STD),
import numpy as npy
import pylab as pyl
from scalar.units import IN, LBF, SEC, ARCDEG, FT, RPM, OZF
from scalar.units import AsUnit

# Set Propeller properties
Prop = ACPropeller()
Prop.name       = 'Prop 13.5x4'
Prop.D          = 13.5*IN
Prop.Thickness  = 5/8*IN
#Prop.PitchAngle = 12*ARCDEG
Prop.Pitch      = 4*IN
Prop.dAlpha     = 0.8*ARCDEG
Prop.Solidity   = 0.013   #0.0125 seems to match the old data better...
Prop.RD         = 3/8
Prop.AlphaStall = 13*ARCDEG
Prop.Weight     = 3/32*LBF

#
# These are corrected for standard day
#
#                 RPM,        Thrust
#Prop.ThrustData = [(8100  *RPM, 4 *LBF + 8*OZF),
#                   (9200  *RPM, 5 *LBF + 13*OZF),
#                   (11200 *RPM, 9 *LBF + 3*OZF)]
#
#                   RPM,        Torque
#Prop.TorqueData = [(11000 *RPM, 114.768*IN*OZF)]

################################################################################
if __name__ == '__main__':
import numpy as npy
import pylab as pyl
from scalar.units import IN, LBF, SEC, ARCDEG, FT, RPM, OZF, GRAM, gacc, Pa, degR, W, inHg, K
from scalar.units import AsUnit

# Set Propeller properties
Prop = ACPropeller()
Prop.name = 'Prop 13.5x6'
Prop.D = 13.5 * IN
Prop.Thickness = 5 / 8 * IN
#Prop.PitchAngle = 12*ARCDEG
Prop.Pitch = 5. * IN
Prop.dAlpha = 4. * ARCDEG
Prop.Solidity = 0.014
Prop.RD = 3 / 8
Prop.AlphaStall = 14 * ARCDEG
Prop.CLSlope = 0.07 / ARCDEG

Prop.Weight = 1.25 * OZF

#
# These are corrected for standard day
STD = STDCorrection(30.03 * inHg, (19 + 273.15) * K)

#                  RPM,        Thrust
Prop.ThrustData = [(3200 * RPM, (1 * LBF + 6 * OZF) * STD),
                   (5610 * RPM, (3 * LBF + 2 * OZF) * STD),
                   (7380 * RPM, (3 * LBF + 13 * OZF) * STD),
                   (8640 * RPM, (5 * LBF + 7 * OZF) * STD),
                   (9250 * RPM, (6 * LBF + 11 * OZF) * STD),
                   (10320 * RPM, (7 * LBF + 3 * OZF) * STD),
import numpy as npy
import pylab as pyl
from scalar.units import IN, LBF, SEC, ARCDEG, FT, RPM, OZF, GRAM, gacc, Pa, degR, inHg
from scalar.units import AsUnit

# Set Propeller properties
Prop = ACPropeller()
Prop.name = 'Prop 14x12'
Prop.D = 14 * IN
Prop.Thickness = 5 / 8 * IN
#Prop.PitchAngle = 12*ARCDEG
Prop.Pitch = 6 * IN
Prop.dAlpha = 0.8 * ARCDEG
Prop.Solidity = 0.021  #0.0125 seems to match the old data better...
Prop.RD = 3 / 8
Prop.AlphaStall = 16 * ARCDEG

Prop.Weight = 100 * LBF

#Standard correction for 2:00 pm for the test day
STD = STDCorrection(30.03 * inHg, (19 + 273.15) * K)
#
# These are corrected for standard day
#
#                  RPM,        Thrust
Prop.ThrustData = [(2370 * RPM, (0 * LBF + 10 * OZF) * STD),
                   (4140 * RPM, (3 * LBF + 2 * OZF) * STD),
                   (5160 * RPM, (4 * LBF + 14 * OZF) * STD),
                   (5880 * RPM, (6 * LBF + 0 * OZF) * STD),
                   (5970 * RPM, (5 * LBF + 10 * OZF) * STD)]
Example #7
0
import numpy as npy
import pylab as pyl
from scalar.units import IN, LBF, SEC, ARCDEG, FT, RPM, OZF, GRAM, gacc, hPa, K, W, inHg
from scalar.units import AsUnit

# Set Propeller properties
Prop = ACPropeller()
Prop.name = 'APC 12.25x3.75 ADV'
Prop.D = 12.25 * IN
Prop.Thickness = 5 / 8 * IN

Prop.Pitch = 3.75 * IN
Prop.dAlpha = 6.25 * ARCDEG  # for correlating
Prop.Solidity = 0.013  # for correlating

Prop.AlphaStall = 18 * ARCDEG  # for correlating
Prop.AlphaZeroCL = 0 * ARCDEG  #- 2D curvature of the airfoil drag bucket
Prop.CLSlope = 0.095 / ARCDEG  #- 2D airfoil lift slope (default 0.068/deg)
Prop.CDCurve = 2.5  #- 2D curvature of the airfoil drag bucket
Prop.CDp = 0.01  #- 2D parasite drag

Prop.Weight = 1.80 * OZF
Prop.WeightGroup = 'Propulsion'

#
# These are corrected for standard day
#Standard correction for 2:00 pm for the test day
#STD = STDCorrection(30.16*inHg, (1.6667 + 273.15)*K)
#
#                  RPM,        Thrust
#Prop.ThrustData = [(13440 *RPM, (10 *LBF + 8*OZF)*STD),
from Aerothon.ACPropeller import ACPropeller
from Aerothon.ACEngine import ACEngine
from Aerothon.ACPropulsion import ACPropulsion
import numpy as npy
from Aerothon.scalar.units import IN, LBF, PSFC, SEC, ARCDEG, FT, OZF, RPM, HP
from Aerothon.scalar.units import AsUnit

# Set Propeller properties
Prop = ACPropeller()
Prop.D = 13.5 * IN  # Diameter
Prop.Thickness = .5 * IN  # Thickness at the hub... just for drawing purposes
Prop.PitchAngle = 14 * ARCDEG  # Pitch angle.. aka \Beta
Prop.dAlpha = 0 * ARCDEG  # Difference between measured alpha and zero lift alpha
Prop.Solidity = 0.0136  # Proportional to the blade disk area, similar to the activity factor (AreaBlades/(2*D**2))
Prop.RD = 3 / 8  # The location on the profile chord where the PitchAngle is defined (default 3/8) Von Mises 306
Prop.AlphaStall = 12 * ARCDEG  # Stall angle of attack
Prop.Weight = 3 / 32 * LBF  # Weight

# Use these parameters to match test data if need be.
# Prop.CLSlope    = .078/ARCDEG  #- 2D airfoil lift slope
# Prop.CDCurve    = 2.2          #- 2D curvature of the airfoil drag bucket
# Prop.CDp        = .02          #- Parasitic drag

# Set Engine properties - glow engine... see 2015 files for setting up electric motor
Engine = ACEngine()
Engine.Rbs = 1.1
Engine.Rla = 3.5
Engine.NumCyl = 1
Engine.NumRev = 1
Engine.CompRatio = 9
Engine.Vd = 0.607 * IN**3
import numpy as npy
import pylab as pyl
from scalar.units import IN, LBF, SEC, ARCDEG, FT, RPM, OZF, GRAM, gacc, hPa, K, W, inHg
from scalar.units import AsUnit

# Set Propeller properties
Prop = ACPropeller()
Prop.name = 'APC 12.25x3.75'
Prop.D = 12.25 * IN
Prop.Thickness = 5 / 8 * IN

Prop.Pitch = 3.75 * IN
Prop.dAlpha = 6.25 * ARCDEG
Prop.Solidity = 0.012

Prop.AlphaStall = 18 * ARCDEG
Prop.AlphaZeroCL = 0 * ARCDEG  #- 2D curvature of the airfoil drag bucket
Prop.CLSlope = 0.09 / ARCDEG  #- 2D airfoil lift slope (default 0.068/deg)
Prop.CDCurve = 2.5  #- 2D curvature of the airfoil drag bucket
Prop.CDp = 0.01  #- 2D parasite drag

Prop.Weight = 1.80 * OZF
Prop.WeightGroup = 'Propulsion'

#
# These are corrected for standard day
#Standard correction for 2:00 pm for the test day
STD = STDCorrection(30.03 * inHg, (19 + 273.15) * K)
#
#                  RPM,        Thrust
Prop.ThrustData = [(4110 * RPM, (1 * LBF + 0 * OZF) * STD),