Exemple #1
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 #2
0
                             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):
Exemple #3
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