Exemplo n.º 1
0
    def test_01(self):

        # Truth values from NASA RP 1046

        Value = SA.alt2press(5000)
        Truth = 24.8959
        self.assertLessEqual(RE(Value, Truth), 1e-5)
Exemplo n.º 2
0
	def __init__(self, h):
		# Cantera Solution object
		self.gas = ct.Solution('air.xml')

		# Discretised altitude steps
		self.h = h

		# Average molecular diameter of gas
		self.d = 4E-10

		self.steps = len(h)

		self.rho = np.zeros(self.steps)
		self.p = np.zeros(self.steps)
		self.T = np.zeros(self.steps)
		self.a = np.zeros(self.steps)
		self.k = np.zeros(self.steps)
		self.mu = np.zeros(self.steps)

		for index, alt in enumerate(self.h):
			self.rho[index] = atm.alt2density(alt, alt_units='m', density_units='kg/m**3')
			self.p[index] = atm.alt2press(alt, press_units='pa', alt_units='m')
			self.T[index] = atm.alt2temp(alt, alt_units='m', temp_units='K')
			self.a[index] = atm.temp2speed_of_sound(self.T[index], temp_units='K', speed_units='m/s')

		for index, alt in enumerate(self.h):
			self.gas.TP = self.T[index], self.p[index]
			self.k[index] = self.gas.cp / self.gas.cv
			self.mu[index] = self.gas.viscosity

		print 'ATMOSPHERIC MODEL COMPUTED (US76)'

		return None
Exemplo n.º 3
0
    def test_06(self):

        # truth value calculated from program at:
        # http://www.sworld.com.au/steven/space/atmosphere/

        Value = SA.alt2press(65322, press_units='pa', alt_units='m')
        Truth = 9.4609
        self.assertLessEqual(RE(Value, Truth), 5e-5)
Exemplo n.º 4
0
    def test_03(self):

        # test pa and m
        # Truth values from NASA RP 1046

        Value = SA.alt2press(25000, alt_units='m', press_units='pa')
        Truth = 2511.01
        self.assertLessEqual(RE(Value, Truth), 1e-5)
Exemplo n.º 5
0
    def test_02(self):

        # test psf
        # Truth values from NASA RP 1046

        Value = SA.alt2press(49000, press_units='psf')
        Truth = 254.139
        self.assertLessEqual(RE(Value, Truth), 1e-5)
Exemplo n.º 6
0
    def test_07(self):

        # test units in other order
        # truth value calculated from program at:
        # http://www.sworld.com.au/steven/space/atmosphere/

        Value = SA.alt2press(80956, press_units='pa', alt_units='m')
        Truth = 0.75009
        self.assertLessEqual(RE(Value, Truth), 1e-4)
Exemplo n.º 7
0
	def __init__(self, h, T_thermosphere):
		# Cantera Solution object
		self.gas = ct.Solution('air.xml')

		# Discretised altitude steps
		self.h = h

		# Average molecular diameter of gas
		self.d = 4E-10

		# Ratio of specific heats
		self.steps = len(h)

		self.rho = np.zeros(self.steps)
		self.p = np.zeros(self.steps)
		self.T = np.zeros(self.steps)
		self.a = np.zeros(self.steps)
		self.k = np.zeros(self.steps)
		self.mu = np.zeros(self.steps)

		# Call Jacchia77 model
		data = j77.j77sri(np.max(h), T_thermosphere)
		data_np = np.array(data)

		h_int = spint.griddata
		T_int = spint.griddata
		mw_int = spint.griddata
		n = spint.griddata

		for index, alt in enumerate(self.h):
			self.rho[index] = atm.alt2density(alt, alt_units='m', density_units='kg/m**3')
			self.p[index] = atm.alt2press(alt, press_units='pa', alt_units='m')
			self.T[index] = atm.alt2temp(alt, alt_units='m', temp_units='K')
			self.a[index] = atm.temp2speed_of_sound(self.T[index], temp_units='K', speed_units='m/s')

		for index, alt in enumerate(self.h):
			self.gas.TP = self.T[index], self.p[index]
			self.k[index] = self.gas.cp / self.gas.cv
			self.mu[index] = self.gas.viscosity
		return None
Exemplo n.º 8
0
piece.append('2400'.center(cols))
piece.append('2200'.center(cols))
piece.append('2300'.center(cols))
piece.append('2400'.center(cols))
piece.append('2500'.center(cols))
full_line = '|'.join(piece)
print('|' + full_line + '|')


for alt in range(0, 16000, 1000):
    piece = []
    piece.append(str(alt).rjust(col1))
    temp = SA.alt2temp(alt, temp_units='F')
    temp = int(temp)
    piece.append(str(temp).rjust(col2))
    press = SA.alt2press(alt)

    pwr = .55 * max_pwr
    for rpm in range(2100, 2500, 100):
        mp = float(io360a.pwr2mp(pwr, rpm, alt))
        if press - mp < diff:
            piece.append('FT'.center(col2))
        else:
            piece.append(str(round(mp, 1)).center(col2))

    pwr = .65 * max_pwr
    for rpm in range(2100, 2500, 100):
        mp = float(io360a.pwr2mp(pwr, rpm, alt))
        if press - mp < diff:
            piece.append('FT'.center(col2))
        else: