Mercurial > repos > public > sbplib
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);