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