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

Contents 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 - (show annotations) (download)
Mon Jan 31 15:43:29 2005 UTC (20 years, 6 months ago) by enderton
Branch: MAIN
 o Initial check in.

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