changeset 1261:a3f2c1781612 feature/poroelastic

Fix bug with incorrect grids returned by D1StaggeredUpwind
author Martin Almquist <malmquist@stanford.edu>
date Wed, 29 Apr 2020 21:02:05 -0700
parents 7fbee3de0ab2
children b673081db86b
files +sbp/D1StaggeredUpwind.m
diffstat 1 files changed, 16 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/+sbp/D1StaggeredUpwind.m	Wed Apr 29 21:01:09 2020 -0700
+++ b/+sbp/D1StaggeredUpwind.m	Wed Apr 29 21:02:05 2020 -0700
@@ -10,10 +10,10 @@
         D1_primal % SBP operator approximating first derivative
         D1_dual % SBP operator approximating first derivative
 
-        Dplus_primal  % Upwind operator on primal grid 
-        Dminus_primal % Upwind operator on primal grid 
-        Dplus_dual % Upwind operator on dual grid 
-        Dminus_dual % Upwind operator on dual grid 
+        Dplus_primal  % Upwind operator on primal grid
+        Dminus_primal % Upwind operator on primal grid
+        Dplus_dual % Upwind operator on dual grid
+        Dminus_dual % Upwind operator on dual grid
 
         H_primal % Norm matrix
         H_dual % Norm matrix
@@ -36,31 +36,32 @@
     methods
         function obj = D1StaggeredUpwind(m,lim,order)
 
-          x_l = lim{1};
-          x_r = lim{2};
-          L = x_r-x_l;
+          xl = lim{1};
+          xr = lim{2};
+          L = xr-xl;
+          h = L/(m-1);
 
           m_primal = m;
           m_dual = m+1;
 
           switch order
           case 2
-            [obj.x_primal, obj.x_dual, obj.H_primal, obj.H_dual,...
+            [~, ~, obj.H_primal, obj.H_dual,...
             obj.H_primalI, obj.H_dualI,...
             obj.D1_primal, obj.D1_dual, obj.Dplus_primal, obj.Dminus_primal,...
             obj.Dplus_dual, obj.Dminus_dual] = sbp.implementations.d1_staggered_upwind_2(m, L);
           case 4
-            [obj.x_primal, obj.x_dual, obj.H_primal, obj.H_dual,...
+            [~, ~, obj.H_primal, obj.H_dual,...
             obj.H_primalI, obj.H_dualI,...
             obj.D1_primal, obj.D1_dual, obj.Dplus_primal, obj.Dminus_primal,...
             obj.Dplus_dual, obj.Dminus_dual] = sbp.implementations.d1_staggered_upwind_4(m, L);
           case 6
-            [obj.x_primal, obj.x_dual, obj.H_primal, obj.H_dual,...
+            [~, ~, obj.H_primal, obj.H_dual,...
             obj.H_primalI, obj.H_dualI,...
             obj.D1_primal, obj.D1_dual, obj.Dplus_primal, obj.Dminus_primal,...
             obj.Dplus_dual, obj.Dminus_dual] = sbp.implementations.d1_staggered_upwind_6(m, L);
           case 8
-            [obj.x_primal, obj.x_dual, obj.H_primal, obj.H_dual,...
+            [~, ~, obj.H_primal, obj.H_dual,...
             obj.H_primalI, obj.H_dualI,...
             obj.D1_primal, obj.D1_dual, obj.Dplus_primal, obj.Dminus_primal,...
             obj.Dplus_dual, obj.Dminus_dual] = sbp.implementations.d1_staggered_upwind_8(m, L);
@@ -71,7 +72,10 @@
           obj.m = m;
           obj.m_primal = m_primal;
           obj.m_dual = m_dual;
-          obj.h = L/(m-1);
+          obj.h = h;
+
+          obj.x_primal = linspace(xl, xr, m)';
+          obj.x_dual = [xl, linspace(xl+h/2, xr-h/2, m-1), xr]';
 
           obj.e_primal_l = sparse(m_primal,1);
           obj.e_primal_r = sparse(m_primal,1);