2 % Plugin
for the
Greedy.
Algorithm class generating collateral reduced basis
3 % space plus interpolation DOFs and a local grid
for several different
4 % parameterized functions or operators.
6 % This can be used
for the empirical interpolation of parametrized functions
7 % or
operator evaluations.
15 generated_basis_type = 'ei';
18 properties(Access = private)
27 % constructor "summing together a list of different
EI plugin instances.
30 % varargin: a list of
EI plugin objects of type
Greedy.Plugin.
EI
32 assert(all( cellfun(@(x) isa(x, '
Greedy.Plugin.
Interface'), varargin) ));
33 assert(all( cellfun(@(x) isequal(x.generated_basis_type, 'ei'), varargin) ));
37 seie.ei_container = varargin;
38 idlist = cellfun(@(x) x.id, varargin,
'UniformOutput',
false);
39 % seie.index_map = IdMapDataNodeMap(idlist);
40 seie.index_map = idlist;
41 seie.indicator_mode = seie.ei_container{1}.indicator_mode;
42 seie.relative_error = seie.ei_container{1}.relative_error;
43 seie.use_l2_error = seie.ei_container{1}.use_l2_error;
46 function this = set.stop_Mmax(
this, value)
47 for i = 1:length(this.ei_container)
48 this.ei_container{i}.stop_Mmax = value{i};
52 function value =
get.stop_Mmax(
this)
54 for i = 1:length(this.ei_container)
55 set(value, this.ei_container{i}.stop_Mmax);
59 function detailed_data = init_basis(
this, rmodel, model_data, M_train)
60 %
function detailed_data = init_basis(
this, rmodel, model_data, M_train)
61 % @copybrief .Greedy.Plugin.Interface.init_basis()
66 % rmodel: of type .Greedy.User.IReducedModel
69 % detailed_data: of type .Greedy.DataTree.Detailed.IdMapNode
71 % This method initializes the detailed data node
for all parametrized
72 % functions/
operator evaluations.
74 for i = 1:length(this.index_map)
75 set(detailed_data,i, init_basis(this.ei_container{i}, rmodel, model_data, M_train));
79 function prepare_reduced_data(
this, rmodel, detailed_data)
80 %
function prepare_reduced_data(
this, rmodel, detailed_data)
86 % rmodel: of type .Greedy.User.IReducedModel
87 % detailed_data: of type .Greedy.DataTree.Detailed.IdMapNode
89 prepare_reduced_data(this.ei_container{1}, rmodel,
get(detailed_data, 1));
90 %
for i = 1:length(this.index_map)
91 %
if this.ei_container{i}.needs_preparation
92 % prepare_reduced_data(this.ei_container{i}, rmodel,
get(detailed_data,i));
97 function [max_errs, max_err_sequence, max_mu_index] = error_indicators(
this, rmodel, detailed_data, parameter_set, reuse_reduced_data)
98 %
function [max_errs, max_err_sequence, max_mu_index] = error_indicators(
this, rmodel, detailed_data, parameter_set, reuse_reduced_data)
99 %
this function should never be used. It calls the error_indicators()
100 % method
for the first wrapped parametrized
function/
operator.
102 % @copydetails .Greedy.Plugin.Default.error_indicators()
108 reuse_reduced_data =
false;
114 warning(
'RBmatlab:Greedy:Plugin:SummedEI:never_use',
'This function should never be used');
115 [max_errs, max_err_sequence, max_mu_index] = error_indicators(this.ei_container{1}, rmodel,
get(detailed_data, 1), parameter_set, reuse_reduced_data);
118 %
for i = 1:length(this.index_map)
119 % [me, mu] = error_indicator(this.ei_container{i}, model,
get(detailed_data,i), detailed_gen);
120 % set(max_errs, i, me);
121 % set(max_mu_index, i, mu);
125 function errs = compute_error(
this, rmodel, reduced_data, detailed_data)
126 %
function errs = compute_error(
this, rmodel, reduced_data, detailed_data)
127 %
this function should never be used. It calls the compute_error()
128 % method
for the first wrapped parametrized
function/
operator.
130 % @copydetails .Greedy.Plugin.Default.compute_error()
137 warning(
'RBmatlab:Greedy:Plugin:SummedEI:never_use',
'This function should never be used');
138 errs = compute_error(this.ei_container{1}, rmodel, reduced_data,
get(detailed_data,1));
140 %
for i = 1:length(this.index_map)
141 % err = compute_error(this.ei_container{i}, rmodel,
get(detailed_data,i));
146 function Uapprox = generate_reduced(
this, rmodel, reduced_data, detailed_data, U)
147 %
function Uapprox = generate_reduced(
this, rmodel, reduced_data, detailed_data)
148 %
this function should never be used. It calls the generate_reduced()
149 % method
for the first wrapped parametrized
function/
operator.
151 % @copydetails .Greedy.Plugin.Default.generate_reduced()
158 warning(
'RBmatlab:Greedy:Plugin:SummedEI:never_use',
'This function should never be used');
159 Uapprox = generate_reduced(this.ei_container{1}, rmodel, reduced_data,
get(detailed_data,1));
161 %
for i = 1:length(this.index_map)
162 % Ua = generate_reduced(this.ei_container{i}, rmodel, dummy,
get(detailed_data,i));
163 % set(Uapprox, i, Ua);
167 function [breakloop, reason] = pre_check_for_end(
this, rmodel, detailed_data)
168 %
function [breakloop, reason] = pre_check_for_end(
this, rmodel, detailed_data)
174 % rmodel: of type .Greedy.User.IReducedModel
175 % detailed_data: of type .Greedy.DataTree.Detailed.IdMapNode
177 % This method only stop when ALL parts are ready.
180 for i = 1:length(this.index_map)
181 [breakloop_new, reason_new]=pre_check_for_end(this.ei_container{i}, rmodel,
get(detailed_data,i));
183 breakloop = breakloop & breakloop_new;
184 reason = [reason,
' ', reason_new];
188 function detailed_data = basis_extension(
this, rmodel, detailed_data, max_err_seq, mu)
189 %
function detailed_data = basis_extension(
this, rmodel, detailed_data, max_err_seq, mu)
195 % rmodel: of type .Greedy.User.IReducedModel
196 % detailed_data: of type .Greedy.DataTree.Detailed.IdMapNode
199 % detailed_data: of type .Greedy.DataTree.Detailed.IdMapNode
201 for i = 1:length(this.ei_container)
202 % only update basis spaces
if end check is negative
203 if ~pre_check_for_end(this.ei_container{i}, rmodel,
get(detailed_data,i))
204 set( detailed_data,i,...
205 basis_extension(this.ei_container{i}, rmodel,...
206 get(detailed_data,i), max_err_seq, mu) );
211 function detailed_data = finalize(
this, rmodel, detailed_data)
212 %
function detailed_data = finalize(
this, rmodel, detailed_data)
218 % rmodel: of type .Greedy.User.IReducedModel
219 % detailed_data: of type .Greedy.DataTree.Detailed.IdMapNode
222 % detailed_data: of type .Greedy.DataTree.Detailed.IdMapNode
223 for i = 1:length(this.ei_container)
224 set( detailed_data, i, ...
225 finalize(this.ei_container{i}, rmodel,
get(detailed_data, i)) );
227 dd1 =
get(detailed_data, 1);
228 for i = 2:length(this.ei_container)
229 dd = get(detailed_data, i);
233 function cop = copy(this)
234 containercopy = cellfun(@(x) copy(x), this.ei_container, 'UniformOutput', false);
virtual function [ breakloop , reason ] = pre_check_for_end(Greedy.User.IReducedModel rmodel,Greedy.User.IDetailedData detailed_data)
checks whether the basis generation process has come to an end.
Interface class for extension algorithms which define the basis extension routines used by the abstra...
DataTree implementation for generated detailed and reduced data
Data Tree element which can be filtered by ids
virtual function Greedy.User.IDetailedData detailed_data = finalize(Greedy.User.IReducedModel rmodel,Greedy.User.IDetailedData detailed_data)
function called after the last extension process
default greedy basis generation class
a default reduced data implementation which stores a data tree object copying the structure of a Gree...
virtual function Greedy.DataTree.Detailed.INode detailed_data = init_basis(Greedy.User.IReducedModel rmodel,ModelData model_data,ParameterSampling.Interface M_train)
creates an initial detailed data node storing an initial reduced basis
DataTree specialization for detailed data generated by a Greedy algorithm instance.
specialization of detailed data tree node with an id map for its children
Specialization plugins for the greedy algorithm.
virtual function Greedy.User.IDetailedData detailed_data = basis_extension(Greedy.User.IReducedModel rmodel,Greedy.User.IDetailedData detailed_data, max_err_seq, mu)
extends the reduced basis space from a given function .
interface for Greedy.Plugin.Interface implementations generating an empirical interpolation basis ...
Plugin for the Greedy.Algorithm class generating a collateral reduced basis space plus interpolation ...
virtual function prepare_reduced_data(Greedy.User.IReducedModel rmodel,Greedy.User.IDetailedData detailed_data)
prepares reduced data that is necessary for the execution of other methods if indicated by needs_prep...
stop_Mmax
maximum number of generated collateral reduced basis vectors.
Customizable implementation of an abstract greedy algorithm.
interface specialization for a reduced model that can be used with the Greedy algorithm for basis gen...
Plugin for the Greedy.Algorithm class generating collateral reduced basis space plus interpolation DO...