示例#1
0
    def running_full_shock_tube(self,processor=None,
                                           experiment_dictonary:dict={},
                                           kineticSens = 1,
                                           physicalSens = 1,
                                           dk = .01,
                                           exp_number=1):
        shock_tube = st.shockTube(pressure = experiment_dictonary['pressure'],
                     temperature = experiment_dictonary['temperature'],
                     observables = experiment_dictonary['observables'],
                     kineticSens = kineticSens,
                     physicalSens = physicalSens,
                     conditions = experiment_dictonary['conditions'],
                     initialTime = experiment_dictonary['initialTime'],
                     finalTime = experiment_dictonary['finalTime'],
                     thermalBoundary = experiment_dictonary['thermalBoundary'],
                     mechanicalBoundary = experiment_dictonary['mechanicalBoundary'],
                     processor = processor,
                     save_timeHistories = 1,
                     save_physSensHistories = 1,
                     moleFractionObservables = experiment_dictonary['moleFractionObservables'],
                     concentrationObservables = experiment_dictonary['concentrationObservables'],
                     fullParsedYamlFile = experiment_dictonary)
        
        csv_paths = [x for x in  experiment_dictonary['moleFractionCsvFiles'] + experiment_dictonary['concentrationCsvFiles'] if x is not None]
        exp_data = shock_tube.importExperimentalData(csv_paths)
        
        shock_tube.run()
        ########################################################################

        #check this tomorrow 
        ################################################################################
        int_ksens_exp_mapped= shock_tube.map_and_interp_ksens()#ksens is wiped on rerun so int it before
        shock_tube.sensitivity_adjustment(temp_del = dk)
        shock_tube.sensitivity_adjustment(pres_del = dk)
        shock_tube.species_adjustment(dk)
        ############################################### check to make sure these aren't effected 
        int_tp_psen_against_experimental = shock_tube.interpolate_experimental([shock_tube.interpolate_physical_sensitivities(index=1),
                                                                           shock_tube.interpolate_physical_sensitivities(index=2)])
    
        int_spec_psen_against_experimental = shock_tube.interpolate_experimental(pre_interpolated=shock_tube.interpolate_species_sensitivities())
    ###############saving the shock tube experimental interpolated time history     
        single_data = shock_tube.interpolate_experimental(single=shock_tube.timeHistories[0])
        shock_tube.savingInterpTimeHistoryAgainstExp(single_data)
        #tab starting here tomorrow
        shock_tube.interpolatePressureandTempToExperiment(shock_tube,exp_data)
    ###############  ###############  
        experiment = self.build_single_exp_dict(exp_number,
                                           shock_tube,
                                           int_ksens_exp_mapped,
                                           int_tp_psen_against_experimental,
                                           int_spec_psen_against_experimental,
                                           experimental_data = exp_data)
        
        #write test case and check if we can get as far as just returnign the experiment
        return experiment
示例#2
0
)  #get rid of this at some point with central test script or when package is built
os.chdir('../../')

import MSI.simulations.instruments.shock_tube as st
import MSI.cti_core.cti_processor as pr
import cantera as ct

test_p = pr.Processor('MSI/data/test_data/FFCM1.cti')
test_tube = st.shockTube(pressure=1.74,
                         temperature=1880,
                         observables=['OH', 'H2O'],
                         kineticSens=1,
                         physicalSens=0,
                         conditions={
                             'H2O': .013,
                             'O2': .0099,
                             'H': .0000007,
                             'Ar': 0.9770993
                         },
                         initialTime=0,
                         finalTime=0.1,
                         thermalBoundary='Adiabatic',
                         mechanicalBoundary='constant pressure',
                         processor=test_p,
                         save_timeHistories=1)
test_tube.run()
test_tube.sensitivity_adjustment(temp_del=.01)
test_tube.species_adjustment(spec_del=.01)
print(test_tube.timeHistories)
test_tube.write_time_histories()
示例#3
0
    for ii,specie in enumerate(species_list):
        if specie !=0.0:
          conditions_dict[species_string[ii]] = specie
          if species_string[ii] != 'Ar':
              temp_uncertainty.append(uncertainty_string[ii])
              temp_uncertainty_species.append(species_string[ii])
              
    
    print(conditions_dict)
    test_tube = st.shockTube(pressure=Press,
                             temperature=Temp,
                             observables=['OH'],
                             kineticSens=0,
                             physicalSens=0,
                             conditions=conditions_dict,
                             initialTime=0,
                             finalTime=0.02,
                             thermalBoundary='Adiabatic',
                             mechanicalBoundary='constant volume',
                             processor=test_p,
                             save_timeHistories=1,
                             save_physSensHistories=1)

    test_tube.run()
    time_History = test_tube.timeHistory
    
    fall_off = time_History['H'][0]/time_History['H']
    temp=None
    for j,value in enumerate(fall_off):
        if value>5:
            temp = j-1
#                         processor=test_p,
#                         save_timeHistories=1,
#                         save_physSensHistories=1)

test_p = pr.Processor('MSI/data/test_data/FFCM1.cti')

test_tube = st.shockTube(pressure=0.986923,
                         temperature=295,
                         observables=['CH3', 'OH', 'HO2'],
                         kineticSens=1,
                         physicalSens=0,
                         conditions={
                             'CH3': 1.2094157562676408e-06,
                             'HO2': 7.614839946870331e-07,
                             'OH': 3.041863871824672e-06,
                             'H2O2': 0.0001531112203220986,
                             'CH4': 0.0007737003154574132,
                             'H2O': 0.9990681757005978
                         },
                         initialTime=0,
                         finalTime=0.003,
                         thermalBoundary='Adiabatic',
                         mechanicalBoundary='constant volume',
                         processor=test_p,
                         save_timeHistories=1,
                         save_physSensHistories=1)

test_tube.run()
k_sens = test_tube.kineticSensitivities
reactions = test_tube.processor.solution.reaction_equations()

示例#5
0
    def run_shocktube(self, ksens_marker: int = 1, psens_marker: int = 1):
        '''
        Function calls and runs a shock tube simulation with the appropriate 
        ksens_marker and psens_marker depending on the situation. 

        Parameters
        ----------
        ksens_marker : int, optional
            If 1 kinetic sensitivity on, if 0 off. 
            The default is 1.
        psens_marker : TYPE, optional
            If 1 physical sensitivity on, if 0 off. 
            The default is 1.

        Returns
        -------
        shock_tube : shock_tube_object
            Shock tube simulation and all variables, functions and
            object it contains.

        '''
        if ksens_marker == 0 and psens_marker == 0:
            shock_tube = st.shockTube(
                pressure=self.pressure,
                temperature=self.temperature,
                observables=self.observables,
                kineticSens=0,
                physicalSens=0,
                conditions=self.conditions,
                initialTime=self.initialTime,
                finalTime=self.finalTime,
                thermalBoundary=self.thermalBoundary,
                mechanicalBoundary=self.mechanicalBoundary,
                processor=self.processor,
                save_timeHistories=1,
                save_physSensHistories=0,
                moleFractionObservables=self.moleFractionObservables,
                concentrationObservables=self.concentrationObservables,
                fullParsedYamlFile=self.fullParsedYamlFile,
                time_shift_value=self.timeshift)
            shock_tube.run()

            return shock_tube

        elif ksens_marker == 1 and psens_marker == 0:
            shock_tube = st.shockTube(
                pressure=self.pressure,
                temperature=self.temperature,
                observables=self.observables,
                kineticSens=1,
                physicalSens=0,
                conditions=self.conditions,
                initialTime=self.initialTime,
                finalTime=self.finalTime,
                thermalBoundary=self.thermalBoundary,
                mechanicalBoundary=self.mechanicalBoundary,
                processor=self.processor,
                save_timeHistories=1,
                save_physSensHistories=0,
                moleFractionObservables=self.moleFractionObservables,
                concentrationObservables=self.concentrationObservables,
                fullParsedYamlFile=self.fullParsedYamlFile,
                time_shift_value=self.timeshift)
            shock_tube.run()
            return shock_tube

        elif ksens_marker == 0 and psens_marker == 1:
            shock_tube = st.shockTube(
                pressure=self.pressure,
                temperature=self.temperature,
                observables=self.observables,
                kineticSens=0,
                physicalSens=1,
                conditions=self.conditions,
                initialTime=self.initialTime,
                finalTime=self.finalTime,
                thermalBoundary=self.thermalBoundary,
                mechanicalBoundary=self.mechanicalBoundary,
                processor=self.processor,
                save_timeHistories=1,
                save_physSensHistories=0,
                moleFractionObservables=self.moleFractionObservables,
                concentrationObservables=self.concentrationObservables,
                fullParsedYamlFile=self.fullParsedYamlFile,
                time_shift_value=self.timeshift)
            shock_tube.run()
            return shock_tube

        elif ksens_marker == 1 and psens_marker == 1:
            shock_tube = st.shockTube(
                pressure=self.pressure,
                temperature=self.temperature,
                observables=self.observables,
                kineticSens=1,
                physicalSens=1,
                conditions=self.conditions,
                initialTime=self.initialTime,
                finalTime=self.finalTime,
                thermalBoundary=self.thermalBoundary,
                mechanicalBoundary=self.mechanicalBoundary,
                processor=self.processor,
                save_timeHistories=1,
                save_physSensHistories=0,
                moleFractionObservables=self.moleFractionObservables,
                concentrationObservables=self.concentrationObservables,
                fullParsedYamlFile=self.fullParsedYamlFile,
                time_shift_value=self.timeshift)
            shock_tube.run()
            return shock_tube
示例#6
0
# test_tube.run()
# #test_tube.printVars()
# time_History = test_tube.timeHistory

test_p = pr.Processor(
    '/Users/carlylagrotta/Dropbox/Columbia/MSI/data/branching_reaction_study/FFCM1_custom_cheb_extra_zeros_new_extra_reactions_precursor.cti'
)

test_tube = st.shockTube(pressure=0.6008089141308347,
                         temperature=1925,
                         observables=['OH'],
                         kineticSens=0,
                         physicalSens=0,
                         conditions={
                             'CH3OH': 0.000023898,
                             'Ar': 0.999976102
                         },
                         initialTime=0,
                         finalTime=.002,
                         thermalBoundary='Adiabatic',
                         mechanicalBoundary='constant volume',
                         processor=test_p,
                         save_timeHistories=1,
                         save_physSensHistories=1)

test_tube.run()
#test_tube.printVars()
time_History = test_tube.timeHistory
# plt.plot(time_History['time'],time_History['pressure']/100000)
# plt.ylim(0,140)
# plt.figure()
# plt.plot(time_History['time'],time_History['temperature'])
示例#7
0
    def running_shock_tube_absorption_only(self,processor=None,
                                           experiment_dictonary:dict={},
                                           absorbance_yaml_file_path = '',
                                           kineticSens = 1,
                                           physicalSens = 1,
                                           dk = .01,
                                           exp_number=1):
        shock_tube = st.shockTube(pressure = experiment_dictonary['pressure'],
                     temperature = experiment_dictonary['temperature'],
                     observables = experiment_dictonary['observables'],
                     kineticSens = kineticSens,
                     physicalSens = physicalSens,
                     conditions = experiment_dictonary['conditions'],
                     initialTime = experiment_dictonary['initialTime'],
                     finalTime = experiment_dictonary['finalTime'],
                     thermalBoundary = experiment_dictonary['thermalBoundary'],
                     mechanicalBoundary = experiment_dictonary['mechanicalBoundary'],
                     processor = processor,
                     save_timeHistories = 1,
                     save_physSensHistories = 1,
                     moleFractionObservables = experiment_dictonary['moleFractionObservables'],
                     absorbanceObservables = experiment_dictonary['absorbanceObservables'],
                     concentrationObservables = experiment_dictonary['concentrationObservables'],
                     fullParsedYamlFile = experiment_dictonary)

    
        shock_tube.run()
        abs_instance = csp.Absorb()
        parser = yp.Parser()
        abs_loaded = parser.load_to_obj(absorbance_yaml_file_path)
        abs_data = abs_instance.superimpose_shock_tube(shock_tube,abs_loaded,experiment_dictonary['pathLength'],
                                                       kinetic_sens=kineticSens)
        
        #print(abs_data)
        
        
        perturbed_coef = abs_instance.perturb_abs_coef(dk,
                                              shock_tube,
                                              abs_loaded,
                                              experiment_dictonary['pathLength'],
                                              summed_data = abs_data[0]) 
       
        
        
        
        shock_tube.sensitivity_adjustment(temp_del = dk)
        shock_tube.sensitivity_adjustment(pres_del = dk)
        shock_tube.species_adjustment(dk)        
        abs_phys_sens = abs_instance.absorb_phys_sensitivities(shock_tube,abs_data[0],abs_loaded,
                                                               experiment_dictonary['pathLength'],
                                                               dk = dk)
        #int_ksens_exp_mapped= shock_tube.map_and_interp_ksens()

        
        loaded_experimental_data_absorbance = abs_instance.import_experimental_data(experiment_dictonary['absorbanceCsvFiles'])
        
        interp_abs_exp= abs_instance.interpolate_experimental(shock_tube,loaded_experimental_data_absorbance,
                                                            original_summed_absorption=abs_data[0],
                                                            abs_kinetic_sens = abs_data[1],
                                                            abs_phys_sens = abs_phys_sens,
                                                            abs_coef_sens = perturbed_coef)
        
        
        time_history_interp_against_experiment_dict = abs_instance.interpolate_experimental(shock_tube,
                                                                                            loaded_experimental_data_absorbance,
                                                                                            time_history = shock_tube.timeHistories[0])
        experiment = self.build_single_exp_dict(exp_number,
                                                shock_tube,
                                      None,
                                      None,
                                      None,
                                      interpolated_absorbance=interp_abs_exp,
                                      absorbance_experimental_data = loaded_experimental_data_absorbance,
                                      time_history_interpolated_against_absorbance_experiment = time_history_interp_against_experiment_dict)
        
        return experiment    
示例#8
0
    def running_full_shock_tube_absorption(self,processor=None,
                                           experiment_dictonary:dict={},
                                           absorbance_yaml_file_path = '',
                                           kineticSens = 1,
                                           physicalSens = 1,
                                           dk = .01,
                                           exp_number=1):
        shock_tube = st.shockTube(pressure = experiment_dictonary['pressure'],
                     temperature = experiment_dictonary['temperature'],
                     observables = experiment_dictonary['observables'],
                     kineticSens = kineticSens,
                     physicalSens = physicalSens,
                     conditions = experiment_dictonary['conditions'],
                     initialTime = experiment_dictonary['initialTime'],
                     finalTime = experiment_dictonary['finalTime'],
                     thermalBoundary = experiment_dictonary['thermalBoundary'],
                     mechanicalBoundary = experiment_dictonary['mechanicalBoundary'],
                     processor = processor,
                     save_timeHistories = 1,
                     save_physSensHistories = 1,
                     moleFractionObservables = experiment_dictonary['moleFractionObservables'],
                     absorbanceObservables = experiment_dictonary['absorbanceObservables'],
                     concentrationObservables = experiment_dictonary['concentrationObservables'],
                     fullParsedYamlFile = experiment_dictonary)
    
        
        csv_paths = [x for x in  experiment_dictonary['moleFractionCsvFiles'] + experiment_dictonary['concentrationCsvFiles'] if x is not None]
        
        exp_data = shock_tube.importExperimentalData(csv_paths)
        shock_tube.run()
        #this might be in the wrong spot 
        int_ksens_exp_mapped= shock_tube.map_and_interp_ksens()
    
    
        abs_instance = csp.Absorb()
        parser = yp.Parser()
        abs_loaded = parser.load_to_obj(absorbance_yaml_file_path)
        abs_data = abs_instance.superimpose_shock_tube(shock_tube,abs_loaded,experiment_dictonary['pathLength'],
                                                       kinetic_sens=kineticSens)    
        
        
        perturbed_coef = abs_instance.perturb_abs_coef(dk,
                                              shock_tube,
                                              abs_loaded,
                                              experiment_dictonary['pathLength'],
                                              summed_data = abs_data[0]) 
        
        
        
        shock_tube.sensitivity_adjustment(temp_del = dk)
        shock_tube.sensitivity_adjustment(pres_del = dk)
        shock_tube.species_adjustment(dk)
        int_tp_psen_against_experimental = shock_tube.interpolate_experimental([shock_tube.interpolate_physical_sensitivities(index=1),
                                                                                 shock_tube.interpolate_physical_sensitivities(index=2)])
        
        int_spec_psen_against_experimental = shock_tube.interpolate_experimental(pre_interpolated=shock_tube.interpolate_species_sensitivities())
        
        abs_phys_sens = abs_instance.absorb_phys_sensitivities(shock_tube,abs_data[0],abs_loaded,
                                                               experiment_dictonary['pathLength'],
                                                               dk = dk)
       


        loaded_experimental_data_absorbance = abs_instance.import_experimental_data(experiment_dictonary['absorbanceCsvFiles'])
        
        interp_abs_exp= abs_instance.interpolate_experimental(shock_tube,loaded_experimental_data_absorbance,
                                                            original_summed_absorption=abs_data[0],
                                                            abs_kinetic_sens = abs_data[1],
                                                            abs_phys_sens = abs_phys_sens,
                                                            abs_coef_sens = perturbed_coef)

        time_history_interp_against_experiment_dict = abs_instance.interpolate_experimental(shock_tube,
                                                                                            loaded_experimental_data_absorbance,
                                                                                            time_history = shock_tube.timeHistories[0])
     #################################################################################   
        single_data = shock_tube.interpolate_experimental(single=shock_tube.timeHistories[0])
        shock_tube.savingInterpTimeHistoryAgainstExp(single_data)
        shock_tube.interpolatePressureandTempToExperiment(shock_tube,exp_data)
    ####################################################################################    
        
        experiment = self.build_single_exp_dict(exp_number,
                                                shock_tube,
                                      int_ksens_exp_mapped,
                                      int_tp_psen_against_experimental,
                                      int_spec_psen_against_experimental,
                                      interpolated_absorbance=interp_abs_exp,
                                      experimental_data = exp_data,
                                      absorbance_experimental_data = loaded_experimental_data_absorbance,
                                      time_history_interpolated_against_absorbance_experiment = time_history_interp_against_experiment_dict )
        
        return experiment
示例#9
0
import MSI.simulations.instruments.shock_tube as st
import MSI.cti_core.cti_processor as pr
import MSI.simulations.absorbance.curve_superimpose as csp  
import MSI.simulations.yaml_parser as yp
import cantera as ct


test_p = pr.Processor('MSI/data/test_data/optimized_burke.cti')
test_tube = st.shockTube(pressure=3.44187,
                         temperature=1079,
                         observables=['OH','H2O'],
                         kineticSens=1,
                         physicalSens=0,
                         conditions={'H2O2':0.00195373,'Ar':0.99804627},
                         initialTime=0,
                         finalTime=0.0014,
                         thermalBoundary='Adiabatic',
                         mechanicalBoundary='constant pressure',
                         processor=test_p,
                         save_timeHistories=1,
                         save_physSensHistories=1)

test_tube.run()

parser = yp.Parser()
abs_instance = csp.Absorb()
exp_loaded = parser.load_to_obj('MSI/data/test_data/Troe_6.yaml')
abs_loaded = parser.load_to_obj('MSI/data/test_data/Troe_6_abs.yaml')
abs_data = abs_instance.superimpose_shock_tube(test_tube,abs_loaded,30,kinetic_sens=0)
print(abs_data)
import pandas as pd
import matplotlib.pyplot as plt

test_p = pr.Processor(
    'MSI/data/hong_H2O2_fake_data/Hong_new_full_temperature_dep_new_approach_high_temperature.cti'
)

test_tube = st.shockTube(pressure=1.635,
                         temperature=1283,
                         observables=['OH', 'H2O'],
                         kineticSens=0,
                         physicalSens=0,
                         conditions={
                             'H2O2': 0.003049,
                             'H2O': 0.001113,
                             'O2': 0.000556,
                             'Ar': 0.995212
                         },
                         initialTime=0,
                         finalTime=0.001,
                         thermalBoundary='Adiabatic',
                         mechanicalBoundary='constant pressure',
                         processor=test_p,
                         save_timeHistories=1,
                         save_physSensHistories=1)

#test_p2 = pr.Processor('MSI/data/hong_H2O2_fake_data/Hong_new_half_temperature_dep.cti')
#test_tube2 = st.shockTube(pressure=1.676,
#                         temperature=1182,
#                         observables=['OH','H2O'],
#                         kineticSens=0,
#                         physicalSens=0,
import numpy as np
import MSI.simulations.instruments.shock_tube as st
import MSI.cti_core.cti_processor as pr
import cantera as ct

test_p2 = pr.Processor('MSI/data/chebyshev_data/FFCM1_custom_cheb_test.cti')

test_tube = st.shockTube(pressure=1.909,
                         temperature=1398,
                         observables=['OH', 'H2O'],
                         kineticSens=1,
                         physicalSens=0,
                         conditions={
                             'O2': 0.00062,
                             'H2O': 0.001234,
                             'H2O2': 0.00254,
                             'Ar': 0.9974968858350951
                         },
                         initialTime=0,
                         finalTime=.0002,
                         thermalBoundary='Adiabatic',
                         mechanicalBoundary='constant volume',
                         processor=test_p2,
                         save_timeHistories=1,
                         save_physSensHistories=1)

csv_paths = [
    'MSI/data/test_data/hong_oh_0_time_dependent.csv',
    'MSI/data/test_data/hong_h2o_0_time_dependent.csv'
]
exp_data = test_tube.importExperimentalData(csv_paths)
test_tube.run()
示例#12
0
print(temperature2)
print(conditions2)

test_p = pr.Processor(
    'MSI/data/klip_optimization_with_raw_data/FFCM1_custom_extra_reaction_updated.cti'
)

#HONG YAML FILES AND CONDITIONS

test_tube = st.shockTube(pressure=pressure,
                         temperature=temperature,
                         observables=['OH', 'H2O', 'H2O2'],
                         kineticSens=0,
                         physicalSens=0,
                         conditions=conditions,
                         initialTime=0,
                         finalTime=0.0035,
                         thermalBoundary='Adiabatic',
                         mechanicalBoundary='constant pressure',
                         processor=test_p,
                         save_timeHistories=1,
                         save_physSensHistories=1)

test_p2 = pr.Processor(
    'MSI/data/klip_optimization_comparison/Hong_new_temp_dependent_reactions.cti'
)
#test_p2 = pr.Processor('MSI/data/hong_H2O2_fake_data/Hong_new_original_reactions.cti')

test_tube2 = st.shockTube(pressure=pressure2,
                          temperature=temperature2,
                          observables=['OH', 'H2O'],
示例#13
0
import pandas as pd
import matplotlib.pyplot as plt

test_p = pr.Processor(
    'MSI/data/branching_reaction_study/FFCM1_custom_cheb_extra_zeros_new_extra_reactions_precursor.cti'
)

test_tube = st.shockTube(pressure=0.772,
                         temperature=2188,
                         observables=['OH'],
                         kineticSens=0,
                         physicalSens=0,
                         conditions={
                             'CH3I': 0.000009954,
                             'CH3OH': 0.000006016,
                             'Ar': .999984
                         },
                         initialTime=0,
                         finalTime=0.004,
                         thermalBoundary='Adiabatic',
                         mechanicalBoundary='constant pressure',
                         processor=test_p,
                         save_timeHistories=1,
                         save_physSensHistories=1)

#test_p2 = pr.Processor('MSI/data/hong_H2O2_fake_data/Hong_new_half_temperature_dep.cti')
#test_tube2 = st.shockTube(pressure=1.676,
#                         temperature=1182,
#                         observables=['OH','H2O'],
#                         kineticSens=0,
#                         physicalSens=0,
                                     #,
                                     #'N2O':0.0007737003154574132,
#
test_p = pr.Processor('MSI/data/test_data/FFCM1_custom.cti')
test_p = pr.Processor('gri30.cti')
test_tube = st.shockTube(pressure=.98692,
                         temperature=295,
                         observables=['HO2','CH3'],
                         kineticSens=1,
                         physicalSens=0,
                         conditions={'CH3':  0.0000012094157562676408,
                                     'HO2': 0.0000007614839946870331,
                                     'OH': 0.000003041863871824672,
                                     'H2O2':0.0001531112203220986,
                                     'CH4':0.0174693387016437,
                                     'H2O':0.014293095301344845,
                                     'N2O':0.0007737003154574132,
                                     'Ar':0.9990681757005978
                                     },
                         initialTime=0,
                         finalTime=0.003,
                         thermalBoundary='Adiabatic',
                         mechanicalBoundary='constant volume',
                         processor=test_p,
                         save_timeHistories=1,
                         save_physSensHistories=1)



#test_tube = st.shockTube(pressure=1.635,
#                         temperature=1283,
示例#15
0
import MSI.simulations.instruments.shock_tube as st
import MSI.cti_core.cti_processor as pr
import cantera as ct
import matplotlib.pyplot as plt

test_p = pr.Processor('MSI/data/H_O2/one_reaction.cti')
test_tube = st.shockTube(pressure=0.35757249605664937,
                         temperature=1387,
                         observables=['OH'],
                         kineticSens=0,
                         physicalSens=0,
                         conditions={
                             'O2': 0.001238,
                             'H2O': 0.001263,
                             'H': 0.0000010570824524312896,
                             'OH': 0.0000010570824524312896,
                             'Ar': 0.9974968858350951
                         },
                         initialTime=0,
                         finalTime=0.02,
                         thermalBoundary='Adiabatic',
                         mechanicalBoundary='constant volume',
                         processor=test_p,
                         save_timeHistories=1,
                         save_physSensHistories=1)

#test_tube = st.shockTube(pressure=0.35757249605664937,
#                         temperature=1387,
#                         observables=['OH'],
#                         kineticSens=0,
#                         physicalSens=0,