rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
convection_diffusion_fv_output_opt_script.m
1 function convection_diffusion_fv_output_opt_script(step, expar)
2 %function convection_diffusion_fv_output_opt_script(step)
3 %
4 %
5 
6 % Markus Dihlmann 12.09.2011
7 
8 
9 if nargin<2
10  expar = [];
11 end
12 
13 
14 fdir = fullfile(rbmatlabhome,'rbasis','lin_evol_opt','convdiff');
15 fdir_temp = fullfile(rbmatlabtemp,'lin_evol_opt_data');
16 
17 switch step
18 
19 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
20 % Basis generation
21 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
22  case 1
23 
24  if nargin >1
25  if isfield(expar,'coarse_factor')
26  params.coarse_factor = expar.coarse_factor;
27  else
28  params.coarse_factor = 16;
29  end
30  else
31  params.coarse_factor = 16;
32  end
33 
34  model = convection_diffusion_fv_output_opt_model_rect_normed_outflow(params);
35  model.compute_derivative_info=0;
36 
37  if nargin>1
38  if isfield(expar,'k')
39  model.k = expar.k;
40  else
41  model.k = 0.25;
42  end
43  end
44 
45 
46  model_data = gen_model_data(model);
47 
48  model.RB_stop_Nmax = 50;
49 
50 
51  detailed_data = gen_detailed_data(model, model_data);
52 
53 
54  save(fullfile(fdir,['DiffGreedybase_coarse',num2str(model.coarse_factor),'_Nmax_',num2str(model.RB_stop_Nmax),'_k_',num2str(model.k),'.mat']),...
55  'model', 'detailed_data');
56 
57 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
58 % generate separate reduced basis with constant diffusion
59 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
60  case 2
61 
62 
63  if nargin >1
64  if isfield(expar,'coarse_factor')
65  params.coarse_factor = expar.coarse_factor;
66  else
67  params.coarse_factor = 16;
68  end
69  else
70  params.coarse_factor = 16;
71  end
72  params.separate_bases = 1;
73  params.cone_const = 1;
74 
75  model = convection_diffusion_fv_output_opt_model_rect_normed(params);
76  model.compute_derivative_info=1;
77  model.RB_error_indicator = 'estimator_parallel';
78 
79 
80  if nargin>1
81  if isfield(expar,'k')
82  model.k = expar.k;
83  else
84  model.k = 0.25;
85  end
86  if isfield(expar,'gen_detailed_data')
87  model.gen_detailed_data = expar.gen_detailed_data;
88  model.RB_extension_algorithm = @RB_extension_PCA_fixspace_without_filecache;
89  end
90  else
91  model.k = 0.25;
92  end
93 
94 
95  model_data = gen_model_data(model);
96 
97  model.RB_stop_Nmax = 10;
98 
99 
100  detailed_data = gen_detailed_data(model, model_data);
101 
102 
103  save(fullfile(fdir,['DiffGreedybase_sep_coarse',num2str(model.coarse_factor),'_Nmax_',num2str(model.RB_stop_Nmax),'_k_',num2str(model.k),'.mat']),...
104  'model', 'detailed_data');
105 
106 
107 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
108 % detailed gradient optimization
109 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
110  case 3
111  params.coarse_factor = 4;
112  params.cone_const = 1;
113 
114  model = convection_diffusion_fv_output_opt_model_rect_normed(params);
115  model_data = gen_model_data(model);
116  disp(['Diffusion coefficient = ',num2str(model.k)]);
117 
118  model.optimization.init_params = [0.3,0.3];
119  model.compute_derivative_info=1;
120  tic
121  opt_data = optimize(model, model_data);
122  t_opt_d = toc;
123  opt_data.t_opt_d = t_opt_d;
124 
125  disp(['Time for optimization : ',num2str(t_opt_d)]);
126 
127  keyboard;
128 
129 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
130 % grid optimization detailed
131 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
132  case 4
133  disp('grid optimization of diffusion model')
134 
135  params.coarse_factor = 4;
136  params.cone_const = 1;
137 
138  model = convection_diffusion_fv_output_opt_model_rect_normed(params);
139  model.k=0.25;
140  model_data = gen_model_data(model);
141  disp(['Diffusion coefficient = ',num2str(model.k)]);
142  model.mu_ranges = {[0.788,0.86],[0.6720,0.704]};
143 
144  model.optimization.optimizer = @detailed_grid_search;
145  model.opt_params.grid_density = 6;
146 
147 
148  opt_data = optimize(model, model_data);
149 
150 
151  keyboard;
152 
153 
154 
155 
156 
157  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
158 % reduced optimization (simplified) using a specialized reduced basis
159 % and a cone_const conv_diff_model
160 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
161  case 5
162 
163  load('DiffGreedyBase_ptpart10_2p_coarse4_Nmax30_k_0.25_selected.mat');
164 
165 % params.coarse_factor = 4;
166 % params.separate_bases = 1;
167 % params.cone_const = 1;
168 %
169 % model = convection_diffusion_fv_output_opt_model_rect_normed(params);
170 %
171  model.optimization.init_params = [0.3,0.3];
172  model.optimization.opt_mode = 'reduced';
173  model.compute_derivative_info = 1;
174  model.optimization.lower_bound = [0,0];
175  model.optimization.upper_bound = [1,1];
176  model.lipschitz_type = 'norm';
177 
178  reduced_data = gen_reduced_data(model, detailed_data);
179 
180  tic;
181  opt_data = optimize(model,reduced_data);
182  t_opt_red = toc;
183  opt_data.t_opt_red = t_opt_red;
184  disp(['Time for reduced optimization: ',num2str(t_opt_red)]);
185  plot_PM(opt_data);
186 
187  keyboard;
188 
189 
190  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
191 % reduced optimization coarse 4 using different sizes of bases
192 %
193 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
194  case 501
195 
196  load('DiffGreedyBase_ptpart10_2p_coarse4_Nmax30_k_0.25_selected.mat');
197  load('opt_data_graddet_0303_q10_tol0.01.mat');
198  opt_data_det = opt_data;
199 
200  part_used = [34,45,67,68,68,69,69,69];
201  nr_tparts = length(detailed_data.parts_detailed_data{part_used(1)}.t_part_detailed_data);
202 % params.coarse_factor = 4;
203 % params.separate_bases = 1;
204 % params.cone_const = 1;
205 %
206 % model = convection_diffusion_fv_output_opt_model_rect_normed(params);
207 %
208  model.optimization.init_params = [0.3,0.3];
209  model.optimization.opt_mode = 'reduced';
210  model.compute_derivative_info = 1;
211  model.optimization.lower_bound = [0,0];
212  model.optimization.upper_bound = [1,1];
213  model.lipschitz_type = 'norm';
214 
215  %add reduced data subset fields
216  model.reduced_data_subset = @p_part_reduced_data_subset;
217  model.base_model.base_model.reduced_data_subset = @lin_evol_opt_reduced_data_subset_separate_bases;
218 
219 
220  reduced_data = gen_reduced_data(model, detailed_data);
221 
222 
223  N_vec = 55:1:60;
224  N_der_vec = 25:1:30;
225 
226  %quantities to note
227  n_N = length(N_vec);
228  n_Nder = length(N_der_vec);
229 
230  N_av = zeros(1,n_N*n_Nder);
231  N_der_av = zeros(2,n_N*n_Nder);
232  t_opt = zeros(1,n_N*n_Nder);
233  opt_err = zeros(1,n_N*n_Nder);
234  opt_delta = zeros(1,n_N*n_Nder);
235  nbr_steps = zeros(1,n_N*n_Nder);
236 
237  for i=1:length(N_vec)
238  for j=1:length(N_der_vec);
239  model.N = N_vec(i);
240  model.N_der = N_der_vec(j).*[1,1];
241 
242  red_data_sub = model.reduced_data_subset(model, reduced_data);
243 
244  %optimization
245  tic;
246  opt_data = optimize(model,red_data_sub);
247  t_opt_red = toc;
248  opt_data.t_opt_red = t_opt_red;
249  disp(['Time for reduced optimization: ',num2str(t_opt_red)]);
250 
251  %save quantities
252  t_opt(n_Nder*(i-1)+j)=t_opt_red;
253  opt_err(n_Nder*(i-1)+j) = norm(opt_data.max_output_paramsets - opt_data_det.max_output_paramsets);
254  opt_delta(n_Nder*(i-1)+j) = opt_data.Delta_mu(end);
255  nbr_steps(n_Nder*(i-1)+j) = opt_data.nr_opti_iter;
256 
257  sumN=[0,0,0];
258  for p=1:length(part_used)
259  rd=red_data_sub.parts_reduced_data{part_used(p)};
260  for k=1:length(rd.t_part_reduced_data)
261  sumN(1) = sumN(1)+length(rd.t_part_reduced_data{k}.a0{1});
262  sumN(2) = sumN(2)+length(rd.t_part_reduced_data{k}.c0{1}{1});
263  sumN(3) = sumN(3)+length(rd.t_part_reduced_data{k}.c0{2}{1});
264  end
265  end
266 
267  N=size(part_used,2)*nr_tparts;
268  sumN = sumN./N;
269  N_av(n_Nder*(i-1)+j) = sumN(1);
270  N_der_av(:,n_Nder*(i-1)+j) = sumN([2,3])';
271 
272  end
273  end
274 
275  disp('Results:')
276  disp('---------------------');
277  disp('N_av , N_av_der, t_opt, opt_error, opt est err, numbr steps')
278  for i=1:length(N_av)
279  disp([' ',num2str(N_av(i)),' | ',num2str(N_der_av(1,i)),' | ',num2str(N_der_av(2,i)),...
280  ' || ',num2str(t_opt(i)),' | ',num2str(opt_err(i)),' | ',num2str(opt_delta(i))...
281  ' | ',num2str(nbr_steps(i)),'||']);
282  end
283 
284 
285  keyboard;
286 
287 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
288 % detailed gradient optimization (high dimensionsl coarse=1 oder 2)
289 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
290  case 6
291  params.coarse_factor = 2;
292  params.cone_const = 1;
293 
294  model = convection_diffusion_fv_output_opt_model_rect_normed(params);
295  model_data = gen_model_data(model);
296  disp(['Diffusion coefficient = ',num2str(model.k)]);
297 
298  model.optimization.init_params = [0.3, 0.3];
299  model.compute_derivative_info=1;
300  tic
301  opt_data = optimize(model, model_data);
302  t_opt_d = toc;
303  opt_data.t_opt_d = t_opt_d;
304 
305  disp(['Time for optimization : ',num2str(t_opt_d)]);
306  opt_data_det = opt_data;
307 
308  save(['opt_data_det_gradient_step_error_init',num2str(model.optimization.init_params),'.mat'],'opt_data_det');
309 
310  keyboard;
311 
312 
313 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
314 % reduced optimization (gradient step error estimator)
315 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
316  case 7
317 
318  load(fullfile(fdir,'coarse2','reduced_data_complete_N200.mat'));
319 
320 
321 % params.coarse_factor = 4;
322 % params.separate_bases = 1;
323 % params.cone_const = 1;
324 %
325 % model = convection_diffusion_fv_output_opt_model_rect_normed(params);
326 %
327 
328  %load(fullfile(fdir,'coarse2','basisNmax200','reduced_data_complete_2ndfunctional.mat'));
329 
330 
331  model.optimization.init_params = [0.3,0.3];
332  model.optimization.opt_mode = 'reduced';
333  model.base_model.optimization.init_params = [0.3,0.3];
334  model.base_model.optimization.opt_mode = 'reduced';
335  model.base_model.base_model.optimization.init_params = [0.3,0.3];
336  model.base_model.base_model.optimization.opt_mode = 'reduced';
337 
338  model.optimization.tol = 0.001;
339  model.base_model.optimization.tol = 0.001;
340  model.base_model.base_model.optimization.tol =0.001;
341 
342  %___________________________________________________________________
343  %functional 2
344 
345 
346 
347 
348  %set 2nd functional fields
349 % model.base_model.save_time_indices = 0:model.base_model.nt;
350 % model.base_model.base_model.save_time_indices = 0:model.base_model.nt;
351 % model.verbose = 4;
352 % model.base_model.verbose = 4;
353 % model.name_output_functional = 'box_mean_time';
354 % model.get_output = @lin_evol_opt_output_time_integrated;
355 % model.output_function_ptr = @output_function_box_mean;
356 % model.sbox_xmin = 0.5;
357 % model.sbox_xmax = 1;
358 % model.sbox_ymin = 0.5;
359 % model.sbox_ymax = 1;
360 % model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
361 % model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
362 % model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
363 % model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
364 % model.base_model.name_output_functional = 'box_mean_time';
365 % model.base_model.get_output = @lin_evol_opt_output_time_integrated;
366 % model.base_model.output_function_ptr = @output_function_box_mean;
367 % model.base_model.sbox_xmin = 0.5;
368 % model.base_model.sbox_xmax = 1;
369 % model.base_model.sbox_ymin = 0.5;
370 % model.base_model.sbox_ymax = 1;
371 % model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
372 % model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
373 % model.base_model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
374 % model.base_model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
375 % model.base_model.base_model.name_output_functional = 'box_mean_time';
376 % model.base_model.base_model.get_output = @lin_evol_opt_output_time_integrated;
377 % model.base_model.base_model.output_function_ptr = @output_function_box_mean;
378 % model.base_model.base_model.sbox_xmin = 0.5;
379 % model.base_model.base_model.sbox_xmax = 1;
380 % model.base_model.base_model.sbox_ymin = 0.5;
381 % model.base_model.base_model.sbox_ymax = 1;
382 % model.base_model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
383 % model.base_model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
384 % model.base_model.base_model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
385 % model.base_model.base_model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
386  %set optimzation parameters
387 
388  model.base_model.optimization.optimizer = @gradient_opt;
389  model.base_model.base_model.optimization.optimizer = @gradient_opt;
390  model.optimization.stepsize_rule = 'quotient';
391  model.base_model.optimization.stepsize_rule = 'quotient';
392  model.base_model.base_model.optimization.stepsize_rule = 'quotient';
393  model.optimization.initial_stepsize = 1;
394  model.base_model.optimization.initial_stepsize = 1;
395  model.base_model.base_model.optimization.initial_stepsize = 1;
396  model.stepsize_coefficient = 3;
397  model.base_model.stepsize_coefficient = 3;
398  model.base_model.base_model.stepsize_coefficient = 3;
399 
400 % model.optimization.stepsize_rule = 'armijo';
401 % model.optimization.armijo_t_min = 0.8;
402 % model.optimization.stepsize_factor = 0.75;
403 % model.base_model.optimization.stepsize_rule = 'armijo';
404 % model.base_model.optimization.armijo_t_min = 0.8;
405 % model.base_model.optimization.stepsize_factor = 0.75;
406 % model.base_model.base_model.optimization.stepsize_rule = 'armijo';
407 % model.base_model.base_model.optimization.armijo_t_min = 0.8;
408 % model.base_model.base_model.optimization.stepsize_factor = 0.75;
409 %
410 
411  tic;
412  opt_data = optimize(model,reduced_data);
413  t_opt_red = toc;
414  opt_data.t_opt_red = t_opt_red;
415  disp(['Time for reduced optimization: ',num2str(t_opt_red)]);
416  plot_PM(opt_data);
417 
418  keyboard;
419 
420 
421 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
422 % conducting a reduced simulation on symphony
423 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
424  case 8
425 
426  cd /home/dihlmann/matlab/rbmatlab-core/rbasis/lin_evol_opt/convdiff/coarse2
427 
428  load('reduced_data_complete.mat');
429 
430  model.optimization.init_params = [0.3,0.3];
431  model.optimization.opt_mode = 'reduced';
432  model.compute_derivative_info = 1;
433  model.optimization.lower_bound = [0,0];
434  model.optimization.upper_bound = [1,1];
435  model.lipschitz_type = 'norm';
436 
437  tic;
438  opt_data = optimize(model,reduced_data);
439  t_opt_red = toc;
440  opt_data.t_opt_red = t_opt_red;
441  disp(['Time for reduced optimization: ',num2str(t_opt_red)]);
442  save(['opt_data_',num2str(model.optimization.init_params),'.dat'],'opt_data');
443 
444  disp('opt_data gespeichert')
445 
446 
447 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
448 % doing several reduced optimization for randomly chosen initial values
449 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
450  case 9
451 
452  %load('reduced_data_complete.mat');
453  load(fullfile(fdir_temp,'coarse2','reduced_data_complete.mat'));
454  model.optimization.opt_mode = 'reduced';
455  model.base_model.optimization.opt_mode = 'reduced';
456  model.base_model.base_model.optimization.opt_mode = 'reduced';
457 
458  n_sample = 30;
459  rand_mu=rand_uniform(n_sample,model.mu_ranges);
460  stepsizes = 5:10;
461 
462  opt_data_ar = cell(n_sample, length(stepsizes));
463 
464  for i=1:n_sample
465  model.optimization.init_params = rand_mu(:,i);
466  for j=1:length(stepsizes)
467  model.stepsize_coefficient = stepsizes(j);
468  tic;
469  opt_data_ar{i}{j} = optimize(model, reduced_data);
470  t_opt = toc;
471  opt_data_ar{i}{j}.t_opt = t_opt;
472  end
473  end
474 
475  save('opt_data_arrays25.mat','opt_data_ar','rand_mu','stepsizes');
476 
477  %find out best step size
478  stepsize_v = zeros(n_sample,1);
479  Dmu_min_v = zeros(n_sample,1);
480  Dmu_sum = 0;
481  for i=1:n_sample
482  Dmu_min=opt_data_ar{i}{1}.Delta_mu(end);
483  stepsize_v(i) = stepsizes(1);
484  for j=2:length(stepsizes)
485  if (opt_data_ar{i}{j}.Delta_mu(end)<Dmu_min)
486  Dmu_min = opt_data_ar{i}{j}.Delta_mu(end);
487  stepsize_v(i) = stepsizes(j);
488  end
489  end
490  Dmu_min_v(i) = Dmu_min;
491  Dmu_sum = Dmu_sum+Dmu_min;
492  end
493  Dmu_av = Dmu_sum/n_sample;
494 
495  save('opt_data_arrays_eval.mat','opt_data_ar','rand_mu','stepsizes',...
496  'stepsize_v','Dmu_min_v','Dmu_av');
497 
498  keyboard
499 
500 
501 
502 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
503 % detailed optimization for optimization with new error estimator
504 % (this is for comparison purposes)
505 % data is saved in opt_data_det.mat
506 % !!!exchange model to outflow model as soon as new model is available!!!
507 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
508  case 10
509 
510 
511  params.coarse_factor = 2;
512  params.cone_const =1;
513 
514 % model = convection_diffusion_fv_output_opt_model_rect_normed_outflow(params);
515 % model.verbose = 5;
516 % model.optimization.optimizer = @gradient_opt_non_iter_err;
517 % model.optimization.tol = 0.0005;
518 % model.optimization.init_params = [0.3, 0.3];
519 % %model.optimization.stepsize_rule = 'quotient';
520 % %model.stepsize_coefficient = 7;
521 % %model.optimization.stepsize_rule = 'fixed_stepsize';
522 % %model.optimization.stepsize_fix = 1;
523 % model.optimization.stepsize_rule = 'armijo';
524 % model.optimization.sigma = 0.8;
525 % model.optimization.stepsize_factor = 0.75;
526 %
527 % model_data = gen_model_data(model);
528 %
529 %
530 % tic
531 % opt_data_det = optimize(model, model_data);
532 % t_opt = toc;
533 %
534 % opt_data_det.t_opt = t_opt;
535 %
536 % %keyboard;
537 %
538 % name = ['opt_data_det_',num2str(model.optimization.init_params(1)),'_',num2str(model.optimization.init_params(2)),...
539 % 'coarse',num2str(model.coarse_factor),'.mat'];
540 %
541 % save(name,'opt_data_det');
542 
543 % keyboard;
544 
545  % zweites fucktional
546  disp('Optimizing 2nd functional')
547  disp('------------------------')
548  params.functional = 'box_mean_time';
549 
550  model = convection_diffusion_fv_output_opt_model_rect_normed_outflow(params);
551  model.verbose = 9;
552 
553  model_data = gen_model_data(model);
554 
555  %set optimization paramters
556  model.optimization.tol = 0.00001;
557  model.optimization.init_params = [0.8, 0.8];
558  model.optimization.stepsize_rule = 'armijo';
559  model.optimization.sigma = 0.7;
560  model.optimization.stepsize_factor = 0.75;
561  model.optimization.initial_stepsize = 50;
562 
563  tic
564  opt_data_det = optimize(model, model_data);
565  t_opt = toc;
566 
567  opt_data_det.t_opt = t_opt;
568 
569  name = ['opt_data_det_func2_',num2str(model.optimization.init_params(1)),'_',num2str(model.optimization.init_params(2)),...
570  'coarse',num2str(model.coarse_factor),'.mat'];
571 
572  save(name,'opt_data_det');
573 
574 
575  %keyboard;
576 
577 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
578 % reduced optimization using the new non-iterative error estimator. We
579 % verify the error estimator using the result from step 10. The constants
580 % are assumed to be known at the optimum: replace later by a more general
581 % offline computation... see step 120 and 121.
582 % An important quantity for the quality of the error estimtor is the
583 % breaking condition: model.optimization.tol
584 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
585  case 11
586 
587  %load detailed optimization data
588  %load('opt_data_det_0.3_0.3coarse2.mat');
589 
590 
591  %load the reduced data and model (later: outflow model)
592  load(fullfile(fdir,'coarse2','reduced_data_complete_N200.mat'));
593  %load(fullfile(fdir,'coarse16','reduced_data_complete_coarse16.mat'));
594 
595  model.verbose = 4;
596  %set optimization parameters
597  model.optimization.tol = 0.0005;
598  model.base_model.optimization.tol = 0.0005;
599  model.base_model.base_model.optimization.tol =0.0005;
600  model.optimization.init_params = [0.3,0.3];
601  model.base_model.optimization.init_params = [0.3,0.3];
602  model.base_model.base_model.optimization.init_params = [0.3,0.3];
603 
604  %set new fields in model
605  model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
606  model.base_model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
607 
608  %set fixed stepsize
609 % model.optimization.stepsize_rule = 'fixed_stepsize';
610 % model.base_model.optimization.stepsize_rule = 'fixed_stepsize';
611 % model.base_model.base_model.optimization.stepsize_rule = 'fixed_stepsize';
612 % model.optimization.stepsize_fix = 1;
613 % model.base_model.optimization.stepsize_fix = 1;
614 % model.base_model.base_model.optimization.stepsize_fix = 1;
615  %model.optimization.stepsize_rule = 'quotient';
616  %model.base_model.optimization.stepsize_rule = 'quotient';
617  %model.base_model.base_model.optimization.stepsize_rule = 'quotient';
618  model.optimization.stepsize_rule = 'armijo';
619  model.optimization.sigma = 0.8;
620  model.optimization.stepsize_factor = 0.75;
621  model.base_model.optimization.stepsize_rule = 'armijo';
622  model.base_model.optimization.sigma = 0.8;
623  model.base_model.optimization.stepsize_factor = 0.75;
624 
625  %set constants(replace later!!)
626  model.gamma_H = @my_get_gamma_H_constant;
627  model.base_model.gamma_H = @my_get_gamma_H_constant;
628  model.base_model.base_model.gamma_H = @my_get_gamma_H_constant;
629  model.L_H = @my_get_L_H_constant;
630  model.base_model.L_H = @my_get_L_H_constant;
631  model.base_model.base_model.L_H = @my_get_L_H_constant;
632 
633  %optimization
634  tic
635  opt_data = optimize(model, reduced_data);
636  t_opt = toc;
637  opt_data.t_opt = t_opt;
638 
639  save(fullfile(fdir,'optimization_case11.mat'),'opt_data')
640 
641  %verify and compare
642 % disp(['reduced optimum: ',num2str(opt_data.optimal_params)])
643 % disp(['Delta_mu : ', num2str(opt_data.Delta_mu)])
644 % diff = opt_data.optimal_params-opt_data_det.optimal_params;
645 % disp(['true error : ',num2str(norm(diff))])
646 % disp(['Efficiency : ',num2str(opt_data.Delta_mu/norm(diff))])
647 % disp('-----')
648 % disp(['Time reduced optimization: ', num2str(opt_data.t_opt)])
649 % disp(['Time detailed optimization: ', num2str(opt_data_det.t_opt)]);
650 
651 
652 
653  %keyboard;
654 
655 
656 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
657 % Optimizae with a second functional (but NON TIME DEPENDENT!!!)
658 %
659 % the functional fields have to be added manually, as they are not included
660 % in the large model.
661 % reduced data has to be inhanced by projected output vectors
662 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
663 
664  case 12
665 
666  %load detailed optimization data
667  %load('opt_data_det_func2_0.3_0.3coarse2.mat');
668 
669 
670  %load the reduced data and model (later: outflow model)
671  load(fullfile(fdir,'coarse2_neumann','reduced_data_complete_N200.mat'));
672 
673  %set 2nd functional fields
674  model.name_output_functional = 'box_mean';
675  model.get_output = @lin_evol_opt_output_time_independent;
676  model.output_function_ptr = @output_function_box_integral;
677  model.sbox_xmin = 0.75;
678  model.sbox_xmax = 1.75;
679  model.sbox_ymin = 0.25;
680  model.sbox_ymax = 1.25;
681  model.s_l2norm = sqrt(2);
682  model.base_model.name_output_functional = 'box_mean';
683  model.base_model.get_output = @lin_evol_opt_output_time_independent;
684  model.base_model.output_function_ptr = @output_function_box_integral;
685  model.base_model.sbox_xmin = 0.75;
686  model.base_model.sbox_xmax = 1.75;
687  model.base_model.sbox_ymin = 0.25;
688  model.base_model.sbox_ymax = 1.25;
689  model.base_model.s_l2norm = sqrt(2);
690  model.base_model.base_model.name_output_functional = 'box_mean';
691  model.base_model.base_model.get_output = @lin_evol_opt_output_time_independent;
692  model.base_model.base_model.output_function_ptr = @output_function_box_integral;
693  model.base_model.base_model.sbox_xmin = 0.75;
694  model.base_model.base_model.sbox_xmax = 1.75;
695  model.base_model.base_model.sbox_ymin = 0.25;
696  model.base_model.base_model.sbox_ymax = 1.25;
697  model.base_model.base_model.s_l2norm = sqrt(2);
698 
699 
700 
701  %set tolerance level
702  model.optimization.tol = 0.0001;
703  model.base_model.optimization.tol = 0.0001;
704  model.base_model.base_model.optimization.tol =0.0001;
705 
706  %set new fields in model
707  model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
708  model.base_model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
709 
710  %set fixed stepsize
711  model.optimization.stepsize_rule = 'fixed_stepsize';
712  model.base_model.optimization.stepsize_rule = 'fixed_stepsize';
713  model.base_model.base_model.optimization.stepsize_rule = 'fixed_stepsize';
714  model.optimization.stepsize_fix = 10;
715  model.base_model.optimization.stepsize_fix = 10;
716  model.base_model.base_model.optimization.stepsize_fix = 10;
717 
718  %set constants(replace later!!)
719 % model.gamma_H = @(model)[2,model];
720 % model.base_model.gamma_H = @(model)[2,model];
721 % model.base_model.base_model.gamma_H = @(model)[2,model];
722 % model.L_H = @(model)[0.08,model];
723 % model.base_model.L_H = @(model)[0.08,model];
724 % model.base_model.base_model.L_H = @(model)[0.08,model];
725 %
726  %optimization
727  tic
728  opt_data = optimize(model, reduced_data);
729  t_opt = toc;
730  opt_data.t_opt = t_opt;
731 
732  %verify and compare
733  disp('Results for 2nd Functional reduced optimization');
734  disp('----------------------------------------------');
735  disp(['reduced optimum: ',num2str(opt_data.optimal_params)])
736  disp(['Delta_mu : ', num2str(opt_data.Delta_mu)])
737  diff = opt_data.optimal_params-opt_data_det.optimal_params;
738  disp(['true error : ',num2str(norm(diff))])
739  disp(['Efficiency : ',num2str(opt_data.Delta_mu/norm(diff))])
740  disp('-----')
741  disp(['Time reduced optimization: ', num2str(opt_data.t_opt)])
742  disp(['Time detailed optimization: ', num2str(opt_data_det.t_opt)]);
743 
744 
745 
746  keyboard;
747 
748 
749 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
750 % Optimize with a second functional
751 %
752 % important: the functional fields have to be added manually, as they were
753 % not included while painstakingly creating the reduced model on Symphony.
754 % The optimization tolerance has to be set very low (1e-5)
755 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
756  case 13
757 
758  disp('Optimizing 2nd functional by gradient method with non-iterative error estimator')
759 
760  %load detailed optimization data
761  %load('opt_data_det_func2_0.8_0.8coarse2.mat');
762 
763 
764  %load the reduced data and model (later: outflow model)
765  load(fullfile(fdir,'coarse2','basisNmax200','reduced_data_complete_2ndfunctional.mat'));
766  %load(fullfile(fdir,'coarse16','reduced_data_complete_2ndfunctional.mat'));
767 
768  %set 2nd functional fields
769  model.verbose = 4;
770  model.base_model.verbose = 4;
771  model.name_output_functional = 'box_mean_time';
772  model.get_output = @lin_evol_opt_output_time_integrated;
773  model.output_function_ptr = @output_function_box_mean;
774  model.sbox_xmin = 0.5;
775  model.sbox_xmax = 1;
776  model.sbox_ymin = 0.5;
777  model.sbox_ymax = 1;
778  model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
779  model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
780  model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
781  model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
782  model.base_model.name_output_functional = 'box_mean_time';
783  model.base_model.get_output = @lin_evol_opt_output_time_integrated;
784  model.base_model.output_function_ptr = @output_function_box_mean;
785  model.base_model.sbox_xmin = 0.5;
786  model.base_model.sbox_xmax = 1;
787  model.base_model.sbox_ymin = 0.5;
788  model.base_model.sbox_ymax = 1;
789  model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
790  model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
791  model.base_model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
792  model.base_model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
793  model.base_model.base_model.name_output_functional = 'box_mean_time';
794  model.base_model.base_model.get_output = @lin_evol_opt_output_time_integrated;
795  model.base_model.base_model.output_function_ptr = @output_function_box_mean;
796  model.base_model.base_model.sbox_xmin = 0.5;
797  model.base_model.base_model.sbox_xmax = 1;
798  model.base_model.base_model.sbox_ymin = 0.5;
799  model.base_model.base_model.sbox_ymax = 1;
800  model.base_model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
801  model.base_model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
802  model.base_model.base_model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
803  model.base_model.base_model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
804  %set optimzation parameters
805  model.optimization.tol = 0.0005;
806  model.base_model.optimization.tol = 0.0005;
807  model.base_model.base_model.optimization.tol =0.0005;
808 
809  model.optimization.init_params =[0.75,0.57];
810  model.base_model.optimization.init_params =[0.75,0.57];
811  model.base_model.base_model.optimization.init_params =[0.75,0.57];
812 
813  model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
814  model.base_model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
815 
816  model.optimization.stepsize_rule = 'armijo';
817  model.optimization.sigma = 0.7;
818  model.optimization.stepsize_factor = 0.75;
819  model.optimization.initial_stepsize = 10;
820  model.base_model.optimization.stepsize_rule = 'armijo';
821  model.base_model.optimization.sigma = 0.7;
822  model.base_model.optimization.stepsize_factor = 0.75;
823  model.base_model.optimization.initial_stepsize = 10;
824  model.base_model.base_model.optimization.stepsize_rule = 'armijo';
825  model.base_model.base_model.optimization.sigma = 0.7;
826  model.base_model.base_model.optimization.stepsize_factor = 0.75;
827  model.base_model.base_model.optimization.initial_stepsize = 10;
828 
829  model.L_H = @my_get_L_H_constant;
830  model.base_model.L_H = @my_get_L_H_constant;
831  model.base_model.base_model.L_H = @my_get_L_H_constant;
832 
833  model.gamma_H = @my_get_gamma_H_constant;
834  model.base_model.gamma_H = @my_get_gamma_H_constant;
835  model.base_model.base_model.gamma_H = @my_get_gamma_H_constant;
836 
837  model.optimization.allow_constant_calculation = 1;
838  model.base_model.optimization.allow_constant_calculation = 1;
839  model.base_model.base_model.optimization.allow_constant_calculation = 1;
840 
841  %optimization
842  disp('starting reduced optimization')
843  tic
844  opt_data = optimize(model, reduced_data);
845  t_opt = toc;
846  opt_data.t_opt = t_opt;
847 
848  save(fullfile(fdir,'optimization_case13.mat'),'opt_data');
849 
850  %detailed_optimization
851  disp('generating model data...')
852  model_data = gen_model_data(model);
853  disp('starting detailed_optimization...')
854  tic
855  opt_data_det = optimize(model, model_data);
856  t_opt = toc;
857  opt_data_det.t_opt = t_opt;
858 
859 
860 
861  %verify and compare
862  disp('Results for 2nd Functional reduced optimization');
863  disp('----------------------------------------------');
864  disp(['reduced optimum: ',num2str(opt_data.optimal_params)])
865  disp(['Delta_mu : ', num2str(opt_data.Delta_mu)])
866  diff = opt_data.optimal_params-opt_data_det.optimal_params;
867  disp(['true error : ',num2str(norm(diff))])
868  disp(['Efficiency : ',num2str(opt_data.Delta_mu/norm(diff))])
869  disp('-----')
870  disp(['Time reduced optimization: ', num2str(opt_data.t_opt)])
871  disp(['Time detailed optimization: ', num2str(opt_data_det.t_opt)]);
872 
873  save(fullfile(fdir,['opt_data_2ndfunctional_initsteps_',...
874  num2str(model.optimization.initial_stepsize),...
875  'coarse2.mat']),'opt_data','opt_data_det');
876 
877  %keyboard;
878 
879 
880 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
881 % optimize with a basis subset (varying basis size)
882 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
883 
884  case 14
885 
886  N_choice = [76,76,70,65,60,50];
887  N_der_choice = [80,80;75,75;70,70;65,65;60,60;50,50];
888 
889  %load the reduced basis
890  load(fullfile(fdir,'coarse2','reduced_data_complete_N200.mat'));
891 
892 
893  %set tolerance level
894  model.optimization.tol = 0.0005;
895  model.base_model.optimization.tol = 0.0005;
896  model.base_model.base_model.optimization.tol =0.0005;
897  model.optimization.init_params = [0.3,0.3];
898  model.base_model.optimization.init_params = [0.3,0.3];
899  model.base_model.base_model.optimization.init_params = [0.3,0.3];
900  model.optimization.stepsize_rule = 'armijo';
901  model.optimization.sigma = 0.8;
902  model.optimization.stepsize_factor = 0.75;
903  model.base_model.optimization.stepsize_rule = 'armijo';
904  model.base_model.optimization.sigma = 0.8;
905  model.base_model.optimization.stepsize_factor = 0.75;
906 
907  %set new fields in model
908  model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
909  model.base_model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
910 
911  %set constants(replace later!!)
912  model.gamma_H = @my_get_gamma_H_constant;
913  model.base_model.gamma_H = @my_get_gamma_H_constant;
914  model.base_model.base_model.gamma_H = @my_get_gamma_H_constant;
915  model.L_H = @my_get_L_H_constant;
916  model.base_model.L_H = @my_get_L_H_constant;
917  model.base_model.base_model.L_H = @my_get_L_H_constant;
918 
919  %fix reduced data subset function
920  model.reduced_data_subset = @p_part_reduced_data_subset;
921 
922  %normal optimzation full rb
923  tic;
924  opt_data_ar{1} = optimize(model, reduced_data);
925  t_opt = toc;
926  opt_data_ar{1}.t_opt = t_opt;
927 
928  for i=1:length(N_choice)
929  model.N=N_choice(i);
930  model.N_der = N_der_choice(i,:);
931  reduced_data_subset = model.reduced_data_subset(model,reduced_data);
932 
933  tic;
934  opt_data_ar{i+1} = optimize(model, reduced_data_subset);
935  t_opt = toc;
936  opt_data_ar{i+1}.t_opt = t_opt;
937  clear reduced_data_subset
938  %keyboard
939  end
940 
941  save(fullfile(fdir,'case14_sizecomparison.mat'),'opt_data_ar','N_choice','N_der_choice')
942  %keyboard;
943 
944 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55
945 % performing a detailled and a reduced optimization
946 % for various initial prameters (randomly chosen)
947 % the evaluating the results
948 % functional 1
949 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
950  case 15
951 
952  %number of samples
953  if (nargin>1)&&(isfield(expar,'n_sample'))
954  n_sample = expar.n_sample;
955  else
956  n_sample = 5;
957  end
958 
959  %introduce sample arrays
960  opt_data_det_ar = cell(1,n_sample);
961  opt_data_red_ar = cell(1,n_sample);
962 
963 
964  %load the reduced data and model
965  load(fullfile(fdir,'coarse2','reduced_data_complete_N200.mat'));
966  %load(fullfile(fdir,'coarse16','reduced_data_complete_coarse16.mat'));
967 
968  model.base_model.save_time_indices = 0:model.base_model.nt;
969  model.base_model.base_model.save_time_indices = 0:model.base_model.nt;
970  model.verbose = 4;
971  model.base_model.verbose = 4;
972  %set optimization parameters
973  model.optimization.tol = 0.0005;
974  model.base_model.optimization.tol = 0.0005;
975  model.base_model.base_model.optimization.tol =0.0005;
976  %set new fields in model
977  model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
978  model.base_model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
979  model.optimization.stepsize_rule = 'armijo';
980  model.optimization.sigma = 0.8;
981  model.optimization.stepsize_factor = 0.75;
982  model.base_model.optimization.stepsize_rule = 'armijo';
983  model.base_model.optimization.sigma = 0.8;
984  model.base_model.optimization.stepsize_factor = 0.75;
985 
986  %set constants(replace later!!)
987  model.gamma_H = @my_get_gamma_H_constant;
988  model.base_model.gamma_H = @my_get_gamma_H_constant;
989  model.base_model.base_model.gamma_H = @my_get_gamma_H_constant;
990  model.L_H = @my_get_L_H_constant;
991  model.base_model.L_H = @my_get_L_H_constant;
992  model.base_model.base_model.L_H = @my_get_L_H_constant;
993 
994  %generate model_data
995  model_data = gen_model_data(model);
996 
997  %generating the sample set
998  M = rand_uniform(n_sample,model.mu_ranges);
999 
1000 
1001  for i=1:n_sample
1002  disp('===================')
1003  disp(['Testpoint ',num2str(i),' of ',num2str(n_sample)])
1004  disp(['initial parameters: ',num2str(M(:,i)')])
1005  disp('----------------')
1006  %set new initial parameters
1007  buf_model = model;
1008  buf_model.optimization.init_params = M(:,i);
1009  buf_model.base_model.optimization.init_params = M(:,i);
1010  buf_model.base_model.base_model.optimization.init_params = M(:,i);
1011 
1012 
1013  %optimization detailed
1014  disp('detailed optimization...')
1015  tic;
1016  opt_data_det = optimize(buf_model, model_data);
1017  t_opt_det = toc;
1018  opt_data_det.t_opt = t_opt_det;
1019  %optimization reduced
1020  disp('reduced optimization')
1021  tic
1022  opt_data_red = optimize(buf_model, reduced_data);
1023  t_opt = toc;
1024  opt_data_red.t_opt = t_opt;
1025 
1026  opt_data_det_ar{i} = opt_data_det;
1027  opt_data_red_ar{i} = opt_data_red;
1028  end
1029 
1030 
1031  %evaluate results
1032  nRB_samples = [];
1033  nRB_der_samples = [];
1034  t_opt_red_samples = zeros(n_sample,1);
1035  t_opt_det_samples = zeros(n_sample,1);
1036  Delta_samples = zeros(n_sample,1);
1037  err_samples = zeros(n_sample,1);
1038  effectivity_samples = zeros(n_sample,1);
1039  opti_steps_samples = zeros(n_sample,1);
1040  nr_fct_calls_samples = zeros(n_sample,1);
1041  nr_grad_calls_samples = zeros(n_sample,1);
1042  for i = 1:n_sample
1043  nRB_samples = [nRB_samples, opt_data_red_ar{i}.nRB];
1044  nRB_der_samples = [nRB_der_samples, opt_data_red_ar{i}.nRB_der];
1045  t_opt_red_samples(i) = opt_data_red_ar{i}.t_opt;
1046  t_opt_det_samples(i) = opt_data_det_ar{i}.t_opt;
1047  Delta_samples(i) = opt_data_red_ar{i}.Delta_mu(end);
1048  err_samples(i) = norm(opt_data_det_ar{i}.optimal_params - opt_data_red_ar{i}.optimal_params);
1049  effectivity_samples(i) = Delta_samples(i) / err_samples(i);
1050  opti_steps_samples(i) = opt_data_red_ar{i}.nr_opti_iter;
1051  nr_fct_calls_samples(i) = opt_data_red_ar{i}.nr_fct_calls;
1052  nr_grad_calls_samples(i) = opt_data_red_ar{i}.nr_grad_calc;
1053  end
1054 
1055  results.M = M;
1056  results.nRB_max = max(nRB_samples);
1057  results.nRB_min = min(nRB_samples);
1058  results.nRB_av = mean(nRB_samples);
1059  results.nRB_der_max = max(nRB_der_samples');
1060  results.nRB_der_min = min(nRB_der_samples');
1061  results.nRB_der_av = mean(nRB_der_samples');
1062  results.t_opt_det_max = max(t_opt_det_samples);
1063  results.t_opt_det_min = min(t_opt_det_samples);
1064  results.t_opt_det_av = mean(t_opt_det_samples);
1065  results.t_opt_red_max = max(t_opt_red_samples);
1066  results.t_opt_red_min = min(t_opt_red_samples);
1067  results.t_opt_red_av = mean(t_opt_red_samples);
1068  results.Delta_max = max(Delta_samples);
1069  results.Delta_min = min(Delta_samples);
1070  results.Delta_av = mean(Delta_samples);
1071  results.err_max = max(err_samples);
1072  results.err_min = min(err_samples);
1073  results.err_av = mean(err_samples);
1074  results.effectivity_max = max(effectivity_samples);
1075  results.effectivity_min = min(effectivity_samples);
1076  results.effectivity_av = mean(effectivity_samples);
1077  results.opti_steps_max = max(opti_steps_samples);
1078  results.opti_steps_min = min(opti_steps_samples);
1079  results.opti_steps_av = mean(opti_steps_samples);
1080  results.nr_fct_calls_max = max(nr_fct_calls_samples);
1081  results.nr_fct_calls_min = min(nr_fct_calls_samples);
1082  results.nr_fct_calls_av = mean(nr_fct_calls_samples);
1083  results.nr_grad_calls_max = max(nr_grad_calls_samples);
1084  results.nr_grad_calls_min = min(nr_grad_calls_samples);
1085  results.nr_grad_calls_av = mean(nr_grad_calls_samples);
1086 
1087  name = ['results_case_15_coarse',num2str(model.base_model.coarse_factor),...
1088  '_nsample_',num2str(n_sample),'.mat'];
1089  save(fullfile(fdir,name),'results','opt_data_red_ar','opt_data_det_ar');
1090 
1091  %email senden
1092  setpref('Internet','SMTP_Server','wap04.mathematik.uni-stuttgart.de')
1093  sendmail('dihlmann','case15 fertig',['Initial value changes with n_sample=',num2str(n_sample),' for functional 1 finished. Good work Spock!']);
1094 
1095 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1096 % weitere auswertungen der in case 15 erhaltenen Ergebnisse
1097 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
1098 
1099  case 16
1100 
1101  load('reusults_case_15_coarse16_nsample_3.mat')
1102 
1103  opt_params=[];
1104 
1105  for i=1:length(opt_data_det_ar)
1106  opt_params = [opt_params;opt_data_det_ar{i}.optimal_params];
1107  end
1108 
1109  scatter(opt_params(:,1),opt_params(:,2));
1110 
1111  keyboard;
1112 
1113 
1114 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55
1115 % performing a detailled and a reduced optimization
1116 % for various initial prameters (randomly chosen)
1117 % the evaluating the results
1118 % functional 2
1119 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1120  case 17
1121 
1122  %number of samples
1123  if (nargin>1)&&(isfield(expar,'n_sample'))
1124  n_sample = expar.n_sample;
1125  else
1126  n_sample = 3;
1127  end
1128 
1129  %introduce sample arrays
1130  opt_data_det_ar = cell(1,n_sample);
1131  opt_data_red_ar = cell(1,n_sample);
1132 
1133  %set optimization parameters
1134  load(fullfile(fdir,'coarse2','basisNmax200','reduced_data_complete_2ndfunctional.mat'));
1135 
1136  %set 2nd functional fields
1137  model.base_model.save_time_indices = 0:model.base_model.nt;
1138  model.base_model.base_model.save_time_indices = 0:model.base_model.nt;
1139  model.verbose = 4;
1140  model.base_model.verbose = 4;
1141  model.name_output_functional = 'box_mean_time';
1142  model.get_output = @lin_evol_opt_output_time_integrated;
1143  model.output_function_ptr = @output_function_box_mean;
1144  model.sbox_xmin = 0.5;
1145  model.sbox_xmax = 1;
1146  model.sbox_ymin = 0.5;
1147  model.sbox_ymax = 1;
1148  model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
1149  model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
1150  model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1151  model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1152  model.base_model.name_output_functional = 'box_mean_time';
1153  model.base_model.get_output = @lin_evol_opt_output_time_integrated;
1154  model.base_model.output_function_ptr = @output_function_box_mean;
1155  model.base_model.sbox_xmin = 0.5;
1156  model.base_model.sbox_xmax = 1;
1157  model.base_model.sbox_ymin = 0.5;
1158  model.base_model.sbox_ymax = 1;
1159  model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
1160  model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
1161  model.base_model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1162  model.base_model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1163  model.base_model.base_model.name_output_functional = 'box_mean_time';
1164  model.base_model.base_model.get_output = @lin_evol_opt_output_time_integrated;
1165  model.base_model.base_model.output_function_ptr = @output_function_box_mean;
1166  model.base_model.base_model.sbox_xmin = 0.5;
1167  model.base_model.base_model.sbox_xmax = 1;
1168  model.base_model.base_model.sbox_ymin = 0.5;
1169  model.base_model.base_model.sbox_ymax = 1;
1170  model.base_model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
1171  model.base_model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
1172  model.base_model.base_model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1173  model.base_model.base_model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1174  %set optimzation parameters
1175  model.optimization.tol = 0.0005;
1176  model.base_model.optimization.tol = 0.0005;
1177  model.base_model.base_model.optimization.tol =0.0005;
1178 
1179  model.optimization.init_params =[0.3,0.3];
1180  model.base_model.optimization.init_params =[0.3,0.3];
1181  model.base_model.base_model.optimization.init_params =[0.3,0.3];
1182 
1183  model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
1184  model.base_model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
1185 
1186  model.optimization.stepsize_rule = 'armijo';
1187  model.optimization.sigma = 0.8;
1188  model.optimization.stepsize_factor = 0.75;
1189  model.optimization.initial_stepsize = 10;
1190  model.base_model.optimization.stepsize_rule = 'armijo';
1191  model.base_model.optimization.sigma = 0.8;
1192  model.base_model.optimization.stepsize_factor = 0.75;
1193  model.base_model.optimization.initial_stepsize = 10;
1194  model.base_model.base_model.optimization.stepsize_rule = 'armijo';
1195  model.base_model.base_model.optimization.sigma = 0.8;
1196  model.base_model.base_model.optimization.stepsize_factor = 0.75;
1197  model.base_model.base_model.optimization.initial_stepsize = 10;
1198 
1199  model.gamma_H = @(model)dummy_constant(model,9.4347);
1200  model.base_model.gamma_H = @(model)dummy_constant(model,9.4347);
1201  model.base_model.base_model.gamma_H =@(model)dummy_constant(model,9.4347);
1202  model.L_H = @(model)dummy_constant(model,3.442);
1203  model.base_model.L_H =@(model)dummy_constant(model,3.442);
1204  model.base_model.base_model.L_H = @(model)dummy_constant(model,3.442);
1205 
1206  %generate model_data
1207  model_data = gen_model_data(model);
1208 
1209  %generating the sample set
1210  M = rand_uniform(n_sample,model.mu_ranges);
1211 
1212  for i=1:n_sample
1213  disp('===================')
1214  disp(['Testpoint ',num2str(i),' of ',num2str(n_sample)])
1215  disp('----------------')
1216  %set new initial parameters
1217  buf_model = model;
1218  buf_model.optimization.init_params = M(:,i);
1219  buf_model.base_model.optimization.init_params = M(:,i);
1220  buf_model.base_model.base_model.optimization.init_params = M(:,i);
1221 
1222 
1223  %optimization detailed
1224  tic;
1225  opt_data_det = optimize(buf_model, model_data);
1226  t_opt_det = toc;
1227  opt_data_det.t_opt = t_opt_det;
1228  %optimization reduced
1229  tic
1230  opt_data_red = optimize(buf_model, reduced_data);
1231  t_opt = toc;
1232  opt_data_red.t_opt = t_opt;
1233 
1234  opt_data_det_ar{i} = opt_data_det;
1235  opt_data_red_ar{i} = opt_data_red;
1236  end
1237 
1238  %evaluate results
1239  nRB_samples = [];
1240  nRB_der_samples = [];
1241  t_opt_red_samples = zeros(n_sample,1);
1242  t_opt_det_samples = zeros(n_sample,1);
1243  Delta_samples = zeros(n_sample,1);
1244  err_samples = zeros(n_sample,1);
1245  effectivity_samples = zeros(n_sample,1);
1246  opti_steps_samples = zeros(n_sample,1);
1247  nr_fct_calls_samples = zeros(n_sample,1);
1248  nr_grad_calls_samples = zeros(n_sample,1);
1249  for i = 1:n_sample
1250  nRB_samples = [nRB_samples, opt_data_red_ar{i}.nRB];
1251  nRB_der_samples = [nRB_der_samples, opt_data_red_ar{i}.nRB_der];
1252  t_opt_red_samples(i) = opt_data_red_ar{i}.t_opt;
1253  t_opt_det_samples(i) = opt_data_det_ar{i}.t_opt;
1254  Delta_samples(i) = opt_data_red_ar{i}.Delta_mu(end);
1255  err_samples(i) = norm(opt_data_det_ar{i}.optimal_params - opt_data_red_ar{i}.optimal_params);
1256  effectivity_samples(i) = Delta_samples(i) / err_samples(i);
1257  opti_steps_samples(i) = opt_data_red_ar{i}.nr_opti_iter;
1258  nr_fct_calls_samples(i) = opt_data_red_ar{i}.nr_fct_calls;
1259  nr_grad_calls_samples(i) = opt_data_red_ar{i}.nr_grad_calc;
1260  end
1261 
1262  results.M = M;
1263  results.nRB_max = max(nRB_samples);
1264  results.nRB_min = min(nRB_samples);
1265  results.nRB_av = mean(nRB_samples);
1266  results.nRB_der_max = max(nRB_der_samples');
1267  results.nRB_der_min = min(nRB_der_samples');
1268  results.nRB_der_av = mean(nRB_der_samples');
1269  results.t_opt_det_max = max(t_opt_det_samples);
1270  results.t_opt_det_min = min(t_opt_det_samples);
1271  results.t_opt_det_av = mean(t_opt_det_samples);
1272  results.t_opt_red_max = max(t_opt_red_samples);
1273  results.t_opt_red_min = min(t_opt_red_samples);
1274  results.t_opt_red_av = mean(t_opt_red_samples);
1275  results.Delta_max = max(Delta_samples);
1276  results.Delta_min = min(Delta_samples);
1277  results.Delta_av = mean(Delta_samples);
1278  results.err_max = max(err_samples);
1279  results.err_min = min(err_samples);
1280  results.err_av = mean(err_samples);
1281  results.effectivity_max = max(effectivity_samples);
1282  results.effectivity_min = min(effectivity_samples);
1283  results.effectivity_av = mean(effectivity_samples);
1284  results.opti_steps_max = max(opti_steps_samples);
1285  results.opti_steps_min = min(opti_steps_samples);
1286  results.opti_steps_av = mean(opti_steps_samples);
1287  results.nr_fct_calls_max = max(nr_fct_calls_samples);
1288  results.nr_fct_calls_min = min(nr_fct_calls_samples);
1289  results.nr_fct_calls_av = mean(nr_fct_calls_samples);
1290  results.nr_grad_calls_max = max(nr_grad_calls_samples);
1291  results.nr_grad_calls_min = min(nr_grad_calls_samples);
1292  results.nr_grad_calls_av = mean(nr_grad_calls_samples);
1293 
1294  name = ['results_case_17_coarse',num2str(model.base_model.coarse_factor),...
1295  '_nsample_',num2str(n_sample),'.mat'];
1296  save(fullfile(fdir,name),'results','opt_data_red_ar','opt_data_det_ar');
1297 
1298 
1299 
1300 
1301 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
1302 %
1303 % Optimierung mit dem Simplex (vorprogrammiert in Matlab)
1304 %
1305 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1306 
1307  case 18
1308 
1309  %load the reduced data and model (later: outflow model)
1310  %load(fullfile(fdir,'coarse2','reduced_data_complete_N200.mat'));
1311  load(fullfile(fdir,'coarse16','reduced_data_complete_coarse16.mat'));
1312  model.verbose = 3;
1313 
1314  %set optimization parameters
1315  model.optimization.tol = 0.0005;
1316  model.base_model.optimization.tol = 0.0005;
1317  model.base_model.base_model.optimization.tol =0.0005;
1318  model.optimization.init_params = [0.3,0.3];
1319  model.base_model.optimization.init_params = [0.3,0.3];
1320  model.base_model.base_model.optimization.init_params = [0.3,0.3];
1321 
1322  %set new fields in model
1323  model.base_model.optimization.optimizer = @simplex_nonlinear;
1324  model.base_model.base_model.optimization.optimizer = @simplex_nonlinear;
1325 
1326 
1327  %set constants(replace later!!)
1328  model.gamma_H = @my_get_gamma_H_constant;
1329  model.base_model.gamma_H = @my_get_gamma_H_constant;
1330  model.base_model.base_model.gamma_H = @my_get_gamma_H_constant;
1331  model.L_H = @my_get_L_H_constant;
1332  model.base_model.L_H = @my_get_L_H_constant;
1333  model.base_model.base_model.L_H = @my_get_L_H_constant;
1334 
1335  model_data = gen_model_data(model);
1336 
1337  %optimization
1338  tic
1339  opt_data = optimize(model, reduced_data);
1340  t_opt = toc;
1341  opt_data.t_opt = t_opt;
1342 
1343  keyboard;
1344 
1345 
1346 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1347 % lade die ergebnisse von case 15 und führe mit dem Simplex algorithmus für
1348 % die gleichen Testpunkte auch eine Optimierung durch
1349 % Functional 1
1350 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1351 
1352  case 19
1353 
1354 
1355  if (nargin>1)&&(isfield(expar,'n_sample'))
1356  n_sample = expar.n_sample;
1357  else
1358  n_sample = 30;
1359  end
1360 
1361 
1362  % lade reduced data functional 1
1363  load(fullfile(fdir,'coarse2','reduced_data_complete_N200.mat'));
1364  %load(fullfile(fdir,'coarse16','reduced_data_complete_coarse16.mat'));
1365 
1366  % load results from case 15
1367 % name = ['reusults_case_15_coarse',num2str(model.base_model.coarse_factor),...
1368 % '_nsample_',num2str(n_sample),'.mat'];
1369 % load(name);
1370 %
1371  %initialize variables
1372  M = rand_uniform(n_sample,model.mu_ranges);
1373  %M = results.M;
1374  opt_data_simpl_det_ar = cell(1,n_sample);
1375  opt_data_simpl_red_ar = cell(1,n_sample);
1376 
1377 
1378  %set fields for functional 1 and simplex algorithm
1379  model.verbose = 3;
1380  %set optimization parameters
1381  model.optimization.tol = 0.0005;
1382  model.base_model.optimization.tol = 0.0005;
1383  model.base_model.base_model.optimization.tol =0.0005;
1384  model.base_model.optimization.optimizer = @simplex_nonlinear;
1385  model.base_model.base_model.optimization.optimizer = @simplex_nonlinear;
1386 
1387  %set constants(replace later!!)
1388  model.gamma_H = @my_get_gamma_H_constant;
1389  model.base_model.gamma_H = @my_get_gamma_H_constant;
1390  model.base_model.base_model.gamma_H = @my_get_gamma_H_constant;
1391  model.L_H = @my_get_L_H_constant;
1392  model.base_model.L_H = @my_get_L_H_constant;
1393  model.base_model.base_model.L_H = @my_get_L_H_constant;
1394 
1395  %generate model_data
1396  model_data = gen_model_data(model);
1397 
1398 
1399  %optimize for all test points
1400  for i=1:n_sample
1401  disp('===================')
1402  disp(['Testpoint ',num2str(i),' of ',num2str(n_sample)])
1403  disp('----------------')
1404  %set new initial parameters
1405  model.optimization.init_params = M(:,i);
1406  model.base_model.optimization.init_params = M(:,i);
1407  model.base_model.base_model.optimization.init_params = M(:,i);
1408 
1409 
1410  %optimization detailed
1411  disp('Detailed simplex optimization...')
1412  tic;
1413  opt_data_simpl_det = optimize(model, model_data);
1414  t_opt_det = toc;
1415  opt_data_simpl_det.t_opt = t_opt_det;
1416  %optimization reduced
1417  disp('reduced simplex optimization...')
1418  tic
1419  opt_data_simpl_red = optimize(model, reduced_data);
1420  t_opt = toc;
1421  opt_data_simpl_red.t_opt = t_opt;
1422 
1423  opt_data_simpl_det_ar{i} = opt_data_simpl_det;
1424  opt_data_simpl_red_ar{i} = opt_data_simpl_red;
1425  end
1426 
1427 
1428 
1429 
1430 
1431  %evaluate the resulte
1432 
1433  t_opt_red_samples = zeros(n_sample,1);
1434  t_opt_det_samples = zeros(n_sample,1);
1435  Delta_samples = zeros(n_sample,1);
1436  err_samples = zeros(n_sample,1);
1437  effectivity_samples = zeros(n_sample,1);
1438  opti_steps_samples = zeros(n_sample,1);
1439  nr_fct_calls_samples = zeros(n_sample,1);
1440  for i = 1:n_sample
1441  t_opt_red_samples(i) = opt_data_simpl_red_ar{i}.t_opt;
1442  t_opt_det_samples(i) = opt_data_simpl_det_ar{i}.t_opt;
1443  Delta_samples(i) = opt_data_simpl_red_ar{i}.Delta_mu(end);
1444  err_samples(i) = norm(opt_data_simpl_det_ar{i}.optimal_params - opt_data_simpl_red_ar{i}.optimal_params);
1445  effectivity_samples(i) = Delta_samples(i) / err_samples(i);
1446  opti_steps_samples(i) = opt_data_simpl_red_ar{i}.nr_iterations;
1447  nr_fct_calls_samples(i) = opt_data_simpl_red_ar{i}.nr_fct_calls;
1448 
1449  end
1450 
1451  results_simpl.M = M;
1452  results_simpl.t_opt_det_max = max(t_opt_det_samples);
1453  results_simpl.t_opt_det_min = min(t_opt_det_samples);
1454  results_simpl.t_opt_det_av = mean(t_opt_det_samples);
1455  results_simpl.t_opt_red_max = max(t_opt_red_samples);
1456  results_simpl.t_opt_red_min = min(t_opt_red_samples);
1457  results_simpl.t_opt_red_av = mean(t_opt_red_samples);
1458  results_simpl.Delta_max = max(Delta_samples);
1459  results_simpl.Delta_min = min(Delta_samples);
1460  results_simpl.Delta_av = mean(Delta_samples);
1461  results_simpl.err_max = max(err_samples);
1462  results_simpl.err_min = min(err_samples);
1463  results_simpl.err_av = mean(err_samples);
1464  results_simpl.effectivity_max = max(effectivity_samples);
1465  results_simpl.effectivity_min = min(effectivity_samples);
1466  results_simpl.effectivity_av = mean(effectivity_samples);
1467  results_simpl.opti_steps_max = max(opti_steps_samples);
1468  results_simpl.opti_steps_min = min(opti_steps_samples);
1469  results_simpl.opti_steps_av = mean(opti_steps_samples);
1470  results_simpl.nr_fct_calls_max = max(nr_fct_calls_samples);
1471  results_simpl.nr_fct_calls_min = min(nr_fct_calls_samples);
1472  results_simpl.nr_fct_calls_av = mean(nr_fct_calls_samples);
1473 
1474 
1475  %save the results
1476  name = ['results_case_19_simplex_coarse',num2str(model.base_model.coarse_factor),...
1477  '_nsample_',num2str(n_sample),'.mat'];
1478  save(fullfile(fdir,name),'results_simpl','opt_data_simpl_red_ar','opt_data_simpl_det_ar');
1479 
1480  %email senden
1481  setpref('Internet','SMTP_Server','wap04.mathematik.uni-stuttgart.de')
1482  sendmail('dihlmann','case19 fertig',['Simplex optimization with ',num2str(n_sample),' samples for functional 1 finished. Good work Spock!']);
1483 
1484 
1485  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1486 % lade die ergebnisse von case 17 und führe mit dem Simplex algorithmus für
1487 % die gleichen Testpunkte auch eine Optimierung durch
1488 % Functional 2
1489 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1490 
1491  case 20
1492 
1493  n_sample = 30;
1494 
1495  % lade reduced data functional 2
1496  load(fullfile(fdir,'coarse2','basisNmax200','reduced_data_complete_2ndfunctional.mat'));
1497  %load(fullfile(fdir,'coarse16','reduced_data_complete_coarse16_2ndfunctional.mat'));
1498 
1499  % load results from case 17
1500 % name = ['reusults_case_17_coarse',num2str(model.base_model.coarse_factor),...
1501 % '_nsample_',num2str(n_sample),'.mat'];
1502 % load(name);
1503 
1504  %initialize variables
1505  M = rand_uniform(n_sample,model.mu_ranges);
1506  %M = results.M;
1507  opt_data_simpl_det_ar = cell(1,n_sample);
1508  opt_data_simpl_red_ar = cell(1,n_sample);
1509 
1510 
1511  %set fields for functional 1 and simplex algorithm
1512  model.base_model.save_time_indices = 0:model.base_model.nt;
1513  model.base_model.base_model.save_time_indices = 0:model.base_model.nt;
1514  model.verbose = 4;
1515  model.base_model.verbose = 4;
1516  model.name_output_functional = 'box_mean_time';
1517  model.get_output = @lin_evol_opt_output_time_integrated;
1518  model.output_function_ptr = @output_function_box_mean;
1519  model.sbox_xmin = 0.5;
1520  model.sbox_xmax = 1;
1521  model.sbox_ymin = 0.5;
1522  model.sbox_ymax = 1;
1523  model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
1524  model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
1525  model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1526  model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1527  model.base_model.name_output_functional = 'box_mean_time';
1528  model.base_model.get_output = @lin_evol_opt_output_time_integrated;
1529  model.base_model.output_function_ptr = @output_function_box_mean;
1530  model.base_model.sbox_xmin = 0.5;
1531  model.base_model.sbox_xmax = 1;
1532  model.base_model.sbox_ymin = 0.5;
1533  model.base_model.sbox_ymax = 1;
1534  model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
1535  model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
1536  model.base_model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1537  model.base_model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1538  model.base_model.base_model.name_output_functional = 'box_mean_time';
1539  model.base_model.base_model.get_output = @lin_evol_opt_output_time_integrated;
1540  model.base_model.base_model.output_function_ptr = @output_function_box_mean;
1541  model.base_model.base_model.sbox_xmin = 0.5;
1542  model.base_model.base_model.sbox_xmax = 1;
1543  model.base_model.base_model.sbox_ymin = 0.5;
1544  model.base_model.base_model.sbox_ymax = 1;
1545  model.base_model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
1546  model.base_model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
1547  model.base_model.base_model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1548  model.base_model.base_model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1549  %set optimzation parameters
1550  model.optimization.tol = 0.0005;
1551  model.base_model.optimization.tol = 0.0005;
1552  model.base_model.base_model.optimization.tol =0.0005;
1553 
1554  model.gamma_H = @(model)dummy_constant(model,9.4347);
1555  model.base_model.gamma_H = @(model)dummy_constant(model,9.4347);
1556  model.base_model.base_model.gamma_H =@(model)dummy_constant(model,9.4347);
1557  model.L_H = @(model)dummy_constant(model,3.442);
1558  model.base_model.L_H =@(model)dummy_constant(model,3.442);
1559  model.base_model.base_model.L_H = @(model)dummy_constant(model,3.442);
1560 
1561  model.base_model.optimization.optimizer = @simplex_nonlinear;
1562  model.base_model.base_model.optimization.optimizer = @simplex_nonlinear;
1563 
1564 
1565  %generate model_data
1566  model_data = gen_model_data(model);
1567 
1568 
1569  %optimize for all test points
1570  for i=1:n_sample
1571  disp('===================')
1572  disp(['Testpoint ',num2str(i),' of ',num2str(n_sample)])
1573  disp('----------------')
1574  %set new initial parameters
1575  model.optimization.init_params = M(:,i);
1576  model.base_model.optimization.init_params = M(:,i);
1577  model.base_model.base_model.optimization.init_params = M(:,i);
1578 
1579 
1580  %optimization detailed
1581  tic;
1582  opt_data_simpl_det = optimize(model, model_data);
1583  t_opt_det = toc;
1584  opt_data_simpl_det.t_opt = t_opt_det;
1585  %optimization reduced
1586  tic
1587  opt_data_simpl_red = optimize(model, reduced_data);
1588  t_opt = toc;
1589  opt_data_simpl_red.t_opt = t_opt;
1590 
1591  opt_data_simpl_det_ar{i} = opt_data_simpl_det;
1592  opt_data_simpl_red_ar{i} = opt_data_simpl_red;
1593  end
1594 
1595 
1596  %evaluate the resulte
1597  t_opt_red_samples = zeros(n_sample,1);
1598  t_opt_det_samples = zeros(n_sample,1);
1599  Delta_samples = zeros(n_sample,1);
1600  err_samples = zeros(n_sample,1);
1601  effectivity_samples = zeros(n_sample,1);
1602  opti_steps_samples = zeros(n_sample,1);
1603  nr_fct_calls_samples = zeros(n_sample,1);
1604  for i = 1:n_sample
1605  t_opt_red_samples(i) = opt_data_simpl_red_ar{i}.t_opt;
1606  t_opt_det_samples(i) = opt_data_simpl_det_ar{i}.t_opt;
1607  Delta_samples(i) = opt_data_simpl_red_ar{i}.Delta_mu(end);
1608  err_samples(i) = norm(opt_data_simpl_det_ar{i}.optimal_params - opt_data_simpl_red_ar{i}.optimal_params);
1609  effectivity_samples(i) = Delta_samples(i) / err_samples(i);
1610  opti_steps_samples(i) = opt_data_simpl_red_ar{i}.nr_iterations;
1611  nr_fct_calls_samples(i) = opt_data_simpl_red_ar{i}.nr_fct_calls;
1612 
1613  end
1614 
1615  results_simpl.M = M;
1616  results_simpl.t_opt_det_max = max(t_opt_det_samples);
1617  results_simpl.t_opt_det_min = min(t_opt_det_samples);
1618  results_simpl.t_opt_det_av = mean(t_opt_det_samples);
1619  results_simpl.t_opt_red_max = max(t_opt_red_samples);
1620  results_simpl.t_opt_red_min = min(t_opt_red_samples);
1621  results_simpl.t_opt_red_av = mean(t_opt_red_samples);
1622  results_simpl.Delta_max = max(Delta_samples);
1623  results_simpl.Delta_min = min(Delta_samples);
1624  results_simpl.Delta_av = mean(Delta_samples);
1625  results_simpl.err_max = max(err_samples);
1626  results_simpl.err_min = min(err_samples);
1627  results_simpl.err_av = mean(err_samples);
1628  results_simpl.effectivity_max = max(effectivity_samples);
1629  results_simpl.effectivity_min = min(effectivity_samples);
1630  results_simpl.effectivity_av = mean(effectivity_samples);
1631  results_simpl.opti_steps_max = max(opti_steps_samples);
1632  results_simpl.opti_steps_min = min(opti_steps_samples);
1633  results_simpl.opti_steps_av = mean(opti_steps_samples);
1634  results_simpl.nr_fct_calls_max = max(nr_fct_calls_samples);
1635  results_simpl.nr_fct_calls_min = min(nr_fct_calls_samples);
1636  results_simpl.nr_fct_calls_av = mean(nr_fct_calls_samples);
1637 
1638 
1639  %save the results
1640  name = ['results_case_20_simplex_coarse',num2str(model.base_model.coarse_factor),...
1641  '_nsample_',num2str(n_sample),'.mat'];
1642  save(fullfile(fdir,name),'results_simpl','opt_data_simpl_red_ar','opt_data_simpl_det_ar');
1643 
1644 
1645 
1646 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1647 % Experiment changing the breaking tolerance
1648 % we chacnge the breaking tolerance for the gradient optimization to stop
1649 % Observe: When is the breaking condition for the error estimator
1650 % fullfilled, how does the error estimator change with the changing
1651 % breaking condition, how does the effectivity change?
1652 %-------
1653 % 2nd functional
1654 %---------
1655 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1656 
1657  case 21
1658 
1659  %epsilon breaking values
1660  tol_vec = [0.005,0.002, 0.001, 0.0008,0.0005];
1661  n_sample = length(tol_vec);
1662 
1663  %introduce sample arrays
1664  opt_data_det_ar = cell(1,n_sample);
1665  opt_data_red_ar = cell(1,n_sample);
1666 
1667  %_________________________________________________________________________
1668  %functional 1
1669  %===========================
1670  % %set optimization parameters
1671  % load(fullfile(fdir,'coarse2','reduced_data_complete_N200.mat'));
1672  % %load(fullfile(fdir,'coarse16','reduced_data_complete_coarse16.mat'));
1673  %
1674  % model.verbose = 4;
1675  % model.base_model.verbose = 4;
1676  % %set optimization parameters
1677  % model.optimization.tol = 0.0005;
1678  % model.base_model.optimization.tol = 0.0005;
1679  % model.base_model.base_model.optimization.tol =0.0005;
1680  % %set new fields in model
1681  % model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
1682  % model.base_model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
1683  % model.optimization.stepsize_rule = 'armijo';
1684  % model.optimization.sigma = 0.8;
1685  % model.optimization.stepsize_factor = 0.75;
1686  % model.base_model.optimization.stepsize_rule = 'armijo';
1687  % model.base_model.optimization.sigma = 0.8;
1688  % model.base_model.optimization.stepsize_factor = 0.75;
1689  %
1690  % %set constants(replace later!!)
1691  % model.gamma_H = @my_get_gamma_H_constant;
1692  % model.base_model.gamma_H = @my_get_gamma_H_constant;
1693  % model.base_model.base_model.gamma_H = @my_get_gamma_H_constant;
1694  % model.L_H = @my_get_L_H_constant;
1695  % model.base_model.L_H = @my_get_L_H_constant;
1696  % model.base_model.base_model.L_H = @my_get_L_H_constant;
1697  %
1698 
1699  %________________________________________________________________________________
1700  % functional 2
1701  %=====================
1702 
1703  %set optimization parameters
1704  load(fullfile(fdir,'coarse2','basisNmax200','reduced_data_complete_2ndfunctional.mat'));
1705 
1706  %set 2nd functional fields
1707  model.base_model.save_time_indices = 0:model.base_model.nt;
1708  model.base_model.base_model.save_time_indices = 0:model.base_model.nt;
1709  model.verbose = 4;
1710  model.base_model.verbose = 4;
1711  model.name_output_functional = 'box_mean_time';
1712  model.get_output = @lin_evol_opt_output_time_integrated;
1713  model.output_function_ptr = @output_function_box_mean;
1714  model.sbox_xmin = 0.5;
1715  model.sbox_xmax = 1;
1716  model.sbox_ymin = 0.5;
1717  model.sbox_ymax = 1;
1718  model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
1719  model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
1720  model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1721  model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1722  model.base_model.name_output_functional = 'box_mean_time';
1723  model.base_model.get_output = @lin_evol_opt_output_time_integrated;
1724  model.base_model.output_function_ptr = @output_function_box_mean;
1725  model.base_model.sbox_xmin = 0.5;
1726  model.base_model.sbox_xmax = 1;
1727  model.base_model.sbox_ymin = 0.5;
1728  model.base_model.sbox_ymax = 1;
1729  model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
1730  model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
1731  model.base_model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1732  model.base_model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1733  model.base_model.base_model.name_output_functional = 'box_mean_time';
1734  model.base_model.base_model.get_output = @lin_evol_opt_output_time_integrated;
1735  model.base_model.base_model.output_function_ptr = @output_function_box_mean;
1736  model.base_model.base_model.sbox_xmin = 0.5;
1737  model.base_model.base_model.sbox_xmax = 1;
1738  model.base_model.base_model.sbox_ymin = 0.5;
1739  model.base_model.base_model.sbox_ymax = 1;
1740  model.base_model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
1741  model.base_model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
1742  model.base_model.base_model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1743  model.base_model.base_model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1744  %set optimzation parameters
1745 
1746  model.optimization.init_params =[0.35,0.35];
1747  model.base_model.optimization.init_params =[0.35,0.35];
1748  model.base_model.base_model.optimization.init_params =[0.35,0.35];
1749 
1750  model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
1751  model.base_model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
1752 
1753  model.optimization.stepsize_rule = 'armijo';
1754  model.optimization.sigma = 0.8;
1755  model.optimization.stepsize_factor = 0.75;
1756  model.optimization.initial_stepsize = 10;
1757  model.base_model.optimization.stepsize_rule = 'armijo';
1758  model.base_model.optimization.sigma = 0.8;
1759  model.base_model.optimization.stepsize_factor = 0.75;
1760  model.base_model.optimization.initial_stepsize = 10;
1761  model.base_model.base_model.optimization.stepsize_rule = 'armijo';
1762  model.base_model.base_model.optimization.sigma = 0.8;
1763  model.base_model.base_model.optimization.stepsize_factor = 0.75;
1764  model.base_model.base_model.optimization.initial_stepsize = 10;
1765 
1766  model.gamma_H = @(model)dummy_constant(model,100);
1767  model.base_model.gamma_H = @(model)dummy_constant(model,100);
1768  model.base_model.base_model.gamma_H =@(model)dummy_constant(model,100);
1769  model.L_H = @(model)dummy_constant(model,100);
1770  model.base_model.L_H =@(model)dummy_constant(model,100);
1771  model.base_model.base_model.L_H = @(model)dummy_constant(model,100);
1772 
1773  model.optimization.allow_constant_calculation = 1;
1774  model.base_model.optimization.allow_constant_calculation = 1;
1775  model.base_model.base_model.optimization.allow_constant_calculation = 1;
1776 
1777 
1778  %generate model_data
1779  model_data = gen_model_data(model);
1780 
1781 
1782  for i=1:n_sample
1783 
1784  disp('===================')
1785  disp(['Testpoint ',num2str(i),' of ',num2str(n_sample)])
1786  disp('----------------')
1787  %set new tolerance
1788  model.optimization.tol = tol_vec(i);
1789  model.base_model.optimization.tol = tol_vec(i);
1790  model.base_model.base_model.optimization.tol =tol_vec(i);
1791 
1792  %optimization detailed
1793  disp('detailed optimization ')
1794  disp('---------------------')
1795  tic;
1796  opt_data_det = optimize(model, model_data);
1797  t_opt_det = toc;
1798  opt_data_det.t_opt = t_opt_det;
1799  %optimization reduced
1800  disp('reduced optimization ')
1801  disp('---------------------')
1802  tic
1803  opt_data_red = optimize(model, reduced_data);
1804  t_opt = toc;
1805  opt_data_red.t_opt = t_opt;
1806 
1807  opt_data_det_ar{i} = opt_data_det;
1808  opt_data_red_ar{i} = opt_data_red;
1809  end
1810 
1811  %evaluate results
1812  nRB_samples = [];
1813  nRB_der_samples = [];
1814  t_opt_red_samples = zeros(n_sample,1);
1815  t_opt_det_samples = zeros(n_sample,1);
1816  Delta_samples = zeros(n_sample,1);
1817  err_samples = zeros(n_sample,1);
1818  effectivity_samples = zeros(n_sample,1);
1819  opti_steps_samples = zeros(n_sample,1);
1820  nr_fct_calls_samples = zeros(n_sample,1);
1821  nr_grad_calls_samples = zeros(n_sample,1);
1822  break_value = zeros(1,n_sample);
1823  for i = 1:n_sample
1824  nRB_samples = [nRB_samples, opt_data_red_ar{i}.nRB];
1825  nRB_der_samples = [nRB_der_samples, opt_data_red_ar{i}.nRB_der];
1826  t_opt_red_samples(i) = opt_data_red_ar{i}.t_opt;
1827  t_opt_det_samples(i) = opt_data_det_ar{i}.t_opt;
1828  Delta_samples(i) = opt_data_red_ar{i}.Delta_mu(end);
1829  err_samples(i) = norm(opt_data_det_ar{i}.optimal_params - opt_data_red_ar{i}.optimal_params);
1830  effectivity_samples(i) = Delta_samples(i) / err_samples(i);
1831  opti_steps_samples(i) = opt_data_red_ar{i}.nr_opti_iter;
1832  nr_fct_calls_samples(i) = opt_data_red_ar{i}.nr_fct_calls;
1833  nr_grad_calls_samples(i) = opt_data_red_ar{i}.nr_grad_calc;
1834  break_value(i) = opt_data_red_ar{i}.break_value;
1835  end
1836 
1837 
1838  results.nRB_max = max(nRB_samples);
1839  results.nRB_min = min(nRB_samples);
1840  results.nRB_av = mean(nRB_samples);
1841  results.nRB_der_max = max(nRB_der_samples');
1842  results.nRB_der_min = min(nRB_der_samples');
1843  results.nRB_der_av = mean(nRB_der_samples');
1844  results.t_opt_det_max = max(t_opt_det_samples);
1845  results.t_opt_det_min = min(t_opt_det_samples);
1846  results.t_opt_det_av = mean(t_opt_det_samples);
1847  results.t_opt_red_max = max(t_opt_red_samples);
1848  results.t_opt_red_min = min(t_opt_red_samples);
1849  results.t_opt_red_av = mean(t_opt_red_samples);
1850  results.Delta_max = max(Delta_samples);
1851  results.Delta_min = min(Delta_samples);
1852  results.Delta_av = mean(Delta_samples);
1853  results.err_max = max(err_samples);
1854  results.err_min = min(err_samples);
1855  results.err_av = mean(err_samples);
1856  results.effectivity_max = max(effectivity_samples);
1857  results.effectivity_min = min(effectivity_samples);
1858  results.effectivity_av = mean(effectivity_samples);
1859  results.opti_steps_max = max(opti_steps_samples);
1860  results.opti_steps_min = min(opti_steps_samples);
1861  results.opti_steps_av = mean(opti_steps_samples);
1862  results.nr_fct_calls_max = max(nr_fct_calls_samples);
1863  results.nr_fct_calls_min = min(nr_fct_calls_samples);
1864  results.nr_fct_calls_av = mean(nr_fct_calls_samples);
1865  results.nr_grad_calls_max = max(nr_grad_calls_samples);
1866  results.nr_grad_calls_min = min(nr_grad_calls_samples);
1867  results.nr_grad_calls_av = mean(nr_grad_calls_samples);
1868  results.break_value = break_value;
1869 
1870  name = ['results_case_21_tolvariation_func2_coarse',num2str(model.base_model.coarse_factor),...
1871  '_nsample_',num2str(n_sample),'.mat'];
1872  save(fullfile(fdir,name),'results','opt_data_red_ar','opt_data_det_ar');
1873 
1874 
1875  %email senden
1876  setpref('Internet','SMTP_Server','wap04.mathematik.uni-stuttgart.de')
1877  sendmail('dihlmann','case21 fertig','Sich verändernde toleranzen fertig. Functional1');
1878 
1879 
1880 
1881  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1882  % changing the functionals: we change the position of the time interval
1883  % where the average concentration is calculated. Thereby we obtain
1884  % (hopefully) steep an flat functionals.
1885  % See if the breaking condition can be fullfilled for all type of
1886  % functionals.
1887  % Plan: change functional --> conduct optimization --> calculate constants
1888  % --> examine braking value
1889  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1890 
1891  case 22
1892 
1893  %set time intervals
1894  t1_vec = [0.75,0.5];%,0.25,0,0];
1895  t2_vec = [1,0.75];%,0.5,0.25,0.1];
1896 
1897  n_samples = length(t1_vec);
1898  opt_data_ar = cell(n_samples,1);
1899  %set optimization parameters
1900  load(fullfile(fdir,'coarse2','basisNmax200','reduced_data_complete_2ndfunctional.mat'));
1901  %load(fullfile(fdir,'coarse16','reduced_data_complete_2ndfunctional_coarse16.mat'));
1902 
1903  %set functional fields
1904  model.verbose = 4;
1905  model.base_model.verbose = 4;
1906  model.name_output_functional = 'box_mean_time';
1907  model.get_output = @lin_evol_opt_output_time_integrated;
1908  model.output_function_ptr = @output_function_box_mean;
1909  model.sbox_xmin = 0.5;
1910  model.sbox_xmax = 1;
1911  model.sbox_ymin = 0.5;
1912  model.sbox_ymax = 1;
1913 
1914  model.base_model.name_output_functional = 'box_mean_time';
1915  model.base_model.get_output = @lin_evol_opt_output_time_integrated;
1916  model.base_model.output_function_ptr = @output_function_box_mean;
1917  model.base_model.sbox_xmin = 0.5;
1918  model.base_model.sbox_xmax = 1;
1919  model.base_model.sbox_ymin = 0.5;
1920  model.base_model.sbox_ymax = 1;
1921 
1922  model.base_model.base_model.name_output_functional = 'box_mean_time';
1923  model.base_model.base_model.get_output = @lin_evol_opt_output_time_integrated;
1924  model.base_model.base_model.output_function_ptr = @output_function_box_mean;
1925  model.base_model.base_model.sbox_xmin = 0.5;
1926  model.base_model.base_model.sbox_xmax = 1;
1927  model.base_model.base_model.sbox_ymin = 0.5;
1928  model.base_model.base_model.sbox_ymax = 1;
1929 
1930 
1931 
1932  %set optimzation parameters
1933  model.optimization.tol = 0.0005;
1934  model.base_model.optimization.tol = 0.0005;
1935  model.base_model.base_model.optimization.tol =0.0005;
1936 
1937  model.optimization.init_params =[0.5,0.5];
1938  model.base_model.optimization.init_params =[0.5,0.5];
1939  model.base_model.base_model.optimization.init_params =[0.5,0.5];
1940 
1941  model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
1942  model.base_model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
1943 
1944  model.optimization.stepsize_rule = 'armijo';
1945  model.optimization.sigma = 0.8;
1946  model.optimization.stepsize_factor = 0.75;
1947  model.optimization.initial_stepsize = 10;
1948  model.base_model.optimization.stepsize_rule = 'armijo';
1949  model.base_model.optimization.sigma = 0.8;
1950  model.base_model.optimization.stepsize_factor = 0.75;
1951  model.base_model.optimization.initial_stepsize = 10;
1952  model.base_model.base_model.optimization.stepsize_rule = 'armijo';
1953  model.base_model.base_model.optimization.sigma = 0.8;
1954  model.base_model.base_model.optimization.stepsize_factor = 0.75;
1955  model.base_model.base_model.optimization.initial_stepsize = 10;
1956 
1957  %set constants very high so that a detailed constnat calculation is
1958  %triggered at the end of the optimization
1959  model.gamma_H = @(model)dummy_constant(model,100);
1960  model.base_model.gamma_H = @(model)dummy_constant(model,100);
1961  model.base_model.base_model.gamma_H =@(model)dummy_constant(model,100);
1962  model.L_H = @(model)dummy_constant(model,100);
1963  model.base_model.L_H =@(model)dummy_constant(model,100);
1964  model.base_model.base_model.L_H = @(model)dummy_constant(model,100);
1965 
1966  model.optimization.allow_constant_calculation = 1;
1967  model.base_model.optimization.allow_constant_calculation = 1;
1968  model.base_model.base_model.optimization.allow_constant_calculation = 1;
1969 
1970 
1971  for i=1:n_samples
1972  disp('-------------------')
1973  disp(['Sample nr',num2str(i),' of ',num2str(n_samples)])
1974  disp('==============================')
1975  %time frame settings
1976  model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt*t1_vec(i)));
1977  model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*t2_vec(i)));
1978  model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1979  model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1980  model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt*t1_vec(i)));
1981  model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*t2_vec(i)));
1982  model.base_model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1983  model.base_model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1984  model.base_model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt*t1_vec(i)));
1985  model.base_model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*t2_vec(i)));
1986  model.base_model.base_model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1987  model.base_model.base_model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
1988 
1989  opt_data_ar{i} = optimize(model, reduced_data);
1990 
1991 
1992 
1993  end
1994 
1995  results.n_samples = n_samples;
1996  results.t1_vec = t1_vec;
1997  results.t2_vec = t2_vec;
1998 
1999  %save results
2000  name = ['results_case_22_functionalchange_coarse',num2str(model.base_model.coarse_factor),...
2001  '_nsample_',num2str(n_samples),'.mat'];
2002  save(fullfile(fdir,name),'results','opt_data_ar');
2003 
2004 
2005  %email senden
2006  setpref('Internet','SMTP_Server','wap04.mathematik.uni-stuttgart.de')
2007  sendmail('dihlmann','case22 fertig','aenderung von zeitintervallen');
2008 
2009 
2010  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
2011  % vergleich von iterativem und nichtiterativem Fehlerschätzer
2012  %
2013  % von einem festen Stratpunkt aus werden ohne schrittweitensteuerung
2014  % gradientenoptimierungsverfahren durchgeführt.
2015  % Die werte beider Fehlerschätzer bei jedem Gradientenschritt werden
2016  % verglichen.
2017  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2018 
2019  case 23
2020 
2021  %lade model und reduzierte daten
2022  load(fullfile(fdir,'coarse2','reduced_data_complete_N200.mat'));
2023 
2024  %set optimization parameters
2025  model.optimization.init_params = [0.5,0.5];
2026  model.optimization.opt_mode = 'reduced';
2027  model.base_model.optimization.init_params = [0.5,0.5];
2028  model.base_model.optimization.opt_mode = 'reduced';
2029  model.base_model.base_model.optimization.init_params = [0.5,0.5];
2030  model.base_model.base_model.optimization.opt_mode = 'reduced';
2031 
2032  model.optimization.tol = 0.001;
2033  model.base_model.optimization.tol = 0.001;
2034  model.base_model.base_model.optimization.tol =0.001;
2035 
2036  model.base_model.optimization.optimizer = @gradient_opt;
2037  model.base_model.base_model.optimization.optimizer = @gradient_opt;
2038  model.optimization.stepsize_rule = 'quotient';
2039  model.base_model.optimization.stepsize_rule = 'quotient';
2040  model.base_model.base_model.optimization.stepsize_rule = 'quotient';
2041  model.optimization.initial_stepsize = 1;
2042  model.base_model.optimization.initial_stepsize = 1;
2043  model.base_model.base_model.optimization.initial_stepsize = 1;
2044  model.stepsize_coefficient = 3;
2045  model.base_model.stepsize_coefficient = 3;
2046  model.base_model.base_model.stepsize_coefficient = 3;
2047 
2048 
2049  %output fields
2050  model.output_function_ptr = @output_function_box_mean;
2051  model.sbox_xmin = 1;
2052  model.sbox_xmax = 2;
2053  model.sbox_ymin = 0;
2054  model.sbox_ymax = 0.5;
2055  model.s_l2norm = sqrt(2);%1/sqrt((model.sbox_ymax-model.sbox_ymin)*(model.sbox_xmax-model.sbox_xmin));%0.0078*coarse_factor;%analytisch: <=1/sqrt(0.5);
2056  model.name_output_functional = 'box_mean';
2057  model.get_output = @lin_evol_opt_output_time_independent;
2058 
2059  model.base_model.output_function_ptr = @output_function_box_mean;
2060  model.base_model.sbox_xmin = 1;
2061  model.base_model.sbox_xmax = 2;
2062  model.base_model.sbox_ymin = 0;
2063  model.base_model.sbox_ymax = 0.5;
2064  model.base_model.s_l2norm = sqrt(2);%1/sqrt((model.sbox_ymax-model.sbox_ymin)*(model.sbox_xmax-model.sbox_xmin));%0.0078*coarse_factor;%analytisch: <=1/sqrt(0.5);
2065  model.base_model.name_output_functional = 'box_mean';
2066  model.base_model.get_output = @lin_evol_opt_output_time_independent;
2067 
2068  model.base_model.base_model.output_function_ptr = @output_function_box_mean;
2069  model.base_model.base_model.sbox_xmin = 1;
2070  model.base_model.base_model.sbox_xmax = 2;
2071  model.base_model.base_model.sbox_ymin = 0;
2072  model.base_model.base_model.sbox_ymax = 0.5;
2073  model.base_model.base_model.s_l2norm = sqrt(2);%1/sqrt((model.sbox_ymax-model.sbox_ymin)*(model.sbox_xmax-model.sbox_xmin));%0.0078*coarse_factor;%analytisch: <=1/sqrt(0.5);
2074  model.base_model.base_model.name_output_functional = 'box_mean';
2075  model.base_model.base_model.get_output = @lin_evol_opt_output_time_independent;
2076 
2077 
2078 
2079 
2080  %conduct optimization with iterative error estimator
2081  opt_data_iter = optimize(model,reduced_data);
2082 
2083  %conduct optimzation wit noniterative error estimator
2084  model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
2085  model.base_model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
2086  model.gamma_H = @calculate_gamma_const;
2087  model.base_model.gamma_H = @calculate_gamma_const;
2088  model.base_model.base_model.gamma_H = @calculate_gamma_const;
2089  model.L_H = @calculate_Lipschitz_const;
2090  model.base_model.L_H = @calculate_Lipschitz_const;
2091  model.base_model.base_model.L_H = @calculate_Lipschitz_const;
2092 % model.gamma_H = @my_get_gamma_H_constant;
2093 % model.base_model.gamma_H = @my_get_gamma_H_constant;
2094 % model.base_model.base_model.gamma_H = @my_get_gamma_H_constant;
2095 % model.L_H = @my_get_L_H_constant;
2096 % model.base_model.L_H = @my_get_L_H_constant;
2097 % model.base_model.base_model.L_H = @my_get_L_H_constant;
2098 %
2099 
2100 
2101  opt_data_noniter = optimize(model, reduced_data);
2102 
2103  save(fullfile(fdir,'results_case_23.mat'),'opt_data_iter','opt_data_noniter');
2104 
2105 
2106  %compare the results with case 51
2107 
2108 
2109 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2110 %like case23: comparison between iterative and noniterative error estimator
2111 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2112 
2113  case 24
2114 
2115  %set optimization parameters
2116  load(fullfile(fdir,'coarse2','basisNmax200','reduced_data_complete_2ndfunctional.mat'));
2117  %load(fullfile(fdir,'coarse2','reduced_data_complete_2ndfunctional.mat'));
2118 
2119  %set 2nd functional fields
2120  model.base_model.save_time_indices = 0:model.base_model.nt;
2121  model.base_model.base_model.save_time_indices = 0:model.base_model.nt;
2122  model.verbose = 4;
2123  model.base_model.verbose = 4;
2124  model.name_output_functional = 'box_mean_time';
2125  model.get_output = @lin_evol_opt_output_time_integrated;
2126  model.output_function_ptr = @output_function_box_mean;
2127  model.sbox_xmin = 0.5;
2128  model.sbox_xmax = 1;
2129  model.sbox_ymin = 0.5;
2130  model.sbox_ymax = 1;
2131  model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
2132  model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
2133  model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
2134  model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
2135  model.base_model.name_output_functional = 'box_mean_time';
2136  model.base_model.get_output = @lin_evol_opt_output_time_integrated;
2137  model.base_model.output_function_ptr = @output_function_box_mean;
2138  model.base_model.sbox_xmin = 0.5;
2139  model.base_model.sbox_xmax = 1;
2140  model.base_model.sbox_ymin = 0.5;
2141  model.base_model.sbox_ymax = 1;
2142  model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
2143  model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
2144  model.base_model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
2145  model.base_model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
2146  model.base_model.base_model.name_output_functional = 'box_mean_time';
2147  model.base_model.base_model.get_output = @lin_evol_opt_output_time_integrated;
2148  model.base_model.base_model.output_function_ptr = @output_function_box_mean;
2149  model.base_model.base_model.sbox_xmin = 0.5;
2150  model.base_model.base_model.sbox_xmax = 1;
2151  model.base_model.base_model.sbox_ymin = 0.5;
2152  model.base_model.base_model.sbox_ymax = 1;
2153  model.base_model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
2154  model.base_model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
2155  model.base_model.base_model.s_l2norm = sqrt(4)/sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
2156  model.base_model.base_model.s_l1norm = sqrt(4)/((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
2157 
2158  %set optimzation parameters
2159  model.optimization.tol = 0.0005;
2160  model.base_model.optimization.tol = 0.0005;
2161  model.base_model.base_model.optimization.tol =0.0005;
2162 
2163  model.optimization.init_params = [0.2,0.2];
2164  model.optimization.opt_mode = 'reduced';
2165  model.base_model.optimization.init_params = [0.2,0.2];
2166  model.base_model.optimization.opt_mode = 'reduced';
2167  model.base_model.base_model.optimization.init_params = [0.2,0.2];
2168  model.base_model.base_model.optimization.opt_mode = 'reduced';
2169 
2170  model.base_model.optimization.optimizer = @gradient_opt;
2171  model.base_model.base_model.optimization.optimizer = @gradient_opt;
2172  model.optimization.stepsize_rule = 'quotient';
2173  model.base_model.optimization.stepsize_rule = 'quotient';
2174  model.base_model.base_model.optimization.stepsize_rule = 'quotient';
2175  model.optimization.initial_stepsize = 2;
2176  model.base_model.optimization.initial_stepsize = 2;
2177  model.base_model.base_model.optimization.initial_stepsize = 2;
2178  model.stepsize_coefficient = 100;
2179  model.base_model.stepsize_coefficient = 100;
2180  model.base_model.base_model.stepsize_coefficient = 100;
2181 
2182  %conduct optimization with iterative error estimator
2183  opt_data_iter = optimize(model,reduced_data);
2184 
2185  %conduct optimization with noniterative error estimator
2186  model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
2187  model.base_model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
2188  model.gamma_H = @calculate_gamma_const;
2189  model.base_model.gamma_H = @calculate_gamma_const;
2190  model.base_model.base_model.gamma_H = @calculate_gamma_const;
2191  model.L_H = @calculate_Lipschitz_const;
2192  model.base_model.L_H = @calculate_Lipschitz_const;
2193  model.base_model.base_model.L_H = @calculate_Lipschitz_const;
2194 
2195 
2196 
2197  opt_data_noniter = optimize(model, reduced_data);
2198 
2199  save(fullfile(fdir,'results_case_24.mat'),'opt_data_iter','opt_data_noniter');
2200 
2201 
2202 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
2203 % plot the funcitonal surface / Landscape generated with case 123 and 124
2204 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2205 
2206  case 50
2207  load('Landschaft_func1_coarse2_numpts_25.mat')
2208  h=figure;
2209  surf(x_vec,y_vec,func1_det,'FaceColor','interp');
2210  xlabel('\mu_1');
2211  ylabel('\mu_2');
2212  zlabel('J(u)');
2213  print(h,'-dpng','Functional1.png');
2214  print(h,'-deps','Functional1.eps');
2215 
2216  load('Landschaft_func2_coarse2_numpts_25.mat')
2217  h=figure;
2218  surf(x_vec,y_vec,func2_det,'FaceColor','interp');
2219  xlabel('\mu_1');
2220  ylabel('\mu_2');
2221  zlabel('J(u)');
2222  print(h,'-dpng','Functional2.png');
2223  print(h,'-deps','Functional2.eps');
2224 
2225 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
2226 % evaluate and plot results fom case51:
2227 % comparison of iterative and noniterative error estimator
2228 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2229 
2230  case 51
2231 
2232  %load result file from case 23
2233  %load(fullfile(fdir,'results_case_24.mat'));
2234  load(fullfile(fdir,'results_case_23.mat'));
2235 
2236  %plot the gradient way
2237  figure
2238  plot_PM(opt_data_iter);
2239  D=[];
2240  for i=1:size(opt_data_iter.Delta_mu,2)
2241  D(i) = norm(opt_data_iter.Delta_mu(:,i));
2242  end
2243 
2244  %trennen in break value >1 und <=1
2245  non_val_indx = find(opt_data_noniter.break_value_vec>1);
2246  val_indx = find(opt_data_noniter.break_value_vec<=1);
2247 
2248  if ~isempty(non_val_indx)
2249  non_val_indx = [non_val_indx,val_indx(1)];
2250  non_val_Delta_mu = opt_data_noniter.Delta_mu_vec(non_val_indx);
2251  non_val_grad_norm = opt_data_iter.norm_grad_f_x(non_val_indx);
2252  end
2253 
2254  val_Delta_mu = opt_data_noniter.Delta_mu_vec(val_indx);
2255  val_grad_norm = opt_data_iter.norm_grad_f_x(val_indx);
2256 
2257 
2258  figure
2259  loglog(opt_data_iter.norm_grad_f_x,D,'bo-','LineWidth',2)
2260  hold on
2261  loglog(val_grad_norm,val_Delta_mu,'ro-','LineWidth',2)
2262  if ~isempty(non_val_indx)
2263  loglog(non_val_grad_norm,non_val_Delta_mu,'o--r','LineWidth',2);
2264  end
2265  %axis([3.5e-4, 0.13,0.35e-3,4])%func2
2266  axis([8e-4, 0.4,4e-4,1.6])%func1
2267  title('Comparison of both error estimators')
2268  legend('incremental error est.','general error est. (valid)','general error est. (not valid)')
2269  xlabel('functional gradient norm')
2270  ylabel('\Delta_{\mu}')
2271 
2272 
2273 
2274  %with stepnumbers
2275  nr_steps = length(D);
2276  figure
2277  semilogy(0:nr_steps-1,D,'LineWidth',2)
2278  hold on
2279  semilogy(val_indx-1,val_Delta_mu,'r','LineWidth',2)
2280  if ~isempty(non_val_indx)
2281  semilogy(non_val_indx-1,non_val_Delta_mu,'r--','LineWidth',2)
2282  end
2283  %axis([3.5e-4, 0.13,0.35e-3,4])%func2
2284  title('Comparison of both error estimators')
2285  legend('incremental error est.','non-incremental error est. valid','non-incremental error est. not valid')
2286  xlabel('step number')
2287  ylabel('\Delta_{\mu}')
2288 
2289 
2290 
2291 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2292 % Evaluation of case 20: Simplex optmization
2293 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
2294  case 52
2295 
2296  load('results_case_20_simplex_coarse2_nsample_30.mat')
2297 
2298  %The invalid error estimations (Delta_mu =1) are still included in
2299  %the evaluation... so evaluate again the results neglecting the
2300  %invalid error estimators
2301 
2302  %evaluate the resulte
2303  t_opt_red_samples = [];
2304  t_opt_det_samples = [];
2305  Delta_samples = [];
2306  err_samples = [];
2307  effectivity_samples = [];
2308  opti_steps_samples = [];
2309  nr_fct_calls_samples = [];
2310  for i = 1:length(opt_data_simpl_red_ar)
2311  if (opt_data_simpl_red_ar{i}.Delta_mu ~=-1)
2312  t_opt_red_samples = [t_opt_red_samples,opt_data_simpl_red_ar{i}.t_opt];
2313  t_opt_det_samples = [t_opt_det_samples,opt_data_simpl_det_ar{i}.t_opt];
2314  Delta_samples = [Delta_samples ,opt_data_simpl_red_ar{i}.Delta_mu(end)];
2315  err_samples = [err_samples,norm(opt_data_simpl_det_ar{i}.optimal_params - opt_data_simpl_red_ar{i}.optimal_params)];
2316  effectivity_samples = [effectivity_samples,Delta_samples(end) / err_samples(end)];
2317  opti_steps_samples = [opti_steps_samples,opt_data_simpl_red_ar{i}.nr_iterations];
2318  nr_fct_calls_samples = [nr_fct_calls_samples,opt_data_simpl_red_ar{i}.nr_fct_calls];
2319  end
2320  end
2321 
2322 
2323  results_simpl.t_opt_det_max = max(t_opt_det_samples);
2324  results_simpl.t_opt_det_min = min(t_opt_det_samples);
2325  results_simpl.t_opt_det_av = mean(t_opt_det_samples);
2326  results_simpl.t_opt_red_max = max(t_opt_red_samples);
2327  results_simpl.t_opt_red_min = min(t_opt_red_samples);
2328  results_simpl.t_opt_red_av = mean(t_opt_red_samples);
2329  results_simpl.Delta_max = max(Delta_samples);
2330  results_simpl.Delta_min = min(Delta_samples);
2331  results_simpl.Delta_av = mean(Delta_samples);
2332  results_simpl.err_max = max(err_samples);
2333  results_simpl.err_min = min(err_samples);
2334  results_simpl.err_av = mean(err_samples);
2335  results_simpl.effectivity_max = max(effectivity_samples);
2336  results_simpl.effectivity_min = min(effectivity_samples);
2337  results_simpl.effectivity_av = mean(effectivity_samples);
2338  results_simpl.opti_steps_max = max(opti_steps_samples);
2339  results_simpl.opti_steps_min = min(opti_steps_samples);
2340  results_simpl.opti_steps_av = mean(opti_steps_samples);
2341  results_simpl.nr_fct_calls_max = max(nr_fct_calls_samples);
2342  results_simpl.nr_fct_calls_min = min(nr_fct_calls_samples);
2343  results_simpl.nr_fct_calls_av = mean(nr_fct_calls_samples);
2344 
2345 
2346  %save the results
2347  name = ['results_evaluated_case_20_simplex30.mat'];
2348  save(fullfile(fdir,name),'results_simpl','opt_data_simpl_red_ar','opt_data_simpl_det_ar');
2349 
2350  keyboard
2351 %%%%%%%%%%%%%%%%%%%%%%%5
2352 %
2353 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
2354 % Tests and verifications
2355 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
2356 %
2357 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2358 
2359 
2360 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
2361 % Test the error estimators
2362 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2363 
2364  case 100
2365 
2366  params.coarse_factor = 8;
2367  pp.plot_function = @plot_element_data;
2368 
2369  model = convection_diffusion_fv_output_opt_model_rect_normed_outflow(params);
2370  model.compute_derivative_info = 0;
2371  model.k=0.25;
2372  model.t=0;
2373 
2374  model_data = gen_model_data(model);
2375 
2376  mu= get_mu(model)
2377 
2378  sim_data = detailed_simulation(model, model_data);
2379 
2380  detailed_data = model_data;
2381  detailed_data.RB = [];
2382 
2383  detailed_data.RB = model.rb_init_data_basis(model, detailed_data);
2384 
2385 
2386  %PCA
2387  PCAtr = PCA_fixspace(sim_data.U, detailed_data.RB,model_data.W);
2388  detailed_data.RB = [detailed_data.RB,PCAtr];
2389 
2390 
2391  %check orthogonality
2392  RB = detailed_data.RB;
2393  oc = max(max(RB'*model_data.W*RB-eye(size(RB,2), size(RB,2))))
2394  loop = 0;
2395  while (oc>1e-14)&&(loop<5)
2396  RB = orthonormalize_gram_schmidt(RB, model_data.W);
2397  oc = max(max(RB'*model_data.W*RB-eye(size(RB,2), size(RB,2))))
2398  loop = loop +1;
2399  end
2400 
2401  detailed_data.RB = RB;
2402 
2403  reduced_data = gen_reduced_data(model, detailed_data);
2404 
2405  rb_sim_data = rb_simulation(model, reduced_data);
2406 
2407  %model.rb_reconstruction = @rb_reconstruction_default;
2408  %rb_sim_data = rb_reconstruction(model, detailed_data, rb_sim_data);
2409  rb_sim_data = rb_reconstruction_derivative(model, detailed_data, rb_sim_data);
2410 
2411  U_rb = rb_sim_data.U;
2412 
2413  disp(' ');
2414  disp(['Geschaetzter Fehler: ',num2str(rb_sim_data.Delta(end))]);
2415  err = fv_l2_error(U_rb(:,model.save_time_indices+1), sim_data.U,model_data.grid,[]);
2416  disp(['Tatsaechlicher Fehler: ',num2str(err(end))]);
2417  plot_data_sequence(model, model_data.grid, U_rb(:,model.save_time_indices+1)-sim_data.U,pp);
2418  %plot_data_sequence(model, model_data.grid,U_rb-sim_data.U,plot_params);
2419  title('Fehlerplot');
2420  figure
2421  plot(err)
2422  title('Fehler RB über der Zeit');
2423 
2424  keyboard;
2425 
2426 
2427 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2428 % Basis generation using different diffusivity constants
2429 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2430 
2431  case 101
2432 
2433  params.coarse_factor = 4;
2434 
2435  model = convection_diffusion_fv_output_opt_model_rect(params);
2436  model.compute_derivative_info = 0;
2437  model.t = 0;
2438 
2439  if isfield(expar,'k')
2440  model.k = expar.k;
2441  else
2442  model.k = 0;
2443  end
2444 
2445  %RB related entries
2446  model.RB_stop_Nmax = 30;
2447 
2448  model_data = gen_model_data(model);
2449 
2450  detailed_data = gen_detailed_data(model, model_data);
2451 
2452  save(['DiffGreedybase_coarse',num2str(model.coarse_factor),'_Nmax_',num2str(model.RB_stop_Nmax),'_k_',num2str(model.k),'.mat'],...
2453  'model', 'detailed_data');
2454 
2455  keyboard;
2456 
2457  case 102
2458 
2459  fname = {'DiffGreedybase_coarse4_Nmax_30_k_0.05.mat','DiffGreedybase_coarse4_Nmax_30_k_0.01.mat',...
2460  'DiffGreedybase_coarse4_Nmax_30_k_0.005.mat','DiffGreedybase_coarse4_Nmax_30_k_0.001.mat'};
2461 
2462  nfiles = length(fname);
2463 
2464  k=cell(1,nfiles);
2465  tr_errs = zeros(nfiles,30);
2466  colr={'r','g','b','k'};
2467 
2468  figure
2469  for i=1:nfiles
2470  load(fname{i});
2471  k{i} = num2str(model.k);
2472  tr_errs(i,:) = detailed_data.RB_info.max_err_sequence;
2473 
2474  plot(detailed_data.RB_info.max_err_sequence,colr{i});
2475  hold on;
2476  end
2477  legend(k);
2478  keyboard;
2479 
2480 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
2481 % Test derivative calculation
2482 % compare detailed derivative simulation with an fd-model
2483 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2484  case 103
2485 
2486  params.coarse_factor = 4;
2487  model = convection_diffusion_fv_output_opt_model_rect_normed_outflow(params);
2488  model.compute_derivative_info = 1;
2489  model.t = 0;
2490 
2491  model.k=0.25;
2492 
2493  mu=[0.1,0.3,0.9];
2494  model = set_mu(model, mu);
2495 
2496  model_data = gen_model_data(model);
2497 
2498  sim_data = detailed_simulation(model, model_data);
2499  U_der = sim_data.U_der;
2500 
2501  U_der_fd = lin_evol_opt_fd_derivative(model, model_data,mu);
2502 
2503 
2504  %Compare detailed derivative solutions
2505  U_diff = cell(1,length(U_der));
2506  for i=1:length(U_der)
2507  U_diff{i} = U_der{i} - U_der_fd{i};
2508  disp(['Maximum difference in ',num2str(i),'. derivative: ',num2str(max(max(U_diff{i})))]);
2509  end
2510 
2511  keyboard;
2512 
2513 
2514 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2515 % verifiy derivative error estimators (PCA of sol+der trajectory)
2516 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2517  case 104
2518 
2519 
2520  params.coarse_factor = 16;
2521  %params.separate_bases = 1;
2522  %model = advection_fv_output_opt_model(params);
2523  model = convection_diffusion_fv_output_opt_model_rect_normed(params);
2524  model.compute_derivative_info = 1;
2525  model.t = 0;
2526  model.starting_time_step = 0;
2527  model.stopping_time_step = 120;
2528 
2529  model.k=0;
2530 
2531  mu=[0.1,0.3,0.9];
2532  model = set_mu(model, mu);
2533 
2534  %model.starting_time_step = 0;
2535  %model.stopping_time_step = 2;
2536 
2537 
2538  model_data = gen_model_data(model);
2539 
2540  sim_data = detailed_simulation(model, model_data);
2541  U_der = sim_data.U_der;
2542  U=sim_data.U;
2543 
2544  %construct mixed basis by PCA over solution snd derivative solutions
2545  detailed_data = model_data;
2546  detailed_data.RB = [];
2547 
2548  detailed_data.RB = model.rb_init_data_basis(model, detailed_data);
2549 
2550 
2551  %PCA
2552  traj = U;
2553  %for i = 1:length(U_der)
2554  % traj = [traj,U_der{i}];
2555  %end
2556  PCAtr = PCA_fixspace(traj, detailed_data.RB,model_data.W);
2557  detailed_data.RB = [detailed_data.RB,PCAtr];
2558 
2559 
2560  %check orthogonality
2561  RB = detailed_data.RB;
2562  oc = max(max(RB'*model_data.W*RB-eye(size(RB,2), size(RB,2))))
2563  loop = 0;
2564  while (oc>1e-14)&&(loop<5)
2565  RB = orthonormalize_gram_schmidt(RB, model_data.W);
2566  oc = max(max(RB'*model_data.W*RB-eye(size(RB,2), size(RB,2))))
2567  loop = loop +1;
2568  end
2569 
2570  detailed_data.RB = RB;
2571  %detailed_data.RB_der{1} = RB;
2572  %detailed_data.RB_der{2} = RB;
2573  %detailed_data.RB_der{3} = RB;
2574 
2575  reduced_data = gen_reduced_data(model, detailed_data);
2576 
2577  rb_sim_data = rb_simulation(model, reduced_data);
2578  rb_sim_data = rb_reconstruction(model, detailed_data, rb_sim_data);
2579  U_der_rb = rb_sim_data.U_der;
2580 
2581  %Auswertung
2582  nr_der = length(U_der);
2583 
2584  U_diff_der = cell(1,nr_der);
2585  err = zeros(nr_der,size(U,2));
2586 
2587  clr={'r','g','b','k','m'};
2588 
2589  disp(['Anzahl an Basisvektoren: ',num2str(size(detailed_data.RB,2))])
2590 
2591  figure(1);clf;
2592  figure(2);clf;
2593  figure(3);clf;
2594  for i=1:nr_der
2595  if ~isfield(model,'starting_time_step')
2596  U_diff_der{i} = U_der_rb(:,model.save_time_indices+1,i) - U_der{i};
2597  disp(['Maximum difference in ',num2str(i),'. rb derivative: ',num2str(max(max(U_diff_der{i})))]);
2598  err(i,:) = fv_l2_error(U_der_rb(:,model.save_time_indices+1,i), U_der{i}, model_data.grid,[]);
2599  else
2600  U_diff_der{i} = U_der_rb(:,:,i) - U_der{i};
2601  disp(['Maximum difference in ',num2str(i),'. rb derivative: ',num2str(max(max(U_diff_der{i})))]);
2602  err(i,:) = fv_l2_error(U_der_rb(:,:,i), U_der{i}, model_data.grid,[]);
2603  end
2604  figure(1)
2605  plot(err(i,:),clr{i})
2606  hold on
2607  figure(2)
2608  plot(rb_sim_data.Delta_der(i,:),clr{i})
2609  hold on
2610  figure(3)
2611  plot(sqrt(rb_sim_data.res_u_der(i,:)),clr{i})
2612  hold on
2613  end
2614  figure(1)
2615  if ~isfield(model,'starting_time_step')
2616  plot(fv_l2_error(U,rb_sim_data.U(:,model.save_time_indices+1), model_data.grid,[]),'k')
2617  else
2618  plot(fv_l2_error(U,rb_sim_data.U, model_data.grid,[]),'k')
2619  end
2620  title('true error')
2621  legend('1','2','3','sol')
2622  figure(2)
2623  plot(rb_sim_data.Delta,'k')
2624  title('estimated error')
2625  legend('1','2','3','sol')
2626  figure(3)
2627  plot(sqrt(rb_sim_data.res_u),'k');
2628  title('residual')
2629  legend('1','2','3','sol')
2630 
2631  keyboard;
2632 
2633 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2634 % verifiy derivative error estimators by separate basis
2635 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2636 
2637  case 105
2638 
2639 
2640  params.coarse_factor = 16;
2641  params.separate_bases = 1;
2642  %params.cone_const = 1;
2643 
2644  %model = advection_fv_output_opt_model(params);
2645  model = convection_diffusion_fv_output_opt_model_rect_normed_outflow(params);
2646  model.compute_derivative_info = 1;
2647  model.t = 0;
2648 
2649 
2650 
2651 
2652  model.k=0;
2653 
2654  mu=[0.1,0.3,0.9];
2655  model = set_mu(model, mu);
2656 
2657  %model.starting_time_step = 0;
2658  %model.stopping_time_step = 2;
2659 
2660 
2661  model_data = gen_model_data(model);
2662 
2663  sim_data = detailed_simulation(model, model_data);
2664  U_der = sim_data.U_der;
2665  U=sim_data.U;
2666 
2667  %construct mixed basis by PCA over solution snd derivative solutions
2668  detailed_data = model_data;
2669  detailed_data.RB = [];
2670 
2671  detailed_data.RB = model.rb_init_data_basis(model, detailed_data);
2672 
2673 
2674  %PCA_sol
2675  traj = U;
2676  PCAtr = model_orthonormalize_gram_schmidt(model, model_data,traj,1e-12);
2677  %PCAtr = PCA_fixspace(traj, detailed_data.RB,model_data.W,size(traj,2)-1);
2678  %PCAtr = model.PCA_fixspace(model, model_data, traj,detailed_data.RB);
2679  detailed_data.RB = [detailed_data.RB,PCAtr];
2680 
2681 
2682  %check orthogonality
2683  RB = detailed_data.RB;
2684  oc = max(max(RB'*model_data.W*RB-eye(size(RB,2), size(RB,2))))
2685  loop = 0;
2686  while (oc>1e-14)&&(loop<5)
2687  RB = orthonormalize_gram_schmidt(RB, model_data.W);
2688  oc = max(max(RB'*model_data.W*RB-eye(size(RB,2), size(RB,2))))
2689  loop = loop +1;
2690  end
2691  detailed_data.RB = RB;
2692 
2693  %PCA_der
2694  detailed_data.RB_der = cell(1,length(U_der));
2695  for i=1:length(U_der)
2696  detailed_data.RB_der{i} = model.rb_init_data_basis(model, detailed_data);
2697  traj = U_der{i};
2698  PCAtr = model_orthonormalize_gram_schmidt(model, model_data,traj,1e-12);
2699  %PCAtr = PCA_fixspace(traj, detailed_data.RB_der{i}, model_data.W,size(traj,2)-1);
2700  %PCAtr = model.PCA_fixspace(model, model_data, traj,detailed_data.RB,size(traj,2));
2701  detailed_data.RB_der{i} = [detailed_data.RB_der{i}, PCAtr];
2702 
2703  RB = detailed_data.RB_der{i};
2704  oc = max(max(RB'*model_data.W*RB-eye(size(RB,2), size(RB,2))))
2705  loop = 0;
2706  while (oc>1e-14)&&(loop<5)
2707  RB = orthonormalize_gram_schmidt(RB, model_data.W);
2708  oc = max(max(RB'*model_data.W*RB-eye(size(RB,2), size(RB,2))))
2709  loop = loop +1;
2710  end
2711  detailed_data.RB_der{i} = RB;
2712  end
2713 
2714 
2715  reduced_data = gen_reduced_data(model, detailed_data);
2716 
2717  rb_sim_data = rb_simulation(model, reduced_data);
2718  rb_sim_data = rb_reconstruction(model, detailed_data, rb_sim_data);
2719  U_der_rb = rb_sim_data.U_der;
2720 
2721  %Auswertung
2722  nr_der = length(U_der);
2723 
2724  U_diff_der = cell(1,nr_der);
2725  err = zeros(nr_der,size(U,2));
2726 
2727  clr={'r','g','b','k'};
2728 
2729  disp(['Anzahl an Basisvektoren: ',num2str(size(detailed_data.RB,2))])
2730 
2731  figure(1);clf;
2732  figure(2);clf;
2733  figure(3);clf;
2734  for i=1:nr_der
2735  if ~isfield(model,'starting_time_step')
2736  U_diff_der{i} = U_der_rb(:,model.save_time_indices+1,i) - U_der{i};
2737  disp(['Maximum difference in ',num2str(i),'. rb derivative: ',num2str(max(max(U_diff_der{i})))]);
2738  err(i,:) = fv_l2_error(U_der_rb(:,model.save_time_indices+1,i), U_der{i}, model_data.grid,[]);
2739  else
2740  U_diff_der{i} = U_der_rb(:,:,i) - U_der{i};
2741  disp(['Maximum difference in ',num2str(i),'. rb derivative: ',num2str(max(max(U_diff_der{i})))]);
2742  err(i,:) = fv_l2_error(U_der_rb(:,:,i), U_der{i}, model_data.grid,[]);
2743  end
2744  figure(1)
2745  plot(err(i,:),clr{i})
2746  hold on
2747  figure(2)
2748  plot(rb_sim_data.Delta_der(i,:),clr{i})
2749  hold on
2750  figure(3)
2751  plot(rb_sim_data.res_u_der(i,:),clr{i})
2752  hold on
2753  end
2754  figure(1)
2755  plot(fv_l2_error(U,rb_sim_data.U(:,model.save_time_indices+1), model_data.grid,[]),'k')
2756  title('true error')
2757  legend('1','2','3','sol')
2758  figure(2)
2759  plot(rb_sim_data.Delta,'k')
2760  title('estimated error')
2761  legend('1','2','3','sol')
2762  figure(3)
2763  plot(rb_sim_data.res_u,'k');
2764  title('residual')
2765  legend('1','2','3','sol')
2766 
2767  keyboard;
2768 
2769 
2770 
2771  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
2772 % Test derivative calculation with k as parameter
2773 % compare detailed derivative simulation with an fd-model
2774 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2775  case 106
2776 
2777  params.coarse_factor = 8;
2778  params.k_const = 0;
2779  model = convection_diffusion_fv_output_opt_model_rect(params);
2780  model.compute_derivative_info = 1;
2781  model.t = 0;
2782 
2783  mu=[0.1,0.3,0.9,0.02];
2784  model = set_mu(model, mu);
2785 
2786  model_data = gen_model_data(model);
2787 
2788  sim_data = detailed_simulation(model, model_data);
2789  U_der = sim_data.U_der;
2790 
2791  U_der_fd = lin_evol_opt_fd_derivative(model, model_data,mu);
2792 
2793 
2794  %Compare detailed derivative solutions
2795  U_diff = cell(1,length(U_der));
2796  for i=1:length(U_der)
2797  U_diff{i} = U_der{i} - U_der_fd{i};
2798  disp(['Maximum difference in ',num2str(i),'. derivative: ',num2str(max(max(U_diff{i})))]);
2799  end
2800 
2801  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2802 % verifiy derivative error estimators (PCA of sol+der trajectory) with 4th
2803 % parameter k
2804 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2805  case 107
2806 
2807 
2808  params.coarse_factor = 8;
2809  params.k_const = 0;
2810  %params.separate_bases = 1;
2811  %model = advection_fv_output_opt_model(params);
2812  model = convection_diffusion_fv_output_opt_model_rect(params);
2813  model.compute_derivative_info = 1;
2814  model.t = 0;
2815 
2816 
2817 
2818  mu=[0.3,0.5,0.5,0.01];
2819  model = set_mu(model, mu);
2820 
2821  %model.starting_time_step = 0;
2822  %model.stopping_time_step = 2;
2823 
2824 
2825  model_data = gen_model_data(model);
2826 
2827  sim_data = detailed_simulation(model, model_data);
2828  U_der = sim_data.U_der;
2829  U=sim_data.U;
2830 
2831  %construct mixed basis by PCA over solution snd derivative solutions
2832  detailed_data = model_data;
2833  detailed_data.RB = [];
2834 
2835  detailed_data.RB = model.rb_init_data_basis(model, detailed_data);
2836 
2837 
2838  %PCA
2839  traj = U;
2840  for i = 1:length(U_der)
2841  traj = [traj,U_der{i}];
2842  end
2843  PCAtr = PCA_fixspace(traj, detailed_data.RB,model_data.W);
2844  detailed_data.RB = [detailed_data.RB,PCAtr];
2845 
2846 
2847  %check orthogonality
2848  RB = detailed_data.RB;
2849  oc = max(max(RB'*model_data.W*RB-eye(size(RB,2), size(RB,2))))
2850  loop = 0;
2851  while (oc>1e-14)&&(loop<5)
2852  RB = orthonormalize_gram_schmidt(RB, model_data.W);
2853  oc = max(max(RB'*model_data.W*RB-eye(size(RB,2), size(RB,2))))
2854  loop = loop +1;
2855  end
2856 
2857  detailed_data.RB = RB;
2858  %detailed_data.RB_der{1} = RB;
2859  %detailed_data.RB_der{2} = RB;
2860  %detailed_data.RB_der{3} = RB;
2861 
2862  reduced_data = gen_reduced_data(model, detailed_data);
2863 
2864  rb_sim_data = rb_simulation(model, reduced_data);
2865  rb_sim_data = rb_reconstruction(model, detailed_data, rb_sim_data);
2866  U_der_rb = rb_sim_data.U_der;
2867 
2868  %Auswertung
2869  nr_der = length(U_der);
2870 
2871  U_diff_der = cell(1,nr_der);
2872  err = zeros(nr_der,size(U,2));
2873 
2874  clr={'r','g','b','k','m'};
2875 
2876  disp(['Anzahl an Basisvektoren: ',num2str(size(detailed_data.RB,2))])
2877 
2878  figure(1);
2879  figure(2);
2880  figure(3);
2881  for i=1:nr_der
2882  if ~isfield(model,'starting_time_step')
2883  U_diff_der{i} = U_der_rb(:,model.save_time_indices+1,i) - U_der{i};
2884  disp(['Maximum difference in ',num2str(i),'. rb derivative: ',num2str(max(max(U_diff_der{i})))]);
2885  err(i,:) = fv_l2_error(U_der_rb(:,model.save_time_indices+1,i), U_der{i}, model_data.grid,[]);
2886  else
2887  U_diff_der{i} = U_der_rb(:,:,i) - U_der{i};
2888  disp(['Maximum difference in ',num2str(i),'. rb derivative: ',num2str(max(max(U_diff_der{i})))]);
2889  err(i,:) = fv_l2_error(U_der_rb(:,:,i), U_der{i}, model_data.grid,[]);
2890  end
2891  figure(1)
2892  plot(err(i,:),clr{i})
2893  hold on
2894  figure(2)
2895  plot(rb_sim_data.Delta_der(i,:),clr{i})
2896  hold on
2897  figure(3)
2898  plot(sqrt(rb_sim_data.res_u_der(i,:)),clr{i})
2899  hold on
2900  end
2901  figure(1)
2902  plot(fv_l2_error(U,rb_sim_data.U(:,model.save_time_indices+1), model_data.grid,[]),'k')
2903  title('true error')
2904  legend('1','2','3','4','sol')
2905  figure(2)
2906  plot(rb_sim_data.Delta,'k')
2907  title('estimated error')
2908  legend('1','2','3','4','sol')
2909  figure(3)
2910  plot(sqrt(rb_sim_data.res_u),'k');
2911  title('residual')
2912  legend('1','2','3','4','sol')
2913 
2914  keyboard;
2915 
2916 
2917 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2918 % verifiy derivative error estimators by separate basis (with k as
2919 % parameter)
2920 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2921 
2922  case 108
2923 
2924 
2925  params.coarse_factor = 8;
2926  params.k_const = 0;
2927  params.separate_bases = 1;
2928  %model = advection_fv_output_opt_model(params);
2929  model = convection_diffusion_fv_output_opt_model_rect(params);
2930  model.compute_derivative_info = 1;
2931  model.t = 0;
2932 
2933  model.k=0;
2934 
2935  mu=[0.3,0.5,0.5,0.5];
2936  model = set_mu(model, mu);
2937 
2938  %model.starting_time_step = 0;
2939  %model.stopping_time_step = 2;
2940 
2941 
2942  model_data = gen_model_data(model);
2943 
2944  sim_data = detailed_simulation(model, model_data);
2945  U_der = sim_data.U_der;
2946  U=sim_data.U;
2947 
2948  %construct mixed basis by PCA over solution snd derivative solutions
2949  detailed_data = model_data;
2950  detailed_data.RB = [];
2951 
2952  detailed_data.RB = model.rb_init_data_basis(model, detailed_data);
2953 
2954 
2955  %PCA_sol
2956  traj = U;
2957  PCAtr = PCA_fixspace(traj, detailed_data.RB,model_data.W);
2958  detailed_data.RB = [detailed_data.RB,PCAtr];
2959 
2960 
2961  %check orthogonality
2962  RB = detailed_data.RB;
2963  oc = max(max(RB'*model_data.W*RB-eye(size(RB,2), size(RB,2))))
2964  loop = 0;
2965  while (oc>1e-14)&&(loop<5)
2966  RB = orthonormalize_gram_schmidt(RB, model_data.W);
2967  oc = max(max(RB'*model_data.W*RB-eye(size(RB,2), size(RB,2))))
2968  loop = loop +1;
2969  end
2970  detailed_data.RB = RB;
2971 
2972  %PCA_der
2973  detailed_data.RB_der = cell(1,length(U_der));
2974  for i=1:length(U_der)
2975  detailed_data.RB_der{i} = model.rb_init_data_basis(model, detailed_data);
2976  traj = U_der{i};
2977  PCAtr = PCA_fixspace(traj, detailed_data.RB_der{i}, model_data.W);
2978  detailed_data.RB_der{i} = [detailed_data.RB_der{i}, PCAtr];
2979 
2980  RB = detailed_data.RB_der{i};
2981  oc = max(max(RB'*model_data.W*RB-eye(size(RB,2), size(RB,2))))
2982  loop = 0;
2983  while (oc>1e-14)&&(loop<5)
2984  RB = orthonormalize_gram_schmidt(RB, model_data.W);
2985  oc = max(max(RB'*model_data.W*RB-eye(size(RB,2), size(RB,2))))
2986  loop = loop +1;
2987  end
2988  detailed_data.RB_der{i} = RB;
2989  end
2990 
2991 
2992  reduced_data = gen_reduced_data(model, detailed_data);
2993 
2994  rb_sim_data = rb_simulation(model, reduced_data);
2995  rb_sim_data = rb_reconstruction(model, detailed_data, rb_sim_data);
2996  U_der_rb = rb_sim_data.U_der;
2997 
2998  %Auswertung
2999  nr_der = length(U_der);
3000 
3001  U_diff_der = cell(1,nr_der);
3002  err = zeros(nr_der,size(U,2));
3003 
3004  clr={'r','g','b','m','k'};
3005 
3006  disp(['Anzahl an Basisvektoren: ',num2str(size(detailed_data.RB,2))])
3007 
3008  figure(1);
3009  figure(2);
3010  figure(3);
3011  for i=1:nr_der
3012  if ~isfield(model,'starting_time_step')
3013  U_diff_der{i} = U_der_rb(:,model.save_time_indices+1,i) - U_der{i};
3014  disp(['Maximum difference in ',num2str(i),'. rb derivative: ',num2str(max(max(U_diff_der{i})))]);
3015  err(i,:) = fv_l2_error(U_der_rb(:,model.save_time_indices+1,i), U_der{i}, model_data.grid,[]);
3016  else
3017  U_diff_der{i} = U_der_rb(:,:,i) - U_der{i};
3018  disp(['Maximum difference in ',num2str(i),'. rb derivative: ',num2str(max(max(U_diff_der{i})))]);
3019  err(i,:) = fv_l2_error(U_der_rb(:,:,i), U_der{i}, model_data.grid,[]);
3020  end
3021  figure(1)
3022  plot(err(i,:),clr{i})
3023  hold on
3024  figure(2)
3025  plot(rb_sim_data.Delta_der(i,:),clr{i})
3026  hold on
3027  figure(3)
3028  plot(rb_sim_data.res_u_der(i,:),clr{i})
3029  hold on
3030  end
3031  figure(1)
3032  plot(fv_l2_error(U,rb_sim_data.U(:,model.save_time_indices+1), model_data.grid,[]),'k')
3033  title('true error')
3034  legend('1','2','3','4','sol')
3035  figure(2)
3036  plot(rb_sim_data.Delta,'k')
3037  title('estimated error')
3038  legend('1','2','3','4','sol')
3039  figure(3)
3040  plot(rb_sim_data.res_u,'k');
3041  title('residual')
3042  legend('1','2','3','4','sol')
3043 
3044  keyboard;
3045 
3046 
3047 
3048  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3049  % Konstantenbestimmung mit diffusion
3050  %
3051  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3052 
3053 
3054  case 109
3055 
3056  params.coarse_factor = 16;
3057  params.k_const = 0;
3058 
3059  M_test = [0,0,0,0;...
3060  1,0,0,0;...
3061  0,1,0,0;...
3062  0,0,1,0;...
3063  0,0,0,1;...
3064  1,1,1,1;...
3065  1,1,1,1];
3066 
3067 
3068  model = convection_diffusion_fv_output_opt_model_rect_normed(params);
3069 
3070  model.t=0;
3071  model.k=0.05;
3072  model.compute_derivative_info = 1;
3073  model.decomp_mode = 0;
3074 
3075  model_data = gen_model_data(model);
3076 
3077  [L_I,L_E,b] = model.operators_ptr(model, model_data);
3078 
3079  %check if linear cimobination and decomp mode is the same
3080  model.decomp_mode = 1;
3081  [L_I_comp,L_E_comp,b_comp] = model.operators_ptr(model, model_data);
3082 
3083  model.decomp_mode = 2;
3084  [sL_I,sL_E,sb] = model.operators_ptr(model, model_data);
3085 
3086  L_I2 = lincomb_sequence(L_I_comp,sL_I);
3087  L_E2 = lincomb_sequence(L_E_comp,sL_E);
3088  b2 = lincomb_sequence(b_comp,sb);
3089 
3090  diffI=L_I - L_I2;
3091  diffE = L_E - L_E2;
3092  diffb = b-b2;
3093  disp('0 0 0?')
3094  max(max(diffI))
3095  max(max(diffE))
3096  max(max(diffb))
3097 
3098  C_LEmax = 0;
3099  C_LImax = 0;
3100 
3101  disp(['Norm der L_I_comp bei coarse_factor',num2str(model.coarse_factor),...
3102  'ist',num2str(norm(full(L_I_comp{1})))])
3103 
3104 
3105  for i=1:size(M_test,1)
3106  mu=M_test(i,:);
3107  model = set_mu(model,mu);
3108  model.decomp_mode = 2;
3109  [sL_I,sL_E,sb] = model.operators_ptr(model, model_data);
3110  L_I2 = lincomb_sequence(L_I_comp,sL_I);
3111  L_E2 = lincomb_sequence(L_E_comp,sL_E);
3112  b2 = lincomb_sequence(b_comp,sb);
3113 
3114  %%%%
3115  % Konstante ||Id+dt*L_E||
3116 
3117  C_LE = norm(eye(size(L_E,1))+model.dt*full(L_E));
3118  if C_LE >C_LEmax
3119  C_LEmax = C_LE;
3120  end
3121 
3122 
3123  %%%%
3124  % Konstante ||(Id-dt*L_I)^(-1)||
3125 
3126 
3127  C_LI = norm(inv(eye(size(L_I2,1))-model.dt*full(L_I2)));
3128  if C_LI > C_LImax
3129  C_LImax = C_LI;
3130  end
3131 
3132 
3133  end
3134 
3135  disp(['C_E Konstante ist: ',num2str(C_LEmax)]);
3136  disp(['C_I Konstante ist: ',num2str(C_LImax)]);
3137  %Beide Konstanten sind <=1
3138 
3139 
3140  %%%%
3141  % Derivative Konstanten C_dE und C_dI
3142 
3143 
3144 
3145  for p=1:4
3146  C_LEdmax=0;
3147  C_LId = zeros(1,size(M_test,1));
3148  for i=1:size(M_test,1)
3149  [sd_LI, sd_LE, sd_b] = model.rb_derivative_operators_coefficients_ptr(model);
3150 
3151  L_Id = lincomb_sequence(L_I_comp,sd_LI(p));
3152  L_Ed = lincomb_sequence(L_E_comp,sd_LE(p,:));
3153  bd = lincomb_sequence(b_comp,sd_b(p,:));
3154 
3155  C_LId(i) = norm(full(L_Id));
3156  C_LEd = norm(full(L_Ed));
3157 
3158  %if C_LId > C_LIdmax
3159  % C_LIdmax = C_LId;
3160  %end
3161  if C_LEd > C_LEdmax
3162  C_LEdmax = C_LEd;
3163  end
3164  end
3165  C_LIdmax = max(C_LId);
3166  disp(['Ableitungsoperatorkonstanten für ',num2str(p),'.Abl. und coarse_factor ',num2str(model.coarse_factor)]);
3167  disp(['C_Lid : ',num2str(C_LIdmax)]);
3168  disp(['C_Led : ', num2str(C_LEdmax)]);
3169  disp(['Ableitungskontanten für ',num2str(p),'. Abl. inkl. dt:']);
3170  disp(['C_Lid : ',num2str(model.dt*C_LIdmax)]);
3171  disp(['C_Led : ', num2str(model.dt*C_LEdmax)]);
3172  end
3173  disp('Änderung der C_LId Konstante mit Parameter k:')
3174  C_LId
3175 
3176 
3177  %Operatornorm des Rieszrepresentanten des outputs ||J||
3178  % |J(u)|<=||J||||u||
3179  %
3180  % Es gilt ||v|| = sup_{||w||=1;w\in\R^H} v*K*K^{-0.5}*w;%
3181  % z = v*K*K^{-0.5}
3182  %--> ||v|| = norm(z)
3183  disp('')
3184  disp('Bestimmung von ||J||');
3185  disp('')
3186  coarse_factor = 1;
3187  model = convection_diffusion_fv_output_opt_model_rect_normed(params);
3188  model.decomp_mode = 1;
3189  model.t=0;
3190  model_data = gen_model_data(model);
3191 
3192  v=model.operators_output(model, model_data);
3193  K=model_data.W;
3194  z=v{1}'*sqrt(inv(K));
3195  disp(['||v||= ',num2str(norm(z))]);
3196 
3197  keyboard;
3198 
3199 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
3200 % lipschitz constants for functional gradient
3201 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3202 
3203  case 1092 %obsolet!!!!!!!!!!!!!!!!!!!!!!!!
3204 
3205  %Lipschitz Konstanten für verschiedene Fälle (zu optimierende
3206  %Variablen, coarse Faktoren) in arrays gespeichert und als File
3207  %geschrieben.
3208  % Das Model sollte dieses File laden und die für sich relevante
3209  % Lipschitzkonstante auslesen.
3210  % Zur verbesserung der Genauigkeit können auch loka gültige
3211  % Lipschitzkonstanten gespeichert werden.
3212 
3213  %fix model_type here
3214 
3215  %model_type = 'normal';
3216  %model_type = 'vx_const';
3217  model_type = 'cone_const';
3218  %time_type = 'time_const';
3219  time_type = 'time_var';
3220 
3221  if (nargin<3)||(~isfield(expar,'coarse_factor'))
3222  params.coarse_factor =2;
3223  end
3224 
3225  %fix here grid density for localized lipschitz constant
3226  grid_dens=10;
3227  %grid density of subgrid on each lipschitzgrid element
3228  sub_grid_dens=1;
3229 
3230  if strcmp(time_type,'time_var')
3231  params.time_const=0;
3232  else
3233  params.time_const=1;
3234  end
3235 
3236  switch model_type
3237  case 'vx_const'
3238  params.vx_const=1;
3239  params_to_optimize=[1,0,1];
3240  grid_params.range={[0,1],[0,1]};
3241  grid_params.numintervals=grid_dens*[1,1];
3242  case 'cone_const'
3243  params.cone_const=1;
3244  params_to_optimize=[0,1,1];
3245  grid_params.range={[0,1],[0,1]};
3246  grid_params.numintervals=grid_dens*[1,1];
3247  otherwise
3248  params.normal_model=1;
3249  params_to_optimize=[1,1,1];
3250  grid_params.range={[0,1],[0,1],[0,1]};
3251  grid_params.numintervals=grid_dens*[1,1,1];
3252  end
3253 
3254  model = convection_diffusion_fv_output_opt_model_rect_normed(params);
3255  model.t=0;
3256  model.k=0.25;
3257  model.compute_derivative_info = 1;
3258  model.decomp_mode = 0;
3259  model.optimization.params_to_optmize= params_to_optimize;
3260  model_data = gen_model_data(model);
3261 
3262  %generate lipschitz parameter grid
3263  lip_grid = cubegrid(grid_params);
3264 
3265  lipschitz_const = zeros(1,lip_grid.nelements);
3266 
3267  model.decomp_mode=0;
3268  v=model.operators_output(model, model_data);
3269 
3270  for i=1:lip_grid.nelements
3271  %for every element i in the grid we have to calculate the
3272  %lipschitz constant
3273 
3274  %generating subgrid
3275  sub_par.range=get_ranges_of_element(lip_grid,i);
3276  sub_par.numintervals = sub_grid_dens*ones(1,lip_grid.dimension);
3277  subgrid=cubegrid(sub_par);
3278  Mtest = subgrid.vertex;
3279 
3280 
3281  Cl = zeros(1,size(Mtest,1));
3282  for j=1:size(Mtest,1)
3283  model = set_mu(model, Mtest(j,:));
3284  %2nd derivative
3285  U_der2 = lin_evol_opt_fd_second_derivative(model, model_data, Mtest(j,:));
3286  functional = zeros(length(U_der2),1);
3287  %functional of 2nd der.
3288  for m=1:length(U_der2)
3289  functional(m)=v'*U_der2{m}(:,end);
3290  end
3291  Cl(j) = norm(functional);
3292 
3293  end
3294 
3295  lipschitz_const(i) = max(Cl);
3296 
3297  end
3298 
3299  lipschitz_data=[];
3300  lipschitz_data.lip_grid = lip_grid;
3301  lipschitz_data.lipschitz_const=lipschitz_const;
3302 
3303  save(fullfile(fdir,['lipschitz_data_diff_new',num2str(model.k),'_',model_type,'_',time_type,'_coarse_',num2str(params.coarse_factor)]),'lipschitz_data')
3304 
3305 
3306  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3307 % calculating Lipschitz constants of the functional gradient for every mu-direction
3308 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3309  case 1093
3310 
3311  %Lipschitz Konstanten für verschiedene Fälle (zu optimierende
3312  %Variablen, coarse Faktoren) in arrays gespeichert und als File
3313  %geschrieben.
3314  % Das Model sollte dieses File laden und die für sich relevante
3315  % Lipschitzkonstante auslesen.
3316  % Zur verbesserung der Genauigkeit können auch loka gültige
3317  % Lipschitzkonstanten gespeichert werden.
3318 
3319  %fix model_type here
3320 
3321  %model_type = 'normal';
3322  %model_type = 'vx_const';
3323  model_type = 'cone_const';
3324  %time_type = 'time_const';
3325  time_type = 'time_var';
3326 
3327  %params.functional = 'box_mean';
3328  params.functional = 'box_mean_time';
3329 
3330  if (nargin>1)&&(isfield(expar,'coarse_factor'))
3331  params.coarse_factor = expar.coarse_factor;
3332  else
3333  params.coarse_factor =2;
3334  end
3335 
3336  %fix here grid density for localized lipschitz constant
3337  grid_dens=10;
3338  %grid density of subgrid on each lipschitzgrid element
3339  sub_grid_dens=1;
3340 
3341  if strcmp(time_type,'time_var')
3342  params.time_const=0;
3343  else
3344  params.time_const=1;
3345  end
3346 
3347  switch model_type
3348  case 'vx_const'
3349  params.vx_const=1;
3350  params_to_optimize=[1,0,1];
3351  grid_params.range={[0,1],[0,1]};
3352  grid_params.numintervals=grid_dens*[1,1];
3353  case 'cone_const'
3354  params.cone_const=1;
3355  params_to_optimize=[0,1,1];
3356  grid_params.range={[0,1],[0,1]};
3357  grid_params.numintervals=grid_dens*[1,1];
3358  otherwise
3359  params.normal_model=1;
3360  params_to_optimize=[1,1,1];
3361  grid_params.range={[0,1],[0,1],[0,1]};
3362  grid_params.numintervals=grid_dens*[1,1,1];
3363  end
3364 
3365  model = convection_diffusion_fv_output_opt_model_rect_normed_outflow(params);
3366  model.t=0;
3367  model.k=0.25;
3368  model.compute_derivative_info = 1;
3369  model.decomp_mode = 0;
3370  %model.optimization.params_to_optmize= params_to_optimize;
3371  model_data = gen_model_data(model);
3372 
3373  %generate lipschitz parameter grid
3374  lip_grid = cubegrid(grid_params);
3375 
3376  lipschitz_const = zeros(1,lip_grid.nelements);
3377 
3378  model.decomp_mode=0;
3379  v=model.operators_output(model, model_data);
3380 
3381  for i=1:lip_grid.nelements
3382  %for every element i in the grid we have to calculate the
3383  %lipschitz constant
3384 
3385  %generating subgrid
3386  sub_par.range=get_ranges_of_element(lip_grid,i);
3387  sub_par.numintervals = sub_grid_dens*ones(1,lip_grid.dimension);
3388  subgrid=cubegrid(sub_par);
3389  Mtest = subgrid.vertex;
3390 
3391 
3392  %Cl = zeros(sum(params_to_optimize),sum(params_to_optimize));
3393  Hes_norm =0;
3394  for j=1:size(Mtest,1)
3395  model = set_mu(model, Mtest(j,:));
3396  %Hessian
3397  Hes = filecache_function(@lin_evol_opt_fd_Hessian,model, model_data, Mtest(j,:));
3398 
3399 
3400  %functional of every Hessian entry.... find biggest Hessian norm
3401  help_ar = zeros(lip_grid.dimension,lip_grid.dimension);
3402  if strcmp(params.functional, 'box_mean_time')
3403  for k=1:size(Hes,1)
3404  for l=1:size(Hes,2)
3405  model.compute_derivative_info = 0;
3406  sim_data_dummy.U = Hes{k,l};
3407  sim_data_dummy = lin_evol_opt_output_time_integrated(model, sim_data_dummy,model_data);
3408  help_ar(k,l) = sim_data_dummy.y(end);
3409  end
3410  end
3411 
3412  else
3413  for m=1:size(Hes,1)
3414  for n=1:size(Hes,2)
3415  help_ar(m,n)=v'*Hes{1}(:,end);
3416  end
3417  end
3418  end
3419  buf = norm(help_ar);%norm of hessian matrix for this test parameter
3420 
3421  if buf>Hes_norm
3422  Hes_norm = buf;
3423  end
3424 
3425  end
3426 
3427  lipschitz_const(i) = Hes_norm;
3428 
3429  end
3430 
3431  lipschitz_data=[];
3432  lipschitz_data.lip_grid = lip_grid;
3433  lipschitz_data.lipschitz_const=lipschitz_const;
3434 
3435  if strcmp(model.name_output_functional,'box_mean')
3436  save(fullfile(fdir,['lipschitz_data_diff',num2str(model.k),'_Hessian_',model_type,'_',time_type,'_coarse_',num2str(params.coarse_factor),'.mat']),'lipschitz_data')
3437  elseif strcmp(model.name_output_functional,'box_time_int')
3438  save(fullfile(fdir,['lipschitz_data_diff',num2str(model.k),'_timeInt_',model_type,'_',time_type,'_coarse_',num2str(params.coarse_factor),'.mat']),'lipschitz_data')
3439  else
3440  error('no functional defined')
3441  end
3442 
3443 
3444  %keyboard;
3445 
3446 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3447 % separate bases basis generation using only small parameter space
3448 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
3449 
3450  case 110
3451 
3452  params.coarse_factor = 2;
3453  params.cone_const = 1;
3454  params.separate_bases = 1;
3455 
3456  model = convection_diffusion_fv_output_opt_model_rect(params);
3457  model.RB_solution_Nmax = 200;
3458  model.RB_solution_epsilon = 1e-6;
3459  model.RB_extension_algorithm = @RB_extension_PCA_fixspace_without_filecache;
3460 
3461 
3462  model.k=0.25;
3463  model.compute_derivative_info=1;
3464  model.RB_numintervals = [3,3];
3465  model.RB_stop_Nmax = 100;
3466  model.RB_stop_epsilon=5e-4;
3467  model.mu_ranges={[0.8,0.9],[0.6,0.7]};
3468  %model.starting_time_step = 0;
3469  %model.stopping_time_step = 50;
3470 
3471  model_data = gen_model_data(model);
3472  detailed_data = gen_detailed_data(model, model_data);
3473 
3474  keyboard;
3475 
3476 
3477 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3478 % separate bases generation
3479 % 2 parameters + diffusion and t-partition
3480 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3481  case 111
3482 
3483  params.coarse_factor = 16;
3484  params.cone_const = 1;
3485  params.separate_bases = 1;
3486 
3487  model = convection_diffusion_fv_output_opt_model_rect_normed(params);
3488  model.RB_extension_algorithm = @RB_extension_PCA_fixspace_without_filecache;
3489  model.verbose = 8;
3490  model.RB_solution_Nmax = 12;
3491  model.RB_solution_epsilon = 5e-8;
3492  model.RB_stop_Nmax = 8;
3493  model.RB_stop_epsilon = 5e-7;
3494  %t-part params
3495  nr_tparts = 2;
3496  t_part_range = cell(1,nr_tparts);
3497  for i=1:nr_tparts
3498  t_part_range{i} = [(i-1)*floor((model.nt)/nr_tparts),(i)*floor((model.nt)/nr_tparts)];
3499  end
3500  t_part_range{nr_tparts}(2) = model.nt;
3501  t_params.t_part_range=t_part_range;
3502  t_params.t_part_rb_generation_mode = 'fixed';
3503 
3504  model.k=0.25;
3505  model.compute_derivative_info=1;
3506  model.RB_numintervals = [3,3];
3507 
3508  model.mu_ranges={[0.4,0.5],[0.4,0.5]};
3509 
3510  model = t_part_model(model,t_params);
3511 
3512 
3513  model_data = gen_model_data(model);
3514  detailed_data = gen_detailed_data(model, model_data);
3515 
3516  filename=['newDiffGreedyBase_tpart',num2str(nr_tparts),'_2p_coarse',num2str(model.coarse_factor),...
3517  '_Nmax',num2str(model.RB_stop_Nmax),'_k_',num2str(model.k),'_small0405.mat'];
3518  save(fullfile(fdir,filename),'model','detailed_data','model_data');
3519 
3520  %keyboard;
3521 
3522 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3523 % separate bases generation (p+t) for selected partitions
3524 % 2 parameters + diffusion + ppartition and t-partition
3525 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3526  case 112
3527 
3528  filecache_clear;
3529 
3530  params.coarse_factor = 2;
3531  params.cone_const = 1;
3532  params.separate_bases = 1;
3533 
3534  p_params.p_part_numintervals = [10,10];
3535  p_params.p_part_generation_mode = 'uniform';
3536 
3537  model = convection_diffusion_fv_output_opt_model_rect_normed_outflow(params);
3538  model.verbose = 3;
3539  %t-part params
3540  %!!!!!!
3541  nr_tparts = 5;
3542  %!!!!!!!!!!!!!
3543  t_part_range = cell(1,nr_tparts);
3544  for i=1:nr_tparts
3545  t_part_range{i} = [(i-1)*floor((model.nt)/nr_tparts),(i)*floor((model.nt)/nr_tparts)];
3546  end
3547  t_part_range{nr_tparts}(2) = model.nt;
3548  t_params.t_part_range=t_part_range;
3549  t_params.t_part_rb_generation_mode = 'fixed';
3550 
3551  model.k=0.25;
3552  model.compute_derivative_info=1;
3553  model.RB_numintervals = [3,3];
3554  model.RB_solution_Nmax = 150;
3555  model.RB_solution_epsilon = 1e-7;
3556  model.RB_stop_Nmax = 150;
3557  model.RB_stop_epsilon = 5e-7;
3558  model.mu_ranges={[0,1],[0,1]};
3559  model.RB_extension_algorithm = @RB_extension_PCA_fixspace;
3560 
3561  model = t_part_model(model,t_params);
3562 
3563  model = p_part_model(model,p_params);
3564  %!!!!!!!!!
3565  model.gen_detailed_data = @p_part_gen_detailed_data_parallel_selected2;
3566  %!!!!!!!!!!!!
3567 
3568  if isfield(expar,'selected_partitions')
3569  model.selected_partitions = expar.selected_partitions;
3570  else
3571  model.selected_partitions = 1:100;%[23,34,45,58,59,67,68,69];
3572  disp('no partitions selected')
3573  end
3574  model.verbose = 3;
3575 
3576  model_data = gen_model_data(model);
3577  detailed_data = gen_detailed_data(model, model_data);
3578 
3579  fdir = fullfile(fdir,'coarse2');
3580  filename=['DiffGreedyBase_ptpart',num2str(nr_tparts),'_2p_coarse',num2str(model.base_model.coarse_factor),...
3581  '_Nmax',num2str(model.base_model.RB_stop_Nmax),'_nrtparts_',num2str(nr_tparts),'_k_',num2str(model.base_model.k),...
3582  '_selected',num2str(model.selected_partitions),'.mat'];
3583  fn = fullfile(fdir,filename);
3584  save(fn,'-v7.3','model','detailed_data', 'model_data');
3585 
3586  %keyboard;
3587 
3588 
3589 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
3590 % calculate average dimension of tp-basis (all equally weighted)
3591 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3592  case 113
3593 
3594  load(fullfile(fdir,'coarse2','reduced_data_complete.mat'));
3595 
3596  %load('Copy_of_DiffGreedyBase_ptpart10_2p_coarse4_Nmax30_k_0.25_selected.mat')
3597 
3598  part_used = 1:100;%[34,45,67,68,68,69,69,69];
3599 
3600  sumN=[0,0,0];
3601 
3602  nr_tparts = length(reduced_data.parts_reduced_data{part_used(1)}.t_part_reduced_data);
3603  for i=1:length(part_used)
3604  rd=reduced_data.parts_reduced_data{part_used(i)};
3605  for j=1:length(rd.t_part_reduced_data)
3606  sumN(1) = sumN(1)+rd.t_part_reduced_data{j}.N;
3607  sumN(2) = sumN(2)+length(rd.t_part_reduced_data{j}.c0{1}{1});
3608  sumN(3) = sumN(3)+length(rd.t_part_reduced_data{j}.c0{2}{1});
3609  end
3610  end
3611 
3612  N=size(part_used,2)*nr_tparts;
3613  sumN = sumN./N;
3614 
3615  disp(['Durchschnittliche Basenzahl: ',num2str(sumN)]);
3616  keyboard;
3617 
3618 
3619 
3620 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3621 % Generiere eine p_part Trickbasis
3622 % PCA von Trajektorien zu vorgegebenen Parametern werden berechnet
3623 % anschließend werden diese PCAs als reduzierte Basen in ein p_part_Gitter
3624 % eingeordnet.
3625 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
3626  case 114
3627 
3628  params.coarse_factor = 2;
3629  params.cone_const = 1;
3630  params.separate_bases = 1;
3631 
3632 
3633  model = convection_diffusion_fv_output_opt_model_rect_normed(params);
3634  model.compute_derivative_info = 1;
3635  model_data = gen_model_data(model);
3636  %what are the given parameters?
3637  if isfield(expar,'M_train')
3638  M_train = expar.M_train;
3639  else
3640  M_train = get_mu(model)';
3641  end
3642 
3643  %how does the p_part grid look like?
3644  if isfield(expar,'p_part_numintervals')
3645  p_params.p_part_numintervals = expar.p_part_numintervals;
3646  else
3647  p_params.p_part_numintervals = [10,10];
3648  end
3649  p_params.p_part_generation_mode = 'uniform';
3650 
3651 
3652  %preparations t-part_model
3653  nr_tparts = 10;
3654 
3655  t_part_range = cell(1,nr_tparts);
3656  nt_ind = length(model.save_time_indices);
3657  for i=1:nr_tparts
3658  t_part_range{i} = [(i-1)*floor((nt_ind)/nr_tparts),(i)*floor((nt_ind)/nr_tparts)];
3659  end
3660  t_part_range{1}(1) = 0;
3661  t_part_range{nr_tparts}(2) = nt_ind-1;
3662  t_params.t_part_range=t_part_range;
3663  t_params.t_part_rb_generation_mode = 'fixed';
3664  model = t_part_model(model,t_params);
3665 
3666  %concluding model
3667  model = p_part_model(model, p_params);
3668 
3669  %generate p-grid
3670  g_params.range = model.p_part_ranges;
3671  g_params.numintervals = model.p_part_numintervals;
3672  pgrid = cubegrid(g_params);
3673 
3674  %generate empty detailed_data structure
3675  detailed_data = [];
3676  detailed_data.pgrid = pgrid;
3677  detailed_data.parts_detailed_data = cell(get(pgrid,'nelements'),1);
3678 
3679  %initialize t-part-detailed_data
3680  t_part_detailed_data = cell(nr_tparts,1);
3681  for i=1:nr_tparts
3682  t_part_detailed_data{i}.W = model_data.W;
3683  t_part_detailed_data{i}.grid = model_data.grid;
3684  t_part_detailed_data{i}.t_part_range = t_part_range;
3685  end
3686 
3687  %init RB basis
3688  RB_init = model.base_model.rb_init_data_basis(model.base_model, model_data);
3689 
3690  for i=1:size(M_train,1)
3691  %loop over all elements in M_train
3692  model = set_mu(model, M_train(i,:));
3693  %detailed simulation for this parameter and PCA generation
3694  sim_data = lin_evol_opt_detailed_der_simulation_t_part(model.base_model, model_data);
3695  %RB_ext = PCA_fixspace(sim_data.U,RB_init,model_data.W);
3696 
3697  %if Basis in this parameter partition exists already-->extend
3698  %else create new
3699  %only save solutions; orthonormalization and PCA later
3700  p=coord2leaf_element(pgrid,M_train(i,:));
3701  if isempty(detailed_data.parts_detailed_data{p})
3702  for j=1:nr_tparts
3703  t_part_detailed_data{j}.RB = sim_data.U(:,(t_part_range{j}(1):t_part_range{j}(2))+1);
3704  for d=1:length(sim_data.U_der)
3705  t_part_detailed_data{j}.RB_der{d} = sim_data.U_der{d}(:,(t_part_range{j}(1):t_part_range{j}(2))+1);
3706  end
3707  end
3708  %attach initial conditions in first t_part
3709  t_part_detailed_data{1}.RB = [RB_init,t_part_detailed_data{1}.RB];
3710  for d=1:length(t_part_detailed_data{1}.RB_der)
3711  t_part_detailed_data{1}.RB_der{d} = [RB_init,t_part_detailed_data{1}.RB_der{d}];
3712  end
3713  %detailed_data.parts_detailed_data{p}.RB = model_orthonormalize_qr(model.base_model,...
3714  % model_data,[RB_init,RB_ext]);
3715  detailed_data.parts_detailed_data{p}.t_part_detailed_data = t_part_detailed_data;
3716  detailed_Data.parts_detailed_data{p}.t_part_range = t_part_range;
3717  detailed_data.parts_detailed_data{p}.RB_info.M_train = M_train(i,:);
3718  detailed_data.parts_detailed_data{p}.grid = model_data.grid;
3719  detailed_data.parts_detailed_data{p}.W = model_data.W;
3720  else
3721  %RB = model_orthonormalize_qr(model.base_model, model_data,...
3722  % [detailed_data.parts_detailed_data{p}.RB, RB_ext]);
3723  %detailed_data.parts_detailed_data{p}.RB = RB;
3724  for j=1:nr_tparts
3725  t_part_detailed_data{j}.RB = [detailed_data.parts_detailed_data{p}.t_part_detailed_data{j}.RB,...
3726  sim_data.U(:,(t_part_range{j}(1):t_part_range{j}(2))+1)];
3727  for d=1:length(sim_data.U_der)
3728  t_part_detailed_data{j}.RB_der{d} = [detailed_data.parts_detailed_data{p}.t_part_detailed_data{j}.RB_der{d},...
3729  sim_data.U_der{d}(:,(t_part_range{j}(1):t_part_range{j}(2))+1)];
3730  end
3731  end
3732  detailed_data.parts_detailed_data{p}.t_part_detailed_data = t_part_detailed_data;
3733  detailed_data.parts_detailed_data{p}.RB_info.M_train = ...
3734  [detailed_data.parts_detailed_data{p}.RB_info.M_train;M_train(i,:)];
3735  end
3736 
3737  end
3738 
3739  %make a PCA in all p-parts and t-parts over the trajectories
3740  for p=1:length(detailed_data.parts_detailed_data)
3741  if ~isempty(detailed_data.parts_detailed_data{p})
3742  for j=1:nr_tparts
3743  PCAtr = PCA_fixspace(detailed_data.parts_detailed_data{p}.t_part_detailed_data{j}.RB(:,2:end),...
3744  detailed_data.parts_detailed_data{p}.t_part_detailed_data{j}.RB(:,1),model_data.W);
3745  detailed_data.parts_detailed_data{p}.t_part_detailed_data{j}.RB = ...
3746  [detailed_data.parts_detailed_data{p}.t_part_detailed_data{j}.RB(:,1),PCAtr];
3747  detailed_data.parts_detailed_data{p}.t_part_detailed_data{j}.RB = model_orthonormalize_qr(model.base_model, model_data,...
3748  detailed_data.parts_detailed_data{p}.t_part_detailed_data{j}.RB);
3749  for d=1:length(detailed_data.parts_detailed_data{p}.t_part_detailed_data{j}.RB_der)
3750  PCAtr = PCA_fixspace(detailed_data.parts_detailed_data{p}.t_part_detailed_data{j}.RB_der{d}(:,2:end),...
3751  detailed_data.parts_detailed_data{p}.t_part_detailed_data{j}.RB_der{d}(:,1),model_data.W);
3752  detailed_data.parts_detailed_data{p}.t_part_detailed_data{j}.RB_der{d} = ...
3753  [detailed_data.parts_detailed_data{p}.t_part_detailed_data{j}.RB_der{d}(:,1),PCAtr];
3754  detailed_data.parts_detailed_data{p}.t_part_detailed_data{j}.RB_der{d} = ...
3755  model_orthonormalize_qr(model.base_model, model_data,detailed_data.parts_detailed_data{p}.t_part_detailed_data{j}.RB_der{d});
3756  end
3757  end
3758  end
3759  end
3760 
3761 
3762 
3763  reduced_data = gen_reduced_data(model, detailed_data);
3764 
3765  keyboard;
3766 
3767 
3768 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3769 % ZUsammenfügen der einzelnen Partitionsn, die in case 112 erzeugt wurden
3770 % !achtung: in dem Verzeichnis dürfen nur die benötigten dateien liegen
3771 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3772 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
3773 
3774  case 115
3775 
3776  %fdir2 = fullfile(fdir,'coarse4');
3777  %cd /home/dihlmann/matlab/rbmatlab/rbasis/lin_evol_opt/convdiff/coarse2
3778  cd /home/dihlmann/matlab/rbmatlab-core/rbasis/lin_evol_opt/convdiff/coarse2
3779 
3780  s = what;
3781  f = s.mat;
3782 
3783  load(f{1});
3784  dd = detailed_data;
3785 
3786  disp('start appending bases')
3787 
3788  for i=2:length(f);
3789  disp(i)
3790  load(f{i});
3791  for p=1:length(detailed_data.parts_detailed_data)
3792  if ~isempty(detailed_data.parts_detailed_data{p})
3793  dd.parts_detailed_data{p} = detailed_data.parts_detailed_data{p};
3794  end
3795  end
3796  end
3797 
3798 
3799  detailed_data = dd;
3800  disp('saving the complete basis')
3801  save -v7.3 complete_TP_basis_coarse2.mat model detailed_data
3802 
3803  disp('Generating the reduced data');
3804  reduced_data = gen_reduced_data(model, detailed_data);
3805  disp('saving reduced_data')
3806  save -v7.3 reduced_data_complete.mat model reduced_data
3807 
3808 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
3809 % generiere Landschaftsplots für Funktional, Gradient und Hessian
3810 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3811 
3812  case 116
3813 
3814  if (nargin>1)&&(isfield(expar,'coarse_factor'))
3815  params.coarse_factor = expar.coarse_factor;
3816  else
3817  params.coarse_factor = 16;
3818  end
3819 
3820  params.cone_const =1;
3821  %params.functional = 'box_mean';
3822  %params.functional = 'box_mean_time';
3823  params.functional = 'box_mean_time2';
3824 
3825  %model preparation
3826  model = convection_diffusion_fv_output_opt_model_rect_normed_outflow(params);
3827  model.t=0;
3828  model.k=0.25;
3829  model.compute_derivative_info = 1;
3830  model.decomp_mode = 0;
3831  model_data = gen_model_data(model);
3832 
3833  %set landscape grid options (density...)
3834  if (nargin>1)&&(isfield(expar,'num_pts'))
3835  num_pts = expar.num_pts;
3836  else
3837  num_pts = 6;
3838  end
3839  p_range = [0,1];
3840  delt = (p_range(2)-p_range(1))/(num_pts-1);
3841  mu_test = p_range(1):delt:p_range(2);
3842 
3843 
3844  %Ouput functional
3845  v=model.operators_output(model, model_data);
3846 
3847  %landscape values - initialization
3848  J = zeros(num_pts,num_pts); %functional values
3849  grad1 = zeros(num_pts, num_pts); %gradient first entry
3850  grad2 = zeros(num_pts, num_pts); %gradient second entry
3851  H11 = zeros(num_pts, num_pts); %Hessian 11entry
3852  H12 = zeros(num_pts, num_pts); %Hessian 12 entry
3853  H22 = zeros(num_pts, num_pts); % Hessian 22 entry
3854 
3855  %loop over parameter grid
3856  for i=1:num_pts
3857  for j=1:num_pts
3858  H= zeros(2,2);
3859  mu = [mu_test(i),mu_test(j)];
3860  model = set_mu(model, mu);
3861  sim_data = detailed_simulation(model, model_data);
3862  H_sol = lin_evol_opt_fd_Hessian(model, model_data,mu);
3863  for k=1:2
3864  for l=1:2
3865  H(k,l)=v'*H_sol{k,l}(:,end);
3866  end
3867  end
3868 
3869  %save results
3870  J(i,j) = sim_data.y(end);
3871  grad1(i,j) = sim_data.y_der(1,end);
3872  grad2(i,j) = sim_data.y_der(2,end);
3873  H11(i,j) = H(1,1);
3874  H12(i,j) = H(1,2);
3875  H22(i,j) = H(2,2);
3876  end
3877  end
3878 
3879  figure;surf(mu_test,mu_test,J);title(['J_',num2str(params.coarse_factor)]);figure;
3880  surf(mu_test,mu_test,grad1);title(['grad1',num2str(params.coarse_factor)]);figure;
3881  surf(mu_test,mu_test,grad2);title(['grad2',num2str(params.coarse_factor)]);figure;
3882  surf(mu_test,mu_test,H11);title(['H11',num2str(params.coarse_factor)]);figure;
3883  surf(mu_test,mu_test,H12);title(['H12',num2str(params.coarse_factor)]);figure;
3884  surf(mu_test,mu_test,H22);title(['H22',num2str(params.coarse_factor)])
3885 
3886  keyboard;
3887 
3888 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
3889 % test lipschitz constant grid-zuweisung... für case 1093
3890 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3891 
3892  case 117
3893 
3894  %fix model_type here
3895 
3896  %model_type = 'normal';
3897  %model_type = 'vx_const';
3898  model_type = 'cone_const';
3899  %time_type = 'time_const';
3900  time_type = 'time_var';
3901 
3902  if (nargin>1)&&(isfield(expar,'coarse_factor'))
3903  params.coarse_factor = expar.coarse_factor;
3904  else
3905  params.coarse_factor =16;
3906  end
3907 
3908  %fix here grid density for localized lipschitz constant
3909  grid_dens=10;
3910 
3911 
3912 
3913  if strcmp(time_type,'time_var')
3914  params.time_const=0;
3915  else
3916  params.time_const=1;
3917  end
3918 
3919  switch model_type
3920  case 'vx_const'
3921  params.vx_const=1;
3922  params_to_optimize=[1,0,1];
3923  grid_params.range={[0,1],[0,1]};
3924  grid_params.numintervals=grid_dens*[1,1];
3925  case 'cone_const'
3926  params.cone_const=1;
3927  params_to_optimize=[0,1,1];
3928  grid_params.range={[0,1],[0,1]};
3929  grid_params.numintervals=grid_dens*[1,1];
3930  otherwise
3931  params.normal_model=1;
3932  params_to_optimize=[1,1,1];
3933  grid_params.range={[0,1],[0,1],[0,1]};
3934  grid_params.numintervals=grid_dens*[1,1,1];
3935  end
3936 
3937  model = convection_diffusion_fv_output_opt_model_rect_normed(params);
3938  model.t=0;
3939  model.k=0.25;
3940  model.compute_derivative_info = 1;
3941  model.decomp_mode = 0;
3942  model.optimization.params_to_optmize= params_to_optimize;
3943  model_data = gen_model_data(model);
3944 
3945  %generate lipschitz parameter grid
3946  %lip_grid = cubegrid(grid_params);
3947 
3948 
3949  delt = 1/grid_dens;
3950  lip_vec = 0:delt:1;
3951  numpts = length(lip_vec);
3952  lipschitz_const = zeros(numpts,numpts);
3953 
3954  model.decomp_mode=0;
3955  v=model.operators_output(model, model_data);
3956 
3957  for i=1:numpts
3958  for j=1:numpts
3959  %for every element i in the grid we have to calculate the
3960  %lipschitz constant
3961 
3962  mu=[lip_vec(i),lip_vec(j)];
3963 
3964  model = set_mu(model, mu);
3965  %Hessian
3966  Hes = lin_evol_opt_fd_Hessian(model, model_data, mu);
3967 
3968 
3969  %functional of every Hessian entry.... find biggest Hessian norm
3970  help_ar = zeros(2,2);
3971  for m=1:size(Hes,1)
3972  for n=1:size(Hes,2)
3973  help_ar(m,n)=v'*Hes{1}(:,end);
3974  end
3975  end
3976  Hes_norm = norm(help_ar);%norm of hessian matrix for this test parameter
3977  lipschitz_const(i,j) = Hes_norm;
3978 
3979  end
3980 
3981 
3982 
3983  end
3984 
3985  keyboard;
3986 
3987 
3988  case 118
3989  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3990  % for the new non-iterative error estimator in optimization
3991  % calculate the third derivatives of functional (Hessian of
3992  % gradient) to determine the Lipschitz constant of the Hessian
3993  % ...L_H...
3994  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3995 
3996  %mu=[0.5,0.5];
3997 
3998  %parametertestpunkte festlegen
3999  nr_pts = 6;
4000  delt = 1/(nr_pts-1);
4001  mu_v = 0:delt:1;
4002 
4003  params.coarse_factor = 4;
4004  params.cone_const= 1;
4005 
4006  model = convection_diffusion_fv_output_opt_model_rect_normed_outflow(params);
4007  model.decomp_mode = 0;
4008  model.t = 0;
4009 
4010  model_data = gen_model_data(model);
4011 
4012  %output functional
4013  v = model.operators_output(model, model_data);
4014  L_H = zeros(nr_pts,nr_pts);
4015  for k=1:nr_pts
4016  for l=1:nr_pts
4017  mu = [mu_v(k),mu_v(l)];
4018 
4019  H_der = lin_evol_opt_fd_Hessian_der(model, model_data, mu);
4020 
4021  for i=1:size(H_der,1)
4022  for j=1:size(H_der,2)
4023  HgradJ(i,j) = v'*H_der{i,j}{1}(:,end);
4024  end
4025  end
4026  L_H(k,l) = norm(HgradJ);
4027 
4028  end
4029  end
4030 
4031 
4032  keyboard;
4033 
4034 
4035  case 119
4036  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4037  % for the non-iterative error estimator calculate
4038  % gamma-constant
4039  % this is the norm of the inverse of the hessian at a given
4040  % parameter value mu. We scan for the largest gamma = gamma_H
4041  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4042 
4043  %parametertestpunkte festlegen
4044  nr_pts = 6;
4045  delt = 1/(nr_pts-1);
4046  mu_v = 0:delt:1;
4047 
4048  params.coarse_factor = 4;
4049  params.cone_const= 1;
4050 
4051  model = convection_diffusion_fv_output_opt_model_rect_normed_outflow(params);
4052  model.decomp_mode = 0;
4053  model.t = 0;
4054 
4055  model_data = gen_model_data(model);
4056 
4057  %output functional
4058  v = model.operators_output(model, model_data);
4059  gamma_H = zeros(nr_pts,nr_pts);
4060 
4061  for k=1:nr_pts
4062  for l=1:nr_pts
4063  mu = [mu_v(k),mu_v(l)];
4064 
4065  H = lin_evol_opt_fd_Hessian(model, model_data, mu);
4066  for i=1:size(H,1)
4067  for j=1:size(H,2)
4068  HgradJ(i,j) = v'*H{i,j}(:,end);
4069  end
4070  end
4071  gamma_H(k,l) = norm(inv(HgradJ));
4072 
4073  end
4074  end
4075 
4076 
4077  keyboard;
4078 
4079 
4080 
4081 
4082  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4083 % for the new non-iterative error estimator calculate the Lipschitz
4084 % constant of the hessian (on a grid in parameter space)
4085 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4086  case 120
4087 
4088  %Lipschitz Konstanten für verschiedene Fälle (zu optimierende
4089  %Variablen, coarse Faktoren) in arrays gespeichert und als File
4090  %geschrieben.
4091  % Das Model sollte dieses File laden und die für sich relevante
4092  % Lipschitzkonstante auslesen.
4093  % Zur verbesserung der Genauigkeit können auch loka gültige
4094  % Lipschitzkonstanten gespeichert werden.
4095 
4096  %fix model_type here
4097 
4098  %model_type = 'normal';
4099  %model_type = 'vx_const';
4100  model_type = 'cone_const';
4101  %time_type = 'time_const';
4102  time_type = 'time_var';
4103  %functional = 'box_mean';
4104  if (nargin>1)&&(isfield(expar,'functional'))
4105  switch expar.functional
4106  case 1
4107  functional = 'box_mean';
4108  case 2
4109  functional = 'box_mean_time';
4110  end
4111  else
4112  functional = 'box_mean_time';
4113  end
4114 
4115  params.functional = functional;
4116 
4117  if (nargin>1)&&(isfield(expar,'coarse_factor'))
4118  params.coarse_factor = expar.coarse_factor;
4119  else
4120  params.coarse_factor =2;
4121  end
4122 
4123  %fix here grid density for localized lipschitz constant
4124  if (nargin>1)&&(isfield(expar,'grid_dens'))
4125  grid_dens = expar.grid_dens;
4126  else
4127  grid_dens=3;
4128  end
4129  %grid density of subgrid on each lipschitzgrid element
4130  sub_grid_dens=1;
4131 
4132  if strcmp(time_type,'time_var')
4133  params.time_const=0;
4134  else
4135  params.time_const=1;
4136  end
4137 
4138  switch model_type
4139  case 'vx_const'
4140  params.vx_const=1;
4141  params_to_optimize=[1,0,1];
4142  grid_params.range={[0,1],[0,1]};
4143  grid_params.numintervals=grid_dens*[1,1];
4144  case 'cone_const'
4145  params.cone_const=1;
4146  params_to_optimize=[0,1,1];
4147  grid_params.range={[0,1],[0,1]};
4148  grid_params.numintervals=grid_dens*[1,1];
4149  otherwise
4150  params.normal_model=1;
4151  params_to_optimize=[1,1,1];
4152  grid_params.range={[0,1],[0,1],[0,1]};
4153  grid_params.numintervals=grid_dens*[1,1,1];
4154  end
4155 
4156  model = convection_diffusion_fv_output_opt_model_rect_normed_outflow(params);
4157  model.t=0;
4158  model.k=0.25;
4159  model.compute_derivative_info = 1;
4160  model.decomp_mode = 0;
4161  model.optimization.params_to_optmize= params_to_optimize;
4162  model_data = gen_model_data(model);
4163 
4164  %generate lipschitz parameter grid
4165  lip_H_grid = cubegrid(grid_params);
4166 
4167  lipschitz_H_const = zeros(1,lip_H_grid.nelements);
4168 
4169  model.decomp_mode=0;
4170  v=model.operators_output(model, model_data);
4171 
4172  matlabpool open
4173  parfor i=1:lip_H_grid.nelements
4174  %for every element i in the grid we have to calculate the
4175  %lipschitz constant
4176  disp('--------------------------------')
4177  disp(['sample nr. ',num2str(i)])
4178  disp('--------------------------------')
4179  disp('--------------------------------')
4180 
4181  %generating subgrid
4182  sub_par=[];
4183  sub_par.range=get_ranges_of_element(lip_H_grid,i);
4184  sub_par.numintervals = sub_grid_dens*ones(1,lip_H_grid.dimension);
4185  subgrid=cubegrid(sub_par);
4186  Mtest = subgrid.vertex;
4187 
4188 
4189  %Cl = zeros(sum(params_to_optimize),sum(params_to_optimize));
4190  L_H = 0;
4191  for j=1:size(Mtest,1)
4192  buf_model = set_mu(model, Mtest(j,:));
4193  %Hessian
4194  %H_der = filecache_function(@lin_evol_opt_fd_Hessian_der,buf_model, model_data, Mtest(j,:));
4195  H_der = lin_evol_opt_fd_Hessian_der(buf_model, model_data, Mtest(j,:));
4196 
4197  HgradJ = zeros(size(H_der));
4198  if strcmp(functional, 'box_mean_time')
4199  for k=1:size(H_der,1)
4200  for l=1:size(H_der,2)
4201  buf_model.compute_derivative_info = 0;
4202  sim_data_dummy.U = H_der{k,l};
4203  sim_data_dummy = lin_evol_opt_output_time_integrated(buf_model, sim_data_dummy,model_data);
4204  HgradJ(k,l) = sim_data_dummy.y(end);
4205  end
4206  end
4207 
4208  else
4209  for k=1:size(H_der,1)
4210  for l=1:size(H_der,2)
4211  HgradJ(k,l) = v'*H_der{k,l}(:,end);
4212  end
4213  end
4214 
4215  end
4216 
4217 
4218 
4219 
4220  buf = norm(HgradJ);
4221 
4222  if buf>L_H
4223  L_H = buf;
4224  end
4225 
4226  end
4227 
4228  lipschitz_H_const(i) = L_H;
4229 
4230  end
4231 
4232  matlabpool close
4233 
4234  lipschitz_H_data=[];
4235  lipschitz_H_data.lip_H_grid = lip_H_grid;
4236  lipschitz_H_data.lipschitz_H_const=lipschitz_H_const;
4237 
4238 
4239  if strcmp(model.name_output_functional, 'box_time_int')
4240  func_type = 'timeInt';
4241  else
4242  func_type = '';
4243  end
4244 
4245 
4246 
4247 
4248  save(fullfile(fdir,['lipschitz_data_H',func_type,num2str(model.k),'_',model_type,'_',time_type,'_coarse_',num2str(params.coarse_factor),'.mat']),'lipschitz_H_data')
4249 
4250  setpref('Internet','SMTP_Server','wap04.mathematik.uni-stuttgart.de')
4251  sendmail('dihlmann','am08_experimente fertig','Lipschitz konstante H fertig. Good work Spock!');
4252 
4253  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4254 % for the new non-iterative error estimator calculate the gamma
4255 % constant of the hessian (on a grid in parameter space)
4256 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4257  case 121
4258 
4259 
4260  %fix model_type here
4261 
4262  %model_type = 'normal';
4263  %model_type = 'vx_const';
4264  model_type = 'cone_const';
4265  %time_type = 'time_const';
4266  time_type = 'time_var';
4267  %functional = 'box_mean';
4268  functional = 'box_mean_time';
4269 
4270  params.functional = functional;
4271 
4272  if (nargin>1)&&(isfield(expar,'coarse_factor'))
4273  params.coarse_factor = expar.coarse_factor;
4274  else
4275  params.coarse_factor =2;
4276  end
4277 
4278  %fix here grid density for localized lipschitz constant
4279  if (nargin>1)&&(isfield(expar,'grid_dens'))
4280  grid_dens = expar.grid_dens;
4281  else
4282  grid_dens=3;
4283  end
4284  %grid density of subgrid on each lipschitzgrid element
4285  sub_grid_dens=1;
4286 
4287  if strcmp(time_type,'time_var')
4288  params.time_const=0;
4289  else
4290  params.time_const=1;
4291  end
4292 
4293  switch model_type
4294  case 'vx_const'
4295  params.vx_const=1;
4296  %params_to_optimize=[1,0,1];
4297  grid_params.range={[0,1],[0,1]};
4298  grid_params.numintervals=grid_dens*[1,1];
4299  case 'cone_const'
4300  params.cone_const=1;
4301  %params_to_optimize=[0,1,1];
4302  grid_params.range={[0,1],[0,1]};
4303  grid_params.numintervals=grid_dens*[1,1];
4304  otherwise
4305  params.normal_model=1;
4306  %params_to_optimize=[1,1,1];
4307  grid_params.range={[0,1],[0,1],[0,1]};
4308  grid_params.numintervals=grid_dens*[1,1,1];
4309  end
4310 
4311  model = convection_diffusion_fv_output_opt_model_rect_normed_outflow(params);
4312  model.t=0;
4313  model.k=0.25;
4314  model.compute_derivative_info = 1;
4315  model.decomp_mode = 0;
4316  %model.optimization.params_to_optimize= params_to_optimize;
4317  model_data = gen_model_data(model);
4318 
4319  %generate lipschitz parameter grid
4320  gamma_H_grid = cubegrid(grid_params);
4321 
4322  gamma_H_const = zeros(1,gamma_H_grid.nelements);
4323 
4324  model.decomp_mode=0;
4325  v=model.operators_output(model, model_data);
4326 
4327  for i=1:gamma_H_grid.nelements
4328  %for every element i in the grid we have to calculate the
4329  %lipschitz constant
4330  disp('--------------------------------')
4331  disp(['sample nr. ',num2str(i),' of ',num2str(gamma_H_grid.nelements)])
4332  disp('--------------------------------')
4333  disp('--------------------------------')
4334  %generating subgrid
4335  sub_par.range=get_ranges_of_element(gamma_H_grid,i);
4336  sub_par.numintervals = sub_grid_dens*ones(1,gamma_H_grid.dimension);
4337  subgrid=cubegrid(sub_par);
4338  Mtest = subgrid.vertex;
4339 
4340 
4341  %Cl = zeros(sum(params_to_optimize),sum(params_to_optimize));
4342  gamma_H = 0;
4343  for j=1:size(Mtest,1)
4344  model = set_mu(model, Mtest(j,:));
4345  %Hessian
4346  H = filecache_function(@lin_evol_opt_fd_Hessian,model, model_data, Mtest(j,:));
4347 
4348 
4349  if strcmp(functional, 'box_mean_time')
4350  for k=1:size(H,1)
4351  for l=1:size(H,2)
4352  model.compute_derivative_info=0;
4353  sim_data_dummy.U = H{k,l};
4354  sim_data_dummy = lin_evol_opt_output_time_integrated(model, sim_data_dummy,model_data);
4355  HJ(k,l) = sim_data_dummy.y(end);
4356  end
4357  end
4358  else
4359  for k=1:size(H,1)
4360  for l=1:size(H,2)
4361  HJ(k,l) = v'*H{k,l}(:,end);
4362  end
4363  end
4364  end
4365 
4366  buf = norm(inv(HJ));
4367 
4368  if buf>gamma_H
4369  gamma_H = buf;
4370  end
4371 
4372  end
4373 
4374  gamma_H_const(i) = gamma_H;
4375 
4376  end
4377 
4378  gamma_H_data=[];
4379  gamma_H_data.gamma_H_grid = gamma_H_grid;
4380  gamma_H_data.gamma_H_const=gamma_H_const;
4381 
4382 
4383  if strcmp(model.name_output_functional, 'box_time_int')
4384  func_type = 'timeInt';
4385  else
4386  func_type = '';
4387  end
4388 
4389 
4390  save(fullfile(fdir,['gamma_data_H',func_type,num2str(model.k),'_',model_type,'_',time_type,'_coarse_',num2str(params.coarse_factor),'.mat']),'gamma_H_data')
4391 
4392  %%%%%%%%%%%%%%%%%%%%%%%5
4393  %generate reduced data for second functional
4394  %%%%%%%%%%%%%%%%%
4395  case 122
4396 
4397  %in verzeichnis wechseln wo reduzierte basis liegt
4398  cd /home/dihlmann/matlab/rbmatlab-core/rbasis/lin_evol_opt/convdiff/coarse2/basisNmax200
4399 
4400  load(fullfile(fdir,'coarse2','basisNmax200','complete_TP_basis_coarse2.mat'));
4401  %load(fullfile(fdir,'coarse16','complete_TP_basis_coarse16.mat'));
4402  %model fields für zweites funktional ändern
4403  %set 2nd functional fields
4404  model.verbose = 4;
4405  model.base_model.verbose = 4;
4406  model.name_output_functional = 'box_mean_time';
4407  model.get_output = @lin_evol_opt_output_time_integrated;
4408  model.output_function_ptr = @output_function_box_mean;
4409  model.sbox_xmin = 0.5;
4410  model.sbox_xmax = 1;
4411  model.sbox_ymin = 0.5;
4412  model.sbox_ymax = 1;
4413  model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
4414  model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
4415  model.s_l2norm = sqrt(4)*sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
4416  model.s_l1norm = sqrt(4);
4417  model.base_model.name_output_functional = 'box_mean_time';
4418  model.base_model.get_output = @lin_evol_opt_output_time_integrated;
4419  model.base_model.output_function_ptr = @output_function_box_mean;
4420  model.base_model.sbox_xmin = 0.5;
4421  model.base_model.sbox_xmax = 1;
4422  model.base_model.sbox_ymin = 0.5;
4423  model.base_model.sbox_ymax = 1;
4424  model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
4425  model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
4426  model.base_model.s_l2norm = sqrt(4)*sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
4427  model.base_model.s_l1norm = sqrt(4);
4428  model.base_model.base_model.name_output_functional = 'box_mean_time';
4429  model.base_model.base_model.get_output = @lin_evol_opt_output_time_integrated;
4430  model.base_model.base_model.output_function_ptr = @output_function_box_mean;
4431  model.base_model.base_model.sbox_xmin = 0.5;
4432  model.base_model.base_model.sbox_xmax = 1;
4433  model.base_model.base_model.sbox_ymin = 0.5;
4434  model.base_model.base_model.sbox_ymax = 1;
4435  model.base_model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt/2));
4436  model.base_model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt*3/4));
4437  model.base_model.base_model.s_l2norm = sqrt(4)*sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
4438  model.base_model.base_model.s_l1norm = sqrt(4);
4439  %set optimzation parameters
4440  model.optimization.tol = 0.00001;
4441  model.base_model.optimization.tol = 0.00001;
4442  model.base_model.base_model.optimization.tol =0.00001;
4443 
4444  %new optimizer
4445  model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
4446  model.base_model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
4447  %new stepsize rule
4448  model.optimization.stepsize_rule = 'armijo';
4449  model.optimization.sigma = 0.5;
4450  model.optimization.stepsize_factor = 0.75;
4451  model.optimitation.initial_step = 50;
4452  model.base_model.optimization.stepsize_rule = 'armijo';
4453  model.base_model.optimization.sigma = 0.5;
4454  model.base_model.optimization.stepsize_factor = 0.75;
4455  model.base_model.optimitation.initial_step = 50;
4456 
4457  %neue reduzierte daten generieren
4458  disp('generating reduced data for second functional')
4459  reduced_data = gen_reduced_data(model, detailed_data);
4460  disp('Saving reduced data')
4461  save -v7.3 reduced_data_complete_2ndfunctional.mat model reduced_data
4462 
4463 
4464 
4465 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
4466 % generiere Landschaftsplot für funktional 1
4467 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4468 
4469  case 123
4470 
4471  %set landscape grid options (density...)
4472  if (nargin>1)&&(isfield(expar,'num_pts'))
4473  num_pts = expar.num_pts;
4474  else
4475  num_pts = 25;
4476  end
4477  p_range = [0,1];
4478  delt = (p_range(2)-p_range(1))/(num_pts-1);
4479  mu_test = p_range(1):delt:p_range(2);
4480 
4481  %introduce variables
4482  n_grid = length(mu_test);
4483  x_vec = mu_test;
4484  y_vec = mu_test;
4485  func1_det = zeros(n_grid,n_grid);
4486  func1_red = zeros(n_grid,n_grid);
4487 
4488  %lade model und reduced data
4489  disp('loading data...')
4490  load(fullfile(fdir,'coarse2','reduced_data_complete_N200.mat'));
4491  %load(fullfile(fdir,'coarse16','reduced_data_complete_coarse16.mat'));
4492 
4493 
4494  disp('reduced simulations on the grid...')
4495 
4496  %reduced_simulation on grid
4497  %matlabpool open
4498  for i=1:n_grid
4499  disp(['Zwischenstand: ',num2str(i),' von ',num2str(n_grid),'.']);
4500  for j=1:n_grid
4501  model_buf = set_mu(model,[x_vec(i),y_vec(j)]);
4502  func1_red(i,j) = model.optimization.objective_function(model_buf, reduced_data);
4503  end
4504  end
4505  %matlabpool close
4506 
4507  save(fullfile(fdir,['Landschaft_func1_reduced_coarse',num2str(model.base_model.coarse_factor),...
4508  '_numpts_',num2str(num_pts),'.mat']),'func1_red','x_vec','y_vec')
4509 
4510 
4511  %generiere model_data
4512  model_data = gen_model_data(model);
4513 
4514  disp('detailed simulations on grid...')
4515  %detailed simulations on grid
4516  matlabpool open
4517  parfor i=1:n_grid
4518  disp(['Zwischenstand: ',num2str(i),' von ',num2str(n_grid),'.']);
4519  for j=1:n_grid
4520  model_buf = set_mu(model,[x_vec(i),y_vec(j)]);
4521  func1_det(i,j) = model.optimization.objective_function(model_buf, model_data);
4522  end
4523  end
4524  matlabpool close
4525  save(fullfile(fdir,['Landschaft_func1_coarse',num2str(model.base_model.coarse_factor),...
4526  '_numpts_',num2str(num_pts),'.mat']),'func1_red','func1_det','x_vec','y_vec')
4527 
4528 
4529 
4530 
4531 
4532 
4533  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
4534 % generiere Landschaftsplots für funktional 3 (nur detailliert)
4535 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4536 
4537  case 125
4538 
4539 
4540  %set landscape grid options (density...)
4541  if (nargin>1)&&(isfield(expar,'num_pts'))
4542  num_pts = expar.num_pts;
4543  else
4544  num_pts = 8;
4545  end
4546  p_range = [0,1];
4547  delt = (p_range(2)-p_range(1))/(num_pts-1);
4548  mu_test = p_range(1):delt:p_range(2);
4549 
4550  %introduce variables
4551  n_grid = length(mu_test);
4552  x_vec = mu_test;
4553  y_vec = mu_test;
4554  func3_det = zeros(n_grid,n_grid);
4555  %func3_red = zeros(n_grid,n_grid);
4556 
4557  %lade model und reduced data
4558  disp('loading data...')
4559  load(fullfile(fdir,'coarse2','basisNmax200','reduced_data_complete_2ndfunctional.mat'));
4560  %load(fullfile(fdir,'coarse16','reduced_data_complete_coarse16_2ndfunctional.mat'));
4561 
4562  %change fields in model for functional 2
4563  model.verbose = 4;
4564  model.base_model.verbose = 4;
4565  model.name_output_functional = 'box_mean_time';
4566  model.get_output = @lin_evol_opt_output_time_integrated;
4567  model.output_function_ptr = @output_function_box_mean;
4568  model.sbox_xmin = 0;
4569  model.sbox_xmax = 1;
4570  model.sbox_ymin = 0.5;
4571  model.sbox_ymax = 1;
4572  model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt*0.75));
4573  model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt));
4574  model.s_l2norm = sqrt(4)*sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
4575  model.s_l1norm = sqrt(4);
4576  model.base_model.name_output_functional = 'box_mean_time';
4577  model.base_model.get_output = @lin_evol_opt_output_time_integrated;
4578  model.base_model.output_function_ptr = @output_function_box_mean;
4579  model.base_model.sbox_xmin = 0;
4580  model.base_model.sbox_xmax = 1;
4581  model.base_model.sbox_ymin = 0.5;
4582  model.base_model.sbox_ymax = 1;
4583  model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt*0.75));
4584  model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt));
4585  model.base_model.s_l2norm = sqrt(4)*sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
4586  model.base_model.s_l1norm = sqrt(4);
4587  model.base_model.base_model.name_output_functional = 'box_mean_time';
4588  model.base_model.base_model.get_output = @lin_evol_opt_output_time_integrated;
4589  model.base_model.base_model.output_function_ptr = @output_function_box_mean;
4590  model.base_model.base_model.sbox_xmin = 0;
4591  model.base_model.base_model.sbox_xmax = 1;
4592  model.base_model.base_model.sbox_ymin = 0.5;
4593  model.base_model.base_model.sbox_ymax = 1;
4594  model.base_model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt*0.75));
4595  model.base_model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt));
4596  model.base_model.base_model.s_l2norm = sqrt(4)*sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
4597  model.base_model.base_model.s_l1norm = sqrt(4);
4598  %set optimzation parameters
4599  model.optimization.tol = 0.0001;
4600  model.base_model.optimization.tol = 0.0001;
4601  model.base_model.base_model.optimization.tol =0.0001;
4602 
4603 
4604 % disp('reduced simulations on the grid...')
4605 %
4606 % %reduced_simulation on grid
4607 % matlabpool open
4608 % parfor i=1:n_grid
4609 % disp(['Zwischenstand: ',num2str(i),' von ',num2str(n_grid),'.']);
4610 % for j=1:n_grid
4611 % model_buf = set_mu(model,[x_vec(i),y_vec(j)]);
4612 % func2_red(i,j) = model.optimization.objective_function(model_buf, reduced_data);
4613 % end
4614 % end
4615 % matlabpool close
4616 %
4617 % save(fullfile(fdir,['Landschaft_func2_reduced_coarse',num2str(model.base_model.coarse_factor),...
4618 % '_numpts_',num2str(num_pts),'.mat']),'func2_red','x_vec','y_vec')
4619 %
4620 
4621  %generiere model_data
4622  model_data = gen_model_data(model);
4623 
4624  %detailed simulations on grid
4625  matlabpool open
4626  parfor i=1:n_grid
4627  for j=1:n_grid
4628  disp(['Zwischenstand: ',num2str(i),' von ',num2str(n_grid),'.']);
4629  model_buf = set_mu(model,[x_vec(i),y_vec(j)]);
4630  func3_det(i,j) = model.optimization.objective_function(model_buf, model_data);
4631  end
4632  end
4633  matlabpool close
4634  save(fullfile(fdir,['Landschaft_func3_coarse',num2str(model.base_model.coarse_factor),...
4635  '_numpts_',num2str(num_pts),'.mat']),'func3_det','x_vec','y_vec')
4636 
4637 
4638 
4639 
4640 
4641 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
4642 % mit verschiedenen Funktionalen herumspielen und sie plotten
4643 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4644  case 126
4645 
4646  params.coarse_factor = 2;
4647  params.cone_const = 1;
4648  params.functional = 'box_mean_time2';
4649 %
4650  model = convection_diffusion_fv_output_opt_model_rect_normed_outflow(params);
4651  model.t=0;
4652  model.k=0.25;
4653  model.compute_derivative_info = 1;
4654  model.decomp_mode = 0;
4655  model_data = gen_model_data(model);
4656 %
4657 % %set landscape grid options (density...)
4658 % if (nargin>1)&&(isfield(expar,'num_pts'))
4659 % num_pts = expar.num_pts;
4660 % else
4661 % num_pts = 7;
4662 % end
4663 % p_range = [0,1];
4664 % delt = (p_range(2)-p_range(1))/(num_pts-1);
4665 % mu_test = p_range(1):delt:p_range(2);
4666 %
4667 %
4668 % %Ouput functional
4669 % v=model.operators_output(model, model_data);
4670 %
4671 % %landscape values - initialization
4672 % J = zeros(num_pts,num_pts); %functional values
4673 %
4674 % %loop over parameter grid
4675 % for i=1:num_pts
4676 % for j=1:num_pts
4677 %
4678 % mu = [mu_test(i),mu_test(j)];
4679 % model = set_mu(model, mu);
4680 % sim_data = detailed_simulation(model, model_data);
4681 %
4682 % %save results
4683 % J(i,j) = sim_data.y(end);
4684 %
4685 % end
4686 % end
4687 %
4688 % figure;surf(mu_test,mu_test,J);title(['J_',num2str(params.coarse_factor)]);
4689 %
4690 %
4691 % keyboard
4692 %
4693  %part 2
4694 
4695 
4696  %adapt reduced data to new functional
4697  disp('loading detailed data')
4698  cd /home/dihlmann/matlab/rbmatlab-core/rbasis/lin_evol_opt/convdiff/coarse2
4699  load(fullfile(fdir,'coarse2','basisNmax200','complete_TP_basis_coarse2.mat'));
4700 %
4701  %optimization
4702  model.verbose = 4;
4703 % model.base_model.verbose = 4;
4704 % model.name_output_functional = 'box_mean_time';
4705 % model.get_output = @lin_evol_opt_output_time_integrated;
4706 % model.output_function_ptr = @output_function_box_mean;
4707 % model.sbox_xmin = 0;
4708 % model.sbox_xmax = 1;
4709 % model.sbox_ymin = 0.5;
4710 % model.sbox_ymax = 1;
4711 % model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt*0.75));
4712 % model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt));
4713 % model.s_l2norm = sqrt(4)*sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
4714 % model.s_l1norm = sqrt(4);
4715 % model.base_model.name_output_functional = 'box_mean_time';
4716 % model.base_model.get_output = @lin_evol_opt_output_time_integrated;
4717 % model.base_model.output_function_ptr = @output_function_box_mean;
4718 % model.base_model.sbox_xmin = 0;
4719 % model.base_model.sbox_xmax = 1;
4720 % model.base_model.sbox_ymin = 0.5;
4721 % model.base_model.sbox_ymax = 1;
4722 % model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt*0.75));
4723 % model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt));
4724 % model.base_model.s_l2norm = sqrt(4)*sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
4725 % model.base_model.s_l1norm = sqrt(4);
4726 % model.base_model.base_model.name_output_functional = 'box_mean_time';
4727 % model.base_model.base_model.get_output = @lin_evol_opt_output_time_integrated;
4728 % model.base_model.base_model.output_function_ptr = @output_function_box_mean;
4729 % model.base_model.base_model.sbox_xmin = 0;
4730 % model.base_model.base_model.sbox_xmax = 1;
4731 % model.base_model.base_model.sbox_ymin = 0.5;
4732 % model.base_model.base_model.sbox_ymax = 1;
4733 % model.base_model.base_model.stime_start = find(model.base_model.save_time_indices ==floor(model.base_model.nt*0.75));
4734 % model.base_model.base_model.stime_stop = find(model.base_model.save_time_indices == floor(model.base_model.nt));
4735 % model.base_model.base_model.s_l2norm = sqrt(4)*sqrt((model.stime_stop-model.stime_start)/length(model.base_model.save_time_indices));
4736 % model.base_model.base_model.s_l1norm = sqrt(4);
4737 % %set optimzation parameters
4738  model.optimization.tol = 0.0001;
4739  model.base_model.optimization.tol = 0.0001;
4740  model.base_model.base_model.optimization.tol =0.0001;
4741 
4742  model.optimization.init_params =[0.3,0.4];
4743  model.base_model.optimization.init_params =[0.3,0.4];
4744  model.base_model.base_model.optimization.init_params =[0.3,0.4];
4745 
4746  model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
4747  model.base_model.base_model.optimization.optimizer = @gradient_opt_non_iter_err;
4748 
4749  model.optimization.stepsize_rule = 'armijo';
4750  model.optimization.sigma = 0.8;
4751  model.optimization.stepsize_factor = 0.75;
4752  model.optimization.initial_stepsize = 10;
4753  model.base_model.optimization.stepsize_rule = 'armijo';
4754  model.base_model.optimization.sigma = 0.8;
4755  model.base_model.optimization.stepsize_factor = 0.75;
4756  model.base_model.optimization.initial_stepsize = 10;
4757  model.base_model.base_model.optimization.stepsize_rule = 'armijo';
4758  model.base_model.base_model.optimization.sigma = 0.8;
4759  model.base_model.base_model.optimization.stepsize_factor = 0.75;
4760  model.base_model.base_model.optimization.initial_stepsize = 10;
4761 
4762  model.gamma_H = @(model)dummy_constant(model,100);
4763  model.base_model.gamma_H = @(model)dummy_constant(model,100);
4764  model.base_model.base_model.gamma_H =@(model)dummy_constant(model,100);
4765  model.L_H = @(model)dummy_constant(model,100);
4766  model.base_model.L_H =@(model)dummy_constant(model,100);
4767  model.base_model.base_model.L_H = @(model)dummy_constant(model,100);
4768 
4769  model.optimization.allow_constant_calculation = 1;
4770  model.base_model.optimization.allow_constant_calculation = 1;
4771  model.base_model.base_model.optimization.allow_constant_calculation = 1;
4772 
4773  %save reduced data
4774  disp('generating reduced data for second functional')
4775  reduced_data = gen_reduced_data(model, detailed_data);
4776  disp('Saving reduced data')
4777  save -v7.3 reduced_data_complete_3rdfunc.mat model reduced_data
4778 
4779 
4780  %optimzation and constant calulation
4781  opt_data = optimize(model,reduced_data);
4782 
4783  save(fullfile(fdir,'results_case126reduced.mat'),'opt_data');
4784  %keyboard;
4785  setpref('Internet','SMTP_Server','wap04.mathematik.uni-stuttgart.de')
4786  sendmail('dihlmann','optimierung case 126 abgeschlossen','look at it');
4787 
4788  %calculate gamma and lip at the optimum
4789 % mu = opt_data.optimal_params;
4790 %
4791 % gamma = calculate_gamma_const(model,model_data,mu)
4792 % lip = calculate_Lipschitz_const(model, model_data,mu)
4793 %
4794 % save(fullfile(fdir,'results_case126.mat'),'opt_data','gamma','lip');
4795 %
4796 end
function r = verbose(level, message, messageId)
This function displays messages depending on a message-id and/or a level. Aditionally you can set/res...
Definition: verbose.m:17
function [ RBext , dummy ] = RB_extension_PCA_fixspace(model, detailed_data)
function computing a RB basis extension for given parameters by the POD-Greedy algorithm.
function varargout = filecache_function(funcptr, varargin)
function used for file-caching other function calls.
function convdiff()
small script demonstrating the convdiff example from the M2AN Paper, that is also implemented in Dune...
Definition: convdiff.m:17
A hierarchical cubegrid of arbitrary dimension.
Definition: cubegrid.m:17
function reduced_data_subset = lin_evol_opt_reduced_data_subset_separate_bases(model, reduced_data)
method which modifies reduced_data, which is the data, that will be passed to the online-simulation a...
Test reduced basis implementation.
Definition: DetailedData.m:1
function l2_error = fv_l2_error(U1, U2, W)
function computing the l2-error between the two fv-functions or function sequences in U1...
Definition: fv_l2_error.m:17
function [ opt_data , model ] = optimize(model, model_data, detailed_data, reduced_data)
opt_data = optimize(model, model_data, detailed_data, reduced_data)
Definition: optimize.m:17