Mercurial > repos > public > sbplib
comparison +rv/constructDiffOps.m @ 1160:76e3bb7836cf feature/rv
First attempt at multi-grid calculation of the residual
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Tue, 25 Jun 2019 16:52:54 +0200 |
parents | 82315fa6adb1 |
children | 856bd6291d17 |
comparison
equal
deleted
inserted
replaced
1159:1ad7da049b50 | 1160:76e3bb7836cf |
---|---|
3 [D, solutionPenalties] = constructFluxDiffOp(scheme, g, schemeOrder, schemeParams, opSet, BCs); | 3 [D, solutionPenalties] = constructFluxDiffOp(scheme, g, schemeOrder, schemeParams, opSet, BCs); |
4 D2 = constructSymmetricD2Operator(g, schemeOrder, opSet); | 4 D2 = constructSymmetricD2Operator(g, schemeOrder, opSet); |
5 D_rv = @(v,Viscosity)(D(v) + D2(Viscosity)*v); | 5 D_rv = @(v,Viscosity)(D(v) + D2(Viscosity)*v); |
6 | 6 |
7 %% DiffOps for residual viscosity | 7 %% DiffOps for residual viscosity |
8 [D_flux, residualPenalties] = constructFluxDiffOp(scheme, g, residualOrder, schemeParams, opSet, BCs); | 8 [D_res, residualPenalties] = constructFluxDiffOp(scheme, g, residualOrder, schemeParams, opSet, BCs); |
9 % TODO: Construct D_flux without closures when using bdfs. | 9 % TODO: Construct D_flux without closures when using bdfs. |
10 % diffOp = scheme(g, residualOrder, schemeParams{:}, opSet); | 10 % diffOp = scheme(g, residualOrder, schemeParams{:}, opSet); |
11 % if ~isa(diffOp.D, 'function_handle') | 11 % if ~isa(diffOp.D, 'function_handle') |
12 % D_flux = @(v) diffOp.D*v; | 12 % D_flux = @(v) diffOp.D*v; |
13 % else | 13 % else |
14 % D_flux = diffOp.D; | 14 % D_flux = diffOp.D; |
15 % end | 15 % end |
16 | 16 |
17 % DiffOp for flux in residual viscosity. Due to sign conventions of the implemented schemes, we need to | 17 % DiffOp for flux in residual viscosity. Due to sign conventions of the implemented schemes, we need to |
18 % change the sign. | 18 % change the sign. |
19 D_flux = @(v) -D_flux(v); | 19 D_flux = @(v) -D_res(v); |
20 % DiffOp for time derivative in residual viscosity | 20 % DiffOp for time derivative in residual viscosity |
21 DvDt = D; | 21 DvDt = D; |
22 end | 22 end |
23 | 23 |
24 function [D, penalties] = constructFluxDiffOp(scheme, g, order, schemeParams, opSet, BCs) | 24 function [D, penalties] = constructFluxDiffOp(scheme, g, order, schemeParams, opSet, BCs) |