Nek5000
SEM for Incompressible NS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
xxt_test2.m
Go to the documentation of this file.
1 %p = [4 3 2 1 3 6 1 5 6 5 ]
2 
3 %inv(A)(p,p)
4 
5 function M=bdiag(A,B,C)
6  [ra ca]=size(A);
7  [rb cb]=size(B);
8  [rc cc]=size(C);
9  M = [ A zeros(ra,cb) zeros(ra,cc)
10  zeros(rb,ca) B zeros(rb,cc)
11  zeros(rc,ca) zeros(rc,cb) C ];
12 end
13 
14 Al0=[];
15 Ac0=zeros(2)([],:);
16 As0=[1 -.5; -.5 1];
17 
18 Al1=[ 2 -.5 -1 0
19  -.5 1 0 -.5
20  -1 0 2 -.5
21  0 -.5 -.5 1];
22 Ac1=[-.5 0; 0 0; 0 -.5; 0 0];
23 As1=[1 -.5; -.5 1];
24 
25 A0=[Al0 Ac0; Ac0' As0];
26 A1=[Al1 Ac1; Ac1' As1];
27 
28 Il=eye(4); Is=eye(2);
29 gI=eye(6);
30 Rl0=Il([],:);
31 Rl1=Il([1 2 3 4],:);
32 Rs0=Is([5 6]-4,:);
33 Rs1=Is([5 6]-4,:);
34 R0=[Rl0 zeros(size(Rl0)(1),size(Rs0)(2))
35  zeros(size(Rs0)(1),size(Rl0)(2)) Rs0];
36 R1=[Rl1 zeros(size(Rl1)(1),size(Rs1)(2))
37  zeros(size(Rs1)(1),size(Rl1)(2)) Rs1];
38 
39 A=R0'*A0*R0+R1'*A1*R1;
40 
41 All = bdiag(Al0,Al1,[])
42 Als = bdiag(Ac0,Ac1,[])
43 Ass = bdiag(As0,As1,[])
44 Qs = [Rs0;Rs1]
45 ns = size(Qs)(1);
46 
47 Q = bdiag(Il,Qs,[]);
48 
49 A=[All Als*Qs; Qs'*Als' Qs'*Ass*Qs];
50 
51 M = Q*(A\Q');
52 
53 S0 = As0;
54 S1 = As1-Ac1'*(Al1\Ac1);
55 
56 dS = bdiag(S0,S1,[]);
57 
58 em=[Il -All\Als; 0*Als' eye(ns)];
59 norm(M-em*[inv(All) 0*Als; 0*Als' Qs*inv(Qs'*dS*Qs)*Qs']*em')
60 
61 Rf0=Is([5 6]-4,:);
62 Rf1=Is([5 6]-4,:);
63 Qf = [Rf0;Rf1];
64 
65 X0 = zeros(size(Rs0)(1),size(Rf0)(1));
66 X1 = zeros(size(Rs1)(1),size(Rf1)(1));
67 dX = bdiag(X0,X1,[]);
68 X = Qs'*dX*Qf;
69 
70 X0 = Rs0*X*Rf0';
71 
72 n = size(Qs)(2)
73 for i = [1:n]
74  ei = eye(n)(:,i);
75  Ri = eye(n)([1:i-1],:);
76  se = dS*Qs*ei
77  Xtse = dX'*se
78  QQtXtse = Qf*Ri'*Ri*Qf'*Xtse
79  Qy = Qs*ei - dX*QQtXtse
80  ytsy = Qy'*dS*Qy
81  Qx = Qy/sqrt(ytsy)
82  xv = inv(Qs'*Qs)*Qs'*Qx;
83  X(:,i)=xv
84  X0 = Rs0*X*Rf0'
85  X1 = Rs1*X*Rf1'
86  dX = bdiag(X0,X1,[]);
87  pause
88 end
89 
90 norm(M-em*[inv(All) 0*Als; 0*Als' Qs*X*X'*Qs']*em')
91 norm(M-em*[inv(All) 0*Als; 0*Als' dX*Qf*Qf'*dX']*em')
92 
93 X
94 
95 inv(chol(A))
96 
97 
A0
Definition: xxt_test2.m:25
R1
Definition: xxt_test2.m:36
Ac1
Definition: xxt_test2.m:22
Qs *Als Qs *Ass * Qs
Definition: xxt_test2.m:49
Ac0
Definition: xxt_test2.m:15
As1
Definition: xxt_test2.m:23
*Als eye(ns)]
Rs0
Definition: xxt_test2.m:32
S1
Definition: xxt_test2.m:54
uint B[NUM][SI]
Definition: sort_test.c:18
Qf
Definition: xxt_test2.m:63
Rs1
Definition: xxt_test2.m:33
Ri
Definition: xxt_test2.m:75
X
Definition: xxt_test2.m:68
dX
Definition: xxt_test2.m:67
Is
Definition: xxt_test2.m:28
X1
Definition: xxt_test2.m:66
Rf0
Definition: xxt_test.m:60
p
Definition: xxt_test2.m:1
em
Definition: xxt_test2.m:58
end Al0
Definition: xxt_test2.m:14
Rs1 ns
Definition: xxt_test2.m:45
X0
Definition: xxt_test2.m:65
dS
Definition: xxt_test2.m:56
A1
Definition: xxt_test2.m:26
Ass
Definition: xxt_test.m:41
n
Definition: xxt_test2.m:72
Q
Definition: xxt_test2.m:47
for i
Definition: xxt_test.m:74
se
Definition: xxt_test2.m:76
Rf1
Definition: xxt_test2.m:62
S0
Definition: xxt_test2.m:53
As0
Definition: xxt_test2.m:16
M
Definition: xxt_test2.m:9
norm(M-em *[inv(All) 0 *Als;0 *Als'Qs *inv(Qs'*dS *Qs)*Qs']*em') Rf0
R0
Definition: xxt_test2.m:34
*Als dX *Qf *Qf *dX *em X inv(chol(A)) Ai
All
Definition: xxt_test2.m:41
A
Definition: xxt_test2.m:39
gI
Definition: xxt_test2.m:29
Als
Definition: xxt_test.m:40
Rl1
Definition: xxt_test2.m:31
Il
Definition: xxt_test2.m:28
Al1
Definition: xxt_test2.m:18
Rl0
Definition: xxt_test2.m:30