2 gamma_dofs,PCA_modes,epsilon)
4 % gamma_dofs,PCA_modes,epsilon)
5 % Function computing PCA fixspaces according to schema 2
for the RB
9 % B_0: extension
for `X_{N,2}^0`
10 % B_G: extension
for `X_{N,2}^G`
15 X = PCA_fixspace(X,[XFix_0,XFix_G],A,PCA_modes,[],epsilon);
17 % orthonormalize XFix_G with respect to L2-Gamma inner product
19 A_GG = sparse(A_G(gamma_dofs,gamma_dofs));
24 for i = 1:(size(XFix_G,2)-1)
25 for j = (i+1):size(XFix_G,2)
26 if isequal(XFix_G(:,i),XFix_G(:,j))
34 R_M = ichol(A_GG, opts);
35 [~,R,E] = qr(R_M * XFix_G(gamma_dofs,:),0);
38 ind = find(abs(diag(R))>epsilon);
40 XFix_G = XFix_G(:,ind);
42 XFix_G = XFix_G(:,ind) / Rind;
47 % separate RB_0, RB_G extension
49 Xo = X - XFix_G * (XFix_G' * A_G * X);
55 K = Xo(gamma_dofs,:)' * A_GG * Xo(gamma_dofs,:);
62 fi_G = find(abs(evalues)>=epsilon);
63 fi_0 = find(abs(evalues)<epsilon);
65 B_0 = Xo * ep(:,fi_0);
71 B_0(gamma_dofs,:) = 0;
73 % compute pod-extension
74 B_0 = PCA_fixspace(B_0,XFix_0,A,[],[],epsilon);
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.