comparison +rv/ResidualViscosity.m @ 1186:3364a51f0d9e feature/rv

Add 1d shapiro filter function to ResidualViscosity
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Fri, 05 Jul 2019 19:08:37 +0200
parents beecb580c5bf
children 7173b6fd4063
comparison
equal deleted inserted replaced
1185:abb1b3ab8c23 1186:3364a51f0d9e
30 obj.Mres = obj.Cres*obj.h^2; 30 obj.Mres = obj.Cres*obj.h^2;
31 obj.Mfirst = obj.Cmax*obj.h; 31 obj.Mfirst = obj.Cmax*obj.h;
32 switch postProcess 32 switch postProcess
33 case 'none' 33 case 'none'
34 obj.fRes = @(v,dvdt) obj.Mres*abs(dvdt + obj.Df(v))./obj.normalization(v); 34 obj.fRes = @(v,dvdt) obj.Mres*abs(dvdt + obj.Df(v))./obj.normalization(v);
35 case 'filter'
36 F = obj.shapiroFilter(obj.grid, order);
37 obj.fRes = @(v,dvdt) F*obj.Mres*abs(dvdt + obj.Df(v))./obj.normalization(v);
35 case 'maximum neighbors' 38 case 'maximum neighbors'
36 switch grid.D() 39 switch grid.D()
37 case 1 40 case 1
38 obj.fRes = @(v,dvdt) movmax(obj.Mres*abs(dvdt + obj.Df(v))./obj.normalization(v),3); 41 obj.fRes = @(v,dvdt) movmax(obj.Mres*abs(dvdt + obj.Df(v))./obj.normalization(v),3);
39 case 2 42 case 2
71 umax = max(movmax(uMatrix,3,1),movmax(uMatrix,3,2)); 74 umax = max(movmax(uMatrix,3,1),movmax(uMatrix,3,2));
72 umin = min(movmin(uMatrix,3,1),movmin(uMatrix,3,2)); 75 umin = min(movmin(uMatrix,3,1),movmin(uMatrix,3,2));
73 minmaxDiff = umax - umin; 76 minmaxDiff = umax - umin;
74 minmaxDiff = reshape(minmaxDiff',g.N(),1); 77 minmaxDiff = reshape(minmaxDiff',g.N(),1);
75 end 78 end
79 function F = shapiroFilter(grid, order)
80 switch order
81 case 2
82 F = spdiags(repmat([1 2 1],grid.m(1),1), -1:1, grid.m(1), grid.m(1));
83 case 4
84 F = spdiags(repmat([-1 4 10 4 -1],grid.m(1),1), -2:2, grid.m(1), grid.m(1));
85 case 6
86 F = spdiags(repmat([1 -6 15 44 15 -6 1],grid.m(1),1), -3:3, grid.m(1), grid.m(1));
87 case 8
88 F = spdiags(repmat([-1 8 -28 56 186 56 -28 8 -1],grid.m(1),1), -4:4, grid.m(1), grid.m(1));
89 end
90 F = 1/2^order * F;
91 % Fx = spdiags(repmat(1/(mid+2)*[1 mid 1],g.m(1),1), -1:1, g.m(1), g.m(1));
92 % Fx(1,:) = 0;
93 % Fx(1,1:2) = 1/(mid+1)*[mid 1];
94 % Fx(end,:) = 0;
95 % Fx(end,end-1:end) = 1/(mid+1)*[1 mid];
96 % Fy = spdiags(repmat(1/(mid+2)*[1 mid 1],g.m(2),1), -1:1, g.m(2), g.m(2));
97 % Fy(1,:) = 0;
98 % Fy(1,1:2) = 1/(mid+1)*[mid 1];
99 % Fy(end,:) = 0;
100 % Fy(end,end-1:end) = 1/(mid+1)*[1 mid];
101 % Ix = speye(g.m(1));
102 % Iy = speye(g.m(1));
103 % F = kron(Fx, Iy) + kron(Ix, Fy);
104 end
76 end 105 end
106
77 end 107 end