Exemplo n.º 1
0
"""
model the XLR-134
"""
from rocketisp.rocket_isp import RocketThruster
from rocketisp.geometry import Geometry
from rocketisp.stream_tubes import CoreStream
from rocketisp.efficiencies import Efficiencies
    
geomObj = Geometry(Rthrt=1,
                   CR=3.0, eps=767.9,  pcentBell=80, 
                   RupThroat=1.5, RdwnThroat=1.0, RchmConv=1.0, cham_conv_deg=30,
                   LchmOvrDt=3.10, LchmMin=2.0, LchamberInp=None)
                   
effObj = Efficiencies()
effObj.set_const('ERE', (490.45-8.6)/490.45)
core = CoreStream( geomObj, effObj, oxName='LOX', fuelName='LH2',  MRcore=6.0,
                   Pc=510 )
             

R = RocketThruster(name='xlr134',coreObj=core, injObj=None)
             
R.scale_Rt_to_Thrust( 500 , Pamb=0.0 , use_scipy=False )
R.summ_print()

Exemplo n.º 2
0
    from rocketisp.geometry import Geometry
    from rocketisp.efficiencies import Efficiencies

    geomObj = Geometry(Rthrt=5.868 / 2,
                       CR=2.5,
                       eps=150,
                       pcentBell=80,
                       RupThroat=1.5,
                       RdwnThroat=1.0,
                       RchmConv=1.0,
                       cham_conv_deg=30,
                       LchmOvrDt=3.10,
                       LchmMin=2.0,
                       LchamberInp=16)

    effObj = Efficiencies()
    effObj.set_const('Mix', 0.997329)
    effObj.set_const('Em', 0.99644)
    effObj.set_const('Kin', 0.975011)
    effObj.set_const('BL', 0.9795)
    effObj.set_const('Div', 0.994775)

    core = CoreStream(geomObj,
                      effObj,
                      oxName='N2O4',
                      fuelName='MMH',
                      MRcore=1.85,
                      Pc=150,
                      CdThroat=0.995,
                      Pamb=14.7,
                      pcentFFC=14.0,
Exemplo n.º 3
0
dpOxInp = 200
dpFuelInp = 200

geomObj = Geometry(Rthrt=Rt,
                   CR=CR,
                   eps=eps,
                   pcentBell=pcentBell,
                   RupThroat=0.5,
                   RdwnThroat=1.0,
                   RchmConv=0.5,
                   cham_conv_deg=30,
                   LchmOvrDt=3,
                   LchmMin=2.0,
                   LchamberInp=Lcham)

effObj = Efficiencies()
effObj.set_const('ERE', 0.975)
effObj.set_const('Noz', 0.933177)  # Huzel based on frozen Isp

core = CoreStream(geomObj,
                  effObj,
                  oxName=oxName,
                  fuelName=fuelName,
                  MRcore=MR,
                  Pc=Pc,
                  Pamb=14.7,
                  CdThroat=1.0,
                  adjCstarODE=0.978196,
                  adjIspIdeal=1.0084418978404621)

C = RocketThruster(name='Huzel A-1', coreObj=core, calc_CdThroat=False)
Exemplo n.º 4
0
from rocketisp.geometry import Geometry
from rocketisp.efficiencies import Efficiencies
from rocketisp.stream_tubes import CoreStream
from rocketisp.rocket_isp import RocketThruster

# create CoreStream with area ratio=375:1, Pc=137, FFC=30% and effERE=0.99
C = CoreStream( geomObj=Geometry(eps=375),
                effObj=Efficiencies(ERE=0.99), pcentFFC=30,
                oxName='N2O4', fuelName='N2H4',  MRcore=1.26 ,
                Pc=137, Pamb=0)

# instantiate RocketThruster
R = RocketThruster(name='100 lbf Aerojet HiPAT R-4D', coreObj=C)

R.scale_Rt_to_Thrust( 100 , Pamb=0.0 )
R.summ_print()

#C.effObj.summ_print()
Exemplo n.º 5
0
dpOxInp = 25
dpFuelInp = 25

geomObj = Geometry(Rthrt=Rt,
                   CR=CR,
                   eps=eps,
                   pcentBell=pcentBell,
                   RupThroat=0.5,
                   RdwnThroat=1.0,
                   RchmConv=0.5,
                   cham_conv_deg=30,
                   LchmOvrDt=3,
                   LchmMin=2.0,
                   LchamberInp=Lcham)

effObj = Efficiencies()
effObj.set_const('ERE', 0.98)
effObj.set_const('Noz', 0.946901)

core = CoreStream(geomObj,
                  effObj,
                  oxName=oxName,
                  fuelName=fuelName,
                  MRcore=MR,
                  Pc=Pc,
                  Pamb=14.7,
                  CdThroat=1.0,
                  adjCstarODE=0.975554,
                  adjIspIdeal=1.01214)

C = RocketThruster(name='Huzel A-4', coreObj=core, calc_CdThroat=False)
Exemplo n.º 6
0
"""
Apollo SPS, Aerojet AJ10-137 (Apollo Service Module Engine)
"""
from rocketisp.rocket_isp import RocketThruster
from rocketisp.geometry import Geometry
from rocketisp.stream_tubes import CoreStream
from rocketisp.efficiencies import Efficiencies

# create basic Geometry. 
# Use "place-holder" of 1 inch for throat radius... correct later with "scale_Rt_to_Thrust"
geomObj = Geometry(Rthrt=1,
                   CR=2.5, eps=62.5,  pcentBell=72.3, 
                   RupThroat=1.5, RdwnThroat=1.0, RchmConv=1.0, cham_conv_deg=30,
                   LchmOvrDt=3.10, LchmMin=2.0, LchamberInp=None)
                   
effObj = Efficiencies()
effObj.set_const('ERE', 0.98) # don't know injector details so set effERE=0.98

# It's an ablative chamber, so some FFC (fuel film cooling) is required... guess about 15%
core = CoreStream( geomObj=geomObj, effObj=effObj, pcentFFC=15.0,
                   oxName='N2O4', fuelName='A50',  MRcore=1.6, Pc=100 )
             
R = RocketThruster(name='Apollo SPS',coreObj=core)

# scale geometry to give 20,500 lbf of thrust for current conditions
R.scale_Rt_to_Thrust( 20500 , Pamb=0.0  )

# figure out best mixture ratio to run the engine.
R.set_mr_to_max_ispdel()

# re-scale geometry to give 20,500 lbf of thrust after MR change
Exemplo n.º 7
0
    def test_overall_Isp_efficiency(self):
        """test overall Isp efficiency"""

        E = Efficiencies(Isp=0.95)

        self.assertAlmostEqual(E('Isp'), .95, places=5)
Exemplo n.º 8
0
def calc_PI_adiabatic_isp(oxName='N2O4', fuelName='MMH', 
                          eps=10.0, pcentBell=80.0, Pc=100., Fvac=1000.0,
                          NumRuns=20, do_show=True):
    # ============ use RocketCEA to find MR range ===================
    mc = MR_Temperature_Limits( oxName=oxName, fuelName=fuelName, 
                                PcNominal=Pc, epsNominal=eps)

    mr_peak = MR_Peak_At_EpsPc(mc, pc=Pc, eps=eps, ispType='CEAODE', # ispType can be CEAODE, CEAFROZEN
                               NterpSize=100)
                               
    print('Peak IspODE=%g sec at MR ='%mr_peak.ispPeak,  mr_peak.mrPeak)
    print() 
    print('MR at 97% Isp (on low  side) =', mr_peak.calc_mrLow_minus_NPcentIsp())
    print('MR at 97% Isp (on high side) =', mr_peak.calc_mrHigh_minus_NPcentIsp())

    mr_lo = round( mr_peak.mrLeftOfPeak - (mr_peak.mrRightOfPeak - mr_peak.mrLeftOfPeak)/10.0, 2)
    mr_hi = round( mr_peak.mrRightOfPeak, 2)
    delMR = (mr_hi - mr_lo) / (NumRuns - 1)


    geomObj = Geometry(Rthrt=5.868/2,
                       CR=2.5, eps=eps,  pcentBell=pcentBell, 
                       RupThroat=1.5, RdwnThroat=1.0, RchmConv=1.0, cham_conv_deg=30,
                       LchmOvrDt=3.10, LchmMin=2.0, LchamberInp=16)

    effObj = Efficiencies()


    core = CoreStream( geomObj, effObj, oxName=oxName, fuelName=fuelName,  MRcore=1.6,
                       Pc=Pc)

    R = RocketThruster(name='sample',coreObj=core, injObj=None, calc_CdThroat=False, noz_regen_eps=eps)


    ispodeL = []
    ispodkL  = []
    isptdkL  = []
    ispPIL  = []
    mrL     = []


    MR = mr_lo
    for _ in range(NumRuns):
        mrL.append( MR )
        
        core.reset_attr( 'MRcore', MR, re_evaluate=True)
        R.scale_Rt_to_Thrust( Fvac, Pamb=0.0,  use_scipy=False )
        
        ispodeL.append( R.coreObj.IspODE )
        ispodkL.append( R.coreObj.IspODK )
        isptdkL.append( R.coreObj.IspODK * R.coreObj.effObj('Div') )
        ispPIL.append( R.coreObj.IspODK * R.coreObj.effObj('Div') * R.coreObj.effObj('BL') )
        
        MR += delMR

    fig, ax = plt.subplots( figsize=(8,6) )


    plt.plot(mrL, ispodeL, label='IspODE', color=COLORL[0])
    plt.plot(mrL, ispodkL, label='IspODK', color=COLORL[1])
    plt.plot(mrL, isptdkL, label='IspTDK', color=COLORL[2])
    plt.plot(mrL, ispPIL, label='IspPI', color=COLORL[3])


    # ======= find peaks ======
    mr_ode_terp = InterpProp(mrL, ispodeL)
    mr_ode_Peak, isp_ode_peak = gold_search_max(mr_ode_terp, mrL[0], mrL[-1], tol=1.0e-5)

    mr_odk_terp = InterpProp(mrL, ispodkL)
    mr_odk_Peak, isp_odk_peak = gold_search_max(mr_odk_terp, mrL[0], mrL[-1], tol=1.0e-5)

    mr_tdk_terp = InterpProp(mrL, isptdkL)
    mr_tdk_Peak, isp_tdk_peak = gold_search_max(mr_tdk_terp, mrL[0], mrL[-1], tol=1.0e-5)

    mr_pi_terp = InterpProp(mrL, ispPIL)
    mr_pi_Peak, isp_pi_peak = gold_search_max(mr_pi_terp, mrL[0], mrL[-1], tol=1.0e-5)

    # show  ========= optimum MR difference ========
    def span_mrpeak( isL ):
        minpt = min(isL)
        maxpt = max(isL)
        span = maxpt - minpt
        return [maxpt-0.8*span, maxpt]

    plt.plot([mr_ode_Peak, mr_ode_Peak], span_mrpeak(ispodeL), '--', label='MRode=%.2f'%mr_ode_Peak, linewidth=2, color=COLORL[0])
    plt.plot([mr_odk_Peak, mr_odk_Peak], span_mrpeak(ispodkL), '--', label='MRodk=%.2f'%mr_odk_Peak, linewidth=2, color=COLORL[1])
    plt.plot([mr_tdk_Peak, mr_tdk_Peak], span_mrpeak(isptdkL), '--', label='MRtdk=%.2f'%mr_tdk_Peak, linewidth=2, color=COLORL[2])
    plt.plot([mr_pi_Peak, mr_pi_Peak], span_mrpeak(ispPIL), '--', label='MRpi=%.2f'%mr_pi_Peak, linewidth=2, color=COLORL[3])

    isp_pi_peak = abs(isp_pi_peak)
    plt.text( mr_pi_Peak, isp_pi_peak, '%i'%int(isp_pi_peak), ha='left', va='bottom', transform=ax.transData, color=COLORL[3]  )

    plt.legend()
    plt.title('Perfect Injector')
    plt.title( "%s/%s RocketIsp\nPerfect Injector w Adiabatic Wall\nFvac=%.0f lbf, Pc=%.0f psia, AR=%.0f:1, %%Bell=%.0f%%"%\
               (oxName, fuelName, Fvac, Pc, eps, pcentBell))

    plt.ylabel('Isp (sec)')
    plt.xlabel('Mixture Ratio')


    png_name = '%s_%s_Fvac%g_Pc%g_eps%g.png'%(oxName, fuelName, int(Fvac), Pc, eps)
    plt.savefig(png_name, dpi=120)

    if do_show:
        plt.show()
Exemplo n.º 9
0
from rocketisp.efficiencies import Efficiencies
from rocketisp.examples.compare_vals import compare_header, compare

geomObj = Geometry(Rthrt=3,
                   CR=2.5,
                   eps=55,
                   pcentBell=80,
                   RupThroat=1.5,
                   RdwnThroat=1.0,
                   RchmConv=1.0,
                   cham_conv_deg=30,
                   LchmOvrDt=3.10,
                   LchmMin=2.0,
                   LchamberInp=None)

effObj = Efficiencies()
effObj.set_const('ERE', 0.97)
core = CoreStream(geomObj=geomObj,
                  effObj=effObj,
                  oxName='N2O4',
                  fuelName='MMH',
                  MRcore=1.65,
                  Pc=125)

R = RocketThruster(name='Shuttle OMS', coreObj=core, injObj=None)

R.scale_Rt_to_Thrust(6000, Pamb=0.0)

compare_header()
compare('Fvacuum', 6000, core('FvacTotal'))
compare('Isp Vacuum', 313.2, core('IspDel'))
Exemplo n.º 10
0
from rocketisp.rocket_isp import RocketThruster
from rocketisp.injector import Injector

geomObj = Geometry(Rthrt=1,
                   CR=2.5,
                   eps=20.0,
                   pcentBell=80,
                   RupThroat=1.5,
                   RdwnThroat=1.0,
                   RchmConv=1.0,
                   cham_conv_deg=30,
                   LchmOvrDt=3.10,
                   LchmMin=2.0,
                   LchamberInp=None)

effObj = Efficiencies()

# It's an ablative chamber, so some FFC (fuel film cooling) is required... guess about 10%
C = CoreStream(geomObj=geomObj,
               effObj=effObj,
               pcentFFC=0.0,
               Pamb=0.0,
               oxName='N2O4',
               fuelName='MMH',
               MRcore=1.9,
               Pc=500)

I = Injector(
    C,
    Tox=None,
    Tfuel=None,
Exemplo n.º 11
0
from rocketisp.geometry import Geometry
from rocketisp.efficiencies import Efficiencies
from rocketisp.stream_tubes import CoreStream

C = CoreStream(geomObj=Geometry(eps=35),
               effObj=Efficiencies(ERE=0.98, Noz=0.97),
               oxName='LOX',
               fuelName='CH4',
               MRcore=3.6,
               Pc=500,
               Pamb=14.7)

for name in ['IspODE', 'IspDel', 'IspODF']:
    print('%8s =' % name, '%.1f' % C(name))
print('%8s =' % 'IspAmb', '%.1f' % C('IspAmb'), C('noz_mode'))

C.summ_print()
Exemplo n.º 12
0
from plothelp.plot_help import Figure, sample_data, Curve, plt
from plothelp.plot_help import CWheel

geomObj = Geometry(Rthrt=1,
                   CR=2.5,
                   eps=20.0,
                   pcentBell=80,
                   RupThroat=1.5,
                   RdwnThroat=1.0,
                   RchmConv=1.0,
                   cham_conv_deg=30,
                   LchmOvrDt=3.10,
                   LchmMin=2.0,
                   LchamberInp=None)

effObj = Efficiencies(Vap=0.99, Mix=0.99)

# It's an ablative chamber, so some FFC (fuel film cooling) is required... guess about 10%
C = CoreStream(geomObj=geomObj,
               effObj=effObj,
               pcentFFC=0.0,
               Pamb=0.0,
               oxName='N2O4',
               fuelName='MMH',
               MRcore=1.9,
               Pc=500)

mrr = MRrange(C.ceaObj, Pc=C.Pc, eps=geomObj.eps, edge_frac=0.97)
mrlo, mrhi = mrr.get_mr_range()
print('mrlo, mrhi', mrlo, mrhi)
mrcoreL = np.linspace(mrlo, mrhi,
Exemplo n.º 13
0
from rocketisp.geometry import Geometry
from rocketisp.efficiencies import Efficiencies
from rocketisp.stream_tubes import CoreStream
from rocketisp.rocket_isp import RocketThruster

# create CoreStream with area ratio=375:1, Pc=137, FFC=30% and effERE=0.99
C = CoreStream(geomObj=Geometry(eps=375),
               effObj=Efficiencies(ERE=0.99),
               pcentFFC=30,
               oxName='N2O4',
               fuelName='N2H4',
               MRcore=1.26,
               Pc=137,
               Pamb=0)

# instantiate RocketThruster
R = RocketThruster(name='100 lbf Aerojet HiPAT R-4D', coreObj=C)

R.scale_Rt_to_Thrust(100, Pamb=0.0)
R.summ_print()

#C.effObj.summ_print()