1 |
C $Header: /u/gcmpack/MITgcm/pkg/mnc/mnc_model_grids.F,v 1.7 2004/01/27 05:47:32 edhill Exp $ |
2 |
C $Name: $ |
3 |
|
4 |
#include "MNC_OPTIONS.h" |
5 |
|
6 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
7 |
|
8 |
SUBROUTINE MNC_W_GRIDINFO( myThid, RefName ) |
9 |
|
10 |
implicit none |
11 |
integer myThid |
12 |
character*(*) RefName |
13 |
|
14 |
CALL MNC_W_GRIDINFO_ALL( myThid, RefName, 'N', 'D' ) |
15 |
RETURN |
16 |
END |
17 |
|
18 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
19 |
|
20 |
SUBROUTINE MNC_W_GRIDINFO_ALL( |
21 |
I myThid, |
22 |
I RefName, |
23 |
I withHalo, |
24 |
I RorD ) |
25 |
|
26 |
implicit none |
27 |
#include "netcdf.inc" |
28 |
#include "mnc_common.h" |
29 |
|
30 |
#include "SIZE.h" |
31 |
#include "EEPARAMS.h" |
32 |
#include "EESUPPORT.h" |
33 |
#include "PARAMS.h" |
34 |
#include "GRID.h" |
35 |
|
36 |
C Arguments |
37 |
integer myThid |
38 |
character*(*) RefName |
39 |
character*(1) withHalo, RorD |
40 |
|
41 |
C Functions |
42 |
integer ILNBLNK |
43 |
|
44 |
C Local Variables |
45 |
integer i, n, bi,bj, iG,jG, rnX,rnY,rnZ, mt |
46 |
integer istart(3), iend(3) |
47 |
character*(MNC_MAX_CHAR) fnm, atnm, gnms(20),dnms(20) |
48 |
character*(MAX_LEN_MBUF) msgbuf |
49 |
REAL*4 t_R((sNx+2*OLx)*(sNy+2*OLy)*(Nr+1)) |
50 |
REAL*8 t_D((sNx+2*OLx)*(sNy+2*OLy)*(Nr+1)) |
51 |
|
52 |
C Initialize strings |
53 |
fnm(1:MNC_MAX_CHAR) = mnc_blank_name(1:MNC_MAX_CHAR) |
54 |
atnm(1:MNC_MAX_CHAR) = mnc_blank_name(1:MNC_MAX_CHAR) |
55 |
DO i = 1,20 |
56 |
gnms(i)(1:MNC_MAX_CHAR) = mnc_blank_name(1:MNC_MAX_CHAR) |
57 |
dnms(i)(1:MNC_MAX_CHAR) = mnc_blank_name(1:MNC_MAX_CHAR) |
58 |
ENDDO |
59 |
|
60 |
C dim names |
61 |
dnms(11)(1:9) = 'X ' |
62 |
dnms(12)(1:9) = 'Y ' |
63 |
dnms(13)(1:9) = 'R ' |
64 |
dnms(14)(1:9) = 'Rp1 ' |
65 |
|
66 |
C grid names 123456789 |
67 |
gnms( 1)(1:9) = 'center ' |
68 |
gnms( 2)(1:9) = 'u ' |
69 |
gnms( 3)(1:9) = 'v ' |
70 |
gnms( 4)(1:9) = 'w ' |
71 |
|
72 |
C Only do I/O if I am the master thread |
73 |
_BEGIN_MASTER( myThid ) |
74 |
|
75 |
C Output a grid file for all tiles owned by this thread or process |
76 |
DO bj = 1,nSy |
77 |
DO bi = 1,nSx |
78 |
|
79 |
C Kludge until unstructered tiles -- mimics mdsio tile numbering |
80 |
iG = bi+(myXGlobalLo-1)/sNx |
81 |
jG = bj+(myYGlobalLo-1)/sNy |
82 |
|
83 |
n = ILNBLNK(RefName) |
84 |
IF (n .GT. (100-5-11)) n = 100-5-11 |
85 |
fnm(1:5) = 'grid_' |
86 |
fnm(6:(6+n-1)) = RefName(1:n) |
87 |
n = n + 6 |
88 |
write(fnm(n:(n+11-1)),'(a1,i3.3,a1,i3.3,a3)') |
89 |
& '-',iG,'-',jG,'.nc' |
90 |
CALL MNC_FILE_CREATE(myThid, fnm) |
91 |
|
92 |
C Create the dimensions |
93 |
IF (withHalo(1:1) .EQ. 'N') THEN |
94 |
CALL MNC_DIM_INIT(myThid,fnm,dnms(11), sNx ) |
95 |
CALL MNC_DIM_INIT(myThid,fnm,dnms(12), sNy ) |
96 |
CALL MNC_DIM_INIT(myThid,fnm,dnms(13), Nr ) |
97 |
CALL MNC_DIM_INIT(myThid,fnm,dnms(14), Nr+1 ) |
98 |
ELSEIF (withHalo(1:1) .EQ. 'Y') THEN |
99 |
CALL MNC_DIM_INIT(myThid,fnm,dnms(11), sNx+2*OLx ) |
100 |
CALL MNC_DIM_INIT(myThid,fnm,dnms(12), sNy+2*OLy ) |
101 |
CALL MNC_DIM_INIT(myThid,fnm,dnms(13), Nr ) |
102 |
CALL MNC_DIM_INIT(myThid,fnm,dnms(14), Nr+1) |
103 |
ELSE |
104 |
write(msgbuf,'(a)') 'MNC ERROR: withHalo must be [Y|N]' |
105 |
CALL print_error( msgbuf, mythid ) |
106 |
stop 'ABNORMAL END: S/R MNC_W_GRIDINFO_ALL' |
107 |
ENDIF |
108 |
|
109 |
C Attributes |
110 |
CALL MNC_FILE_ADD_ATTR_STR(myThid,fnm, 'mitgcm_tag_index', |
111 |
& MNC_TAG_ID ) |
112 |
CALL MNC_FILE_ADD_ATTR_DBL(myThid,fnm, 'mitgcm_grid_ver', |
113 |
& 1, 0.1D0 ) |
114 |
CALL MNC_FILE_ADD_ATTR_STR(myThid,fnm, 'reference', |
115 |
& 'Put reference string here.' ) |
116 |
CALL MNC_FILE_ADD_ATTR_STR(myThid,fnm, 'author', |
117 |
& 'Put author string here.' ) |
118 |
CALL MNC_FILE_ADD_ATTR_STR(myThid,fnm, 'date', |
119 |
& 'Put date string here.' ) |
120 |
|
121 |
C Model parameters (SIZE.h) included as attributes |
122 |
CALL MNC_FILE_ADD_ATTR_INT(myThid,fnm, 'sNx', 1, sNx) |
123 |
CALL MNC_FILE_ADD_ATTR_INT(myThid,fnm, 'sNy', 1, sNy) |
124 |
CALL MNC_FILE_ADD_ATTR_INT(myThid,fnm, 'OLx', 1, OLx) |
125 |
CALL MNC_FILE_ADD_ATTR_INT(myThid,fnm, 'OLy', 1, OLy) |
126 |
CALL MNC_FILE_ADD_ATTR_INT(myThid,fnm, 'nSx', 1, nSx) |
127 |
CALL MNC_FILE_ADD_ATTR_INT(myThid,fnm, 'nSy', 1, nSy) |
128 |
CALL MNC_FILE_ADD_ATTR_INT(myThid,fnm, 'nPx', 1, nPx) |
129 |
CALL MNC_FILE_ADD_ATTR_INT(myThid,fnm, 'nPy', 1, nPy) |
130 |
CALL MNC_FILE_ADD_ATTR_INT(myThid,fnm, 'Nx', 1, Nx) |
131 |
CALL MNC_FILE_ADD_ATTR_INT(myThid,fnm, 'Ny', 1, Ny) |
132 |
CALL MNC_FILE_ADD_ATTR_INT(myThid,fnm, 'Nr', 1, Nr) |
133 |
|
134 |
C Grid info included as attributes |
135 |
CALL MNC_FILE_ADD_ATTR_INT(myThid,fnm, 'bi', 1, bi) |
136 |
CALL MNC_FILE_ADD_ATTR_INT(myThid,fnm, 'bj', 1, bj) |
137 |
CALL MNC_FILE_ADD_ATTR_INT(myThid,fnm, 'iG', 1, iG) |
138 |
CALL MNC_FILE_ADD_ATTR_INT(myThid,fnm, 'jG', 1, jG) |
139 |
CALL MNC_FILE_ADD_ATTR_DBL(myThid,fnm, 'xC0', 1, xC0) |
140 |
CALL MNC_FILE_ADD_ATTR_DBL(myThid,fnm, 'yC0', 1, yC0) |
141 |
CALL MNC_FILE_ADD_ATTR_DBL(myThid,fnm, 'gravitySign', |
142 |
& 1, gravitySign ) |
143 |
CALL MNC_FILE_ADD_ATTR_DBL(myThid,fnm, 'rkFac', 1, rkFac) |
144 |
|
145 |
C Create the grids |
146 |
C center |
147 |
dnms(1)(1:MNC_MAX_CHAR) = dnms(11)(1:MNC_MAX_CHAR) |
148 |
dnms(2)(1:MNC_MAX_CHAR) = dnms(12)(1:MNC_MAX_CHAR) |
149 |
dnms(3)(1:MNC_MAX_CHAR) = dnms(13)(1:MNC_MAX_CHAR) |
150 |
CALL MNC_GRID_INIT(myThid, fnm, gnms(1), 2, dnms) |
151 |
CALL MNC_GRID_INIT(myThid, fnm, gnms(2), 3, dnms) |
152 |
C r, rp1 |
153 |
CALL MNC_GRID_INIT(myThid, fnm, gnms(3),1,dnms(13)) |
154 |
CALL MNC_GRID_INIT(myThid, fnm, gnms(4),1,dnms(14)) |
155 |
|
156 |
C Indicies and sizes for extracting the data -- we need to skip |
157 |
C over the exchange regions |
158 |
rnX = sNx + 2*OLx |
159 |
rnY = sNy + 2*OLy |
160 |
rnZ = Nr |
161 |
IF (withHalo(1:1) .EQ. 'N') THEN |
162 |
istart(1) = OLx + 1 |
163 |
istart(2) = OLy + 1 |
164 |
istart(3) = 1 |
165 |
iend(1) = sNx + OLx |
166 |
iend(2) = sNy + OLy |
167 |
iend(3) = Nr |
168 |
ELSE |
169 |
istart(1) = 1 |
170 |
istart(2) = 1 |
171 |
istart(3) = 1 |
172 |
iend(1) = sNx + 2*OLx |
173 |
iend(2) = sNy + 2*OLy |
174 |
iend(3) = Nr |
175 |
ENDIF |
176 |
|
177 |
C Create and write grid parameters |
178 |
IF ( RorD(1:1) .EQ. 'D' ) THEN |
179 |
|
180 |
C rC, rF |
181 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(3),'rC','--') |
182 |
CALL MNC_RESHAPE_RS_D(rnZ,1,1, 1,Nr, rC, t_D) |
183 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'rC', t_D) |
184 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(4),'rF','--') |
185 |
CALL MNC_RESHAPE_RS_D(rnZ+1,1,1, 1,Nr+1, rF, t_D) |
186 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'rF', t_D) |
187 |
C drC, drF |
188 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(3),'drC','--') |
189 |
CALL MNC_RESHAPE_RS_D(rnZ,1,1, 1,Nr, drC, t_D) |
190 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'drC', t_D) |
191 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(3),'drF','--') |
192 |
CALL MNC_RESHAPE_RS_D(rnZ,1,1, 1,Nr, drF, t_D) |
193 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'drF', t_D) |
194 |
C saFac |
195 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(3),'saFac','--') |
196 |
CALL MNC_RESHAPE_RS_D(rnZ,1,1, 1,Nr, saFac, t_D) |
197 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'saFac', t_D) |
198 |
|
199 |
C xC, yC |
200 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'xC','m') |
201 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
202 |
& xC(1-OLx,1-OLy,bi,bj), t_D) |
203 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'xC', t_D) |
204 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'yC','m') |
205 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
206 |
& yC(1-OLx,1-OLy,bi,bj), t_D) |
207 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'yC', t_D) |
208 |
C xG, yG |
209 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'xG','m') |
210 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
211 |
& xG(1-OLx,1-OLy,bi,bj), t_D) |
212 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'xG', t_D) |
213 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'yG','m') |
214 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
215 |
& yG(1-OLx,1-OLy,bi,bj), t_D) |
216 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'yG', t_D) |
217 |
C dxC, dyC |
218 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'dxC','m') |
219 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
220 |
& dxC(1-OLx,1-OLy,bi,bj), t_D) |
221 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'dxC', t_D) |
222 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'dyC','m') |
223 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
224 |
& dyC(1-OLx,1-OLy,bi,bj), t_D) |
225 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'dyC', t_D) |
226 |
C dxF, dyF |
227 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'dxF','m') |
228 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
229 |
& dxF(1-OLx,1-OLy,bi,bj), t_D) |
230 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'dxF', t_D) |
231 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'dyF','m') |
232 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
233 |
& dyF(1-OLx,1-OLy,bi,bj), t_D) |
234 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'dyF', t_D) |
235 |
C dxG, dyG |
236 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'dxG','m') |
237 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
238 |
& dxG(1-OLx,1-OLy,bi,bj), t_D) |
239 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'dxG', t_D) |
240 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'dyG','m') |
241 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
242 |
& dyG(1-OLx,1-OLy,bi,bj), t_D) |
243 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'dyG', t_D) |
244 |
C dxV, dyU |
245 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'dxV','m') |
246 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
247 |
& dxV(1-OLx,1-OLy,bi,bj), t_D) |
248 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'dxV', t_D) |
249 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'dyU','m') |
250 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
251 |
& dyU(1-OLx,1-OLy,bi,bj), t_D) |
252 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'dyU', t_D) |
253 |
C rA, rAw, rAs, rAz |
254 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'rA','m') |
255 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
256 |
& rA(1-OLx,1-OLy,bi,bj), t_D) |
257 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'rA', t_D) |
258 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'rAw','m') |
259 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
260 |
& rAw(1-OLx,1-OLy,bi,bj), t_D) |
261 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'rAw', t_D) |
262 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'rAs','m') |
263 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
264 |
& rAs(1-OLx,1-OLy,bi,bj), t_D) |
265 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'rAs', t_D) |
266 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'rAz','m') |
267 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
268 |
& rAz(1-OLx,1-OLy,bi,bj), t_D) |
269 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'rAz', t_D) |
270 |
C fCori, fCoriG |
271 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'fCori','m') |
272 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
273 |
& fCori(1-OLx,1-OLy,bi,bj), t_D) |
274 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'fCori', t_D) |
275 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'fCoriG','m') |
276 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
277 |
& fCoriG(1-OLx,1-OLy,bi,bj), t_D) |
278 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'fCoriG', t_D) |
279 |
C R_low, Ro_surf |
280 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'R_low','--') |
281 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
282 |
& R_low(1-OLx,1-OLy,bi,bj), t_D) |
283 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'R_low', t_D) |
284 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(1),'Ro_surf','--') |
285 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, 1, istart, iend, |
286 |
& Ro_surf(1-OLx,1-OLy,bi,bj), t_D) |
287 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'Ro_surf', t_D) |
288 |
C HFacC, HFacW, HFacS |
289 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(2),'HFacC','--') |
290 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, rnZ, istart, iend, |
291 |
& HFacC(1-OLx,1-OLy,1,bi,bj), t_D) |
292 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'HFacC', t_D) |
293 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(2),'HFacW','--') |
294 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, rnZ, istart, iend, |
295 |
& HFacW(1-OLx,1-OLy,1,bi,bj), t_D) |
296 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'HFacW', t_D) |
297 |
CALL MNC_VAR_INIT_DBL(myThid,fnm,gnms(2),'HFacS','--') |
298 |
CALL MNC_RESHAPE_RS_D(rnX, rnY, rnZ, istart, iend, |
299 |
& HFacS(1-OLx,1-OLy,1,bi,bj), t_D) |
300 |
CALL MNC_VAR_WRITE_DBL(myThid, fnm, 'HFacS', t_D) |
301 |
|
302 |
ELSEIF ( RorD(1:1) .EQ. 'R' ) THEN |
303 |
|
304 |
C rC, rF |
305 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(3),'rC','--') |
306 |
CALL MNC_RESHAPE_RS_R(rnZ,1,1, 1,Nr, rC, t_R) |
307 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'rC', t_R) |
308 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(4),'rF','--') |
309 |
CALL MNC_RESHAPE_RS_R(rnZ+1,1,1, 1,Nr+1, rF, t_R) |
310 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'rF', t_R) |
311 |
C drC, drF |
312 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(3),'drC','--') |
313 |
CALL MNC_RESHAPE_RS_R(rnZ,1,1, 1,Nr, drC, t_R) |
314 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'drC', t_R) |
315 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(3),'drF','--') |
316 |
CALL MNC_RESHAPE_RS_R(rnZ,1,1, 1,Nr, drF, t_R) |
317 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'drF', t_R) |
318 |
C saFac |
319 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(3),'saFac','--') |
320 |
CALL MNC_RESHAPE_RS_R(rnZ,1,1, 1,Nr, saFac, t_R) |
321 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'saFac', t_R) |
322 |
|
323 |
C xC, yC |
324 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'xC','m') |
325 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
326 |
& xC(1-OLx,1-OLy,bi,bj), t_R) |
327 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'xC', t_R) |
328 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'yC','m') |
329 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
330 |
& yC(1-OLx,1-OLy,bi,bj), t_R) |
331 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'yC', t_R) |
332 |
C xG, yG |
333 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'xG','m') |
334 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
335 |
& xG(1-OLx,1-OLy,bi,bj), t_R) |
336 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'xG', t_R) |
337 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'yG','m') |
338 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
339 |
& yG(1-OLx,1-OLy,bi,bj), t_R) |
340 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'yG', t_R) |
341 |
C dxC, dyC |
342 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'dxC','m') |
343 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
344 |
& dxC(1-OLx,1-OLy,bi,bj), t_R) |
345 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'dxC', t_R) |
346 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'dyC','m') |
347 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
348 |
& dyC(1-OLx,1-OLy,bi,bj), t_R) |
349 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'dyC', t_R) |
350 |
C dxF, dyF |
351 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'dxF','m') |
352 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
353 |
& dxF(1-OLx,1-OLy,bi,bj), t_R) |
354 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'dxF', t_R) |
355 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'dyF','m') |
356 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
357 |
& dyF(1-OLx,1-OLy,bi,bj), t_R) |
358 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'dyF', t_R) |
359 |
C dxG, dyG |
360 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'dxG','m') |
361 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
362 |
& dxG(1-OLx,1-OLy,bi,bj), t_R) |
363 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'dxG', t_R) |
364 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'dyG','m') |
365 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
366 |
& dyG(1-OLx,1-OLy,bi,bj), t_R) |
367 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'dyG', t_R) |
368 |
C dxV, dyU |
369 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'dxV','m') |
370 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
371 |
& dxV(1-OLx,1-OLy,bi,bj), t_R) |
372 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'dxV', t_R) |
373 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'dyU','m') |
374 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
375 |
& dyU(1-OLx,1-OLy,bi,bj), t_R) |
376 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'dyU', t_R) |
377 |
C rA, rAw, rAs, rAz |
378 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'rA','m') |
379 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
380 |
& rA(1-OLx,1-OLy,bi,bj), t_R) |
381 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'rA', t_R) |
382 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'rAw','m') |
383 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
384 |
& rAw(1-OLx,1-OLy,bi,bj), t_R) |
385 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'rAw', t_R) |
386 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'rAs','m') |
387 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
388 |
& rAs(1-OLx,1-OLy,bi,bj), t_R) |
389 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'rAs', t_R) |
390 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'rAz','m') |
391 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
392 |
& rAz(1-OLx,1-OLy,bi,bj), t_R) |
393 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'rAz', t_R) |
394 |
C fCori, fCoriG |
395 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'fCori','m') |
396 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
397 |
& fCori(1-OLx,1-OLy,bi,bj), t_R) |
398 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'fCori', t_R) |
399 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'fCoriG','m') |
400 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
401 |
& fCoriG(1-OLx,1-OLy,bi,bj), t_R) |
402 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'fCoriG', t_R) |
403 |
C R_low, Ro_surf |
404 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'R_low','--') |
405 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
406 |
& R_low(1-OLx,1-OLy,bi,bj), t_R) |
407 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'R_low', t_R) |
408 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(1),'Ro_surf','--') |
409 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, 1, istart, iend, |
410 |
& Ro_surf(1-OLx,1-OLy,bi,bj), t_R) |
411 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'Ro_surf', t_R) |
412 |
C HFacC, HFacW, HFacS |
413 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(2),'HFacC','--') |
414 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, rnZ, istart, iend, |
415 |
& HFacC(1-OLx,1-OLy,1,bi,bj), t_R) |
416 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'HFacC', t_R) |
417 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(2),'HFacW','--') |
418 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, rnZ, istart, iend, |
419 |
& HFacW(1-OLx,1-OLy,1,bi,bj), t_R) |
420 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'HFacW', t_R) |
421 |
CALL MNC_VAR_INIT_REAL(myThid,fnm,gnms(2),'HFacS','--') |
422 |
CALL MNC_RESHAPE_RS_R(rnX, rnY, rnZ, istart, iend, |
423 |
& HFacS(1-OLx,1-OLy,1,bi,bj), t_R) |
424 |
CALL MNC_VAR_WRITE_REAL(myThid, fnm, 'HFacS', t_R) |
425 |
|
426 |
ELSE |
427 |
write(msgbuf,'(a)') 'MNC ERROR: RodD must be [R|D]' |
428 |
CALL print_error( msgbuf, mythid ) |
429 |
stop 'ABNORMAL END: S/R MNC_W_GRIDINFO_ALL' |
430 |
ENDIF |
431 |
|
432 |
C Add long_name attributes to the variables |
433 |
mt = myThid |
434 |
atnm(1:12) = 'description ' |
435 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'rC',atnm, |
436 |
& 'r of cell center') |
437 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'rF',atnm, |
438 |
& 'r of cell face') |
439 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'drC',atnm, |
440 |
& 'r cell center separation') |
441 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'drF',atnm, |
442 |
& 'r cell face separation') |
443 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'saFac',atnm, |
444 |
& 'shallow atmosphere factor') |
445 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'xC',atnm, |
446 |
& 'x of cell center') |
447 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'yC',atnm, |
448 |
& 'y of cell center') |
449 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'xG',atnm, |
450 |
& 'x of cell corner') |
451 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'yG',atnm, |
452 |
& 'y of cell corner') |
453 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'dxC',atnm, |
454 |
& 'x cell center separation') |
455 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'dyC',atnm, |
456 |
& 'y cell center separation') |
457 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'dxF',atnm, |
458 |
& 'x cell face separation') |
459 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'dyF',atnm, |
460 |
& 'y cell face separation') |
461 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'dxG',atnm, |
462 |
& 'x cell face separation') |
463 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'dyG',atnm, |
464 |
& 'y cell face separation') |
465 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'dxV',atnm, |
466 |
& 'x v-velocity separation') |
467 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'dyU',atnm, |
468 |
& 'y u-velocity separation') |
469 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'rA',atnm, |
470 |
& 'r-face area') |
471 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'rAw',atnm, |
472 |
& '') |
473 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'rAs',atnm, |
474 |
& '') |
475 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'rAz',atnm, |
476 |
& '') |
477 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'fCori',atnm, |
478 |
& 'Coriolis f') |
479 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'fCoriG',atnm, |
480 |
& 'Coriolis f') |
481 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'R_low',atnm, |
482 |
& 'base of fluid in r-units') |
483 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'Ro_surf',atnm, |
484 |
& 'surface reference (at rest) position') |
485 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'HFacC',atnm, |
486 |
& 'C-facing vertical fraction of open cell') |
487 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'HFacW',atnm, |
488 |
& 'W-facing vertical fraction of open cell') |
489 |
CALL MNC_VAR_ADD_ATTR_STR(mt,fnm,'HFacS',atnm, |
490 |
& 'S-facing vertical fraction of open cell') |
491 |
|
492 |
C CALL MNC_DUMP() |
493 |
|
494 |
C Close the grid file |
495 |
CALL MNC_FILE_CLOSE(myThid, fnm) |
496 |
|
497 |
ENDDO |
498 |
ENDDO |
499 |
|
500 |
_END_MASTER( myThid ) |
501 |
|
502 |
RETURN |
503 |
END |
504 |
|
505 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |