Mercurial > repos > public > sbplib
comparison +rv/+diffops/constructDiffOpsMultiGrid.m @ 1172:9dd10dcff128 feature/rv
Dont return penalty terms from operators on coarse grid. One can use the penalty terms constructed for the fine grid
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Fri, 28 Jun 2019 13:22:03 +0200 |
parents | 393ed30866a1 |
children | 270611e08398 |
comparison
equal
deleted
inserted
replaced
1171:393ed30866a1 | 1172:9dd10dcff128 |
---|---|
12 'D_t', D_t,... | 12 'D_t', D_t,... |
13 'penalties_scheme', penalties_scheme,... | 13 'penalties_scheme', penalties_scheme,... |
14 'penalties_res', penalties_res); | 14 'penalties_res', penalties_res); |
15 end | 15 end |
16 | 16 |
17 % TODO: Not clear if this is needed | |
18 % TODO: Only works for equidistant grids | 17 % TODO: Only works for equidistant grids |
19 function [D_coarse, penalties_coarse] = constructCoarserGridDiffOp(scheme, g, schemeOrder, schemeParams, opSet, BCs) | 18 function D_coarse = constructCoarserGridDiffOp(scheme, g, schemeOrder, schemeParams, opSet, BCs) |
20 m = g.m(); | 19 m = g.m(); |
21 lim = g.lim(); | 20 lim = g.lim(); |
22 m_coarse = (m-1)/2 + 1; | 21 m_coarse = (m-1)/2 + 1; |
23 g_coarse = grid.equidistant(m_coarse, lim{1}); | 22 g_coarse = grid.equidistant(m_coarse, lim{1}); |
24 [D_coarse, penalties_coarse] = rv.diffops.constructFluxDiffOpWithClosures(scheme, g_coarse, schemeOrder, schemeParams, opSet, BCs); | 23 D_coarse = rv.diffops.constructFluxDiffOpWithClosures(scheme, g_coarse, schemeOrder, schemeParams, opSet, BCs); |
25 x = g.x{1}; | 24 x = g.x{1}; |
26 x_coarse = x(1:2:end); | 25 x_coarse = x(1:2:end); |
27 % TODO: Fix interpolation | 26 % TODO: Fix interpolation |
28 D_coarse = @(v) interp1(x_coarse,D_coarse(v(1:2:end)),x,'spline'); | 27 D_coarse = @(v) interp1(x_coarse,D_coarse(v(1:2:end)),x,'spline'); |
29 end | 28 end |