coefs_right =  np.fmax( coefs, 0 )
Mtot        = sum( coefs_left * np.array( masses ) )
print " total mass = ", Mtot, " g/mol "

print " Energy density = ", Htot / Mtot, " MJ/kg "

#ch.atomicBalance( names, comps, pivot=0 )
'''

print
print
print "============= sucrose + potassium nitrate "

print "============="
ch.reactionEnthalpy([
    'sucrose', 'potassium nitrate', 'potassium hydroxide', 'carbon monoxide',
    'water', 'nitrogen'
])
print "============="
ch.reactionEnthalpy([
    'sucrose', 'potassium nitrate', 'potassium hydroxide', 'carbon dioxide',
    'water', 'nitrogen'
])
print "============="
ch.reactionEnthalpy([
    'sucrose', 'potassium nitrate', 'potassium carbonate', 'carbon dioxide',
    'water', 'nitrogen'
])

print
print
print "============= glycerol + potassium nitrate "
coefs_right =  np.fmax( coefs, 0 )
Mtot        = sum( coefs_left * np.array( masses ) )
print " total mass = ", Mtot, " g/mol "

print " Energy density = ", Htot / Mtot, " MJ/kg "

#ch.atomicBalance( names, comps, pivot=0 )
'''



print
print 
print "============= sucrose + potassium nitrate "

print "============="; ch.reactionEnthalpy(  [ 'sucrose', 'potassium nitrate',   'potassium hydroxide', 'carbon monoxide', 'water', 'nitrogen' ] )
print "============="; ch.reactionEnthalpy(  [ 'sucrose', 'potassium nitrate',   'potassium hydroxide', 'carbon dioxide', 'water', 'nitrogen' ] )
print "============="; ch.reactionEnthalpy(  [ 'sucrose', 'potassium nitrate',   'potassium carbonate', 'carbon dioxide', 'water', 'nitrogen' ] )

print
print 
print "============= glycerol + potassium nitrate "
print "============="; ch.reactionEnthalpy(  [ 'glycerol', 'potassium nitrate',   'potassium hydroxide', 'carbon monoxide', 'water', 'nitrogen' ] )
print "============="; ch.reactionEnthalpy(  [ 'glycerol', 'potassium nitrate',   'potassium hydroxide', 'carbon dioxide', 'water', 'nitrogen' ] )
print "============="; ch.reactionEnthalpy(  [ 'glycerol', 'potassium nitrate',   'potassium carbonate', 'carbon dioxide', 'water', 'nitrogen' ] )

print
print 
print "============= citric acid + potassium nitrate "
print "============="; ch.reactionEnthalpy(  [ 'citric acid', 'potassium nitrate',   'potassium hydroxide', 'carbon monoxide', 'water', 'nitrogen' ] )
print "============="; ch.reactionEnthalpy(  [ 'citric acid', 'potassium nitrate',   'potassium hydroxide', 'carbon dioxide', 'water', 'nitrogen' ] )
Example #3
0
( 'citric acid',      'calcium nitrate',    [ 'calcium carbonate',   'carbon dioxide',  'water', 'nitrogen' ] ),

( 'aluminium',        'potassium permanganate', [ 'potassium aluminate', 'aluminium oxide', 'manganese'     ] ),
( 'aluminium',        'potassium nitrate',      [ 'potassium aluminate', 'aluminium oxide', 'nitrogen'      ] ),
( 'aluminium',        'ammonium nitrate',       [ 'aluminium oxide', 'water', 'nitrogen' ] ),
( None,               'ammonium nitrate',       ['water', 'nitrogen', 'oxygen'           ] ),
( 'amonium chloride', 'ammonium nitrate',       ['water', 'nitrogen', 'hydrochloric acid'] ),
( 'carbon',           'ammonium nitrate',       [ 'carbon monoxide', 'water', 'nitrogen' ] ),
( 'carbon',           'ammonium nitrate',       [ 'carbon dioxide',  'water', 'nitrogen' ] ),
( 'sucrose',          'ammonium nitrate',       [ 'carbon monoxide', 'water', 'nitrogen' ] ),
( 'sucrose',          'ammonium nitrate',       [ 'carbon dioxide',  'water', 'nitrogen' ] ),

]


fout  = open( 'rocket_fuels.csv','w')

for reaction in reactions:
	fuel     = reaction[0]
	oxidizer = reaction[1]
	if  fuel is None:
		names = [oxidizer] + reaction[2] 
	else:
		names = [fuel] + [oxidizer] + reaction[2] 
	results = ch.reactionEnthalpy( names, echo=False )
	s = str(fuel) + '; ' + oxidizer + '; ' + ch.list2csv( results, separator='; ' )
	fout.write( s + '\n')


fout.close()