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

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

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

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

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

  ViewVC Help
Powered by ViewVC 1.1.22