rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
demo_dom_dec.m
Go to the documentation of this file.
1 function demo_dom_dec()
2 %function demo_dom_dec()
3 % Demo showing the functionality of the dom_dec routines.
4 %
5 % some solutions of the iterative procedure are plotted,
6 % the detailed and reduced simulation are compared.
7 
8 % I.Maier 19.07.2011
9 
10 disp('start domain decomposition demo');
11 disp('-------------------------------');
12 disp('visualize detailed simulation');
13 disp('-----------------------------');
14 
15 params = [];
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]};
19 
20 params.numintervals = 24; % discretization parameter
21 params.RB_numintervals = 2;
22 params.subsampling_level = 4; % for plotting
23 
24 % create models
25 base_model = thermalblock_dd_model(params);
26 model = dom_dec_model(base_model,params);
27 disp('models created');
28 
29 dir = model.dirichlet_side;
30 no_dir = mod(dir,2)+1;
31 
32 % generate model_data
33 model_data = gen_model_data(model);
34 disp('model_data created');
35 
36 %%%%%%%%%%%%%%% visualize detailed simulation
37 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
38 
39 model = set_mu(model,[1.843,2.878,8.879,0.874]);
40 
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, ...
45  model.base_model);
46 figure,
47 plot(source,params);
48 title('source function');
49 
50 % perform detailed simulation
51 sim_data = detailed_simulation(model,model_data);
52 
53 disp('plotting');
54 for i = [1 5 10]
55  figure,
56 
57  for j = 1:2
58  sim_data.uh{j}.dofs = sim_data.all_dofs{j}(:,i);
59  plot(sim_data.uh{j},params);
60  end;
61 
62  title(['iterative solution, ', num2str(i),' iterations']);
63 end;
64 
65 for j = 1:2
66  sim_data.uh{j}.dofs = sim_data.all_dofs{j}(:,end);
67 end;
68 
69 % compute un-decomposed solution - perform detailed simulation of
70 % base_model
71 disp('perform detailed simulation of base_model');
72 base_sim_data = detailed_simulation(model.base_model, ...
73  model_data.base_model_data);
74 disp(['output: s = ', num2str(base_sim_data.s), ', iterative: s = ', ...
75  num2str(sim_data.s)]);
76 fprintf('\n');
77 figure,
78 plot_sim_data(model.base_model,model_data.base_model_data, ...
79  base_sim_data,params);
80 title('monolithic solution');
81 
82 disp('press enter to continue');
83 pause;
84 
85 %%%%%%%%%%%%%% compare detailed and reduced simulation
86 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
87 disp('---------------------------------------');
88 disp('compare detailed und reduced simulation');
89 disp('---------------------------------------');
90 model.det_sim_tol = 1e-07;
91 model.RB_sim_tol = 1e-07;
92 model.N_max = {12 12};
93 model.RB_generation_mode = 'PCA_trajectories';
94 model.RB_generation_epsilon = 1e-7;
95 
96 % build reduced basis
97 disp('generate detailed_data');
98 model.verbose = 0;
99 detailed_data = gen_detailed_data(model,model_data);
100 model.base_model.dual_mode = 1;
101 detailed_data.dual_detailed_data = gen_detailed_data(model,model_data);
102 model.base_model.dual_mode = 0;
103 model.verbose = 1;
104 disp('dimensions of reduced basis:');
105 disp([' N_1^0 = ',num2str(length(detailed_data.I_0{dir}))]);
106 disp([' N_1^G = ',num2str(length(detailed_data.I_G{dir}))]);
107 disp([' N_2^0 = ',num2str(length(detailed_data.I_0{no_dir}))]);
108 disp([' N_2^G = ',num2str(length(detailed_data.I_G{no_dir}))]);
109 disp([' M_1^0 = ',num2str(length(detailed_data.dual_detailed_data.I_0{dir}))]);
110 disp([' M_1^G = ',num2str(length(detailed_data.dual_detailed_data.I_G{dir}))]);
111 disp([' M_2^0 = ',num2str(length(detailed_data.dual_detailed_data.I_0{no_dir}))]);
112 disp([' M_2^G = ',num2str(length(detailed_data.dual_detailed_data.I_G{no_dir}))]);
113 
114 disp('generate reduced_data');
115 reduced_data = gen_reduced_data(model,detailed_data);
116 
117 % perform detailed simulation
118 tic;
119 sim_data = detailed_simulation(model,model_data);
120 det_sim_time = toc;
121 
122 sim_data = model.compute_error(model,model_data,sim_data);
123 
124 disp('------------------------------------------');
125 disp(['elapsed time of detailed simulation: ', ...
126  num2str(det_sim_time,3),'s']);
127 disp(['error of iterative solution: ',num2str(sim_data.X_err(end),3)]);
128 disp(['error of iterative output: ', ...
129  num2str(abs(sim_data.s - sim_data.base_sim_data.s))]);
130 
131 % perform reduced simulation
132 tic;
133 rb_sim_data = rb_simulation(model,reduced_data);
134 rb_sim_data = rb_reconstruction(model,detailed_data,rb_sim_data);
135 rb_sim_time = toc;
136 
137 rb_sim_data = model.compute_error(model,detailed_data,rb_sim_data);
138 
139 model.base_model.compute_output_functional = 0;
140 rb_sim_data_no = rb_simulation(model, reduced_data);
141 
142 disp('------------------------------------------');
143 disp(['elapsed time of reduced simulation: ',num2str(rb_sim_time,3), ...
144  's']);
145 disp(['error of reduced iterative solution: ', ...
146  num2str(rb_sim_data.X_err(end),3)]);
147 disp(['error estimate of reduced iterative solution: ', ...
148  num2str(rb_sim_data_no.Delta(end),3)]);
149 disp(['error of reduced iterative output: ', ...
150  num2str(abs(rb_sim_data.sN - sim_data.base_sim_data.s))]);
151 disp(['error estimate of reduced iterative output: ', ...
152  num2str(rb_sim_data.Delta_s)]);
153 
154 plot_sim_data(model, model_data, sim_data, params);
155 title('detailed solution');
156 plot_sim_data(model, model_data, rb_sim_data, params);
157 title('reduced solution');
class representing a continous piecewise polynomial function of arbitrary dimension. DOFS correspond to the values of Lagrange-nodes.
Definition: femdiscfunc.m:17
function demo_dom_dec()
Demo showing the functionality of the dom_dec routines.
Definition: demo_dom_dec.m:17
function model = thermalblock_dd_model(params)
Custom thermalblock model used for domain decomposition.
function p = plot_sim_data(model, model_data, sim_data, plot_params)
function performing the plot of the simulation results as specified in model.
Definition: plot_sim_data.m:17
function model = dom_dec_model(base_model, params)
function creating a domain-decomposition-model with an arbitrary model and optional params...
Definition: dom_dec_model.m:17