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)