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

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

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


Revision 1.1 - (show annotations) (download)
Tue May 3 02:02:22 2005 UTC (18 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57o_post, checkpoint57h_post, checkpoint57l_post, checkpoint57h_done, checkpoint57q_post, checkpoint57j_post, checkpoint57k_post, checkpoint57n_post, checkpoint57i_post, checkpoint57m_post, checkpoint57p_post, checkpoint57h_pre
some tools (matlab scripts for now) specific to the Cubed-Sphere grid.

1 function [z6t] = split_Z_cub(z3d)
2 % [z6t] = split_Z_cub(z3d)
3 %---------------------------------------------
4 % split 2d/3d arrays Z to 2d/3d x 6 faces
5 % and add 1 column + 1 row
6 % output is z6t(ny+1,ny+1,[nr],6)
7 % take the average value (over the 3 neighbours) for the 2 missing corners
8 %----------------------------------------------
9 dim=length(size(z3d));
10 if dim == 2, nr=1; [nx ny]=size(z3d) ; else [nx ny nr]=size(z3d) ; end
11 nyp=ny+1;
12 %=================================================================
13
14 if dim == 2,
15
16 %- split on to 6 tile with overlap in i+1 & j+1 :
17 z6t=zeros(nyp,ny+1,6);
18
19 for n=1:6,
20 z6t([1:ny],[1:ny],n)=z3d([(n-1)*ny+1:n*ny],[1:ny]);
21 end
22
23 z6t(nyp,[1:ny], 1)=z3d(1+ny,[1:ny]);
24 z6t(nyp,[2:nyp],2)=z3d([4*ny:-1:1+(4-1)*ny],1);
25 z6t(nyp,[1:ny], 3)=z3d(1+3*ny,[1:ny]);
26 z6t(nyp,[2:nyp],4)=z3d([6*ny:-1:1+(6-1)*ny],1);
27 z6t(nyp,[1:ny], 5)=z3d(1+5*ny,[1:ny]);
28 z6t(nyp,[2:nyp],6)=z3d([2*ny:-1:1+(2-1)*ny],1);
29
30 z6t([2:nyp],nyp,1)=z3d(1+2*ny,[ny:-1:1]);
31 z6t([1:ny], nyp,2)=z3d([(3-1)*ny+1:3*ny],1);
32 z6t([2:nyp],nyp,3)=z3d(1+4*ny,[ny:-1:1]);
33 z6t([1:ny], nyp,4)=z3d([(5-1)*ny+1:5*ny],1);
34 z6t([2:nyp],nyp,5)=z3d(1+0*ny,[ny:-1:1]);
35 z6t([1:ny], nyp,6)=z3d([(1-1)*ny+1:1*ny],1);
36
37 %- missing corner :
38 zz1=z3d(2*ny,1)+z3d(4*ny,1)+z3d(6*ny,1);
39 zz1=zz1/3;
40 z6t(nyp,1,2)=zz1;
41 z6t(nyp,1,4)=zz1;
42 z6t(nyp,1,6)=zz1;
43
44 zz2=z3d(1,ny)+z3d(1+2*ny,ny)+z3d(1+4*ny,ny);
45 zz2=zz2/3;
46 z6t(1,nyp,1)=zz2;
47 z6t(1,nyp,3)=zz2;
48 z6t(1,nyp,5)=zz2;
49
50 else
51
52 %- split on to 6 tile with overlap in i+1 & j+1 :
53 z6t=zeros(ny+1,ny+1,nr,6);
54
55 for n=1:6,
56 z6t([1:ny],[1:ny],:,n)=z3d([(n-1)*ny+1:n*ny],[1:ny],:);
57 end
58
59 z6t(nyp,[1:ny], :,1)=z3d(1+ny,[1:ny],:);
60 z6t(nyp,[2:nyp],:,2)=z3d([4*ny:-1:1+(4-1)*ny],1,:);
61 z6t(nyp,[1:ny], :,3)=z3d(1+3*ny,[1:ny],:);
62 z6t(nyp,[2:nyp],:,4)=z3d([6*ny:-1:1+(6-1)*ny],1,:);
63 z6t(nyp,[1:ny], :,5)=z3d(1+5*ny,[1:ny],:);
64 z6t(nyp,[2:nyp],:,6)=z3d([2*ny:-1:1+(2-1)*ny],1,:);
65
66 z6t([2:nyp],nyp,:,1)=z3d(1+2*ny,[ny:-1:1],:);
67 z6t([1:ny], nyp,:,2)=z3d([(3-1)*ny+1:3*ny],1,:);
68 z6t([2:nyp],nyp,:,3)=z3d(1+4*ny,[ny:-1:1],:);
69 z6t([1:ny], nyp,:,4)=z3d([(5-1)*ny+1:5*ny],1,:);
70 z6t([2:nyp],nyp,:,5)=z3d(1+0*ny,[ny:-1:1],:);
71 z6t([1:ny], nyp,:,6)=z3d([(1-1)*ny+1:1*ny],1,:);
72
73 %- missing corner :
74 zz1=zeros(1,nr); zz2=zeros(1,nr);
75 zz1=z3d(2*ny,1,:)+z3d(4*ny,1,:)+z3d(6*ny,1,:);
76 zz1=zz1/3;
77 z6t(nyp,1,:,2)=zz1;
78 z6t(nyp,1,:,4)=zz1;
79 z6t(nyp,1,:,6)=zz1;
80
81 zz2=z3d(ny,1,:)+z3d(ny,1+2*ny,:)+z3d(ny,1+4*ny,:)+z3d(6*ny,1,:);
82 zz2=zz2/3;
83 z6t(1,nyp,:,1)=zz2;
84 z6t(1,nyp,:,3)=zz2;
85 z6t(1,nyp,:,5)=zz2;
86
87 end
88
89 return

  ViewVC Help
Powered by ViewVC 1.1.22