/[MITgcm]/MITgcm/utils/cs_grid/split_C_cub.m
ViewVC logotype

Contents of /MITgcm/utils/cs_grid/split_C_cub.m

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


Revision 1.2 - (show annotations) (download)
Thu Sep 15 16:51:13 2005 UTC (18 years ago) by jmc
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +0 -0 lines
FILE REMOVED
moved from utils/cs_grid to utils/matlab/cs_grid.

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 dims=size(v3d);
14 nx=dims(1); ny=dims(2);
15 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
25 %- split on to 6 tiles with overlap in i+1 & j+1 :
26 v3d=reshape(v3d,[nx ny nr]);
27 v6t=zeros(nye,nye,6,nr);
28
29 if kad == 0,
30 v6t=permute(reshape(v3d,[ny 6 ny nr]),[1 3 2 4]);
31 else
32 for n=1:6,
33 v6t([2:nyp],[2:nyp],n,:)=v3d([(n-1)*ny+1:n*ny],[1:ny],:);
34 end
35
36 %- add overlap in i=1 & j=1 :
37
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
55 end
56
57 %- add overlap in i=ny+1 & j=ny+1 :
58 if kad == 2,
59 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
82 end
83
84 %- 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 end
91
92 return

  ViewVC Help
Powered by ViewVC 1.1.22