Let's check what version of Cantera you have installed
In [ ]:
    
import cantera
print cantera.__version__
    
In [ ]:
    
from rmgpy.chemkin import *
from rmgpy.tools.canteraModel import *
from rmgpy.tools.plot import parseCSVData
from rmgpy.species import Species
from IPython.display import display, Image
    
Load the species and reaction from the RMG-generated chemkin file chem_annotated.inp and species_dictionary.txt file found in your chemkin folder after running a job.
In [ ]:
    
speciesList, reactionList = loadChemkinFile('data/minimal_model/chem_annotated.inp',
                                            'data/minimal_model/species_dictionary.txt',
                                           'data/minimal_model/tran.dat')
    
Set the reaction conditions
In [ ]:
    
# Find the species: ethane and methane
user_ethane = Species().fromSMILES('CC')
user_methane = Species().fromSMILES('C')
speciesDict = getRMGSpeciesFromUserSpecies([user_ethane, user_methane], speciesList)
ethane = speciesDict[user_ethane]
methane = speciesDict[user_methane]
sensitiveSpecies = [ethane, methane]
#reactorTypeList = ['IdealGasReactor']
reactorTypeList = ['IdealGasConstPressureTemperatureReactor']
molFracList=[{ethane: 1}]
Tlist = ([1300],'K')#,1500,2000],'K')
Plist = ([1],'atm')
reactionTimeList = ([0.5], 'ms')
    
In [ ]:
    
# Create cantera object, loading in the species and reactions
job = Cantera(speciesList=speciesList, reactionList=reactionList, outputDirectory='temp', sensitiveSpecies=sensitiveSpecies)
# The cantera file must be created from an associated chemkin file
# We can either load the Model from the initialized set of rmg species and reactions
job.loadModel()
# Or load it from a chemkin file by uncommenting the following line:
#job.loadChemkinModel('data/minimal_model/chem_annotated.inp',transportFile='data/minimal_model/tran.dat')
# Generate the conditions based on the settings we declared earlier
job.generateConditions(reactorTypeList, reactionTimeList, molFracList, Tlist, Plist)
# Simulate and plot
alldata = job.simulate()
job.plot(alldata)
    
In [ ]:
    
# Show the plots in the ipython notebook
for i, condition in enumerate(job.conditions):
    print 'Cantera Simulation: Condition {0} Mole Fractions'.format(i+1)
    display(Image(filename="temp/{0}_mole_fractions.png".format(i+1)))
    
    print 'Cantera Simulation: Condition {0} Ethane Reaction Sensitivity'.format(i+1)
    display(Image(filename="temp/{0}_ethane(1)_sensitivity.png".format(i+1)))
    
In [ ]:
    
# Let's compare against the same simulation in RMG
# Create an input file
input = '''
database(
    thermoLibraries = ['primaryThermoLibrary'],
    reactionLibraries = [],
    seedMechanisms = [],
    kineticsDepositories = 'default',
    kineticsFamilies = 'default',
    kineticsEstimator = 'rate rules',
)
species(
    label = "ethane",
    structure = SMILES("CC"))
species(
    label = "methane",
    structure = SMILES("C"))
simpleReactor(
    temperature = (1300,"K"), 
    pressure = (1,"atm"),
    initialMoleFractions={
        "ethane": 1
    },
    terminationTime = (0.5,"ms"),
    sensitivity=['ethane','methane']
)
model(
    toleranceMoveToCore = 0.04,
)
options(
    saveSimulationProfiles = True,
)
'''
f = open('temp/temp_input.py', 'wb')
f.write(input)
f.close()
    
In [ ]:
    
from rmgpy.tools.sensitivity import runSensitivity
runSensitivity('temp/temp_input.py', 'data/minimal_model/chem_annotated.inp', 'data/minimal_model/species_dictionary.txt')
    
In [ ]:
    
print 'RMG Native Simulation: Species Mole Fractions'
display(Image(filename="temp/solver/simulation_1_19.png"))
print 'RMG Native Simulation: Ethane Reaction Sensitivity'
display(Image(filename="temp/solver/sensitivity_1_SPC_1_reactions.png"))
    
In [ ]:
    
# Let's also compare against the same simulation and sensitivity analysis that was conducted in CHEMKIN
# and saved as a .csv file
time, dataList = parseCSVData('data/minimal_model/chemkin_mole_fractions.csv')
SimulationPlot(xVar=time,yVar=dataList).plot('temp/chemkin_mole_fractions.png')
print 'CHEMKIN Simulation: Mole Fractions'
display(Image(filename="temp/chemkin_mole_fractions.png"))
    
In [ ]:
    
time, dataList = parseCSVData('data/minimal_model/chemkin_sensitivity_ethane.csv')
ReactionSensitivityPlot(xVar=time,yVar=dataList).barplot('temp/chemkin_ethane_sensitivity.png')
print 'CHEMKIN Simulation: Ethane Reaction Sensitivity'
display(Image(filename="temp/chemkin_ethane_sensitivity.png"))