Mercurial > repos > public > sbplib
comparison +scheme/Burgers1d.m @ 1225:68ee061639a1 feature/rv
Make sure matrices are sparse.
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Wed, 06 Nov 2019 14:52:07 +0100 |
parents | 433c89bf19e0 |
children |
comparison
equal
deleted
inserted
replaced
1224:5271c4670733 | 1225:68ee061639a1 |
---|---|
26 xlim = {xl, xr}; | 26 xlim = {xl, xr}; |
27 | 27 |
28 ops = opSet(m, xlim, order); | 28 ops = opSet(m, xlim, order); |
29 | 29 |
30 if (isequal(opSet, @sbp.D1Upwind)) | 30 if (isequal(opSet, @sbp.D1Upwind)) |
31 obj.D1 = (ops.Dp + ops.Dm)/2; | 31 obj.D1 = sparse((ops.Dp + ops.Dm)/2); |
32 DissOp = (ops.Dm - ops.Dp)/2; | 32 DissOp = sparse((ops.Dm - ops.Dp)/2); |
33 switch pde_form | 33 switch pde_form |
34 case 'quasi-linear' | 34 case 'quasi-linear' |
35 obj.D = @(v) -((spdiag(v)*obj.D1 + fluxSplitting(v)*DissOp)*v); | 35 obj.D = @(v) -((spdiag(v)*obj.D1 + fluxSplitting(v)*DissOp)*v); |
36 case 'skew-symmetric' | 36 case 'skew-symmetric' |
37 obj.D = @(v) -(1/3*obj.D1*(v.*v) + (1/3*spdiag(v)*obj.D1 + fluxSplitting(v)*DissOp)*v); | 37 obj.D = @(v) -(1/3*obj.D1*(v.*v) + (1/3*spdiag(v)*obj.D1 + fluxSplitting(v)*DissOp)*v); |
38 case 'conservative' | 38 case 'conservative' |
39 obj.D = @(v) -(1/2*obj.D1*(v.*v) + fluxSplitting(v)*DissOp*v); | 39 obj.D = @(v) -(1/2*obj.D1*(v.*v) + fluxSplitting(v)*DissOp*v); |
40 end | 40 end |
41 else | 41 else |
42 obj.D1 = ops.D1; | 42 obj.D1 = sparse(ops.D1); |
43 switch pde_form | 43 switch pde_form |
44 case 'quasi-linear' | 44 case 'quasi-linear' |
45 obj.D = @(v) -(spdiag(v)*obj.D1*v); | 45 obj.D = @(v) -(spdiag(v)*obj.D1*v); |
46 case 'skew-symmetric' | 46 case 'skew-symmetric' |
47 obj.D = @(v) -(1/3*obj.D1*(v.*v) + 1/3*spdiag(v)*obj.D1*v); | 47 obj.D = @(v) -(1/3*obj.D1*(v.*v) + 1/3*spdiag(v)*obj.D1*v); |