rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
lin_evol_opt_rb_fd_derivative.m
1 function U_der = lin_evol_opt_rb_fd_derivative(model, detailed_data,reduced_data, mu)
2 %function U_der = lin_evol_opt_rb_fd_derivative(model, reduced_data, mu)
3 %
4 % function calculating the derivative solution via a finite difference
5 % procedure for the parameter mu.
6 %
7 % Markus Dihlmann 03.02.2011
8 
9 if isempty(mu)
10  mu = get_mu(model);
11 end
12 
13 old_mu = get_mu(model);
14 
15 
16 
17 compute_derivative_old = model.compute_derivative_info;
18 
19 model.compute_derivative_info =0;
20 
21 sim_data = rb_simulation(model, reduced_data);
22 sim_data = rb_reconstruction_derivative(model,detailed_data, sim_data);
23 
24 U_fix=sim_data.U;
25 
26 h=0.0001; %stepsize
27 
28 for i=1:length(mu)
29  %is mu+h inside mu_range?
30  if (mu(i)+h>=model.mu_ranges{i}(1))&&(mu(i)+h<=model.mu_ranges{i}(2))
31  mu(i) = mu(i) + h;
32  model = set_mu(model,mu);
33  sim_data = rb_simulation(model, reduced_data);
34  sim_data = rb_reconstruction_derivative(model, detailed_data,sim_data);
35  mu(i) = mu(i) -h;
36  model = set_mu(model,mu);
37 
38  U_der{i} = (sim_data.U-U_fix)./h;
39  else
40  mu(i) = mu(i) - h;
41  model = set_mu(model,mu);
42  sim_data = rb_simulation(model, reduced_data);
43  sim_data = rb_reconstruction_derivative(model, detailed_data,sim_data);
44  mu(i) = mu(i) +h;
45  model = set_mu(model,mu);
46 
47  U_der{i} = (-sim_data.U+U_fix)./h;
48  end
49 
50 end
51 
52 model = set_mu(model, old_mu);
53 model.compute_derivative_info = compute_derivative_old;