diff +sbp/+implementations/d2_variable_hollow_2.m @ 1305:b5907140c069 feature/poroelastic

Clean up hollow D2 generation by using precomputed coefficients stored in mat files
author Martin Almquist <malmquist@stanford.edu>
date Mon, 13 Jul 2020 14:21:41 -0700
parents 49e3870335ef
children
line wrap: on
line diff
--- a/+sbp/+implementations/d2_variable_hollow_2.m	Sat Jul 11 07:25:06 2020 -0700
+++ b/+sbp/+implementations/d2_variable_hollow_2.m	Mon Jul 13 14:21:41 2020 -0700
@@ -34,39 +34,23 @@
     %Q=H*D1 + 1/2*(e_1*e_1') - 1/2*(e_m*e_m');
 
 
-    M=sparse(m,m);
     nBP = 2;
-
-    scheme_width = 3;
-    scheme_radius = (scheme_width-1)/2;
+    M = sparse(m,m);
+    coeffs = load('sbplib/+sbp/+implementations/coeffs_d2_variable_2.mat');
 
     function D2 = D2_fun(c)
+        M_l = zeros(nBP, coeffs.nBPC);
+        M_r = zeros(nBP, coeffs.nBPC);
 
-        for r = 1+scheme_radius:nBP
-            Mm1 = -c(r-1)/2 - c(r)/2;
-            M0  =  c(r-1)/2 + c(r)   + c(r+1)/2;
-            Mp1 =            -c(r)/2 - c(r+1)/2;
-
-            M(r, r-1) = Mm1;
-            M(r, r) = M0;
-            M(r, r+1) = Mp1;
+        for i=1:coeffs.nBPC
+            M_l = M_l + coeffs.C_l{i}*c(i);
+            M_r = M_r + coeffs.C_r{i}*c(m-coeffs.nBPC+i);
         end
 
-        for r = m-nBP+1:m-scheme_radius
-            Mm1 = -c(r-1)/2 - c(r)/2;
-            M0  =  c(r-1)/2 + c(r)   + c(r+1)/2;
-            Mp1 =            -c(r)/2 - c(r+1)/2;
+        M(1:nBP, 1:coeffs.nBPC) = M_l;
+        M(m-nBP+1:m, m-coeffs.nBPC+1:m) = M_r;
 
-            M(r, r-1) = Mm1;
-            M(r, r) = M0;
-            M(r, r+1) = Mp1;
-        end
-
-        M(1:2,1:2)=[c(1)/2 + c(2)/2 -c(1)/2 - c(2)/2; -c(1)/2 - c(2)/2 c(1)/2 + c(2) + c(3)/2;];
-        M(m-1:m,m-1:m)=[c(m-2)/2 + c(m-1) + c(m)/2 -c(m-1)/2 - c(m)/2; -c(m-1)/2 - c(m)/2 c(m-1)/2 + c(m)/2;];
-        M=M/h;
-
-        D2=HI*(-M-c(1)*e_l*d1_l'+c(m)*e_r*d1_r');
+        D2 = M/h^2;
     end
     D2 = @D2_fun;
 end
\ No newline at end of file