changeset 1270:9a7cac4202d0 feature/poroelastic

In CruvilinearAnisotropicUpwind: Make D1Upwind default opSet. Use D2Standard for metric derivatives. Bugfix global quadrature.
author Martin Almquist <malmquist@stanford.edu>
date Sun, 31 May 2020 20:18:45 -0700
parents 5fa2f62a58a1
children b5025bd67be1
files +scheme/Elastic2dCurvilinearAnisotropicUpwind.m
diffstat 1 files changed, 6 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/+scheme/Elastic2dCurvilinearAnisotropicUpwind.m	Sun May 31 20:16:54 2020 -0700
+++ b/+scheme/Elastic2dCurvilinearAnisotropicUpwind.m	Sun May 31 20:18:45 2020 -0700
@@ -64,7 +64,7 @@
         % optFlag -- if true, extra computations are performed, which may be helpful for optimization.
         function obj = Elastic2dCurvilinearAnisotropicUpwind(g, order, rho, C, opSet, optFlag)
             default_arg('rho', @(x,y) 0*x+1);
-            default_arg('opSet',{@sbp.D2VariableCompatible, @sbp.D2VariableCompatible});
+            default_arg('opSet',{@sbp.D1Upwind, @sbp.D1Upwind});
             default_arg('optFlag', false);
             dim = 2;
 
@@ -105,10 +105,11 @@
             m_tot = g.N();
 
             % 1D operators
+            opSetMetric = {@sbp.D2VariableCompatible, @sbp.D2VariableCompatible};
             m_u = m(1);
             m_v = m(2);
-            ops_u = opSet{1}(m_u, {0, 1}, order);
-            ops_v = opSet{2}(m_v, {0, 1}, order);
+            ops_u = opSetMetric{1}(m_u, {0, 1}, order);
+            ops_v = opSetMetric{2}(m_v, {0, 1}, order);
 
             h_u = ops_u.h;
             h_v = ops_v.h;
@@ -184,7 +185,7 @@
             end
 
             gRef = grid.equidistant([m_u, m_v], {0,1}, {0,1});
-            refObj = scheme.Elastic2dVariableAnisotropicUpwind(gRef, order, rho_tilde, PHI, []);
+            refObj = scheme.Elastic2dVariableAnisotropicUpwind(gRef, order, rho_tilde, PHI, opSet);
 
             %---- Set object properties ------
             obj.RHO = spdiag(rho);
@@ -192,7 +193,7 @@
             % Volume quadrature
             obj.J = spdiag(J);
             obj.Ji = spdiag(1./J);
-            obj.H = obj.J*kr(H_u,H_v);
+            obj.H = obj.J*refObj.H;
 
             % Boundary quadratures
             s_w = sqrt((e_w'*x_v).^2 + (e_w'*y_v).^2);