def test_chamber_transport_props(self): """test chamber transport props""" C = CEA_Obj( oxName='LOX', fuelName='LH2', fac_CR=None) CwU = CEA_Obj_w_units( oxName='LOX', fuelName='LH2', pressure_units='MPa', specific_heat_units='kJ/kg-K', # note: cal/g K == BTU/lbm degR viscosity_units='poise', thermal_cond_units='BTU/s-in-degF', fac_CR=None) Cp1, v1, con1, P1 = C.get_Chamber_Transport(Pc=1000.0, MR=6.0, eps=40.0, frozen=0) Cp2, v2, con2, P2 = CwU.get_Chamber_Transport(Pc=1000.0/145.037738, MR=6.0, eps=40.0, frozen=0) Cp3 = C.get_Chamber_Cp(Pc=1000.0, MR=6.0, eps=40.0, frozen=0) # look at heat capacity self.assertAlmostEqual(Cp1, 2.0951, delta=0.001) self.assertAlmostEqual(Cp2, 8.771346, delta=0.001) self.assertAlmostEqual(Cp1, Cp3, delta=0.001) # look at viscosity self.assertAlmostEqual(v1, 1.0588, delta=0.001) self.assertAlmostEqual(v2, 0.0010588, delta=0.000001) # look at conductivity self.assertAlmostEqual(con1, 4.1444, delta=0.0001) self.assertAlmostEqual(con2, 2.3192E-5, delta=1.0E-9)
def test_win32_rocketcea_data_dir_spaces(self): """On Windows, use short path names when spaces in ROCKETCEA_DATA_DIR""" if sys.platform == 'win32': save_ROCKETCEA_DATA_DIR = get_rocketcea_data_dir() try: with tempfile.TemporaryDirectory() as tmpdirname: print('created temporary directory', tmpdirname) subdir = os.path.join(tmpdirname, 'cea w spaces') os.mkdir(subdir) print('subdir =', subdir) print('os.path.exists(subdir) =', os.path.exists(subdir)) print() set_rocketcea_data_dir(subdir) C = CEA_Obj(oxName='LOX', fuelName='LH2', make_debug_prints=True) Isp = C.get_Isp(Pc=100.0, MR=1.0, eps=40.0) print(Isp) finally: # restore set_rocketcea_data_dir(save_ROCKETCEA_DATA_DIR)
def __init__(self, oxName='N2O4', fuelName='MMH', oxPcentL=None, fuelPcentL=None, TC_LIMIT=1000.0, PcNominal=1000.0, epsNominal=10.0, MR_MIN=0.0, MR_MAX=1000.0): # degR, psia self.oxName = oxName self.oxPcentL = oxPcentL self.fuelName = fuelName self.fuelPcentL = fuelPcentL self.cea_fuelName = get_propellant_name(Name=fuelName, PcentL=fuelPcentL) self.cea_oxName = get_propellant_name(Name=oxName, PcentL=oxPcentL) self.TC_LIMIT = TC_LIMIT self.PcNominal = PcNominal self.epsNominal = epsNominal self.MR_MIN = MR_MIN self.MR_MAX = MR_MAX self.ispODEObj = CEA_Obj(fuelName=self.cea_fuelName, oxName=self.cea_oxName, useFastLookup=0) self.Stoich_MR = self.ispODEObj.getMRforER(ERphi=1.0) #print( 'Stoich MR =',self.Stoich_MR,'for %s/%s'%(self.cea_oxName, self.cea_fuelName) ) self.find_min_mr() self.find_max_mr()
def test_get_ambient_Cf(self): """ test call to get_eqratio( Pc=100.0, MR=1.0, eps=40.0) """ C = CEA_Obj(oxName="LOX", fuelName="LH2", fac_CR=None) CFcea, CF, mode = C.get_PambCf(Pc=1000.0, MR=6.0, eps=40.0, Pamb=14.7 * 0.14823) self.assertAlmostEqual(CF, 1.8351, places=3) self.assertAlmostEqual(CFcea, 1.8351, places=3) # check frozen at throat CFcea, CFfrozen, mode = C.getFrozen_PambCf(Pc=1000.0, MR=6.0, eps=40.0, Pamb=14.7 * 0.12612, frozenAtThroat=1) self.assertAlmostEqual(CFcea, 1.7843, places=3) self.assertAlmostEqual(CFfrozen, 1.7843, places=3) # check frozen at chamber CFcea, CFfrozen, mode = C.getFrozen_PambCf(Pc=1000.0, MR=6.0, eps=40.0, Pamb=14.7 * 0.12376) self.assertAlmostEqual(CFcea, 1.7919, places=3) self.assertAlmostEqual(CFfrozen, 1.7919, places=3) del C
def test_getFrozen_IvacCstrTc(self): """ test call to getFrozen_IvacCstrTc( Pc=100.0, MR=1.0, eps=40.0, frozenAtThroat=0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH") i,c,t = C.getFrozen_IvacCstrTc( Pc=100.0, MR=1.0, eps=40.0, frozenAtThroat=0) self.assertAlmostEqual(i, 335.79399488107725, places=3) del C
def test_get_Throat_Isp(self): """ test call to get_Throat_Isp( Pc=100.0, MR=1.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=None) i = C.get_Throat_Isp(Pc=100.0, MR=1.0) self.assertAlmostEqual(i, 233.43895092017615, places=3) del C
def test_get_Chamber_Density(self): """ test call to get_Chamber_Density( Pc=100.0, MR=1.0, eps=40.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=None) d = C.get_Chamber_Density(Pc=100.0, MR=1.0, eps=40.0) self.assertAlmostEqual(d, 0.030572097913422087, places=3) del C
def test_get_Chamber_SonicVel(self): """ test call to get_Chamber_SonicVel( Pc=100.0, MR=1.0, eps=40.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=None) v = C.get_Chamber_SonicVel(Pc=100.0, MR=1.0, eps=40.0) self.assertAlmostEqual(v, 4187.834140603644, places=3) del C
def test_get_Throat_PcOvPe(self): """ test call to get_Throat_PcOvPe( Pc=100.0, MR=1.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=None) PcOvPe = C.get_Throat_PcOvPe(Pc=100.0, MR=1.0) self.assertAlmostEqual(PcOvPe, 1.7514818804078667, places=3) del C
def test_get_PcOvPe(self): """ test call to get_PcOvPe( Pc=100.0, MR=1.0, eps=40.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=None) PcOvPe = C.get_PcOvPe(Pc=100.0, MR=1.0, eps=40.0) self.assertAlmostEqual(PcOvPe, 550.3111877518063, places=3) del C
def test_get_MachNumber(self): """ test call to get_MachNumber( Pc=100.0, MR=1.0,eps=40.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=2.5) M = C.get_MachNumber(Pc=100.0, MR=1.0, eps=40.0) self.assertAlmostEqual(M, 4.444667300017029, places=3) del C
def test_get_Throat_PcOvPe(self): """ test call to get_Throat_PcOvPe( Pc=100.0, MR=1.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=2.5) PcOvPe = C.get_Throat_PcOvPe(Pc=100.0, MR=1.0) self.assertAlmostEqual(PcOvPe, 1.809632258591452, places=3) del C
def test_get_PcOvPe(self): """ test call to get_PcOvPe( Pc=100.0, MR=1.0, eps=40.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=2.5) PcOvPe = C.get_PcOvPe(Pc=100.0, MR=1.0, eps=40.0) self.assertAlmostEqual(PcOvPe, 568.3567593758571, places=3) del C
def make_pratL(oxName, fuelName, MR): C = CEA_Obj(oxName=oxName, fuelName=fuelName) pratL = [C.get_Pinj_over_Pcomb(Pc=Pc, MR=MR, fac_CR=cr) for cr in crL] plot(crL, pratL, label='%s/%s (Pinj/Pcomb)' % (oxName, fuelName), linewidth=2)
def test_froz_get_Throat_Isp(self): """ test call to get_Throat_Isp( Pc=100.0, MR=1.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=None) i = C.get_Throat_Isp(Pc=100.0, MR=1.0, frozen=1) self.assertAlmostEqual(i, 230.0679251436091, places=3) del C
def test_get_Tcomb(self): """ test call to get_Tcomb( Pc=100.0, MR=1.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=None) Tc = C.get_Tcomb(Pc=100.0, MR=1.0) self.assertAlmostEqual(Tc, 5464.953232850104, places=3) del C
def test_get_Chamber_SonicVel(self): """ test call to get_Chamber_SonicVel( Pc=100.0, MR=1.0, eps=40.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=2.5) v = C.get_Chamber_SonicVel(Pc=100.0, MR=1.0, eps=40.0) self.assertAlmostEqual(v, 4176.70139407, places=3) del C
def test_get_eps_at_PcOvPe(self): """ test call to get_eps_at_PcOvPe( Pc=100.0, MR=1.0, PcOvPe=1000.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=None) eps = C.get_eps_at_PcOvPe(Pc=100.0, MR=1.0, PcOvPe=1000.0) self.assertAlmostEqual(eps, 63.23132705083242, places=3) del C
def test_get_Chamber_H(self): """ test call to get_Chamber_H( Pc=100.0, MR=1.0, eps=40.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=2.5) h = C.get_Chamber_H(Pc=100.0, MR=1.0, eps=40.0) self.assertAlmostEqual(h, 143.61895142033558, places=3) del C
def test_get_MachNumber(self): """ test call to get_MachNumber( Pc=100.0, MR=1.0,eps=40.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=None) M = C.get_MachNumber(Pc=100.0, MR=1.0, eps=40.0) self.assertAlmostEqual(M, 4.44559589277226, places=3) del C
def test_get_Chamber_Density(self): """ test call to get_Chamber_Density( Pc=100.0, MR=1.0, eps=40.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=2.5) d = C.get_Chamber_Density(Pc=100.0, MR=1.0, eps=40.0) self.assertAlmostEqual(d, 0.028722, places=7) del C
def test_get_Chamber_H(self): """ test call to get_Chamber_H( Pc=100.0, MR=1.0, eps=40.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=None) h = C.get_Chamber_H(Pc=100.0, MR=1.0, eps=40.0) self.assertAlmostEqual(h, 164.75127480959486, places=3) del C
def test_get_Chamber_Cp(self): """ test call to get_Chamber_Cp( Pc=100.0, MR=1.0, eps=40.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=2.5) cpList = C.get_Chamber_Cp(Pc=100.0, MR=1.0, eps=40.0) self.assertAlmostEqual(cpList, 1.2114385955651787, places=7) del C
def test_get_Chamber_Cp(self): """ test call to get_Chamber_Cp( Pc=100.0, MR=1.0, eps=40.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=None) cpList = C.get_Chamber_Cp(Pc=100.0, MR=1.0, eps=40.0) self.assertAlmostEqual(cpList, 1.2168114560892265, places=3) del C
def test_get_Throat_Isp(self): """ test call to get_Throat_Isp( Pc=100.0, MR=1.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=2.5) i = C.get_Throat_Isp(Pc=100.0, MR=1.0) self.assertAlmostEqual(i, 233.38383866700576, places=3) del C
def test_get_Isp(self): """ test call to get_Isp( Pc=100.0, MR=1.0, eps=40.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=None) IspODE = C.get_Isp(Pc=100.0, MR=1.0, eps=40.0) self.assertAlmostEqual(IspODE, 351.7388076713265, places=3) del C
def test_froz_get_MachNumber(self): """ test call to get_MachNumber( Pc=100.0, MR=1.0,eps=40.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=None) M = C.get_MachNumber(Pc=100.0, MR=1.0, eps=40.0, frozen=1) self.assertAlmostEqual(M, 4.701424596388033, places=3) del C
def test_get_description(self): """ test call to get_description(self) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=None) ans = C.get_description() self.assertEqual(ans, 'LOX / MMH') del C
def test_full_cea_output(self): C = CEA_Obj(oxName="LOX", fuelName="LH2", fac_CR=None) s = C.get_full_cea_output(Pc=1000.0, MR=6.0, eps=40.0) #print( s ) ipos = s.find('Isp, LB-SEC/LB 154.4 431.2') self.assertGreater(ipos, 4000) del C
def test_get_eqratio(self): """ test call to get_eqratio( Pc=100.0, MR=1.0, eps=40.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=None) eq = C.get_eqratio(Pc=100.0, MR=1.0, eps=40.0) self.assertEqual(len(eq), 2) self.assertAlmostEqual(eq[0], 1.7363572550114232, places=3) del C