1 function [sim_data] = lin_evol_opt_output_time_independent(model,sim_data, varargin)
2 %
function [sim_data] = lin_evol_opt_output_time_independent(model,sim_data, model_data)
4 % This
function returns a non time dependent output defined in the model.
6 % It can be used
for detailed and reduced models.
7 % Be sure that sim_data has the correct field names needed
for the
8 % calculation of the functional.
10 % Required fields of sim_data (detailed):
11 % U: the solution trajectory
13 % Optional fields of sim_data:
14 % U_der: the derivative solution trajectory
17 % Markus dihlmann 01.08.2012
19 %check if detailed or reduced simulation data
21 if isfield(model,
'p_part_ranges')
23 model = model.base_model;
27 if isfield(varargin{1},
'grid')
29 model_data = varargin{1};
33 v = model.operators_output(model,model_data);
34 sim_data.y = (v{1}
') * U;
36 if model.compute_derivative_info
37 U_der = sim_data.U_der;
38 for i = 1:length(U_der)
40 sim_data.y_der(i,:) = (v{1}')*U_der{i};
47 reduced_data = varargin{1};
49 sim_data.s = reduced_data.s_RB
'*a;
50 if isfield(model,'s_l2norm
')
51 Delta_s = model.s_l2norm * sim_data.Delta; %war ursprünglich in reduced_data.s_l2norm
52 sim_data.Delta_s = Delta_s;
54 if (model.verbose >=5)
55 disp('warning: no L2_norm
for output defined in lin_evol_rb_simulation...
')
60 if model.compute_derivative_info
61 %derivative output and error estimation of gradient
65 %s_der{i} = reduced_data.s_RB'*c(:,:,i);
66 s_der{i} = reduced_data.s_RB_der{i}
'*c{i};
67 %sum = sum + max(Delta_der(i,:))^2;
69 sim_data.s_der = s_der;
70 sim_data.Delta_s_grad = model.s_l2norm .*max(sim_data.Delta_der,[],2); %Gradient error bound
71 %simulation_data.Delta_s_der = model.s_l2norm * Delta_der;