3 % method which modifies reduced_data, which is the data, that will
4 % be passed to the online-simulation algorithm.
6 % Typically,
this routine only does a submatrix extraction of the
'Nmax' sized
7 % offline-objects to produce
'N' sized objects
for the real simulation.
9 % Required fields of model:
10 % N : number of reduced basis vectors to choose
11 % N_der : number of reduced basis vectors in derivative solution
13 % Optional fields of model:
14 % name_output_functional : name of an output functional
16 % Required fields of reduced_data:
17 % N : number of reduced basis vectors in the reduced_data.
19 % optional fields of reduced_data:
20 % a0 : a cell array sequence of N-vector components of initial data
22 % LL_E : a cell array sequence of N x N component-Matrices of
explicit
23 %
operator evaluations.
24 % LL_I : a cell array sequence of N x N component-Matrices of implicit
25 %
operator evaluations.
26 % bb : a cell array sequence of N-vector components of the offset
27 % bb_I : a cell array sequence of N-vector components of the implicit offset
31 % generated fields of reduced_data_subset:
32 % a0 : a cell array sequence of N-vector components of initial data
34 % LL_E : a cell array sequence of N x N component-Matrices of
explicit
35 %
operator evaluations.
36 % LL_I : a cell array sequence of N x N component-Matrices of implicit
37 %
operator evaluations.
38 % bb : a cell array sequence of N-vector components of the offset
39 % bb_I : a cell array sequence of N-vector components of the implicit offset
42 %s_RB : in
case of a given output functional,
this is a vector of output
43 % functional values of the reduced basis
44 % s_l2norm : in
case of a given output functional,
this is the `L^2`-norm of
45 % the output functional
46 % N : number of reduced basis vectors in the reduced_data.
48 % \note The fields
for 'reduced_data_subset' are only generated
if they exist in
51 % Markus Dihlmann 04.07.2010
53 reduced_data_subset = reduced_data;
55 if reduced_data.N ~= model.N
56 % extract correct N-sized submatrices and subvectors from reduced_data
57 if model.N > length(reduced_data.a0{1})
58 error('N too large for current size of reduced basis!');
61 if isfield(reduced_data, 'a0')
62 reduced_data_subset.a0 = subblock_sequence(reduced_data.a0,1:N);
64 if isfield(reduced_data, 'LL_I')
65 reduced_data_subset.LL_I = subblock_sequence(reduced_data.LL_I,1:N,1:N);
67 if isfield(reduced_data, 'LL_E')
68 reduced_data_subset.LL_E = subblock_sequence(reduced_data.LL_E,1:N,1:N);
70 if isfield(reduced_data, 'bb')
71 reduced_data_subset.bb = subblock_sequence(reduced_data.bb,1:N);
73 if isfield(reduced_data, 'bb_I')
74 reduced_data_subset.bb_I = subblock_sequence(reduced_data.bb_I,1:N);
76 if isfield(reduced_data, 'M_E')
77 reduced_data_subset.M_E = subblock_sequence(reduced_data.M_E,1:N,1:N);
79 if isfield(reduced_data, 'M_b')
80 reduced_data_subset.M_b = subblock_sequence(reduced_data.M_b,1:N);
82 if isfield(reduced_data, 'M_EE')
83 reduced_data_subset.M_EE = subblock_sequence(reduced_data.M_EE,1:N,1:N);
85 if isfield(reduced_data, 'M_Eb')
86 reduced_data_subset.M_Eb = subblock_sequence(reduced_data.M_Eb,1:N);
88 % NICH BENÖTIGT, DA EH SKALAR?
89 % if isfield(reduced_data, 'M_bb')
90 % reduced_data_subset.M_bb = subblock_sequence(reduced_data.M_bb,1);
92 if isfield(reduced_data, 'M_I')
93 reduced_data_subset.M_I = subblock_sequence(reduced_data.M_I,1:N,1:N);
95 if isfield(reduced_data, 'M_II')
96 reduced_data_subset.M_II = subblock_sequence(reduced_data.M_II,1:N,1:N);
98 if isfield(reduced_data, 'M_IE')
99 reduced_data_subset.M_IE = subblock_sequence(reduced_data.M_IE,1:N,1:N);
101 if isfield(reduced_data, 'M_Ib')
102 reduced_data_subset.M_Ib = subblock_sequence(reduced_data.M_Ib,1:N);
104 if isfield(reduced_data, 'M_EdEd')
105 reduced_data_subset.M_EdEd = subblock_sequence(reduced_data.M_EdEd,1:N,1:N);
107 if isfield(reduced_data, 'M_IdId')
108 reduced_data_subset.M_IdId = subblock_sequence(reduced_data.M_IdId,1:N,1:N);
110 % NICHT BENÖTIGT, DA EH SKALAR?
111 % if isfield(reduced_data, 'M_bdbd')
112 % reduced_data_subset.M_bdbd = subblock_sequence(reduced_data.M_bdbd,1);
114 if isfield(reduced_data, 'M_Ed')
115 reduced_data_subset.M_Ed = subblock_sequence(reduced_data.M_Ed,1:N,1:N);
117 if isfield(reduced_data, 'M_Id')
118 reduced_data_subset.M_Id = subblock_sequence(reduced_data.M_Id,1:N,1:N);
120 if isfield(reduced_data, 'M_bd')
121 reduced_data_subset.M_bd = subblock_sequence(reduced_data.M_bd,1:N);
123 if isfield(reduced_data, 'M_IEd')
124 reduced_data_subset.M_IEd = subblock_sequence(reduced_data.M_IEd,1:N,1:N);
126 if isfield(reduced_data, 'M_IId')
127 reduced_data_subset.M_IId = subblock_sequence(reduced_data.M_IId,1:N,1:N);
129 if isfield(reduced_data, 'M_Ibd')
130 reduced_data_subset.M_Ibd = subblock_sequence(reduced_data.M_Ibd,1:N);
132 if isfield(reduced_data, 'M_EEd')
133 reduced_data_subset.M_EEd = subblock_sequence(reduced_data.M_EEd,1:N,1:N);
135 if isfield(reduced_data, 'M_EId')
136 reduced_data_subset.M_EId = subblock_sequence(reduced_data.M_EId,1:N,1:N);
138 if isfield(reduced_data, 'M_Ebd')
139 reduced_data_subset.M_Ebd = subblock_sequence(reduced_data.M_Ebd,1:N);
141 if isfield(reduced_data, 'M_EdId')
142 reduced_data_subset.M_EdId = subblock_sequence(reduced_data.M_EdId,1:N,1:N);
144 if isfield(reduced_data, 'M_Edbd')
145 reduced_data_subset.M_Edbd = subblock_sequence(reduced_data.M_Edbd,1:N);
147 if isfield(reduced_data, 'M_Idbd')
148 reduced_data_subset.M_Idbd = subblock_sequence(reduced_data.M_Idbd,1:N);
152 if isfield(model,'name_output_functional')
153 reduced_data_subset.s_RB = (reduced_data.s_RB(1:N));
154 if isfield(reduced_data,'s_l2norm')
155 reduced_data_subset.s_l2norm = reduced_data.s_l2norm;
159 reduced_data_subset.N = N;
function reduced_data_subset = lin_evol_opt_reduced_data_subset(model, reduced_data)
method which modifies reduced_data, which is the data, that will be passed to the online-simulation a...