diff +sbp/higher_variable4.m @ 249:02423f9323c6 feature/beams

Started modifying operator files.
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 05 Sep 2016 16:38:41 +0200
parents c2ca9717db4d
children
line wrap: on
line diff
--- 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');