1 |
function [z6t] = split_Z_cub(z3d) |
2 |
% [z6t] = split_Z_cub(z3d) |
3 |
%--------------------------------------------- |
4 |
% split 2d/3d arrays Z to 2d/3d x 6 faces |
5 |
% and add 1 column + 1 row |
6 |
% output is z6t(ny+1,ny+1,[nr],6) |
7 |
% take the average value (over the 3 neighbours) for the 2 missing corners |
8 |
%---------------------------------------------- |
9 |
dim=length(size(z3d)); |
10 |
if dim == 2, nr=1; [nx ny]=size(z3d) ; else [nx ny nr]=size(z3d) ; end |
11 |
nyp=ny+1; |
12 |
%================================================================= |
13 |
|
14 |
if dim == 2, |
15 |
|
16 |
%- split on to 6 tile with overlap in i+1 & j+1 : |
17 |
z6t=zeros(nyp,ny+1,6); |
18 |
|
19 |
for n=1:6, |
20 |
z6t([1:ny],[1:ny],n)=z3d([(n-1)*ny+1:n*ny],[1:ny]); |
21 |
end |
22 |
|
23 |
z6t(nyp,[1:ny], 1)=z3d(1+ny,[1:ny]); |
24 |
z6t(nyp,[2:nyp],2)=z3d([4*ny:-1:1+(4-1)*ny],1); |
25 |
z6t(nyp,[1:ny], 3)=z3d(1+3*ny,[1:ny]); |
26 |
z6t(nyp,[2:nyp],4)=z3d([6*ny:-1:1+(6-1)*ny],1); |
27 |
z6t(nyp,[1:ny], 5)=z3d(1+5*ny,[1:ny]); |
28 |
z6t(nyp,[2:nyp],6)=z3d([2*ny:-1:1+(2-1)*ny],1); |
29 |
|
30 |
z6t([2:nyp],nyp,1)=z3d(1+2*ny,[ny:-1:1]); |
31 |
z6t([1:ny], nyp,2)=z3d([(3-1)*ny+1:3*ny],1); |
32 |
z6t([2:nyp],nyp,3)=z3d(1+4*ny,[ny:-1:1]); |
33 |
z6t([1:ny], nyp,4)=z3d([(5-1)*ny+1:5*ny],1); |
34 |
z6t([2:nyp],nyp,5)=z3d(1+0*ny,[ny:-1:1]); |
35 |
z6t([1:ny], nyp,6)=z3d([(1-1)*ny+1:1*ny],1); |
36 |
|
37 |
%- missing corner : |
38 |
zz1=z3d(2*ny,1)+z3d(4*ny,1)+z3d(6*ny,1); |
39 |
zz1=zz1/3; |
40 |
z6t(nyp,1,2)=zz1; |
41 |
z6t(nyp,1,4)=zz1; |
42 |
z6t(nyp,1,6)=zz1; |
43 |
|
44 |
zz2=z3d(1,ny)+z3d(1+2*ny,ny)+z3d(1+4*ny,ny); |
45 |
zz2=zz2/3; |
46 |
z6t(1,nyp,1)=zz2; |
47 |
z6t(1,nyp,3)=zz2; |
48 |
z6t(1,nyp,5)=zz2; |
49 |
|
50 |
else |
51 |
|
52 |
%- split on to 6 tile with overlap in i+1 & j+1 : |
53 |
z6t=zeros(ny+1,ny+1,nr,6); |
54 |
|
55 |
for n=1:6, |
56 |
z6t([1:ny],[1:ny],:,n)=z3d([(n-1)*ny+1:n*ny],[1:ny],:); |
57 |
end |
58 |
|
59 |
z6t(nyp,[1:ny], :,1)=z3d(1+ny,[1:ny],:); |
60 |
z6t(nyp,[2:nyp],:,2)=z3d([4*ny:-1:1+(4-1)*ny],1,:); |
61 |
z6t(nyp,[1:ny], :,3)=z3d(1+3*ny,[1:ny],:); |
62 |
z6t(nyp,[2:nyp],:,4)=z3d([6*ny:-1:1+(6-1)*ny],1,:); |
63 |
z6t(nyp,[1:ny], :,5)=z3d(1+5*ny,[1:ny],:); |
64 |
z6t(nyp,[2:nyp],:,6)=z3d([2*ny:-1:1+(2-1)*ny],1,:); |
65 |
|
66 |
z6t([2:nyp],nyp,:,1)=z3d(1+2*ny,[ny:-1:1],:); |
67 |
z6t([1:ny], nyp,:,2)=z3d([(3-1)*ny+1:3*ny],1,:); |
68 |
z6t([2:nyp],nyp,:,3)=z3d(1+4*ny,[ny:-1:1],:); |
69 |
z6t([1:ny], nyp,:,4)=z3d([(5-1)*ny+1:5*ny],1,:); |
70 |
z6t([2:nyp],nyp,:,5)=z3d(1+0*ny,[ny:-1:1],:); |
71 |
z6t([1:ny], nyp,:,6)=z3d([(1-1)*ny+1:1*ny],1,:); |
72 |
|
73 |
%- missing corner : |
74 |
zz1=zeros(1,nr); zz2=zeros(1,nr); |
75 |
zz1=z3d(2*ny,1,:)+z3d(4*ny,1,:)+z3d(6*ny,1,:); |
76 |
zz1=zz1/3; |
77 |
z6t(nyp,1,:,2)=zz1; |
78 |
z6t(nyp,1,:,4)=zz1; |
79 |
z6t(nyp,1,:,6)=zz1; |
80 |
|
81 |
zz2=z3d(ny,1,:)+z3d(ny,1+2*ny,:)+z3d(ny,1+4*ny,:)+z3d(6*ny,1,:); |
82 |
zz2=zz2/3; |
83 |
z6t(1,nyp,:,1)=zz2; |
84 |
z6t(1,nyp,:,3)=zz2; |
85 |
z6t(1,nyp,:,5)=zz2; |
86 |
|
87 |
end |
88 |
|
89 |
return |