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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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()
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
    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
Ejemplo n.º 8
0
    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
Ejemplo n.º 9
0
    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
Ejemplo n.º 10
0
    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
Ejemplo n.º 11
0
    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
Ejemplo n.º 12
0
    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
Ejemplo n.º 13
0
    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
Ejemplo n.º 14
0
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)
Ejemplo n.º 15
0
    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
Ejemplo n.º 16
0
    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
Ejemplo n.º 17
0
    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
Ejemplo n.º 18
0
    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
Ejemplo n.º 19
0
    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
Ejemplo n.º 20
0
    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
Ejemplo n.º 21
0
    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
Ejemplo n.º 22
0
    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
Ejemplo n.º 23
0
    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
Ejemplo n.º 24
0
    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
Ejemplo n.º 25
0
    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
Ejemplo n.º 26
0
    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
Ejemplo n.º 27
0
    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
Ejemplo n.º 28
0
    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
Ejemplo n.º 29
0
    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
Ejemplo n.º 30
0
    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