1 function [RB_0, RB_G] = dom_dec_orthonormalize(model, detailed_data, X, epsilon)
2 %
function [RB_0, RB_G] = dom_dec_orthonormalize(model, detailed_data, X, epsilon)
6 dir = model.dirichlet_side;
12 K = model.get_inner_product_matrices(detailed_data);
13 G = detailed_data.gamma_inner_product_matrices;
14 A = detailed_data.mu_ref_extension_matrices;
15 g_dofs = detailed_data.gamma_dofs;
17 PCA_modes = size(X{1}, 2);
22 zeroExt = zeros(size(X{j}));
23 zeroExt(g_dofs{j},:) = X{j}(g_dofs{j},:);
24 X_0{j} = X{j} - A{j}\zeroExt;
28 switch model.RB_extension_method
32 %%%%%%%%%%%%%%%% method 1 %%%%%%%%%%%%%%%%%%
36 RB_0{i} = PCA_fixspace(X_0{i},RB_0{i},K{i},PCA_modes,[], ...
41 if size(RB_G{no_dir},2) == 0
44 RB_GG = RB_G{no_dir}(g_dofs{no_dir},:);
47 RBext_GG = PCA_fixspace([X{dir}(g_dofs{dir},:), ...
48 X{no_dir}(g_dofs{no_dir},:)], ...
49 RB_GG,G{1}(g_dofs{no_dir}, ...
51 PCA_modes,[],epsilon);
56 zeroExt = zeros(detailed_data.df_infos{i}.ndofs, ...
58 zeroExt(g_dofs{i},:) = RBext_GG;
59 RB_G{i} = [RB_G{i}, A{i}\zeroExt];
65 %%%%%%%%%%%%%%%%%% method 2 %%%%%%%%%%%%%%%%%
68 RB_0{dir} = PCA_fixspace(X_0{dir},RB_0{dir},K{dir},PCA_modes, ...
72 [RB_0{no_dir},RB_G{no_dir}] = ...
74 K{no_dir},G{1},g_dofs{no_dir}, ...
78 if size(RB_G{no_dir},2) > 0
79 zeroExt = zeros(detailed_data.df_infos{dir}.ndofs, ...
80 size(RB_G{no_dir},2));
81 zeroExt(g_dofs{dir},:) = RB_G{no_dir}(g_dofs{no_dir},:);
82 RB_G{dir} = A{dir}\zeroExt;
function [ B_0 , B_G ] = dom_dec_PCA_fixspace(X, XFix_0, XFix_G, A, A_G, gamma_dofs, PCA_modes, epsilon)
Function computing PCA fixspaces according to schema 2 for the RB extension.