/[MITgcm]/MITgcm_contrib/enderton/Diagnostics/DiagUtility/split_C_cub.m
ViewVC logotype

Annotation of /MITgcm_contrib/enderton/Diagnostics/DiagUtility/split_C_cub.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Mon Jan 31 15:43:29 2005 UTC (20 years, 5 months ago) by enderton
Branch: MAIN
 o Initial check in.

1 enderton 1.1 function [v6t] = split_C_cub(v3d,kad)
2     % [v6t] = split_C_cub(v3d,[kad])
3     %---------------------------------------------
4     % split 2d/3d arrays V, center, to 2d/3d x 6 faces
5     % and (kad=1): add 1 column + 1 row <== at the begining !!!
6     % => output is v6t(ny+1,ny+1,[nr],6)
7     % and (kad=2): add also 1 column + 1 row <== at the end !!!
8     % => output is v6t(ny+2,ny+2,[nr],6)
9     %----------------------------------------------
10     if nargin < 2, kad=1; end
11     if kad~=0 & kad~=1 & kad~=2, fprintf('kad= %f => Bad value',kad); return;end
12     %--
13     dim=length(size(v3d));
14     if dim == 2, nr=1; [nx ny]=size(v3d) ; else [nx ny nr]=size(v3d) ; end
15     nyp=ny+1; n2p=ny+2; nye=ny+kad;
16     %=================================================================
17    
18     if dim == 2,
19    
20     %- split on to 6 tiles with overlap in i+1 & j+1 :
21     v6t=zeros(nye,nye,6);
22    
23     if kad == 0,
24     for n=1:6,
25     v6t([1:ny],[1:ny],n)=v3d([(n-1)*ny+1:n*ny],[1:ny]);
26     end
27     else
28     for n=1:6,
29     v6t([2:nyp],[2:nyp],n)=v3d([(n-1)*ny+1:n*ny],[1:ny]);
30     end
31    
32     %- add overlap in i=1 & j=1 :
33     %v6t(1,[2:nyp], 1)=v3d([5*ny:-1:1+(5-1)*ny],ny);
34     %v6t(1,[2:nyp], 2)=v3d(1*ny,[1:ny]);
35     %v6t(1,[2;nyp], 3)=v3d([1*ny:-1:1+(1-1)*ny],ny);
36     %v6t(1,[2:nyp], 4)=v3d(3*ny,[1:ny]);
37     %v6t(1,[2:nyp], 5)=v3d([3*ny:-1:1+(3-1)*ny],ny);
38     %v6t(1,[2:nyp], 6)=v3d(5*ny,[1:ny]);
39    
40     %v6t([2:nyp],1, 1)=v3d([1+(6-1)*ny:6*ny],ny);
41     %v6t([2:nyp],1, 2)=v3d(6*ny,[ny:-1:1]);
42     %v6t([2:nyp],1, 3)=v3d([1+(2-1)*ny:2*ny],ny);
43     %v6t([2:nyp],1, 4)=v3d(2*ny,[ny:-1:1]);
44     %v6t([2:nyp],1, 5)=v3d([1+(4-1)*ny:4*ny],ny);
45     %v6t([2:nyp],1, 6)=v3d(4*ny,[ny:-1:1]);
46    
47     v6t(1,[2:nyp], 1)=v6t([nyp:-1:2],nyp,5);
48     v6t(1,[2:nyp], 3)=v6t([nyp:-1:2],nyp,1);
49     v6t(1,[2:nyp], 5)=v6t([nyp:-1:2],nyp,3);
50     v6t(1,[2:nyp], 2)=v6t(nyp,[2:nyp],1);
51     v6t(1,[2:nyp], 4)=v6t(nyp,[2:nyp],3);
52     v6t(1,[2:nyp], 6)=v6t(nyp,[2:nyp],5);
53    
54     v6t([1:nyp],1, 1)=v6t([1:nyp],nyp,6);
55     v6t([1:nyp],1, 3)=v6t([1:nyp],nyp,2);
56     v6t([1:nyp],1, 5)=v6t([1:nyp],nyp,4);
57     v6t([2:nyp],1, 2)=v6t(nyp,[nyp:-1:2],6);
58     v6t([2:nyp],1, 4)=v6t(nyp,[nyp:-1:2],2);
59     v6t([2:nyp],1, 6)=v6t(nyp,[nyp:-1:2],4);
60     v6t(1,1,2)=v6t(nyp,2,1);
61     v6t(1,1,4)=v6t(nyp,2,3);
62     v6t(1,1,6)=v6t(nyp,2,5);
63    
64     end
65    
66     %- add overlap in i=ny+1 & j=ny+1 :
67     if kad == 2,
68     v6t(n2p,[1:nyp], 1)=v6t(2,[1:nyp],2);
69     v6t(n2p,[1:nyp], 3)=v6t(2,[1:nyp],4);
70     v6t(n2p,[1:nyp], 5)=v6t(2,[1:nyp],6);
71     v6t(n2p,[2:n2p], 2)=v6t([nyp:-1:1],2,4);
72     v6t(n2p,[2:n2p], 4)=v6t([nyp:-1:1],2,6);
73     v6t(n2p,[2:n2p], 6)=v6t([nyp:-1:1],2,2);
74     v6t(n2p,n2p,1)=v6t(2,2,3);
75     v6t(n2p,n2p,3)=v6t(2,2,5);
76     v6t(n2p,n2p,5)=v6t(2,2,1);
77     v6t(n2p,1,2)=v6t(nyp,1,6);
78     v6t(n2p,1,4)=v6t(nyp,1,2);
79     v6t(n2p,1,6)=v6t(nyp,1,4);
80    
81     v6t([1:n2p],n2p, 2)=v6t([1:n2p],2,3);
82     v6t([1:n2p],n2p, 4)=v6t([1:n2p],2,5);
83     v6t([1:n2p],n2p, 6)=v6t([1:n2p],2,1);
84     v6t([2:n2p],n2p, 1)=v6t(2,[nyp:-1:1],3);
85     v6t([2:n2p],n2p, 3)=v6t(2,[nyp:-1:1],5);
86     v6t([2:n2p],n2p, 5)=v6t(2,[nyp:-1:1],1);
87     v6t(1,n2p,1)=v6t(1,nyp,5);
88     v6t(1,n2p,3)=v6t(1,nyp,1);
89     v6t(1,n2p,5)=v6t(1,nyp,3);
90    
91     end
92    
93     else
94    
95     %- split on to 6 tile with overlap in i+1 & j+1 :
96     v6t=zeros(nyp,nyp,nr,6);
97    
98     for n=1:6,
99     v6t([2:nyp],[2:nyp],:,n)=v3d([(n-1)*ny+1:n*ny],[1:ny],:);
100     end
101    
102     v6t(1,[1:ny],:,1)=v3d([5*ny:-1:1+(5-1)*ny],ny,:);
103     v6t(1,[1:ny],:,2)=v3d(1*ny,[1:ny],:);
104     v6t(1,[1:ny],:,3)=v3d([1*ny:-1:1+(1-1)*ny],ny,:);
105     v6t(1,[1:ny],:,4)=v3d(3*ny,[1:ny],:);
106     v6t(1,[1:ny],:,5)=v3d([3*ny:-1:1+(3-1)*ny],ny,:);
107     v6t(1,[1:ny],:,6)=v3d(5*ny,[1:ny],:);
108    
109     v6t([1:ny],1,:,1)=v3d([1+(6-1)*ny:6*ny],ny,:);
110     v6t([1:ny],1,:,2)=v3d(6*ny,[ny:-1:1],:);
111     v6t([1:ny],1,:,3)=v3d([1+(2-1)*ny:2*ny],ny,:);
112     v6t([1:ny],1,:,4)=v3d(2*ny,[ny:-1:1],:);
113     v6t([1:ny],1,:,5)=v3d([1+(4-1)*ny:4*ny],ny,:);
114     v6t([1:ny],1,:,6)=v3d(4*ny,[ny:-1:1],:);
115    
116     end
117    
118     return

  ViewVC Help
Powered by ViewVC 1.1.22