/[MITgcm]/MITgcm_contrib/eh3/llc/ecco-godae/climatology/plot_mesh.m
ViewVC logotype

Annotation of /MITgcm_contrib/eh3/llc/ecco-godae/climatology/plot_mesh.m

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


Revision 1.1 - (hide annotations) (download)
Mon Apr 30 21:49:15 2007 UTC (18 years, 3 months ago) by heimbach
Branch: MAIN
Add to rep.

1 heimbach 1.1 % Load six facet mesh *.mitgrid files
2     fn_in='llc90x90x360_lonshift';
3     fg=load_mitgrid_ct('.',fn_in,90,90,360);
4     fn_out='llc90x90x360_lonshift_correctedgevals';
5    
6     % Now fix up facet edges to be correct mesh lengths
7     mg=fg;
8     a6=0.;
9     % o east-west face lhs
10     % dxV
11     mg(1).dxV( 1,1:end)=fg(1).dxV( 1,1:end)+fg(5).dyU(end:-1:1, end)';
12     mg(1).dxV(end,1:end)=fg(1).dxV(end,1:end)+fg(2).dxV( 1,1:end) ;
13     mg(2).dxV( 1,1:end)=fg(2).dxV( 1,1:end)+fg(1).dxV( end,1:end) ;
14     mg(2).dxV(end,1:end)=fg(2).dxV(end,1:end)+fg(4).dyU(end:-1:1, 1)';
15     mg(3).dxV( 1,1:end)=fg(3).dxV( 1,1:end)+fg(1).dyU(end:-1:1, 1)';
16     mg(3).dxV(end,1:end)=fg(3).dxV(end,1:end)+fg(4).dxV( end,1:end) ;
17     mg(4).dxV( 1,1:end)=fg(4).dxV( 1,1:end)+fg(3).dxV( end,1:end) ;
18     mg(4).dxV(end,1:end)=fg(4).dxV(end,1:end)+fg(6).dyU(end:-1:1, 1)'*a6;
19     mg(5).dxV( 1,1:end)=fg(5).dxV( 1,1:end)+fg(3).dyU(end:-1:1, end)';
20     mg(5).dxV(end,1:end)=fg(5).dxV(end,1:end)+fg(6).dxV( 1,1:end)*a6 ;
21     mg(6).dxV( 1,1:end)=fg(6).dxV( 1,1:end)+fg(5).dxV( end,1:end) ;
22     mg(6).dxV(end,1:end)=fg(6).dxV(end,1:end)+fg(2).dyU(end:-1:1, 1)';
23     % dxC
24     mg(1).dxC( 1,1:end-1)=fg(1).dxC( 1,1:end-1)+fg(5).dyC(end-1:-1:1, end)';
25     mg(1).dxC(end,1:end-1)=fg(1).dxC(end,1:end-1)+fg(2).dxC( 1,1:end-1) ;
26     mg(2).dxC( 1,1:end-1)=fg(2).dxC( 1,1:end-1)+fg(1).dxC( end,1:end-1) ;
27     mg(2).dxC(end,1:end-1)=fg(2).dxC(end,1:end-1)+fg(4).dyC(end-1:-1:1, 1)';
28     mg(3).dxC( 1,1:end-1)=fg(3).dxC( 1,1:end-1)+fg(1).dyC(end-1:-1:1, 1)';
29     mg(3).dxC(end,1:end-1)=fg(3).dxC(end,1:end-1)+fg(4).dxC( end,1:end-1) ;
30     mg(4).dxC( 1,1:end-1)=fg(4).dxC( 1,1:end-1)+fg(3).dxC( end,1:end-1) ;
31     mg(4).dxC(end,1:end-1)=fg(4).dxC(end,1:end-1)+fg(6).dyC(end-1:-1:1, 1)'*a6;
32     mg(5).dxC( 1,1:end-1)=fg(5).dxC( 1,1:end-1)+fg(3).dyC(end-1:-1:1, end)';
33     mg(5).dxC(end,1:end-1)=fg(5).dxC(end,1:end-1)+fg(6).dxC( 1,1:end-1)*a6 ;
34     mg(6).dxC( 1,1:end-1)=fg(6).dxC( 1,1:end-1)+fg(5).dxC( end,1:end-1) ;
35     mg(6).dxC(end,1:end-1)=fg(6).dxC(end,1:end-1)+fg(2).dyC(end-1:-1:1, 1)';
36     % rAw
37     mg(1).rAw( 1,1:end-1)=fg(1).rAw( 1,1:end-1)+fg(5).rAs(end-1:-1:1, end)';
38     mg(1).rAw(end,1:end-1)=fg(1).rAw(end,1:end-1)+fg(2).rAw( 1,1:end-1) ;
39     mg(2).rAw( 1,1:end-1)=fg(2).rAw( 1,1:end-1)+fg(1).rAw( end,1:end-1) ;
40     mg(2).rAw(end,1:end-1)=fg(2).rAw(end,1:end-1)+fg(4).rAs(end-1:-1:1, 1)';
41     mg(3).rAw( 1,1:end-1)=fg(3).rAw( 1,1:end-1)+fg(1).rAs(end-1:-1:1, 1)';
42     mg(3).rAw(end,1:end-1)=fg(3).rAw(end,1:end-1)+fg(4).rAw( end,1:end-1) ;
43     mg(4).rAw( 1,1:end-1)=fg(4).rAw( 1,1:end-1)+fg(3).rAw( end,1:end-1) ;
44     mg(4).rAw(end,1:end-1)=fg(4).rAw(end,1:end-1)+fg(6).rAs(end-1:-1:1, 1)'*a6;
45     mg(5).rAw( 1,1:end-1)=fg(5).rAw( 1,1:end-1)+fg(3).rAs(end-1:-1:1, end)';
46     mg(5).rAw(end,1:end-1)=fg(5).rAw(end,1:end-1)+fg(6).rAw( 1,1:end-1)*a6 ;
47     mg(6).rAw( 1,1:end-1)=fg(6).rAw( 1,1:end-1)+fg(5).rAw( end,1:end-1) ;
48     mg(6).rAw(end,1:end-1)=fg(6).rAw(end,1:end-1)+fg(2).rAs(end-1:-1:1, 1)';
49     % rAz (west-east faces only, not corners or north-south faces)
50     mg(1).rAz( 1,1:end)=fg(1).rAz( 1,1:end)+fg(5).rAz(end:-1:1, end)';
51     mg(1).rAz(end,1:end)=fg(1).rAz(end,1:end)+fg(2).rAz( 1,1:end) ;
52     mg(2).rAz( 1,1:end)=fg(2).rAz( 1,1:end)+fg(1).rAz( end,1:end) ;
53     mg(2).rAz(end,1:end)=fg(2).rAz(end,1:end)+fg(4).rAz(end:-1:1, 1)';
54     mg(3).rAz( 1,1:end)=fg(3).rAz( 1,1:end)+fg(1).rAz(end:-1:1, 1)';
55     mg(3).rAz(end,1:end)=fg(3).rAz(end,1:end)+fg(4).rAz( end,1:end) ;
56     mg(4).rAz( 1,1:end)=fg(4).rAz( 1,1:end)+fg(3).rAz( end,1:end) ;
57     mg(4).rAz(end,1:end)=fg(4).rAz(end,1:end)+fg(6).rAz(end:-1:1, 1)'*a6;
58     mg(5).rAz( 1,1:end)=fg(5).rAz( 1,1:end)+fg(3).rAz(end:-1:1, end)';
59     mg(5).rAz(end,1:end)=fg(5).rAz(end,1:end)+fg(6).rAz( 1,1:end)*a6 ;
60     mg(6).rAz( 1,1:end)=fg(6).rAz( 1,1:end)+fg(5).rAz( end,1:end) ;
61     mg(6).rAz(end,1:end)=fg(6).rAz(end,1:end)+fg(2).rAz(end:-1:1, 1)';
62     % o north-south face lhs
63     % dyU
64     mg(1).dyU(1:end,end)=fg(1).dyU(1:end,end)+fg(3).dxV( 1,end:-1:1)';
65     mg(1).dyU(1:end, 1)=fg(1).dyU(1:end, 1)+fg(6).dyU(1:end, end)*a6;
66     mg(2).dyU(1:end,end)=fg(2).dyU(1:end,end)+fg(3).dyU(1:end, 1);
67     mg(2).dyU(1:end, 1)=fg(2).dyU(1:end, 1)+fg(6).dxV( end,end:-1:1)'*a6;
68     mg(3).dyU(1:end,end)=fg(3).dyU(1:end,end)+fg(5).dxV( 1,end:-1:1)';
69     mg(3).dyU(1:end, 1)=fg(3).dyU(1:end, 1)+fg(2).dyU(1:end, end);
70     mg(4).dyU(1:end,end)=fg(4).dyU(1:end,end)+fg(5).dyU(1:end, 1);
71     mg(4).dyU(1:end, 1)=fg(4).dyU(1:end, 1)+fg(2).dxV( end,end:-1:1)';
72     mg(5).dyU(1:end,end)=fg(5).dyU(1:end,end)+fg(1).dxV( 1,end:-1:1)';
73     mg(5).dyU(1:end, 1)=fg(5).dyU(1:end, 1)+fg(4).dyU(1:end, end);
74     mg(6).dyU(1:end,end)=fg(6).dyU(1:end,end)+fg(1).dyU(1:end, 1);
75     mg(6).dyU(1:end, 1)=fg(6).dyU(1:end, 1)+fg(4).dxV( end,end:-1:1)';
76     % dyC
77     mg(1).dyC(1:end-1,end)=fg(1).dyC(1:end-1,end)+fg(3).dxC( 1,end-1:-1:1)';
78     mg(1).dyC(1:end-1, 1)=fg(1).dyC(1:end-1, 1)+fg(6).dyC(1:end-1, end)*a6;
79     mg(2).dyC(1:end-1,end)=fg(2).dyC(1:end-1,end)+fg(3).dyC(1:end-1, 1);
80     mg(2).dyC(1:end-1, 1)=fg(2).dyC(1:end-1, 1)+fg(6).dxC( end,end-1:-1:1)'*a6;
81     mg(3).dyC(1:end-1,end)=fg(3).dyC(1:end-1,end)+fg(5).dxC( 1,end-1:-1:1)';
82     mg(3).dyC(1:end-1, 1)=fg(3).dyC(1:end-1, 1)+fg(2).dyC(1:end-1, end);
83     mg(4).dyC(1:end-1,end)=fg(4).dyC(1:end-1,end)+fg(5).dyC(1:end-1, 1);
84     mg(4).dyC(1:end-1, 1)=fg(4).dyC(1:end-1, 1)+fg(2).dxC( end,end-1:-1:1)';
85     mg(5).dyC(1:end-1,end)=fg(5).dyC(1:end-1,end)+fg(1).dxC( 1,end-1:-1:1)';
86     mg(5).dyC(1:end-1, 1)=fg(5).dyC(1:end-1, 1)+fg(4).dyC(1:end-1, end);
87     mg(6).dyC(1:end-1,end)=fg(6).dyC(1:end-1,end)+fg(1).dyC(1:end-1, 1);
88     mg(6).dyC(1:end-1, 1)=fg(6).dyC(1:end-1, 1)+fg(4).dxC( end,end-1:-1:1)';
89     % rAs
90     mg(1).rAs(1:end-1,end)=fg(1).rAs(1:end-1,end)+fg(3).rAw( 1,end-1:-1:1)';
91     mg(1).rAs(1:end-1, 1)=fg(1).rAs(1:end-1, 1)+fg(6).rAs(1:end-1, end)*a6;
92     mg(2).rAs(1:end-1,end)=fg(2).rAs(1:end-1,end)+fg(3).rAs(1:end-1, 1);
93     mg(2).rAs(1:end-1, 1)=fg(2).rAs(1:end-1, 1)+fg(6).rAw( end,end-1:-1:1)'*a6;
94     mg(3).rAs(1:end-1,end)=fg(3).rAs(1:end-1,end)+fg(5).rAw( 1,end-1:-1:1)';
95     mg(3).rAs(1:end-1, 1)=fg(3).rAs(1:end-1, 1)+fg(2).rAs(1:end-1, end);
96     mg(4).rAs(1:end-1,end)=fg(4).rAs(1:end-1,end)+fg(5).rAs(1:end-1, 1);
97     mg(4).rAs(1:end-1, 1)=fg(4).rAs(1:end-1, 1)+fg(2).rAw( end,end-1:-1:1)';
98     mg(5).rAs(1:end-1,end)=fg(5).rAs(1:end-1,end)+fg(1).rAw( 1,end-1:-1:1)';
99     mg(5).rAs(1:end-1, 1)=fg(5).rAs(1:end-1, 1)+fg(4).rAs(1:end-1, end);
100     mg(6).rAs(1:end-1,end)=fg(6).rAs(1:end-1,end)+fg(1).rAs(1:end-1, 1);
101     mg(6).rAs(1:end-1, 1)=fg(6).rAs(1:end-1, 1)+fg(4).rAw( end,end-1:-1:1)';
102     % rAz
103     mg(1).rAz(1:end,end)=fg(1).rAz(1:end,end)+fg(3).rAz( 1,end:-1:1)';
104     mg(1).rAz(1:end, 1)=fg(1).rAz(1:end, 1)+fg(6).rAz(1:end, end)*a6;
105     mg(2).rAz(1:end,end)=fg(2).rAz(1:end,end)+fg(3).rAz(1:end, 1);
106     mg(2).rAz(1:end, 1)=fg(2).rAz(1:end, 1)+fg(6).rAz( end,end:-1:1)'*a6;
107     mg(3).rAz(1:end,end)=fg(3).rAz(1:end,end)+fg(5).rAz( 1,end:-1:1)';
108     mg(3).rAz(1:end, 1)=fg(3).rAz(1:end, 1)+fg(2).rAz(1:end, end);
109     mg(4).rAz(1:end,end)=fg(4).rAz(1:end,end)+fg(5).rAz(1:end, 1);
110     mg(4).rAz(1:end, 1)=fg(4).rAz(1:end, 1)+fg(2).rAz( end,end:-1:1)';
111     mg(5).rAz(1:end,end)=fg(5).rAz(1:end,end)+fg(1).rAz( 1,end:-1:1)';
112     mg(5).rAz(1:end, 1)=fg(5).rAz(1:end, 1)+fg(4).rAz(1:end, end);
113     mg(6).rAz(1:end,end)=fg(6).rAz(1:end,end)+fg(1).rAz(1:end, 1);
114     mg(6).rAz(1:end, 1)=fg(6).rAz(1:end, 1)+fg(4).rAz( end,end:-1:1)';
115     % o corner lhs
116     mg(1).rAz(1 , 1)=fg(1).rAz(1 , 1)+fg(5).rAz(end,end)+fg(6).rAz( 1,end)*a6;
117     mg(1).rAz(end, 1)=fg(1).rAz(end, 1)+fg(2).rAz( 1, 1)+fg(6).rAz(end,end)*a6;
118     mg(1).rAz(1 ,end)=fg(1).rAz(1 ,end)+fg(3).rAz( 1,end)+fg(5).rAz( 1,end);
119     mg(1).rAz(end,end)=fg(1).rAz(end,end)+fg(2).rAz( 1,end)+fg(3).rAz( 1, 1);
120     mg(2).rAz(1 , 1)=fg(2).rAz(1 , 1)+fg(1).rAz( 1,end)+fg(6).rAz(end,end)*a6;
121     mg(2).rAz(end, 1)=fg(2).rAz(end, 1)+fg(4).rAz(end, 1)+fg(6).rAz(end, 1)*a6;
122     mg(2).rAz(1 ,end)=fg(2).rAz(1 ,end)+fg(1).rAz(end,end)+fg(3).rAz( 1, 1);
123     mg(2).rAz(end,end)=fg(2).rAz(end,end)+fg(3).rAz(end, 1)+fg(4).rAz( 1, 1);
124     mg(3).rAz(1 , 1)=fg(3).rAz(1 , 1)+fg(1).rAz(end,end)+fg(2).rAz( 1,end);
125     mg(3).rAz(end, 1)=fg(3).rAz(end, 1)+fg(2).rAz(end,end)+fg(4).rAz( 1, 1);
126     mg(3).rAz(1 ,end)=fg(3).rAz(1 ,end)+fg(1).rAz( 1,end)+fg(5).rAz( 1,end);
127     mg(3).rAz(end,end)=fg(3).rAz(end,end)+fg(4).rAz( 1,end)+fg(5).rAz(end,end);
128     mg(4).rAz(1 , 1)=fg(4).rAz(1 , 1)+fg(2).rAz(end,end)+fg(3).rAz(end, 1);
129     mg(4).rAz(end, 1)=fg(4).rAz(end, 1)+fg(2).rAz(end, 1)+fg(6).rAz(end, 1)*a6;
130     mg(4).rAz(1 ,end)=fg(4).rAz(1 ,end)+fg(3).rAz(end,end)+fg(5).rAz( 1, 1);
131     mg(4).rAz(end,end)=fg(4).rAz(end,end)+fg(5).rAz(end, 1)+fg(6).rAz( 1, 1)*a6;
132     mg(5).rAz(1 , 1)=fg(5).rAz(1 , 1)+fg(3).rAz(end,end)+fg(4).rAz( 1,end);
133     mg(5).rAz(end, 1)=fg(5).rAz(end, 1)+fg(4).rAz(end,end)+fg(6).rAz( 1, 1);
134     mg(5).rAz(1 ,end)=fg(5).rAz(1 ,end)+fg(1).rAz( 1,end)+fg(3).rAz( 1,end);
135     mg(5).rAz(end,end)=fg(5).rAz(end,end)+fg(1).rAz( 1, 1)+fg(6).rAz( 1,end)*a6;
136     mg(6).rAz(1 , 1)=fg(6).rAz(1 , 1)+fg(4).rAz(end,end)+fg(5).rAz( 1,end);
137     mg(6).rAz(end, 1)=fg(6).rAz(end, 1)+fg(2).rAz(end, 1)+fg(4).rAz(end, 1);
138     mg(6).rAz(1 ,end)=fg(6).rAz(1 ,end)+fg(1).rAz( 1, 1)+fg(5).rAz(end,end);
139     mg(6).rAz(end,end)=fg(6).rAz(end,end)+fg(1).rAz(end, 1)+fg(2).rAz( 1, 1);
140    
141     % mg=facets_to_mesh(fg);
142    
143     clf
144     spnum=[9 10 6 7 3 4 1];
145     estr='local';
146     for i=1:6
147     subplot(3,4,spnum(i));imagesc(mg(i).xG');axis xy;colorbar
148     label_edges(i,mg,estr);
149     end
150    
151     % Set xg and yg on edges of face 6 to their counterparts on faces
152     % 5, 4, 2, 1.
153     % This avoids the halo exchange causing problems by making xg and yg wrong in
154     % 5 and 4 when they are output in mnc.
155     mg(6).xG( 1, :)=mg(5).xG( end, :);
156     mg(6).xG( :, 1)=mg(4).xG( end,end:-1:1);
157     mg(6).xG(end, :)=mg(2).xG(end:-1:1, 1);
158     mg(6).xG( :,end)=mg(1).xG( :, 1);
159     mg(6).yG( 1, :)=mg(5).yG( end, :);
160     mg(6).yG( :, 1)=mg(4).yG( end,end:-1:1);
161     mg(6).yG(end, :)=mg(2).yG(end:-1:1, 1);
162     mg(6).yG( :,end)=mg(1).yG( :, 1);
163    
164     % Now write out new mesh files with correct values at mesh points along facet edge
165     % (I hope).
166     for i=1:6
167     fn=sprintf('%s_%d.mitgrid',fn_out,i);
168     fid=fopen(fn,'w','ieee-be');
169     fwrite(fid,mg(i).xC,'float64');
170     fwrite(fid,mg(i).yC,'float64');
171     fwrite(fid,mg(i).dxF,'float64');
172     fwrite(fid,mg(i).dyF,'float64');
173     fwrite(fid,mg(i).rA,'float64');
174     fwrite(fid,mg(i).xG,'float64');
175     fwrite(fid,mg(i).yG,'float64');
176     fwrite(fid,mg(i).dxV,'float64');
177     fwrite(fid,mg(i).dyU,'float64');
178     fwrite(fid,mg(i).rAz,'float64');
179     fwrite(fid,mg(i).dxC,'float64');
180     fwrite(fid,mg(i).dyC,'float64');
181     fwrite(fid,mg(i).rAw,'float64');
182     fwrite(fid,mg(i).rAs,'float64');
183     fwrite(fid,mg(i).dxG,'float64');
184     fwrite(fid,mg(i).dyG,'float64');
185     fwrite(fid,mg(i).AngleCS,'float64');
186     fwrite(fid,mg(i).AngleSN,'float64');
187     fclose(fid);
188     end
189    
190    

  ViewVC Help
Powered by ViewVC 1.1.22