1 function demo_dom_dec()
2 %
function demo_dom_dec()
4 % demo showing the functionality of the dom_dec routines.
5 % plotting some iteratives of the iterative procedure,
6 % comparing the detailed and reduced simulation.
10 disp(
'start domain decomposition demo');
11 disp(
'-------------------------------');
12 disp(
'visualize detailed simulation');
13 disp(
'-----------------------------');
16 % specify geometrical decomposition
17 params.dd_rect_corner1 = {[0,0],[0.25,0],[0.75,0]};
18 params.dd_rect_corner2 = {[0.25,0.25],[0.75,0.75],[1,0.5]};
20 params.numintervals = 24; % discretization parameter
21 params.RB_numintervals = 2;
22 params.subsampling_level = 4; %
for plotting
25 base_model = thermalblock_dd_model(params);
26 model = dom_dec_model(base_model,params);
27 disp(
'models created');
29 dir = model.dirichlet_side;
30 no_dir = mod(dir,2)+1;
33 model_data = gen_model_data(model);
34 disp(
'model_data created');
36 %%%%%%%%%%%%%%% visualize detailed simulation
37 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
39 model = set_mu(model,[1.843,2.878,8.879,0.874]);
41 % plot source
function
42 disp(
'plot source function');
43 source =
femdiscfunc([],model_data.base_model_data.df_info);
44 source = fem_interpol_local(model.base_model.source,source, ...
48 title(
'source function');
50 % perform detailed simulation
51 sim_data = detailed_simulation(model,model_data);
58 sim_data.uh{j}.dofs = sim_data.all_dofs{j}(:,i);
59 plot(sim_data.uh{j},params);
62 title([
'iterative solution, ', num2str(i),
' iterations']);
66 sim_data.uh{j}.dofs = sim_data.all_dofs{j}(:,end);
69 % compute un-decomposed solution - perform detailed simulation of
71 disp('perform detailed simulation of base_model');
72 base_sim_data = detailed_simulation(model.base_model, ...
73 model_data.base_model_data);
75 plot_sim_data(model.base_model,model_data.base_model_data, ...
76 base_sim_data,params);
77 title(
'monolithic solution');
79 disp(
'press enter to continue');
82 %%%%%%%%%%%%%% compare detailed and reduced simulation
83 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
84 disp(
'---------------------------------------');
85 disp(
'compare detailed und reduced simulation');
86 disp(
'---------------------------------------');
87 model.det_sim_tol = 1e-07;
88 model.RB_sim_tol = 1e-07;
89 model.N_max = {12 12};
90 model.RB_generation_mode =
'PCA_trajectories';
91 model.RB_generation_epsilon = 1e-7;
94 disp(
'generate detailed_data');
96 detailed_data = gen_detailed_data(model,model_data);
98 disp(
'dimensions of reduced basis:');
99 disp([
' N_1^0 = ',num2str(length(detailed_data.I_0{dir}))]);
100 disp([
' N_1^G = ',num2str(length(detailed_data.I_G{dir}))]);
101 disp([
' N_2^0 = ',num2str(length(detailed_data.I_0{no_dir}))]);
102 disp([
' N_2^G = ',num2str(length(detailed_data.I_G{no_dir}))]);
104 disp(
'generate reduced_data');
105 reduced_data = gen_reduced_data(model,detailed_data);
107 % perform detailed simulation
109 sim_data = detailed_simulation(model,model_data);
112 sim_data = model.compute_error(model,model_data,sim_data);
114 disp(
'------------------------------------------');
115 disp([
'elapsed time of detailed simulation: ', ...
116 num2str(det_sim_time,3),
's']);
117 disp([
'error of iterative solution: ',num2str(sim_data.X_err(end),3)]);
119 % perform reduced simulation
121 rb_sim_data = rb_simulation(model,reduced_data);
124 rb_sim_data = rb_reconstruction(model,detailed_data,rb_sim_data);
125 rb_sim_data = model.compute_error(model,detailed_data,rb_sim_data);
127 disp(
'------------------------------------------');
128 disp([
'elapsed time of reduced simulation: ',num2str(rb_sim_time,3), ...
130 disp([
'error of reduced iterative solution: ', ...
131 num2str(rb_sim_data.X_err(end),3)]);
132 disp([
'error estimate of reduced iterative solution: ', ...
133 num2str(rb_sim_data.Delta(end),3)]);
136 title(
'detailed solution');
138 title(
'reduced solution');