#!/usr/bin/python

import re
import numpy as np
import sys
import ChemUtils as ch

#print ch.str2composition( sys.argv[1] )
#sides =  ch.parseReaction( 'Fe+O2=Fe2O3' )
#sides =  ch.parseReaction( 'C12H22O11+KNO3=H2O+CO2+K2CO3+N2' )
#print sides
#print ch.reaction2string( sides )
#print ch.balanceReactionString( 'Fe+O2=Fe2O3' )

print ch.balanceReactionString( 'C12H22O11+KNO3=H2O+CO2+K2CO3+N2' )

#print atomicBalance( reaction[0], reaction[1] )


#!/usr/bin/python

import re
import numpy as np
import sys
import ChemUtils as ch

#print ch.str2composition( sys.argv[1] )
#sides =  ch.parseReaction( 'Fe+O2=Fe2O3' )
#sides =  ch.parseReaction( 'C12H22O11+KNO3=H2O+CO2+K2CO3+N2' )
#print sides
#print ch.reaction2string( sides )
#print ch.balanceReactionString( 'Fe+O2=Fe2O3' )

print ch.balanceReactionString('C12H22O11+KNO3=H2O+CO2+K2CO3+N2')

#print atomicBalance( reaction[0], reaction[1] )
#!/usr/bin/python

import re
import numpy as np
import sys
import ChemUtils as ch
'''
names = ( 'sucrose', 'potassium nitrate',   'potassium carbonate', 'carbon dioxide', 'water', 'nitrogen' )

print "============"
comps  = ch.names2comps( names, ch.substance_dict ) 
ch.printNiceMap( names, comps )

print "============"
masses = ch.comps2mass ( comps, ch.element_dict   )
ch.printNiceMap( names, masses )

print "============"
coefs  = ch.atomicBalance( names, comps, pivot=0 )
ch.printNiceMap( names, coefs )

print "============"
Hs = ch.takeSubstanceParam( names, 'enthalpy' )
ch.printNiceMap( names, Hs )

Htot = sum( coefs * np.array(Hs) )
print " enthalpy_change = ", Htot, " kJ/mol "

coefs_left  = -np.fmin( coefs, 0 );
coefs_right =  np.fmax( coefs, 0 )
Mtot        = sum( coefs_left * np.array( masses ) )
( '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()
    ('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()
#!/usr/bin/python

import re
import numpy as np
import sys
import ChemUtils as ch


'''
names = ( 'sucrose', 'potassium nitrate',   'potassium carbonate', 'carbon dioxide', 'water', 'nitrogen' )

print "============"
comps  = ch.names2comps( names, ch.substance_dict ) 
ch.printNiceMap( names, comps )

print "============"
masses = ch.comps2mass ( comps, ch.element_dict   )
ch.printNiceMap( names, masses )

print "============"
coefs  = ch.atomicBalance( names, comps, pivot=0 )
ch.printNiceMap( names, coefs )

print "============"
Hs = ch.takeSubstanceParam( names, 'enthalpy' )
ch.printNiceMap( names, Hs )

Htot = sum( coefs * np.array(Hs) )
print " enthalpy_change = ", Htot, " kJ/mol "

coefs_left  = -np.fmin( coefs, 0 );