rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
lin_evol_opt_reduced_data_subset.m
Go to the documentation of this file.
1 function reduced_data_subset = lin_evol_opt_reduced_data_subset(model,reduced_data)
2 %function reduced_data_subset = lin_evol_opt_reduced_data_subset(model,reduced_data)
3 % method which modifies reduced_data, which is the data, that will
4 % be passed to the online-simulation algorithm.
5 %
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.
8 %
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
12 %
13 % Optional fields of model:
14 % name_output_functional : name of an output functional
15 %
16 % Required fields of reduced_data:
17 % N : number of reduced basis vectors in the reduced_data.
18 %
19 % optional fields of reduced_data:
20 % a0 : a cell array sequence of N-vector components of initial data
21 % projection
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
28 % ...
29 %...
30 %
31 % generated fields of reduced_data_subset:
32 % a0 : a cell array sequence of N-vector components of initial data
33 % projection
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
40 % .,...
41 %...
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.
47 %
48 % \note The fields for 'reduced_data_subset' are only generated if they exist in
49 % 'reduced_data'.
50 
51 % Markus Dihlmann 04.07.2010
52 
53 reduced_data_subset = reduced_data;
54 
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!');
59  end;
60  N = model.N;
61  if isfield(reduced_data, 'a0')
62  reduced_data_subset.a0 = subblock_sequence(reduced_data.a0,1:N);
63  end
64  if isfield(reduced_data, 'LL_I')
65  reduced_data_subset.LL_I = subblock_sequence(reduced_data.LL_I,1:N,1:N);
66  end
67  if isfield(reduced_data, 'LL_E')
68  reduced_data_subset.LL_E = subblock_sequence(reduced_data.LL_E,1:N,1:N);
69  end
70  if isfield(reduced_data, 'bb')
71  reduced_data_subset.bb = subblock_sequence(reduced_data.bb,1:N);
72  end
73  if isfield(reduced_data, 'bb_I')
74  reduced_data_subset.bb_I = subblock_sequence(reduced_data.bb_I,1:N);
75  end
76  if isfield(reduced_data, 'M_E')
77  reduced_data_subset.M_E = subblock_sequence(reduced_data.M_E,1:N,1:N);
78  end
79  if isfield(reduced_data, 'M_b')
80  reduced_data_subset.M_b = subblock_sequence(reduced_data.M_b,1:N);
81  end
82  if isfield(reduced_data, 'M_EE')
83  reduced_data_subset.M_EE = subblock_sequence(reduced_data.M_EE,1:N,1:N);
84  end
85  if isfield(reduced_data, 'M_Eb')
86  reduced_data_subset.M_Eb = subblock_sequence(reduced_data.M_Eb,1:N);
87  end
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);
91 % end
92  if isfield(reduced_data, 'M_I')
93  reduced_data_subset.M_I = subblock_sequence(reduced_data.M_I,1:N,1:N);
94  end
95  if isfield(reduced_data, 'M_II')
96  reduced_data_subset.M_II = subblock_sequence(reduced_data.M_II,1:N,1:N);
97  end
98  if isfield(reduced_data, 'M_IE')
99  reduced_data_subset.M_IE = subblock_sequence(reduced_data.M_IE,1:N,1:N);
100  end
101  if isfield(reduced_data, 'M_Ib')
102  reduced_data_subset.M_Ib = subblock_sequence(reduced_data.M_Ib,1:N);
103  end
104  if isfield(reduced_data, 'M_EdEd')
105  reduced_data_subset.M_EdEd = subblock_sequence(reduced_data.M_EdEd,1:N,1:N);
106  end
107  if isfield(reduced_data, 'M_IdId')
108  reduced_data_subset.M_IdId = subblock_sequence(reduced_data.M_IdId,1:N,1:N);
109  end
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);
113 % end
114  if isfield(reduced_data, 'M_Ed')
115  reduced_data_subset.M_Ed = subblock_sequence(reduced_data.M_Ed,1:N,1:N);
116  end
117  if isfield(reduced_data, 'M_Id')
118  reduced_data_subset.M_Id = subblock_sequence(reduced_data.M_Id,1:N,1:N);
119  end
120  if isfield(reduced_data, 'M_bd')
121  reduced_data_subset.M_bd = subblock_sequence(reduced_data.M_bd,1:N);
122  end
123  if isfield(reduced_data, 'M_IEd')
124  reduced_data_subset.M_IEd = subblock_sequence(reduced_data.M_IEd,1:N,1:N);
125  end
126  if isfield(reduced_data, 'M_IId')
127  reduced_data_subset.M_IId = subblock_sequence(reduced_data.M_IId,1:N,1:N);
128  end
129  if isfield(reduced_data, 'M_Ibd')
130  reduced_data_subset.M_Ibd = subblock_sequence(reduced_data.M_Ibd,1:N);
131  end
132  if isfield(reduced_data, 'M_EEd')
133  reduced_data_subset.M_EEd = subblock_sequence(reduced_data.M_EEd,1:N,1:N);
134  end
135  if isfield(reduced_data, 'M_EId')
136  reduced_data_subset.M_EId = subblock_sequence(reduced_data.M_EId,1:N,1:N);
137  end
138  if isfield(reduced_data, 'M_Ebd')
139  reduced_data_subset.M_Ebd = subblock_sequence(reduced_data.M_Ebd,1:N);
140  end
141  if isfield(reduced_data, 'M_EdId')
142  reduced_data_subset.M_EdId = subblock_sequence(reduced_data.M_EdId,1:N,1:N);
143  end
144  if isfield(reduced_data, 'M_Edbd')
145  reduced_data_subset.M_Edbd = subblock_sequence(reduced_data.M_Edbd,1:N);
146  end
147  if isfield(reduced_data, 'M_Idbd')
148  reduced_data_subset.M_Idbd = subblock_sequence(reduced_data.M_Idbd,1:N);
149  end
150 
151 
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;
156  end
157  end;
158 
159  reduced_data_subset.N = N;
160 
161 end
162 
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...