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);