Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
2820cb0
after modifying time_modification
unghee Feb 28, 2017
56231c8
individual not working..
unghee Feb 28, 2017
3e396f4
temp range change not matching
unghee Mar 1, 2017
40fa07d
change classnumb to one.. it works well for one
unghee Mar 1, 2017
73013ec
add weighting factor in objective function
unghee Mar 1, 2017
3a3f893
w4*f4+w6*f6 = 2*target
unghee Mar 1, 2017
ec35b56
w4(f4-target) +w6(f6-target)
unghee Mar 1, 2017
f4fed97
multiple class first success!! after changing the weight to 1 !!
unghee Mar 2, 2017
faa9790
finally working.. now what is X(3*i) ? I didn't define any like this
unghee Mar 2, 2017
95209e3
works with 2*i seems that defining the objective function was a problem.
unghee Mar 2, 2017
8c60289
3class sort of working,,?
unghee Mar 2, 2017
22e74a9
now test with entire range! 3class succes!!
unghee Mar 2, 2017
c726d99
3class worked!
unghee Mar 2, 2017
3ca5f97
oneclass two pressure working!
unghee Mar 4, 2017
cd61b84
mutilple pressures and classes success!!
unghee Mar 5, 2017
31894d3
oneclass 2 pressure kind of success?
unghee Mar 5, 2017
d1bfdf0
modification for MFC n_dodecane
unghee Mar 5, 2017
12815ec
senstitivity analysis for n-dodecane
unghee Mar 6, 2017
aeb2aac
multiple class modification ongoing..
unghee Mar 6, 2017
055d8e1
doubling the number of target
unghee Mar 6, 2017
2204965
onepressure multipleclass ongoing changed UB LB
unghee Mar 6, 2017
4a7b2cb
senstivity for one pressure and now can plot modify range
unghee Mar 6, 2017
de9af67
afteroptimize included
unghee Mar 6, 2017
e85cbe1
Merge remote-tracking branch 'refs/remotes/origin/n_dodecane-increase…
unghee Mar 7, 2017
741605e
commit 3_6 merging all the branches
unghee Mar 7, 2017
f2fa8a9
optimization driver update
unghee Mar 7, 2017
992e498
sensitivity_analysis_update
unghee Mar 7, 2017
89053f8
why error is so big
unghee Mar 7, 2017
3cf634c
kinda worked?.. fine_class_onepressure
unghee Mar 7, 2017
cf02629
sesnsitivity for modify, merged different version
unghee Mar 8, 2017
1a30c5f
found k = 1: 1 class??
unghee Mar 8, 2017
1dc11cf
commit 3_8_night
unghee Mar 9, 2017
4fa1345
3_8_ suddenly optimizer not working..
unghee Mar 9, 2017
59cdb5d
boundary fixed
unghee Mar 9, 2017
e2ec011
changeofclassnumb
unghee Mar 9, 2017
b1a2ded
changed weight expression. match with equi version now
unghee Mar 10, 2017
86cdfe0
seems there is an error in optimizaiton
unghee Mar 16, 2017
7443cfa
commit 3/24
unghee Mar 29, 2017
efb873c
updtate
unghee Apr 5, 2017
c182acb
added flux ver
unghee Apr 11, 2017
fd5af35
bash backup
unghee Apr 19, 2017
22d35e7
update before finalize
unghee May 8, 2017
806caf3
documentation_1
unghee May 8, 2017
5cd32dd
Create README.md
unghee Oct 7, 2019
2b3ee44
Update README.md
unghee Oct 7, 2019
5740492
Create optimizer_flow.png
unghee Oct 7, 2019
08f7d37
Add files via upload
unghee Oct 7, 2019
c710291
Update README.md
unghee Oct 7, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions MFC_load_range.asv
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
clear all
close all

%%
mechanism={'MFC'};
% fuel_sim={'base','v1','v2','v3' };
fuel_sim={'modify'};
fuel_name={'n_dodecane'};
date = {'03_06_2017_'};
equi =1;
% pressure=[20 40 ];
pressure = [20 40];
for k=1:length(pressure)
pressure_text{k}=['P',num2str(pressure(k)),'atm'];
end

classnumb=[15 26 27];
numbOfClass = length(classnumb);
class_numb_text = {};
for k=1:numbOfClass
class_numb_text=[class_numb_text ['class',num2str(classnumb(k))]];
end
num_cases=[26 11];
num_cases_text = {};
for k=1:num_cases(1)
num_cases_text=[num_cases_text ['numcases',num2str(k)]];
end
%%

for i=1:length(mechanism)
for j=1:length(fuel_sim)
for k = 1: length(classnumb)
% phi=1 simulation results
for m=1:length(pressure)
for q=1:num_cases(m)
location=['C:\Users\unghee\Dropbox\post_process','\',mechanism{i},'\',fuel_name{1},'_',num2str(pressure(m))...
,'atm','_','phi',num2str(equi),'_',date{1},'\',fuel_sim{j},'\',class_numb_text{k},'\',num2str(q)];
sim.(mechanism{i}).(fuel_sim{j}).(pressure_text{m}).(num_cases_text{q})=read_ignition_delay(location,7);
end
end

end
end
end


directory=['C:\Users\unghee\Dropbox\post_process','\',mechanism{1},'\',fuel_name{1},'_',num2str(pressure(1))...
,'atm','_','phi',num2str(equi),'_',date{1}];
cd(directory);
cd(fuel_sim{1});
filename = ['simulation_result','_',fuel_sim{1},'_',num2str(pressure(1)),'atm','_','phi','_',num2str(equi),'.mat'];
save(filename,'sim')
52 changes: 52 additions & 0 deletions MFC_load_range.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
clear all
close all

%%
mechanism={'MFC'};
% fuel_sim={'base','v1','v2','v3' };
fuel_sim={'modify'};
fuel_name={'n_dodecane'};
date = {'03_08_2017'};
equi =1;
% pressure=[20 40 ];
pressure = [20];
for k=1:length(pressure)
pressure_text{k}=['P',num2str(pressure(k)),'atm'];
end

classnumb=[15 22 26 27 28];
numbOfClass = length(classnumb);
class_numb_text = {};
for k=1:numbOfClass
class_numb_text=[class_numb_text ['class',num2str(classnumb(k))]];
end
num_cases=[26 11];
num_cases_text = {};
for k=1:num_cases(1)
num_cases_text=[num_cases_text ['numcases',num2str(k)]];
end
%%

for i=1:length(mechanism)
for j=1:length(fuel_sim)
for k = 1: length(classnumb)
% phi=1 simulation results
for m=1:length(pressure)
for q=1:num_cases(m)
location=['C:\Users\unghee\Dropbox\post_process','\',mechanism{i},'\',fuel_name{1},'_',num2str(pressure(m))...
,'atm','_','phi',num2str(equi),'_',date{1},'\',fuel_sim{j},'\',class_numb_text{k},'\',num2str(q)];
sim.(mechanism{i}).(fuel_sim{j}).(pressure_text{m}).(class_numb_text{k}).(num_cases_text{q})=read_ignition_delay(location,7);
end
end

end
end
end


directory=['C:\Users\unghee\Dropbox\post_process','\',mechanism{1},'\',fuel_name{1},'_',num2str(pressure(1))...
,'atm','_','phi',num2str(equi),'_',date{1}];
cd(directory);
cd(fuel_sim{1});
filename = ['simulation_result','_',fuel_sim{1},'_',num2str(pressure(1)),'atm','_','phi','_',num2str(equi),'.mat'];
save(filename,'sim')
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Chemical Mechanisms Optimizer
5/08/2017 Jordan Lee (unghee@umich.edu)1
#About Mechanisms Optimizer
The optimizer optimizes reaction rate parameters(pre-exponential and activation energyterms) in the selected reactions in the chemicalmechanism in Chemkin format. The optimizerruns in MATLAB framework. Chemkin homogeneous reactor simulationsare usedto calculate 0-D ignition delay time.

# 2 Files description in the optimizer
The homogeneous reactor code in Chemkin is used. For a detailed description on this code, please refer to CHEMKIN ignition delay calculations manual. The flow chart of the entire process is as below.In whole, the optimizer is composed of sensitivity analysis sectionand

<img src= "https://github.com/unghee/JPoptimization_github/blob/master/images/optimizer_flow.png">
39 changes: 39 additions & 0 deletions Ra_Reitz_load_data.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
clear all
close all

%%
mechanism={'MFC'};

fuel_sim={'afteroptimize_3'};
fuel_name={'JetA'};
date = {'05_03_2017'};
equi =1;

pressure = [40];
for k=1:length(pressure)
pressure_text{k}=['P',num2str(pressure(k)),'atm'];
end
num_cases=25;


for i=1:length(mechanism)
for j=1:length(fuel_sim)

% phi=1 simulation results
for k=1:length(pressure)
location=['C:\Users\unghee\Dropbox\post_process','\',mechanism{i},'\',fuel_name{1},'_',num2str(pressure(k)),'atm','_','phi',num2str(equi),'_',date{1},'\',fuel_sim{j}];

sim.(mechanism{i}).(fuel_sim{j}).(pressure_text{k})=read_ignition_delay(location,num_cases);

end


end
end

directory=['C:\Users\unghee\Dropbox\post_process','\',mechanism{1},'\',fuel_name{1},'_',num2str(pressure(1)),'atm','_','phi',num2str(equi),'_',date{1}];

cd(directory);
cd(fuel_sim{1});
filename = ['simulation_result','_',fuel_sim{1},'_',num2str(pressure(1)),'atm','_','phi','_',num2str(equi),'.mat'];
save(filename,'sim')
187 changes: 187 additions & 0 deletions Ra_Reitz_plot_2.asv
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
clear all
% close all
%% Ra&Reitz

%%%%%% setting %%%%%%%%%%%%%%%%%%%%%%%%%%%
mechanism={'MFC' };

pressure=[40];
phi=1;
iteration_numb=3;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for k=1:length(pressure)
pressure_text{k}=['P',num2str(pressure(k)),'atm'];

simulation_result_beforeoptimize_text{k}=['simulation_result_beforeoptimize_',num2str(pressure(k)),'atm','_',...
'phi','_',num2str(phi),'.mat'];
for i= 1 : length(iteration_numb)
simulation_result_afteroptimize_text{k}=['simulation_result_afteroptimize_',num2str(iteration_numb(i)),'_',...
num2str(pressure(k)),'atm','_','phi','_',num2str(phi),'.mat'];
end
fuel_sim_text = ['afteroptimize','_',num2str(iteration_numb(i))];
end

num_cases=25;


pure_component_ID;
real_fuel_ID;

exp_markers={'ro' 'g*' 'b^'};
sim_line={'k-' 'k-s','k-d','k-^','k-x','k-o','k-p'};
marker_size=8;
line_width=2;

i=1; %mechanism


num_cases=[26 11];
num_cases_text = {};
for k=1:num_cases(1)
num_cases_text=[num_cases_text ['numcases',num2str(k)]];
end
% classnumb=[22 24 26 28];
% numbOfClass = length(classnumb);
% class_numb_text = {};
% for k=1:numbOfClass
% class_numb_text=[class_numb_text ['class',num2str(classnumb(k))]];
% end
for k = 1: length(pressure)

h3=figure('position',[20 50 580 480]);
set(gca,'Fontsize',13)
clear legend_text
% % legend_text{1}='Vasu et al.40atm, Shock Tube';
% legend_text{1}='Shen et al.40atm, Shock Tube';
% % semilogy(Vasu_40atm(:,2),Vasu_40atm(:,5)/1000,exp_markers{2},'markersize',marker_size)
% semilogy(Shen_dode_40atm(:,2),Shen_dode_40atm(:,5),exp_markers{2},'markersize',marker_size)

% legend_text{1}=['ERC',pressure_text{k},'Dummy'];
% legend_text{2}=['ERC',pressure_text{k},'target(original)'];
% legend_text{3}=['ERC',pressure_text{k},'after optimize'];

legend_text{1}=['MFC ',pressure_text{k},', ','beforeoptimize'];
if strcmp(pressure_text{k},'P20atm')
% legend_text{2}=['Vasu, ',pressure_text{k},', ','target'];
legend_text{3}=['exp, ',pressure_text{k},', ','target'];

else
% legend_text{2}=['Shen, ',pressure_text{k},', ','target'];
legend_text{3}=['exp, ',pressure_text{k},', ','target'];
end

legend_text{2}=['MFC ',pressure_text{k},', after optimize'];


load(simulation_result_beforeoptimize_text{1})
fuel_sim={'beforeoptimize'};

for j=1:length(fuel_sim)
semilogy(sim.(mechanism{i}).(fuel_sim{1}).(pressure_text{k}).table.data(:,6),...
sim.(mechanism{i}).(fuel_sim{j}).(pressure_text{k}).table.data(:,10),...
'k--','markersize',marker_size)
end


hold on




load(simulation_result_afteroptimize_text{1})
fuel_sim={fuel_sim_text};



semilogy(sim.(mechanism{1}).(fuel_sim{1}).(pressure_text{k}).table.data(:,6),...
sim.(mechanism{1}).(fuel_sim{1}).(pressure_text{k}).table.data(:,10),...
'b','markersize',marker_size)


ylim([0 10^5]);



% hold on

if strcmp(pressure_text{k},'P20atm')
% semilogy(Vasu_dode_20atm(:,2),Vasu_dode_20atm(:,5),'r*','markersize',marker_size) % pure dodecane
semilogy(Vasu_20atm(:,2),Vasu_20atm(:,5),'r^','markersize',marker_size,'markerface','r') % Jet A
hold on;
semilogy(Wang_20atm(:,2),Wang_20atm(:,5),'r^','markersize',marker_size,'markerface','r') % Jet A
hold on;
semilogy(Dooley_20atm(:,2),Dooley_20atm(:,5),'r^','markersize',marker_size,'markerface','r') % Jet A
else
% semilogy(Shen_dode_40atm(:,2),Shen_dode_40atm(:,5),'r*','markersize',marker_size)% pure dodecane
semilogy(Wang_40atm(:,2),Wang_40atm(:,5),'rd','markersize',marker_size,'markerface','r') % Jet A
end
%% upper bound & lowerbond
% The below shows the range of the variation

% hold on
%
%
% load('simulation_result_modify_20atm_phi_1.mat')
% fuel_sim={'modify'};
%
%
% % for j=1:length(fuel_sim)
% % for q= 1: num_cases(k)
% % semilogy(sim.(mechanism{i}).(fuel_sim{j}).(pressure_text{k}).(num_cases_text{q}).table.data(:,6),...
% % sim.(mechanism{i}).(fuel_sim{j}).(pressure_text{k}).(num_cases_text{q}).table.data(:,10),...
% % 'bo','markersize',marker_size);
% % end
% % end
% % hold on;
%
% x.(class_numb_text{1})=[]; y.(class_numb_text{1})=[];
% for j=1:length(fuel_sim)
% for q= 1: num_cases(k)
% for m = 1: length(classnumb)
% x.(class_numb_text{m})(q)=sim.(mechanism{i}).(fuel_sim{j}).(pressure_text{k}).(class_numb_text{m}).(num_cases_text{q}).table.data(1,6);
% y.(class_numb_text{m})(q)=sim.(mechanism{i}).(fuel_sim{j}).(pressure_text{k}).(class_numb_text{m}).(num_cases_text{q}).table.data(4,10);
% end
%
% end
% end
% for m = 1: length(classnumb)
% % semilogy(x.(class_numb_text{m}),y.(class_numb_text{m}),'k','markersize',marker_size,'LineWidth',1.5);
% hold on;
% end
% x.(class_numb_text{1})=[]; y.(class_numb_text{1})=[];
% for j=1:length(fuel_sim)
% for q= 1: num_cases(k)
% for m = 1: length(classnumb)
% x.(class_numb_text{m})(q)=sim.(mechanism{i}).(fuel_sim{j}).(pressure_text{k}).(class_numb_text{m}).(num_cases_text{q}).table.data(1,6);
% y.(class_numb_text{m})(q)=sim.(mechanism{i}).(fuel_sim{j}).(pressure_text{k}).(class_numb_text{m}).(num_cases_text{q}).table.data(7,10);
% end
%
% end
% end
% for m = 1: length(classnumb)
% % semilogy(x.(class_numb_text{m}),y.(class_numb_text{m}),'k','markersize',marker_size,'LineWidth',1.5);
% hold on;
% end
%%
legend(legend_text,'location','SouthEast','interpreter','none')
legend('boxoff')
xlabel('1000/T (1/K)')
ylabel('Ignition Delay Time (micros)')
% axis([0.7 1.6 20 40000])
% clear legend_text
annotation(h3,'textbox',[0.413 0.38 0.279 0.05],...
'String',{'JetA',...
'/Air', '\phi=1'},...
'FontSize',13,...
'FontName','Arial',...
'FitBoxToText','off',...
'LineStyle','none');
annotation(h3,'textbox',[0.25 0.8 0.279 0.05],...
'String',{pressure_text{k}},...
'FontSize',13,...
'FontName','Arial',...
'FitBoxToText','off',...
'LineStyle','none');


end
Loading