Mercurial > repos > public > sbplib
comparison +scheme/Burgers1d.m @ 1196:f6c571d8f22f feature/rv
Add option to discretize Burgers1d using quasi-linear form
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Wed, 07 Aug 2019 13:28:21 +0200 |
parents | 635386c073b9 |
children | 433c89bf19e0 |
comparison
equal
deleted
inserted
replaced
1195:a4c00628a39d | 1196:f6c571d8f22f |
---|---|
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 = (ops.Dp + ops.Dm)/2; |
32 DissOp = (ops.Dm - ops.Dp)/2; | 32 DissOp = (ops.Dm - ops.Dp)/2; |
33 switch pde_form | 33 switch pde_form |
34 case 'quasi-linear' | |
35 obj.D = @(v) -((spdiag(v)*obj.D1 + fluxSplitting(v)*DissOp)*v); | |
34 case 'skew-symmetric' | 36 case 'skew-symmetric' |
35 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); |
36 case 'conservative' | 38 case 'conservative' |
37 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); |
38 end | 40 end |
39 else | 41 else |
40 obj.D1 = ops.D1; | 42 obj.D1 = ops.D1; |
41 switch pde_form | 43 switch pde_form |
44 case 'quasi-linear' | |
45 obj.D = @(v) -(spdiag(v)*obj.D1*v); | |
42 case 'skew-symmetric' | 46 case 'skew-symmetric' |
43 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); |
44 case 'conservative' | 48 case 'conservative' |
45 obj.D = @(v) -1/2*obj.D1*(v.*v); | 49 obj.D = @(v) -1/2*obj.D1*(v.*v); |
46 end | 50 end |