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
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()
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
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)