diff +scheme/Burgers2d.m @ 1221:0c906f7ab8bf rv_diffOp_test

Attempt to reduce unnessecary operations when using the RV diffOps. Does not seem to improve efficiency at this stage.
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Tue, 05 Mar 2019 10:56:29 +0100
parents 1fe48cbd379a
children
line wrap: on
line diff
--- a/+scheme/Burgers2d.m	Tue Mar 05 10:53:34 2019 +0100
+++ b/+scheme/Burgers2d.m	Tue Mar 05 10:56:29 2019 +0100
@@ -55,17 +55,17 @@
                         switch length(fluxSplitting)
                             case 1
                                 DissOp = DissOpx + DissOpy;
-                                obj.D = @(v) -(1/3*D1*v.*v + (1/3*spdiag(v)*D1 + fluxSplitting{1}(v)*DissOp)*v);
+                                obj.D = @(v) -(1/3*D1*(v.*v) + (1/3*spdiag(v)*D1 + fluxSplitting{1}(v)*DissOp)*v);
                             case 2
-                                obj.D = @(v) -(1/3*D1*v.*v + (1/3*spdiag(v)*D1 + fluxSplitting{1}(v)*DissOpx + fluxSplitting{2}(v)*DissOpy)*v);
+                                obj.D = @(v) -(1/3*D1*(v.*v) + (1/3*spdiag(v)*D1 + fluxSplitting{1}(v)*DissOpx + fluxSplitting{2}(v)*DissOpy)*v);
                         end
                     case 'conservative'
                         switch length(fluxSplitting)
                             case 1
                                 DissOp = DissOpx + DissOpy;
-                                obj.D = @(v) -(1/2*D1*v.*v + fluxSplitting{1}(v)*DissOp*v);
+                                obj.D = @(v) -(1/2*D1*spdiag(v) + fluxSplitting{1}(v)*DissOp);
                             case 2
-                                obj.D = @(v) -(1/2*D1*v.*v + (fluxSplitting{1}(v)*DissOpx + fluxSplitting{2}(v)*DissOpy)*v);
+                                obj.D = @(v) -(1/2*D1*spdiag(v) + (fluxSplitting{1}(v)*DissOpx + fluxSplitting{2}(v)*DissOpy));
                         end
                         
                 end
@@ -75,9 +75,9 @@
                 D1 = Dx + Dy;
                 switch pde_form
                     case 'skew-symmetric'
-                        obj.D = @(v) -(1/3*D1*v.*v + 1/3*spdiag(v)*D1*v);
+                        obj.D = @(v) -(1/3*D1*(v.*v) + 1/3*spdiag(v)*D1*v);
                     case 'conservative'
-                        obj.D = @(v) -1/2*D1*v.*v;
+                        obj.D = @(v) -1/2*D1*(v.*v);
                 end
             end
 
@@ -103,8 +103,9 @@
                 case {'D', 'd', 'dirichlet', 'Dirichlet'}
 
                     magnitude = 2/3;
-                    tau = @(v) s*magnitude*obj.Hi*e*H_b*spdiag((v(index)-s*abs(v(index)))/2);
-                    closure = @(v) tau(v)*v(index);
+                    Tau = s*magnitude*obj.Hi*e*H_b;
+                    tau = @(v) Tau*spdiag((v(index)-s*abs(v(index)))/2);
+                    closure = @(v) tau(v)*e';
                     penalty = @(v) -tau(v);