changeset 249:02423f9323c6 feature/beams

Started modifying operator files.
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 05 Sep 2016 16:38:41 +0200
parents 81e0ead29431
children 9628617bdf14
files +sbp/HigherVariable.m +sbp/higher_variable4.m +sbp/higher_variable4_min_boundary_points.m
diffstat 3 files changed, 91 insertions(+), 135 deletions(-) [+]
line wrap: on
line diff
--- a/+sbp/HigherVariable.m	Mon Sep 05 16:34:22 2016 +0200
+++ b/+sbp/HigherVariable.m	Mon Sep 05 16:38:41 2016 +0200
@@ -47,6 +47,7 @@
                     [H, HI, D2, D4, e_1, e_m, M4, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = sbp.higher_variable6(m,h);
                     obj.borrowing.N.S2 = 0.3259;
                     obj.borrowing.N.S3 = 0.1580;
+                end
             elseif order == 8
                 switch opt
                 case 'min_boundary_points'
--- a/+sbp/higher_variable4.m	Mon Sep 05 16:34:22 2016 +0200
+++ b/+sbp/higher_variable4.m	Mon Sep 05 16:38:41 2016 +0200
@@ -7,56 +7,61 @@
     %%% D2          (approx andra derivatan)    %%%
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
+    Hv = ones(m,1);
+    Hv(1:4) = [17/48 59/48 43/48 49/48];
+    Hv(m-3:m) = rot90(Hv(1:4),2);
+    Hv = h * Hv;
+    H = spdiag(Hv,0);
+    HI = spdiag(1./Hv,0);
 
-    %m=20; %problemstorlek
-    %h=1/(m-1);
-    %h=1;
+    e_1 = sparse(m, 1);
+    e_1(1) = 1;
+    e_m = rot90(e_1, 2);
+
+    S_1 = sparse(m, 1);
+    S_1(1:4) = [-0.11e2/0.6e1 3 -0.3e1/0.2e1 0.1e1/0.3e1]/h;
+    S_m = -rot90(S_1, 2);
 
-    c = ones(m,1);
+    S2_1 = sparse(m, 1);
+    S2_1(1:4) = [2 -5 4 -1;]/h^2;
+    S2_m = rot90(S2_1, 2);
+
+    S3_1 = sparse(m, 1);
+    S3_1(1:4) = [-1 3 -3 1;]/h^3;
+    S3_m = rot90(S3_1, 2);
 
 
-    H=diag(ones(m,1),0);
-    H(1:4,1:4)=diag([17/48 59/48 43/48 49/48]);
-    H(m-3:m,m-3:m)=fliplr(flipud(diag([17/48 59/48 43/48 49/48])));
-    H=H*h;
-    HI=inv(H);
-    HI = sparse(HI);
-
+    q_diags = [-2, -1, 0, 1, 2];
+    q_stencil   = [-1/12, 8/12, 0, -8/12, 1/12];
+    Q = stripeMatrix(q_stencil, q_diags,m);
 
+    Q_U = [
+        0 0.59e2/0.96e2 -0.1e1/0.12e2 -0.1e1/0.32e2;
+        -0.59e2/0.96e2 0 0.59e2/0.96e2 0;
+        0.1e1/0.12e2 -0.59e2/0.96e2 0 0.59e2/0.96e2;
+        0.1e1/0.32e2 0 -0.59e2/0.96e2 0;
+    ];
 
-    Q=(-1/12*diag(ones(m-2,1),2)+8/12*diag(ones(m-1,1),1)-8/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2));
-    Q_U = [0 0.59e2 / 0.96e2 -0.1e1 / 0.12e2 -0.1e1 / 0.32e2; -0.59e2 / 0.96e2 0 0.59e2 / 0.96e2 0; 0.1e1 / 0.12e2 -0.59e2 / 0.96e2 0 0.59e2 / 0.96e2; 0.1e1 / 0.32e2 0 -0.59e2 / 0.96e2 0;];
     Q(1:4,1:4)=Q_U;
-    Q(m-3:m,m-3:m)=flipud( fliplr(-Q_U(1:4,1:4) ) );
+    Q(m-3:m,m-3:m)=-rot90(Q_U, 2);
 
-    e_1=zeros(m,1);e_1(1)=1;
-    e_m=zeros(m,1);e_m(m)=1;
 
     D1=HI*(Q-1/2*e_1*e_1'+1/2*e_m*e_m') ;
 
-    M_U=[0.9e1 / 0.8e1 -0.59e2 / 0.48e2 0.1e1 / 0.12e2 0.1e1 / 0.48e2; -0.59e2 / 0.48e2 0.59e2 / 0.24e2 -0.59e2 / 0.48e2 0; 0.1e1 / 0.12e2 -0.59e2 / 0.48e2 0.55e2 / 0.24e2 -0.59e2 / 0.48e2; 0.1e1 / 0.48e2 0 -0.59e2 / 0.48e2 0.59e2 / 0.24e2;];
-    M=-(-1/12*diag(ones(m-2,1),2)+16/12*diag(ones(m-1,1),1)+16/12*diag(ones(m-1,1),-1)-1/12*diag(ones(m-2,1),-2)-30/12*diag(ones(m,1),0));
+    m_diags = [-2, -1, 0, 1, 2];
+    m_stencil   = [-1/12, 16/12, -30/12, -16/12, -1/12];
+
+    M_U=[
+        0.9e1 / 0.8e1 -0.59e2 / 0.48e2 0.1e1 / 0.12e2 0.1e1 / 0.48e2;
+      -0.59e2 / 0.48e2 0.59e2 / 0.24e2 -0.59e2 / 0.48e2 0;
+      0.1e1 / 0.12e2 -0.59e2 / 0.48e2 0.55e2 / 0.24e2 -0.59e2 / 0.48e2;
+      0.1e1 / 0.48e2 0 -0.59e2 / 0.48e2 0.59e2 / 0.24e2;
+    ];
 
     M(1:4,1:4)=M_U;
-
-    M(m-3:m,m-3:m)=flipud( fliplr( M_U ) );
+    M(m-3:m,m-3:m)=rot90(M_U, 2);
     M=M/h;
 
-    S_U=[-0.11e2 / 0.6e1 3 -0.3e1 / 0.2e1 0.1e1 / 0.3e1;]/h;
-    S_1=zeros(1,m);
-    S_1(1:4)=S_U;
-    S_m=zeros(1,m);
-    S_m(m-3:m)=fliplr(-S_U);
-    S_1 = S_1';
-    S_m = S_m';
-
-
-    M=sparse(m,m);
-    e_1 = sparse(e_1);
-    e_m = sparse(e_m);
-    S_1 = sparse(S_1);
-    S_m = sparse(S_m);
-
 
     scheme_width = 5;
     scheme_radius = (scheme_width-1)/2;
@@ -116,15 +121,6 @@
     end
     D2 = @D2_fun;
 
-
-    S2_U=[2 -5 4 -1;]/h^2;
-    S2_1=zeros(1,m);
-    S2_1(1:4)=S2_U;
-    S2_m=zeros(1,m);
-    S2_m(m-3:m)=fliplr(S2_U);
-    S2_1 = S2_1';
-    S2_m = S2_m';
-
     m3=-1/6;m2=2;m1=-13/2;m0=28/3;
     M4=m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
 
@@ -137,13 +133,6 @@
     M4(m-5:m,m-5:m)=flipud( fliplr( M4_U ) );
     M4=M4/h^3;
 
-    S3_U=[-1 3 -3 1;]/h^3;
-    S3_1=zeros(1,m);
-    S3_1(1:4)=S3_U;
-    S3_m=zeros(1,m);
-    S3_m(m-3:m)=fliplr(-S3_U);
-    S3_1 = S3_1';
-    S3_m = S3_m';
 
     D4=HI*(M4-e_1*S3_1'+e_m*S3_m'  + S_1*S2_1'-S_m*S2_m');
 
--- a/+sbp/higher_variable4_min_boundary_points.m	Mon Sep 05 16:34:22 2016 +0200
+++ b/+sbp/higher_variable4_min_boundary_points.m	Mon Sep 05 16:38:41 2016 +0200
@@ -1,3 +1,4 @@
+function [H, HI, D2, D4, e_1, e_m, M4, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = higher_variable4_min_boundary_points(m,h)
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%% 4:de ordn. SBP Finita differens         %%%
 %%% operatorer framtagna av Mark Carpenter  %%%
@@ -11,32 +12,62 @@
 %m=20; %problemstorlek
 %h=1/(m-1);
 %h=1;
-   
-% x=1:h:m*h;x=x';
-% %c=x.^2/fac(2);
-% x0=x.^0/fac(1); 
-% x1=x.^1/fac(1);
-% x2=x.^2/fac(2);
-% x3=x.^3/fac(3);
-% x4=x.^4/fac(4);
-% x5=x.^5/fac(5);
-%c=ones(m,1);
+
+Hv = ones(m,1)
+Hv(1:4) = [17/48 59/48 43/48 49/48];
+Hv(m-3:m) = rot90(Hv(1:4),2);
+Hv = h * Hv;
+H = spdiag(Hv,0);
+HI = spdiag(1./Hv,0);
+
+
+% Boundary operators
+e_1 = sparse(m,1);
+e_1(1) = 1;
+e_m = rot90(e_1, 2);
+
+S_U=[-0.11e2 / 0.6e1 3 -0.3e1 / 0.2e1 0.1e1 / 0.3e1;]/h;
+S_1=sparse(1,m);
+S_1(1:4)=S_U;
+S_m = -rot90(S_1, 2);
+
+S2_U=[2 -5 4 -1;]/h^2;
+S2_1=sparse(1,m);
+S2_1(1:4)=S2_U;
+S2_m = rot90(S2_1, 2);
 
- 
-H=diag(ones(m,1),0);
-H(1:4,1:4)=diag([17/48 59/48 43/48 49/48]);
-H(m-3:m,m-3:m)=fliplr(flipud(diag([17/48 59/48 43/48 49/48])));
-H=H*h;
-HI=inv(H);
+S3_U=[-1 3 -3 1;]/h^3;
+S3_1=sparse(1,m);
+S3_1(1:4)=S3_U;
+S3_m = rot90(S3_1, 2);
+
+
+
+
+
 
-   
+q_diags   = [-1, 0, 1, 2];
+    q_stencil = [-1/3 -1/2 1 -1/6];
+    Qp = stripeMatrix(q_stencil, q_diags,m);
+
+    Q_U = [
+         -1/24  17/24   -1/6;
+        -13/24   -1/4  23/24;
+          1/12 -11/24 -11/24;
+    ];
+    Qp(1:3,1:3)=Q_U;
+    Qp(m-2:m,m-2:m)=rot90(Q_U,2)'; %%% This is different from standard SBP
+
+    Qm=-Qp';
+
+
 Q=(-1/12*diag(ones(m-2,1),2)+8/12*diag(ones(m-1,1),1)-8/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2));
 Q_U = [0 0.59e2 / 0.96e2 -0.1e1 / 0.12e2 -0.1e1 / 0.32e2; -0.59e2 / 0.96e2 0 0.59e2 / 0.96e2 0; 0.1e1 / 0.12e2 -0.59e2 / 0.96e2 0 0.59e2 / 0.96e2; 0.1e1 / 0.32e2 0 -0.59e2 / 0.96e2 0;];
 Q(1:4,1:4)=Q_U;
 Q(m-3:m,m-3:m)=flipud( fliplr(-Q_U(1:4,1:4) ) );
 
-e_1=zeros(m,1);e_1(1)=1;
-e_m=zeros(m,1);e_m(m)=1;
+
+
 
 D1=HI*(Q-1/2*e_1*e_1'+1/2*e_m*e_m') ;
 
@@ -47,13 +78,6 @@
 
 M(m-3:m,m-3:m)=flipud( fliplr( M_U ) );
 M=M/h;
-
-S_U=[-0.11e2 / 0.6e1 3 -0.3e1 / 0.2e1 0.1e1 / 0.3e1;]/h;
-S_1=zeros(1,m);
-S_1(1:4)=S_U;
-S_m=zeros(1,m);
-S_m(m-3:m)=fliplr(-S_U);
-
 M=zeros(m,m);
 
 for i=4:m-3
@@ -67,72 +91,14 @@
 M=M/h;
 
 D2=HI*(-M-c(1)*e_1*S_1+c(m)*e_m*S_m);
-
-S2_U=[2 -5 4 -1;]/h^2;
-S2_1=zeros(1,m);
-S2_1(1:4)=S2_U;
-S2_m=zeros(1,m);
-S2_m(m-3:m)=fliplr(S2_U);
-
 m3=-1/6;m2=2;m1=-13/2;m0=28/3;
 M4=m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
 
-%M4=(-1/6*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3) ) + 2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2)) -13/2*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)) + 28/3*diag(ones(m,1),0));
 
 M4_U=[0.8e1 / 0.3e1 -0.37e2 / 0.6e1 0.13e2 / 0.3e1 -0.5e1 / 0.6e1; -0.37e2 / 0.6e1 0.47e2 / 0.3e1 -13 0.11e2 / 0.3e1; 0.13e2 / 0.3e1 -13 0.44e2 / 0.3e1 -0.47e2 / 0.6e1; -0.5e1 / 0.6e1 0.11e2 / 0.3e1 -0.47e2 / 0.6e1 0.29e2 / 0.3e1;];
 M4(1:4,1:4)=M4_U;
 
 M4(m-3:m,m-3:m)=flipud( fliplr( M4_U ) );
 M4=M4/h^3;
-    
-S3_U=[-1 3 -3 1;]/h^3;
-S3_1=zeros(1,m);
-S3_1(1:4)=S3_U;
-S3_m=zeros(1,m);
-S3_m(m-3:m)=fliplr(-S3_U);
 
 D4=HI*(M4-e_1*S3_1+e_m*S3_m  + S_1'*S2_1-S_m'*S2_m);
-
-% % Test 
-% d3=[-1 3 -3 1];
-% DD_3=(-diag(ones(m-2,1),-2)+3*diag(ones(m-1,1),-1)-3*diag(ones(m,1),0)+ ...
-% 	  diag(ones(m-1,1),1));
-% DD_3(1:2,1:4)=[d3;d3];
-% DD_3(m,m-3:m)=[d3];
-% 
-% nnn=round(0.1/h);
-% x0=h;
-% x1=nnn*h;
-% d=h; % Start level
-% g=1; % interrior level
-% 
-% c0 = (-10*x1^3*x0^2*d+5*x1^4*x0*d-d*x1^5+10*x1^2*x0^3*g-5*x1*x0^4*g+x0^5* ...
-%       g)/(10*x1^2*x0^3-10*x0^2*x1^3+5*x0*x1^4-5*x1*x0^4+x0^5-x1^5);
-% c1 = -30*(-d+g)*x1^2*x0^2/(10*x1^2*x0^3-10*x0^2*x1^3+5*x0*x1^4-5*x1*x0^4+x0^5-x1^5);
-% c2 = 30*(-d+g)*x1*x0*(x0+x1)/(10*x1^2*x0^3-10*x0^2*x1^3+5*x0*x1^4-5*x1* ...
-% 			      x0^4+x0^5-x1^5);
-% c3 = -10*(-d+g)*(x0^2+4*x1*x0+x1^2)/(10*x1^2*x0^3-10*x0^2*x1^3+5*x0*x1^4- ...
-% 				     5*x1*x0^4+x0^5-x1^5);
-% c4 = 15*(-d+g)*(x0+x1)/(10*x1^2*x0^3-10*x0^2*x1^3+5*x0*x1^4-5*x1*x0^4+ ...
-% 			x0^5-x1^5);
-% c5 = -6*(-d+g)/(10*x1^2*x0^3-10*x0^2*x1^3+5*x0*x1^4-5*x1*x0^4+x0^5-x1^5);
-% 
-% xt=x0:h:x1;
-% ct=polyval([c5 c4 c3 c2 c1 c0],xt);
-% 
-% BB1=zeros(m);
-% BB1(1:nnn,1:nnn)=diag(ct);
-% BB1(m-nnn+1:m,m-nnn+1:m)=diag(fliplr(ct));
-% BB1(nnn+1:m-nnn,nnn+1:m-nnn)=g*eye(length(nnn+1:m-nnn));
-% 
-% DI=(1/h^3)*DD_3'*BB1*DD_3;
-% 
-% I=eye(m);
-% MM1=kron(H,D2'*H*D2)+kron(D2'*H*D2,H)+kron(D2'*H,H*D2)+kron(H*D2,D2'*H);
-% ee1=eig(MM1);min(real(ee1)),max(real(ee1))
-% 
-% 
-% MM2=kron(H,M4)+kron(M4,H)+kron(D2'*H,H*D2)+kron(H*D2,D2'*H);
-% MM3=kron(H,M4+DI)+kron(M4+DI,H)+kron(D2'*H,H*D2)+kron(H*D2,D2'*H);
-% ee3=eig(MM3);min(real(ee3)),max(real(ee3))
-