def test_get_Pinj_over_Pcomb(self): """ test call to get_Pinj_over_Pcomb( Pc=100.0, MR=1.0) """ C = CEA_Obj(oxName="LOX", fuelName="MMH", fac_CR=2.5) prat = C.get_Pinj_over_Pcomb(Pc=100.0, MR=1.0) self.assertAlmostEqual(prat, 1.0701504515007396, places=7) prat = C.get_Pinj_over_Pcomb(Pc=100.0, MR=1.0, fac_CR=3.0) self.assertAlmostEqual(prat, 1.0477109324175184, places=7) prat = C.get_Pinj_over_Pcomb(Pc=100.0, MR=1.0) self.assertAlmostEqual(prat, 1.0701504515007396, places=7) 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)
""" figure out Pcinj_face to get desired Pcomb_end (100 atm in example) """ from rocketcea.cea_obj import CEA_Obj cr = 2.5 # contraction ratio ispObj = CEA_Obj(oxName='LOX', fuelName='LH2', fac_CR=cr) # Use 100 atm to make output easy to read Pc = 100.0 * 14.6959 # use correlation to make 1st estimate of Pcinj_face / Pcomb_end PinjOverPcomb = 1.0 + 0.54 / cr**2.2 # use RocketCEA to refine initial estimate PinjOverPcomb = ispObj.get_Pinj_over_Pcomb(Pc=Pc * PinjOverPcomb, MR=6.0) # print results (noting that "COMB END" == 100.00 atm) s = ispObj.get_full_cea_output(Pc=Pc * PinjOverPcomb, MR=6.0, eps=40.0) print(s)
fuelName = 'MMH' ispObj = CEA_Obj(propName='', oxName=oxName, fuelName=fuelName) cr_min = 1.4 cr_max = 5.1 d_cr = 0.2 crL = [] cea_pratL = [] est_pratL = [] fac_CR = cr_min while fac_CR < cr_max: crL.append(fac_CR) cea_pratL.append(ispObj.get_Pinj_over_Pcomb(Pc=Pc, MR=MR, fac_CR=fac_CR)) est_pratL.append(1.0 + 0.54 / fac_CR**2.2) fac_CR += d_cr plot(crL, cea_pratL, label='CEA %s/%s' % (oxName, fuelName), linewidth=2) plot(crL, est_pratL, label='Est Eqn = 1.0 + 0.54 / CR**2.2', linewidth=2) legend(loc='best') grid(True) title('Rayleigh Pressure Ratio for %s at Pc=%g' % (ispObj.desc, Pc)) xlabel('Contraction Ratio') ylabel('Pinjector / Pchamber') savefig('pinj_over_pcomb.png', dpi=120) show()