コード例 #1
0
def test_airmass():
    m = airmass(lambda Z: ATMOSPHERE_1976(Z).rho, 90)
    assert_close(m, 10356.127665863998)  # vs 10356
    m = airmass(lambda Z: ATMOSPHERE_1976(Z).rho, 60)
    assert_close(m, 11954.138271601627)  # vs 11954

    m = airmass(lambda Z: ATMOSPHERE_1976(Z).rho, 5)
    assert_close(m, 106861.56335489497)  # vs 106837

    m = airmass(lambda Z: ATMOSPHERE_1976(Z).rho, .1)
    assert_close(m, 379082.24065519444, rtol=1e-6)  # vs 378596
コード例 #2
0
ファイル: solver.py プロジェクト: KikeM/winglets
    def __init__(self, model, altitude, mach):
        """
        Parameters
        ----------
        model : Wing
        altitude :
        mach :
        design_cl :

        """

        self.model = model
        self.altitude = altitude
        self.mach = mach

        # Compute velocity in m/s
        atmosphere = ATMOSPHERE_1976(altitude)
        speed_sound = atmosphere.sonic_velocity(atmosphere.T)

        self.velocity = mach * speed_sound
        self._atmosphere = atmosphere

        # Code results
        self.CL = None
        self.CY = None
        self.CDi = None
コード例 #3
0
def takeoff_run(aircraft, params):
    results = []
    for altitude in params['altitudes']:
        for deltaT in params['temperatures']:
            list1 = []
            list2 = []
            for TOW in params['TOWs']:
                list1.append(TOW)
                atmos = ATMOSPHERE_1976(altitude, deltaT)
                x = 0
                v = 0
                F_aero_max = 0
                while x < 6000:
                    F_aero = bae146.aero_evaluator(atmos, v, 0)
                    F_aero_max = bae146.aero_evaluator(atmos, v, 20)
                    Thrust, consumption = bae146.thrust_evaluator(atmos)
                    net_force = Thrust - F_aero[
                        1] - TOW * 9.81 * bae146.fric_coeff
                    a = net_force / TOW
                    x = x + v + a * a / 2
                    v = v + a
                    if F_aero_max[0] > TOW * 9.81:
                        break
                results.append({
                    'h': altitude,
                    'deltaT': deltaT,
                    'TOW': TOW,
                    'x-TO': x,
                    'v-TO': v
                })
    results = pd.DataFrame(results)
    print('xupaita')
コード例 #4
0
ファイル: test_atmosphere.py プロジェクト: kkremitzki/fluids
def test_ATMOSPHERE_1976():
    # Test values from 'Atmosphere to 86 Km by 2 Km (SI units)', from 
    # http://ckw.phys.ncku.edu.tw/public/pub/Notes/Languages/Fortran/FORSYTHE/www.pdas.com/m1.htm
    # as provided in atmtabs.html in http://www.pdas.com/atmosdownload.html
    H_1 = [-2000, 0, 2000, 4000, 6000, 8000, 10000, 12000, 14000, 16000, 18000, 20000, 22000, 24000, 26000, 28000, 30000, 32000, 34000, 36000, 38000, 40000, 42000, 44000, 46000, 48000, 50000, 52000, 54000, 56000, 58000, 60000, 62000, 64000, 66000, 68000, 70000, 72000, 74000, 76000, 78000, 80000, 82000, 84000, 86000]
    T_1 = [301.15, 288.15, 275.15, 262.17, 249.19, 236.22, 223.25, 216.65, 216.65, 216.65, 216.65, 216.65, 218.57, 220.56, 222.54, 224.53, 226.51, 228.49, 233.74, 239.28, 244.82, 250.35, 255.88, 261.4, 266.92, 270.65, 270.65, 269.03, 263.52, 258.02, 252.52, 247.02, 241.53, 236.04, 230.55, 225.07, 219.58, 214.26, 210.35, 206.45, 202.54, 198.64, 194.74, 190.84, 186.95]
    P_1 = [127780, 101320, 79501, 61660, 47218, 35652, 26500, 19399, 14170, 10353, 7565.2, 5529.3, 4047.5, 2971.7, 2188.4, 1616.2, 1197, 889.06, 663.41, 498.52, 377.14, 287.14, 219.97, 169.5, 131.34, 102.3, 79.779, 62.215, 48.338, 37.362, 28.724, 21.959, 16.689, 12.606, 9.4609, 7.0529, 5.2209, 3.8363, 2.8009, 2.0333, 1.4674, 1.0525, 0.75009, 0.53104, 0.37338]
    rho_1 = [1.4782, 1.225, 1.0066, 0.81935, 0.66011, 0.52579, 0.41351, 0.31194, 0.22786, 0.16647, 0.12165, 0.08891, 0.06451, 0.046938, 0.034257, 0.025076, 0.01841, 0.013555, 0.0098874, 0.0072579, 0.0053666, 0.0039957, 0.0029948, 0.0022589, 0.0017141, 0.0013167, 0.0010269, 0.00080562, 0.000639, 0.00050445, 0.00039626, 0.00030968, 0.00024071, 0.00018605, 0.00014296, 0.00010917, 0.000082829, 0.000062373, 0.000046385, 0.000034311, 0.000025239, 0.000018458, 0.000013418, 9.6939E-006, 6.9578E-006]
    c_1 = [347.89, 340.29, 332.53, 324.59, 316.45, 308.11, 299.53, 295.07, 295.07, 295.07, 295.07, 295.07, 296.38, 297.72, 299.06, 300.39, 301.71, 303.02, 306.49, 310.1, 313.67, 317.19, 320.67, 324.12, 327.52, 329.8, 329.8, 328.81, 325.43, 322.01, 318.56, 315.07, 311.55, 307.99, 304.39, 300.75, 297.06, 293.44, 290.75, 288.04, 285.3, 282.54, 279.75, 276.94, 274.1]
    mu_1 = [0.000018515, 0.000017894, 0.00001726, 0.000016612, 0.000015949, 0.000015271, 0.000014577, 0.000014216, 0.000014216, 0.000014216, 0.000014216, 0.000014216, 0.000014322, 0.00001443, 0.000014538, 0.000014646, 0.000014753, 0.000014859, 0.00001514, 0.000015433, 0.000015723, 0.000016009, 0.000016293, 0.000016573, 0.000016851, 0.000017037, 0.000017037, 0.000016956, 0.00001668, 0.000016402, 0.000016121, 0.000015837, 0.000015551, 0.000015262, 0.00001497, 0.000014675, 0.000014377, 0.000014085, 0.000013868, 0.00001365, 0.00001343, 0.000013208, 0.000012985, 0.00001276, 0.000012533]


    Ts = [ATMOSPHERE_1976(Z).T for Z in H_1]
    assert_allclose(Ts, T_1, atol=0.005)
    Ps = [ATMOSPHERE_1976(Z).P for Z in H_1]
    assert_allclose(Ps, P_1, rtol=5E-5)
    rhos = [ATMOSPHERE_1976(Z).rho for Z in H_1]
    assert_allclose(rhos, rho_1, rtol=5E-5)
    cs = [ATMOSPHERE_1976(Z).v_sonic for Z in H_1]
    assert_allclose(cs, c_1, rtol=5E-5)
    mus = [ATMOSPHERE_1976(Z).mu for Z in H_1]
    assert_allclose(mus, mu_1, rtol=5E-5)
    
    assert_allclose(ATMOSPHERE_1976(1000, dT=1).T, 282.6510223716947)
    
    # Check thermal conductivity with: http://www.aerospaceweb.org/design/scripts/atmosphere/
    assert_allclose(ATMOSPHERE_1976(1000).k, 0.0248133634493)
    # Other possible additions: 
    # mean air particle speed; mean collision frequency; mean free path; mole volume; total number density


    delta_P = ATMOSPHERE_1976.pressure_integral(288.6, 84100.0, 147.0)
    assert_allclose(delta_P, 1451.9583061008857)
コード例 #5
0
ファイル: test_atmosphere.py プロジェクト: rddaz2013/fluids
def test_ATMOSPHERE_1976():
    # Test values from 'Atmosphere to 86 Km by 2 Km (SI units)', from 
    # http://ckw.phys.ncku.edu.tw/public/pub/Notes/Languages/Fortran/FORSYTHE/www.pdas.com/m1.htm
    # as provided in atmtabs.html in http://www.pdas.com/atmosdownload.html
    H_1 = [-2000, 0, 2000, 4000, 6000, 8000, 10000, 12000, 14000, 16000, 18000, 20000, 22000, 24000, 26000, 28000, 30000, 32000, 34000, 36000, 38000, 40000, 42000, 44000, 46000, 48000, 50000, 52000, 54000, 56000, 58000, 60000, 62000, 64000, 66000, 68000, 70000, 72000, 74000, 76000, 78000, 80000, 82000, 84000, 86000]
    T_1 = [301.15, 288.15, 275.15, 262.17, 249.19, 236.22, 223.25, 216.65, 216.65, 216.65, 216.65, 216.65, 218.57, 220.56, 222.54, 224.53, 226.51, 228.49, 233.74, 239.28, 244.82, 250.35, 255.88, 261.4, 266.92, 270.65, 270.65, 269.03, 263.52, 258.02, 252.52, 247.02, 241.53, 236.04, 230.55, 225.07, 219.58, 214.26, 210.35, 206.45, 202.54, 198.64, 194.74, 190.84, 186.95]
    P_1 = [127780, 101320, 79501, 61660, 47218, 35652, 26500, 19399, 14170, 10353, 7565.2, 5529.3, 4047.5, 2971.7, 2188.4, 1616.2, 1197, 889.06, 663.41, 498.52, 377.14, 287.14, 219.97, 169.5, 131.34, 102.3, 79.779, 62.215, 48.338, 37.362, 28.724, 21.959, 16.689, 12.606, 9.4609, 7.0529, 5.2209, 3.8363, 2.8009, 2.0333, 1.4674, 1.0525, 0.75009, 0.53104, 0.37338]
    rho_1 = [1.4782, 1.225, 1.0066, 0.81935, 0.66011, 0.52579, 0.41351, 0.31194, 0.22786, 0.16647, 0.12165, 0.08891, 0.06451, 0.046938, 0.034257, 0.025076, 0.01841, 0.013555, 0.0098874, 0.0072579, 0.0053666, 0.0039957, 0.0029948, 0.0022589, 0.0017141, 0.0013167, 0.0010269, 0.00080562, 0.000639, 0.00050445, 0.00039626, 0.00030968, 0.00024071, 0.00018605, 0.00014296, 0.00010917, 0.000082829, 0.000062373, 0.000046385, 0.000034311, 0.000025239, 0.000018458, 0.000013418, 9.6939E-006, 6.9578E-006]
    c_1 = [347.89, 340.29, 332.53, 324.59, 316.45, 308.11, 299.53, 295.07, 295.07, 295.07, 295.07, 295.07, 296.38, 297.72, 299.06, 300.39, 301.71, 303.02, 306.49, 310.1, 313.67, 317.19, 320.67, 324.12, 327.52, 329.8, 329.8, 328.81, 325.43, 322.01, 318.56, 315.07, 311.55, 307.99, 304.39, 300.75, 297.06, 293.44, 290.75, 288.04, 285.3, 282.54, 279.75, 276.94, 274.1]
    mu_1 = [0.000018515, 0.000017894, 0.00001726, 0.000016612, 0.000015949, 0.000015271, 0.000014577, 0.000014216, 0.000014216, 0.000014216, 0.000014216, 0.000014216, 0.000014322, 0.00001443, 0.000014538, 0.000014646, 0.000014753, 0.000014859, 0.00001514, 0.000015433, 0.000015723, 0.000016009, 0.000016293, 0.000016573, 0.000016851, 0.000017037, 0.000017037, 0.000016956, 0.00001668, 0.000016402, 0.000016121, 0.000015837, 0.000015551, 0.000015262, 0.00001497, 0.000014675, 0.000014377, 0.000014085, 0.000013868, 0.00001365, 0.00001343, 0.000013208, 0.000012985, 0.00001276, 0.000012533]


    Ts = [ATMOSPHERE_1976(Z).T for Z in H_1]
    assert_allclose(Ts, T_1, atol=0.005)
    Ps = [ATMOSPHERE_1976(Z).P for Z in H_1]
    assert_allclose(Ps, P_1, rtol=5E-5)
    rhos = [ATMOSPHERE_1976(Z).rho for Z in H_1]
    assert_allclose(rhos, rho_1, rtol=5E-5)
    cs = [ATMOSPHERE_1976(Z).v_sonic for Z in H_1]
    assert_allclose(cs, c_1, rtol=5E-5)
    mus = [ATMOSPHERE_1976(Z).mu for Z in H_1]
    assert_allclose(mus, mu_1, rtol=5E-5)
    
    assert_allclose(ATMOSPHERE_1976(1000, dT=1).T, 282.6510223716947)
    
    # Check thermal conductivity with: http://www.aerospaceweb.org/design/scripts/atmosphere/
    assert_allclose(ATMOSPHERE_1976(1000).k, 0.0248133634493)
コード例 #6
0
ファイル: flight_conditions.py プロジェクト: KikeM/pybem
    def __init__(self, airspeed, omega, altitude):
        """
        Parameters
        ----------
        V: float
            airspeed in km/h
        omega: float
            Blade angular speed
        altitude: float
            Height from the ground, in meters.
        """

        self.atmosphere = ATMOSPHERE_1976(Z=altitude)

        self.v = airspeed * (1000.0 / 3600.0)
        self.omega = omega * (2 * pi) / 60.0
コード例 #7
0
def test_ATMOSPHERE_1976():
    Ts = [ATMOSPHERE_1976(Z).T for Z in H_1]
    assert_allclose(Ts, T_1, atol=0.005)
    Ps = [ATMOSPHERE_1976(Z).P for Z in H_1]
    assert_allclose(Ps, P_1, rtol=5E-5)
    rhos = [ATMOSPHERE_1976(Z).rho for Z in H_1]
    assert_allclose(rhos, rho_1, rtol=5E-5)
    cs = [ATMOSPHERE_1976(Z).v_sonic for Z in H_1]
    assert_allclose(cs, c_1, rtol=5E-5)
    mus = [ATMOSPHERE_1976(Z).mu for Z in H_1]
    assert_allclose(mus, mu_1, rtol=5E-5)

    assert_allclose(ATMOSPHERE_1976(1000, dT=1).T, 282.6510223716947)

    # Check thermal conductivity with: http://www.aerospaceweb.org/design/scripts/atmosphere/
    assert_allclose(ATMOSPHERE_1976(1000).k, 0.0248133634493)
コード例 #8
0
 def time_airmass(self):
     airmass(lambda Z: ATMOSPHERE_1976(Z).rho, 90.0)
コード例 #9
0
 def time_ATMOSPHERE_1976_pressure_integral(self):
     ATMOSPHERE_1976.pressure_integral(288.6, 84100.0, 147.0)
コード例 #10
0
 def time_ATMOSPHERE_1976(self):
     ATMOSPHERE_1976(5000.0)
コード例 #11
0
def get_air_pressure_by_altitude(y_amsl):
    """
    Gets the air density using the AMSL elevation and the fluids library.
    """
    return ATMOSPHERE_1976(y_amsl).P
コード例 #12
0
def get_gravity_by_altitude(y_amsl):
    """
    Gets the gravity using the AMSL elevation and the fluids library.
    """
    return ATMOSPHERE_1976.gravity(y_amsl)
コード例 #13
0
    return Cd

mass[0]     = (m_0 + mass_f_o) / 1000

for i in range( 1,len(t)):                      # Starts on index 1


    # Engine
    if (mass[i-1] > m_0/1000):
        mass[i] = (mass[i-1] - dt * mass_flow/1000)
        T   = thrust 
    else:
        mass[i] = mass[i-1]
        T = 0
    # Atomosphere
    atmo = ATMOSPHERE_1976(pos[0, i])
    # Forces
    W = - mass[i] * atmo.g                                                 # Weight
    # Aerodynamics
    Mach= vel[2, i-1]/atmo.v_sonic
    Cd  =    getDrag(Mach)
    teste[i] = Cd
    D   = -0.5 * atmo.rho * vel[2, i-1] * abs(vel[2, i-1]) * A * Cd           # Drag
    Fz  = W + D + T                                                       # Weight + Drag + Thrust
    acc[:,i] = [0, 0, Fz]/ mass[i]
    # Euler Integration
    vel[:, i] = vel[:, i-1] + acc[:, i] * dt
    pos[:, i] = pos[:, i-1] + vel[:, i] * dt
    # End Simulation
    if (vel[2, i]) < 0:
        i_end = i