plot_fmw_3d.m
[wrf-fire-matlab.git] / quicwind / restriction_2d.m
bloba616739bfa290b2d7fa9d7a4700a8631fb81fe01
1 function y=restriction_2d(x)
2     % in:
3     %    x   array
4     % out
5     %    y   bilinear average on twice coarser grid
6     % this is transpose of prolongation with weighting
7     
8     % to test: 
9     % x=magic(2); restriction_2d(x)
11     % map vector to 2d grid with zero boundary
12     % average from neighbors with the same weights as prolongation
13     % scaled to sum one
14     % y = zeros(size(xx(2:2:end-1,2:2:end-1)));
15     if any(mod(size(x),2))==0
16         error('restriction_2d: input dimensions must be odd')
17     end
18     tw=1/(1+4*1/2+4*1/4);
19     i1=0; i2=0;
20     y = tw*x(2+i1:2:end-1+i1,2+i2:2:end-1+i2); 
21     for i1=-1:1
22         for i2=-1:1
23             if (i1 ~=0) || (i2 ~=0) 
24                 w = tw/((1+abs(i1))*(1+abs(i2)));
25                 y = y + w*x(2+i1:2:end-1+i1,2+i2:2:end-1+i2);
26             end
27         end
28     end
29 end