/[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.2 - (hide annotations) (download)
Tue Oct 18 19:22:15 2005 UTC (19 years, 9 months ago) by enderton
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +58 -84 lines
Remove old copy of rdmnc.m

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 enderton 1.2 dims=size(v3d);
14     nx=dims(1); ny=dims(2);
15 enderton 1.1 nyp=ny+1; n2p=ny+2; nye=ny+kad;
16 enderton 1.2 if length(dims) == 2,
17     nr=1;
18     %fprintf('split_C_cub: kad= %i ; output dim: %i %i %i \n',kad,nye,nye,6);
19     else
20     nr=prod(dims(3:end));
21     %fprintf('split_C_cub: kad= %i ; output dim: %i %i %i %i \n',kad,nye,nye,nr,6);
22     end
23 enderton 1.1 %=================================================================
24    
25     %- split on to 6 tiles with overlap in i+1 & j+1 :
26 enderton 1.2 v3d=reshape(v3d,[nx ny nr]);
27     v6t=zeros(nye,nye,6,nr);
28 enderton 1.1
29     if kad == 0,
30 enderton 1.2 v6t=permute(reshape(v3d,[ny 6 ny nr]),[1 3 2 4]);
31 enderton 1.1 else
32     for n=1:6,
33 enderton 1.2 v6t([2:nyp],[2:nyp],n,:)=v3d([(n-1)*ny+1:n*ny],[1:ny],:);
34 enderton 1.1 end
35    
36     %- add overlap in i=1 & j=1 :
37 enderton 1.2
38     v6t(1,[2:nyp], 1,:)=v6t([nyp:-1:2],nyp,5,:);
39     v6t(1,[2:nyp], 3,:)=v6t([nyp:-1:2],nyp,1,:);
40     v6t(1,[2:nyp], 5,:)=v6t([nyp:-1:2],nyp,3,:);
41     v6t(1,[2:nyp], 2,:)=v6t(nyp,[2:nyp],1,:);
42     v6t(1,[2:nyp], 4,:)=v6t(nyp,[2:nyp],3,:);
43     v6t(1,[2:nyp], 6,:)=v6t(nyp,[2:nyp],5,:);
44    
45     v6t([1:nyp],1, 1,:)=v6t([1:nyp],nyp,6,:);
46     v6t([1:nyp],1, 3,:)=v6t([1:nyp],nyp,2,:);
47     v6t([1:nyp],1, 5,:)=v6t([1:nyp],nyp,4,:);
48     v6t([2:nyp],1, 2,:)=v6t(nyp,[nyp:-1:2],6,:);
49     v6t([2:nyp],1, 4,:)=v6t(nyp,[nyp:-1:2],2,:);
50     v6t([2:nyp],1, 6,:)=v6t(nyp,[nyp:-1:2],4,:);
51     v6t(1,1,2,:)=v6t(nyp,2,1,:);
52     v6t(1,1,4,:)=v6t(nyp,2,3,:);
53     v6t(1,1,6,:)=v6t(nyp,2,5,:);
54 enderton 1.1
55     end
56    
57     %- add overlap in i=ny+1 & j=ny+1 :
58     if kad == 2,
59 enderton 1.2 v6t(n2p,[1:nyp], 1,:)=v6t(2,[1:nyp],2,:);
60     v6t(n2p,[1:nyp], 3,:)=v6t(2,[1:nyp],4,:);
61     v6t(n2p,[1:nyp], 5,:)=v6t(2,[1:nyp],6,:);
62     v6t(n2p,[2:n2p], 2,:)=v6t([nyp:-1:1],2,4,:);
63     v6t(n2p,[2:n2p], 4,:)=v6t([nyp:-1:1],2,6,:);
64     v6t(n2p,[2:n2p], 6,:)=v6t([nyp:-1:1],2,2,:);
65     v6t(n2p,n2p,1,:)=v6t(2,2,3,:);
66     v6t(n2p,n2p,3,:)=v6t(2,2,5,:);
67     v6t(n2p,n2p,5,:)=v6t(2,2,1,:);
68     v6t(n2p,1,2,:)=v6t(nyp,1,6,:);
69     v6t(n2p,1,4,:)=v6t(nyp,1,2,:);
70     v6t(n2p,1,6,:)=v6t(nyp,1,4,:);
71    
72     v6t([1:n2p],n2p, 2,:)=v6t([1:n2p],2,3,:);
73     v6t([1:n2p],n2p, 4,:)=v6t([1:n2p],2,5,:);
74     v6t([1:n2p],n2p, 6,:)=v6t([1:n2p],2,1,:);
75     v6t([2:n2p],n2p, 1,:)=v6t(2,[nyp:-1:1],3,:);
76     v6t([2:n2p],n2p, 3,:)=v6t(2,[nyp:-1:1],5,:);
77     v6t([2:n2p],n2p, 5,:)=v6t(2,[nyp:-1:1],1,:);
78     v6t(1,n2p,1,:)=v6t(1,nyp,5,:);
79     v6t(1,n2p,3,:)=v6t(1,nyp,1,:);
80     v6t(1,n2p,5,:)=v6t(1,nyp,3,:);
81 enderton 1.1
82     end
83    
84 enderton 1.2 %- Put back to standard shape:
85     v6t=permute(v6t,[1 2 4 3]);
86     if length(dims) == 2,
87     v6t=squeeze(v6t);
88     else
89     v6t=reshape(v6t,[nye nye dims(3:end) 6]);
90 enderton 1.1 end
91    
92     return

  ViewVC Help
Powered by ViewVC 1.1.22