Exemple #1
0
    def parsing_yaml_files(self, loop_counter=0, list_of_updated_yamls=[]):
        if loop_counter == 0:
            yaml_instance = yp.Parser()
        else:
            yaml_instance = yp.Parser(original_experimental_conditions=self.
                                      original_experimental_conditions_local)
            #print(self.original_experimental_conditions_local[0]['coupledCoefficients'],'other copy')

        self.yaml_instance = yaml_instance
        if loop_counter == 0:
            list_of_yaml_objects = yaml_instance.load_yaml_list(
                yaml_list=self.yaml_file_list_with_working_directory)
            self.list_of_yaml_objects = list_of_yaml_objects
            list_of_parsed_yamls = yaml_instance.parsing_multiple_dictonaries(
                list_of_yaml_objects=list_of_yaml_objects,
                loop_counter=loop_counter)
            list_of_parsed_yamls_original = copy.deepcopy(list_of_parsed_yamls)
            self.list_of_parsed_yamls_original = list_of_parsed_yamls_original
            self.list_of_parsed_yamls = list_of_parsed_yamls_original

        else:
            list_of_yaml_objects = yaml_instance.load_yaml_list(
                yaml_list=self.updated_yaml_file_name_list)
            self.list_of_yaml_objects = list_of_yaml_objects
            list_of_parsed_yamls = yaml_instance.parsing_multiple_dictonaries(
                list_of_yaml_objects=list_of_yaml_objects,
                loop_counter=loop_counter)
            self.list_of_parsed_yamls = list_of_parsed_yamls

        return
 def parsing_yaml_files(self, loop_counter=0):
     yaml_instance = yp.Parser()
     self.yaml_instance = yaml_instance
     list_of_yaml_objects = yaml_instance.load_yaml_list(
         yaml_list=self.yaml_file_list_with_working_directory)
     self.list_of_yaml_objects = list_of_yaml_objects
     list_of_parsed_yamls = yaml_instance.parsing_multiple_dictonaries(
         list_of_yaml_objects=list_of_yaml_objects,
         loop_counter=loop_counter)
     self.list_of_parsed_yamls = list_of_parsed_yamls
     #print(yaml_instance.original_experimental_conditions)
     return
Exemple #3
0
                             temperature=Temp,
                             observables=['h2o2', 'ho2'],
                             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
    parser = yp.Parser()

    abs_instance = csp.Absorb()

    abs_loaded = parser.load_to_obj(
        'MSI/data/automating_kircher_Ar_1983/abs_kircher.yaml')

    abs_data = abs_instance.superimpose_shock_tube(test_tube,
                                                   abs_loaded,
                                                   670.0,
                                                   kinetic_sens=0)
    plt.plot(test_tube.timeHistories[0]['time'] * 1e3,
             abs_data[wavelength],
             label='constant value rate constants')

    #    fall_off = time_History['O'][0]/time_History['O']
import MSI.optimization.matrix_loader as ml
import MSI.optimization.opt_runner as opt
import MSI.simulations.absorbance.curve_superimpose as csp
import MSI.simulations.yaml_parser as yp
import cantera as ct
#

test_p = pr.Processor(
    '/Users/carlylagrotta/Desktop/MSI/data/test_data/FFCM1_custom.cti')
yaml_file_list = [
    ('MSI/data/test_data/Hong_4.yaml', 'MSI/data/test_data/Hong_4_abs.yaml'),
    ('MSI/data/test_data/Hong_1.yaml', ),
    ('MSI/data/test_data/Troe_6.yaml', 'MSI/data/test_data/Troe_6_abs.yaml'),
    ('MSI/data/test_data/Hong_4.yaml', 'MSI/data/test_data/Hong_4_abs.yaml')
]
yaml_instance = yp.Parser()
list_of_yaml_objects = yaml_instance.load_yaml_list(yaml_list=yaml_file_list)
list_of_experiment_dicts = yaml_instance.parsing_multiple_dictonaries(
    list_of_yaml_objects=list_of_yaml_objects)

optimization_instance = opt.Optimization_Utility()

test = optimization_instance.looping_over_parsed_yaml_files(
    list_of_experiment_dicts,
    yaml_file_list,
    processor=test_p,
    kineticSens=1,
    physicalSens=1,
    dk=.01)
matix_instance = ml.OptMatrix()
Exemple #5
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    
Exemple #6
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
os.chdir(
    '../../'
)  #get rid of this at some point with central test script or when package is built

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
import pandas as pd
import matplotlib.pyplot as plt

value = 15

#MSI YAML FILES AND CONDITIONS
parser = yp.Parser()

exp = parser.load_to_obj(
    'MSI/data/klip_optimization_with_raw_data/Hong_HO2_fake_data_' +
    str(value) + '_updated.yaml')
absp = parser.load_to_obj(
    'MSI/data/klip_optimization_with_raw_data/Hong_HO2_fake_data_' +
    str(value) + '_abs_updated.yaml')
loaded_tube = parser.parse_shock_tube_obj(loaded_exp=exp,
                                          loaded_absorption=absp)

pressure = loaded_tube['pressure']
temperature = loaded_tube['temperature']
conditions = loaded_tube['conditions']
print("THESE ARE THE MSI CONDITIONS")
print(pressure)