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
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'] # temp=None # for j,value in enumerate(fall_off):
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