rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
dom_dec_orthonormalize.m
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)
3 %
4 
5 
6 dir = model.dirichlet_side;
7 no_dir = mod(dir,2)+1;
8 
9 RB_0 = cell(1,2);
10 RB_G = cell(1,2);
11 
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;
16 
17 PCA_modes = size(X{1}, 2);
18 
19 X_0 = cell(1,2);
20 
21 for j = 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;
25 end;
26 
27 
28 switch model.RB_extension_method
29 
30  case 'A'
31 
32  %%%%%%%%%%%%%%%% method 1 %%%%%%%%%%%%%%%%%%
33 
34  % XN10, XN20
35  for i = 1:2
36  RB_0{i} = PCA_fixspace(X_0{i},RB_0{i},K{i},PCA_modes,[], ...
37  epsilon);
38  end;
39 
40  % XNG
41  if size(RB_G{no_dir},2) == 0
42  RB_GG = [];
43  else
44  RB_GG = RB_G{no_dir}(g_dofs{no_dir},:);
45  end;
46 
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}, ...
50  g_dofs{no_dir}), ...
51  PCA_modes,[],epsilon);
52  clear('RB_GG');
53 
54  % XN1G, XN2G
55  for i = 1:2
56  zeroExt = zeros(detailed_data.df_infos{i}.ndofs, ...
57  size(RBext_GG,2));
58  zeroExt(g_dofs{i},:) = RBext_GG;
59  RB_G{i} = [RB_G{i}, A{i}\zeroExt];
60  end;
61 
62 
63  case 'B'
64 
65  %%%%%%%%%%%%%%%%%% method 2 %%%%%%%%%%%%%%%%%
66 
67  %%% XN10
68  RB_0{dir} = PCA_fixspace(X_0{dir},RB_0{dir},K{dir},PCA_modes, ...
69  [],epsilon);
70 
71  %%%% XN20, XN2G
72  [RB_0{no_dir},RB_G{no_dir}] = ...
73  dom_dec_PCA_fixspace(X{no_dir},RB_0{no_dir},RB_G{no_dir}, ...
74  K{no_dir},G{1},g_dofs{no_dir}, ...
75  PCA_modes,epsilon);
76 
77  %%%% XN1G
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;
83  end;
84 
85 
86 end;
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.