comparison +rv/constructDiffOps.m @ 1026:44c3ea38097e feature/advectionRV

Fix minor issues in rv/constructDiffOps - Fix issue where the order of the RV flux diff op could be set to less than 2 - Remove faulty assert of BCs
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Mon, 07 Jan 2019 16:32:40 +0100
parents defc9d0cc1f2
children 1a5c8723c9be 2d7ba44340d0
comparison
equal deleted inserted replaced
1025:ac80bedc8df7 1026:44c3ea38097e
5 [D, solutionPenalties] = constructTotalFluxDiffOp(scheme, grid, order, opSet, waveSpeed, BCs, fluxSplitting); 5 [D, solutionPenalties] = constructTotalFluxDiffOp(scheme, grid, order, opSet, waveSpeed, BCs, fluxSplitting);
6 D2 = constructSymmetricD2Operator(grid, order, opSet); 6 D2 = constructSymmetricD2Operator(grid, order, opSet);
7 D_rv = @(v,viscosity)(D + D2(viscosity))*v; 7 D_rv = @(v,viscosity)(D + D2(viscosity))*v;
8 8
9 %% DiffOps for residual viscosity 9 %% DiffOps for residual viscosity
10 [D_flux, residualPenalties] = constructTotalFluxDiffOp(scheme, grid, order-2, opSet, waveSpeed, BCs, fluxSplitting); 10 [D_flux, residualPenalties] = constructTotalFluxDiffOp(scheme, grid, max(order-2,2), opSet, waveSpeed, BCs, fluxSplitting);
11 % DiffOp for flux in residual viscosity. Due to sign conventions of the implemnted schemes, we need to 11 % DiffOp for flux in residual viscosity. Due to sign conventions of the implemnted schemes, we need to
12 % change the sign. 12 % change the sign.
13 D_flux = -D_flux; 13 D_flux = -D_flux;
14 D_flux = @(v) D_flux*v; 14 D_flux = @(v) D_flux*v;
15 % DiffOp for time derivative in residual viscosity 15 % DiffOp for time derivative in residual viscosity
16 DvDt = @(v)D*v; 16 DvDt = @(v)D*v;
17 end 17 end
18 18
19 function [D, penalties] = constructTotalFluxDiffOp(scheme, grid, order, opSet, waveSpeed, BCs, fluxSplitting) 19 function [D, penalties] = constructTotalFluxDiffOp(scheme, grid, order, opSet, waveSpeed, BCs, fluxSplitting)
20 if isequal(opSet, @sbp.D1Upwind) 20 if isequal(opSet, @sbp.D1Upwind)
21 assert(size(fluxSplitting,1) == grid.D());
22 diffOp = scheme(grid, order, opSet, waveSpeed, fluxSplitting); 21 diffOp = scheme(grid, order, opSet, waveSpeed, fluxSplitting);
23 else 22 else
24 diffOp = scheme(grid, order, opSet, waveSpeed); 23 diffOp = scheme(grid, order, opSet, waveSpeed);
25 end 24 end
26 [D, penalties] = addClosuresToDiffOp(diffOp, BCs); 25 [D, penalties] = addClosuresToDiffOp(diffOp, BCs);