/[MITgcm]/MITgcm/pkg/mnc/mnc_cwrapper.F
ViewVC logotype

Annotation of /MITgcm/pkg/mnc/mnc_cwrapper.F

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


Revision 1.27 - (hide annotations) (download)
Fri Mar 10 22:01:53 2006 UTC (18 years, 2 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint58c_post, checkpoint58b_post
Changes since 1.26: +2 -2 lines
further reductions in the default sizes of the lookup tables and more
  fixes involving explicit string lengths

1 edhill 1.27 C $Header: /u/gcmpack/MITgcm/pkg/mnc/mnc_cwrapper.F,v 1.26 2006/03/10 05:50:23 edhill Exp $
2 edhill 1.1 C $Name: $
3    
4     #include "MNC_OPTIONS.h"
5    
6     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7 edhill 1.12 CBOP 0
8 edhill 1.11 C !ROUTINE: MNC_CW_ADD_GNAME
9 edhill 1.1
10 edhill 1.11 C !INTERFACE:
11 edhill 1.2 SUBROUTINE MNC_CW_ADD_GNAME(
12 edhill 1.1 I name,
13     I ndim,
14     I dlens,
15     I dnames,
16 edhill 1.9 I inds_beg, inds_end,
17     I myThid )
18 edhill 1.1
19 edhill 1.11 C !DESCRIPTION:
20     C Add a grid name to the MNC convenience wrapper layer.
21    
22     C !USES:
23 edhill 1.1 implicit none
24     #include "mnc_common.h"
25     #include "EEPARAMS.h"
26    
27 edhill 1.11 C !INPUT PARAMETERS:
28 edhill 1.1 integer myThid, ndim
29     character*(*) name
30 edhill 1.20 integer dlens(*), inds_beg(*), inds_end(*)
31     character*(*) dnames(*)
32 edhill 1.12 CEOP
33 edhill 1.1
34 edhill 1.11 C !LOCAL VARIABLES:
35     integer i, nnf,nnl, indg
36     character*(MAX_LEN_MBUF) msgbuf
37 edhill 1.12
38 edhill 1.2 C Functions
39     integer IFNBLNK, ILNBLNK
40    
41 edhill 1.1 nnf = IFNBLNK(name)
42     nnl = ILNBLNK(name)
43    
44     C Check that this name is not already defined
45 edhill 1.9 CALL MNC_GET_IND(MNC_MAX_ID, name, mnc_cw_gname, indg, myThid)
46 edhill 1.1 IF (indg .GT. 0) THEN
47 edhill 1.2 write(msgbuf,'(3a)') 'MNC_CW_ADD_GNAME ERROR: ''', name,
48 edhill 1.1 & ''' is already defined'
49     CALL print_error(msgbuf, mythid)
50 edhill 1.2 stop 'ABNORMAL END: S/R MNC_CW_ADD_GNAME'
51 edhill 1.1 ENDIF
52 edhill 1.9 CALL MNC_GET_NEXT_EMPTY_IND(MNC_MAX_ID, mnc_cw_gname,
53 edhill 1.26 & 'mnc_cw_gname', indg, myThid)
54 edhill 1.1
55 edhill 1.2 mnc_cw_gname(indg)(1:MNC_MAX_CHAR)=mnc_blank_name(1:MNC_MAX_CHAR)
56     mnc_cw_gname(indg)(1:(nnl-nnf+1)) = name(nnf:nnl)
57 edhill 1.1 mnc_cw_ndim(indg) = ndim
58    
59     DO i = 1,ndim
60     mnc_cw_dn(i,indg)(1:MNC_MAX_CHAR)=mnc_blank_name(1:MNC_MAX_CHAR)
61     nnf = IFNBLNK(dnames(i))
62     nnl = ILNBLNK(dnames(i))
63     mnc_cw_dn(i,indg)(1:(nnl-nnf+1)) = dnames(i)(nnf:nnl)
64     mnc_cw_dims(i,indg) = dlens(i)
65     mnc_cw_is(i,indg) = inds_beg(i)
66     mnc_cw_ie(i,indg) = inds_end(i)
67     ENDDO
68    
69     RETURN
70     END
71    
72 edhill 1.2 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
73 edhill 1.15 CBOP 0
74     C !ROUTINE: MNC_CW_DEL_GNAME
75    
76     C !INTERFACE:
77     SUBROUTINE MNC_CW_DEL_GNAME(
78     I name,
79     I myThid )
80    
81     C !DESCRIPTION:
82     C Delete a grid name from the MNC convenience wrapper layer.
83    
84     C !USES:
85     implicit none
86     #include "mnc_common.h"
87     #include "EEPARAMS.h"
88    
89     C !INPUT PARAMETERS:
90     integer myThid
91     character*(*) name
92     CEOP
93    
94     C !LOCAL VARIABLES:
95     integer nnf,nnl, indg
96    
97     C Functions
98     integer IFNBLNK, ILNBLNK
99    
100     nnf = IFNBLNK(name)
101     nnl = ILNBLNK(name)
102    
103     C Check that this name is not already defined
104     CALL MNC_GET_IND(MNC_MAX_ID, name, mnc_cw_gname, indg, myThid)
105     IF (indg .LT. 1) THEN
106     RETURN
107     ENDIF
108    
109     mnc_cw_gname(indg)(1:MNC_MAX_CHAR)=mnc_blank_name(1:MNC_MAX_CHAR)
110     mnc_cw_ndim(indg) = 0
111    
112     RETURN
113     END
114    
115     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
116 edhill 1.12 CBOP 1
117 edhill 1.11 C !ROUTINE: MNC_CW_DUMP
118 edhill 1.2
119 edhill 1.11 C !INTERFACE:
120 edhill 1.10 SUBROUTINE MNC_CW_DUMP( myThid )
121 edhill 1.2
122 edhill 1.11 C !DESCRIPTION:
123     C Write a condensed view of the current state of the MNC look-up
124     C tables for the convenience wrapper section.
125    
126     C !USES:
127 edhill 1.2 implicit none
128     #include "mnc_common.h"
129 edhill 1.10 #include "SIZE.h"
130     #include "EEPARAMS.h"
131     #include "PARAMS.h"
132    
133 edhill 1.11 C !INPUT PARAMETERS:
134 edhill 1.10 integer myThid
135 edhill 1.12 CEOP
136 edhill 1.2
137 edhill 1.11 C !LOCAL VARIABLES:
138 edhill 1.2 integer i,j, ntot
139 edhill 1.10 integer NBLNK
140     parameter ( NBLNK = 150 )
141     character s1*(NBLNK), blnk*(NBLNK)
142    
143     _BEGIN_MASTER(myThid)
144    
145     DO i = 1,NBLNK
146     blnk(i:i) = ' '
147     ENDDO
148    
149     s1(1:NBLNK) = blnk(1:NBLNK)
150     write(s1,'(a5,a)') 'MNC: ',
151     & 'The currently defined Grid Types are:'
152     CALL PRINT_MESSAGE(
153     & s1, standardMessageUnit, SQUEEZE_RIGHT, mythid)
154 edhill 1.2 ntot = 0
155     DO j = 1,MNC_MAX_ID
156     IF (mnc_cw_gname(j)(1:MNC_MAX_CHAR)
157     & .NE. mnc_blank_name(1:MNC_MAX_CHAR)) THEN
158    
159     ntot = ntot + 1
160 edhill 1.10 s1(1:NBLNK) = blnk(1:NBLNK)
161 edhill 1.14 write(s1,'(a5,2i5,a3,a20,i3,a3,5i4,a4,5i4,a4,5i4,6a8)')
162 edhill 1.10 & 'MNC: ',
163 edhill 1.2 & j, ntot, ' : ', mnc_cw_gname(j)(1:20), mnc_cw_ndim(j),
164     & ' : ', (mnc_cw_dims(i,j), i=1,5),
165     & ' | ', (mnc_cw_is(i,j), i=1,5),
166     & ' | ', (mnc_cw_ie(i,j), i=1,5),
167 edhill 1.14 & ' | ', (mnc_cw_dn(i,j)(1:7), i=1,5)
168 edhill 1.10 CALL PRINT_MESSAGE(
169     & s1, standardMessageUnit, SQUEEZE_RIGHT, mythid)
170    
171 edhill 1.2 ENDIF
172     ENDDO
173 edhill 1.10
174     s1(1:NBLNK) = blnk(1:NBLNK)
175     write(s1,'(a5,a)') 'MNC: ',
176     & 'The currently defined Variable Types are:'
177     CALL PRINT_MESSAGE(
178     & s1, standardMessageUnit, SQUEEZE_RIGHT, mythid)
179 edhill 1.3 ntot = 0
180     DO j = 1,MNC_MAX_ID
181     IF (mnc_cw_vname(j)(1:MNC_MAX_CHAR)
182     & .NE. mnc_blank_name(1:MNC_MAX_CHAR)) THEN
183 edhill 1.10
184 edhill 1.3 ntot = ntot + 1
185 edhill 1.10 s1(1:NBLNK) = blnk(1:NBLNK)
186     write(s1,'(a5,2i5,a3,a25,a3,i4)') 'MNC: ',
187     & j, ntot, ' | ',
188     & mnc_cw_vname(j)(1:20), ' | ', mnc_cw_vgind(j)
189     CALL PRINT_MESSAGE(
190     & s1, standardMessageUnit, SQUEEZE_RIGHT, mythid)
191    
192 edhill 1.3 DO i = 1,mnc_cw_vnat(1,j)
193 edhill 1.10 s1(1:NBLNK) = blnk(1:NBLNK)
194     write(s1,'(a5,a14,i4,a3,a25,a3,a55)')
195     & 'MNC: ',' text_at:',i,
196 edhill 1.3 & ' : ', mnc_cw_vtnm(i,j)(1:25), ' : ',
197 edhill 1.26 & mnc_cw_vtat(i,j)(1:MNC_MAX_CHAR)
198 edhill 1.10 CALL PRINT_MESSAGE(
199     & s1, standardMessageUnit, SQUEEZE_RIGHT, mythid)
200 edhill 1.3 ENDDO
201     DO i = 1,mnc_cw_vnat(2,j)
202 edhill 1.10 s1(1:NBLNK) = blnk(1:NBLNK)
203     write(s1,'(a5,a14,i4,a3,a25,a3,i20)')
204     & 'MNC: ',' int__at:',i,
205 edhill 1.3 & ' : ', mnc_cw_vinm(i,j)(1:25), ' : ',
206     & mnc_cw_viat(i,j)
207 edhill 1.10 CALL PRINT_MESSAGE(
208     & s1, standardMessageUnit, SQUEEZE_RIGHT, mythid)
209 edhill 1.3 ENDDO
210     DO i = 1,mnc_cw_vnat(3,j)
211 edhill 1.10 s1(1:NBLNK) = blnk(1:NBLNK)
212     write(s1,'(a5,a14,i4,a3,a25,a3,f25.10)')
213     & 'MNC: ',' dbl__at:',i,
214 edhill 1.3 & ' : ', mnc_cw_vdnm(i,j)(1:25), ' : ',
215     & mnc_cw_vdat(i,j)
216 edhill 1.10 CALL PRINT_MESSAGE(
217     & s1, standardMessageUnit, SQUEEZE_RIGHT, mythid)
218     ENDDO
219    
220 edhill 1.3 ENDIF
221     ENDDO
222     IF (ntot .EQ. 0) THEN
223 edhill 1.10 s1(1:NBLNK) = blnk(1:NBLNK)
224     write(s1,'(a)') 'MNC: None defined!'
225     CALL PRINT_MESSAGE(
226     & s1, standardMessageUnit, SQUEEZE_RIGHT, mythid)
227 edhill 1.3 ENDIF
228 edhill 1.10
229     _END_MASTER(myThid)
230 edhill 1.3
231 edhill 1.2 RETURN
232     END
233 edhill 1.1
234     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
235 edhill 1.12 CBOP 0
236 edhill 1.13 C !ROUTINE: MNC_CW_APPEND_VNAME
237    
238     C !INTERFACE:
239     SUBROUTINE MNC_CW_APPEND_VNAME(
240     I vname,
241     I gname,
242     I bi_dim, bj_dim,
243     I myThid )
244    
245     C !DESCRIPTION:
246     C If it is not yet defined within the MNC CW layer, append a
247     C variable type. Calls MNC\_CW\_ADD\_VNAME().
248    
249     C !USES:
250     implicit none
251     #include "mnc_common.h"
252    
253     C !INPUT PARAMETERS:
254     integer myThid, bi_dim, bj_dim
255     character*(*) vname, gname
256     CEOP
257    
258     C !LOCAL VARIABLES:
259     integer indv
260    
261     C Check whether vname is defined
262     CALL MNC_GET_IND(MNC_MAX_ID, vname, mnc_cw_vname, indv, myThid)
263     IF (indv .LT. 1) THEN
264     CALL MNC_CW_ADD_VNAME(vname, gname, bi_dim, bj_dim, myThid)
265     ENDIF
266    
267    
268     RETURN
269     END
270    
271     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
272     CBOP 0
273 edhill 1.11 C !ROUTINE: MNC_CW_ADD_VNAME
274 edhill 1.2
275 edhill 1.11 C !INTERFACE:
276 edhill 1.2 SUBROUTINE MNC_CW_ADD_VNAME(
277     I vname,
278 edhill 1.5 I gname,
279 edhill 1.9 I bi_dim, bj_dim,
280     I myThid )
281 edhill 1.2
282 edhill 1.13 C !DESCRIPTION:
283     C Add a variable type to the MNC CW layer. The variable type is an
284     C association between a variable type name and the following items:
285 edhill 1.12 C \begin{center}
286     C \begin{tabular}[h]{|ll|}\hline
287     C \textbf{Item} & \textbf{Purpose} \\\hline
288     C grid type & defines the in-memory arrangement \\
289     C \texttt{bi,bj} dimensions & tiling indices, if present \\\hline
290     C \end{tabular}
291     C \end{center}
292    
293 edhill 1.11 C !USES:
294 edhill 1.2 implicit none
295     #include "mnc_common.h"
296     #include "EEPARAMS.h"
297    
298 edhill 1.11 C !INPUT PARAMETERS:
299 edhill 1.5 integer myThid, bi_dim, bj_dim
300 edhill 1.2 character*(*) vname, gname
301 edhill 1.12 CEOP
302 edhill 1.2
303 edhill 1.11 C !LOCAL VARIABLES:
304     integer i, nvf,nvl, ngf,ngl, indv,indg
305     character*(MAX_LEN_MBUF) msgbuf
306 edhill 1.12
307 edhill 1.2 C Functions
308     integer IFNBLNK, ILNBLNK
309    
310     nvf = IFNBLNK(vname)
311     nvl = ILNBLNK(vname)
312     ngf = IFNBLNK(gname)
313     ngl = ILNBLNK(gname)
314    
315     C Check that this vname is not already defined
316 edhill 1.9 CALL MNC_GET_IND(MNC_MAX_ID, vname, mnc_cw_vname, indv, myThid)
317 edhill 1.2 IF (indv .GT. 0) THEN
318     write(msgbuf,'(3a)') 'MNC_CW_ADD_VNAME ERROR: ''',
319     & vname(nvf:nvl), ''' is already defined'
320     CALL print_error(msgbuf, mythid)
321     stop 'ABNORMAL END: S/R MNC_CW_ADD_VNAME'
322     ENDIF
323 edhill 1.9 CALL MNC_GET_NEXT_EMPTY_IND(MNC_MAX_ID, mnc_cw_vname,
324 edhill 1.26 & 'mnc_cw_vname', indv, myThid)
325 edhill 1.2
326     C Check that gname exists
327 edhill 1.9 CALL MNC_GET_IND(MNC_MAX_ID, gname, mnc_cw_gname, indg, myThid)
328 edhill 1.2 IF (indg .LT. 1) THEN
329     write(msgbuf,'(3a)') 'MNC_CW_ADD_VNAME ERROR: ''',
330     & gname(ngf:ngl), ''' is not defined'
331     CALL print_error(msgbuf, mythid)
332     stop 'ABNORMAL END: S/R MNC_CW_ADD_VNAME'
333     ENDIF
334    
335     mnc_cw_vname(indv)(1:MNC_MAX_CHAR)=mnc_blank_name(1:MNC_MAX_CHAR)
336     mnc_cw_vname(indv)(1:(nvl-nvf+1)) = vname(nvf:nvl)
337     mnc_cw_vgind(indv) = indg
338     DO i = 1,3
339     mnc_cw_vnat(i,indv) = 0
340     ENDDO
341 edhill 1.5 mnc_cw_vbij(1,indv) = bi_dim
342     mnc_cw_vbij(2,indv) = bj_dim
343 edhill 1.6
344 edhill 1.18 #ifdef MNC_DEBUG_GTYPE
345 edhill 1.9 CALL MNC_CW_ADD_VATTR_TEXT(vname,1,'mitgcm_grid',gname, myThid)
346 edhill 1.18 #endif
347 edhill 1.2
348     RETURN
349     END
350    
351     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
352 edhill 1.12 CBOP 0
353 edhill 1.15 C !ROUTINE: MNC_CW_DEL_VNAME
354    
355     C !INTERFACE:
356     SUBROUTINE MNC_CW_DEL_VNAME(
357     I vname,
358     I myThid )
359    
360     C !DESCRIPTION:
361     C Delete a variable type from the MNC CW layer.
362    
363     C !USES:
364     implicit none
365     #include "mnc_common.h"
366     #include "EEPARAMS.h"
367    
368     C !INPUT PARAMETERS:
369     integer myThid
370     character*(*) vname
371     CEOP
372    
373     C !LOCAL VARIABLES:
374     integer i, indv
375    
376     C Check that this vname is not already defined
377     CALL MNC_GET_IND(MNC_MAX_ID, vname, mnc_cw_vname, indv, myThid)
378     IF (indv .LT. 1) THEN
379     RETURN
380     ENDIF
381    
382     mnc_cw_vname(indv)(1:MNC_MAX_CHAR)=mnc_blank_name(1:MNC_MAX_CHAR)
383     mnc_cw_vgind(indv) = 0
384     DO i = 1,3
385     mnc_cw_vnat(i,indv) = 0
386     ENDDO
387    
388     RETURN
389     END
390    
391     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
392 edhill 1.20 CBOP
393 edhill 1.11 C !ROUTINE: MNC_CW_ADD_VATTR_TEXT
394     C !INTERFACE:
395 edhill 1.3 SUBROUTINE MNC_CW_ADD_VATTR_TEXT(
396 edhill 1.20 I vname, tname, tval,
397 edhill 1.9 I myThid )
398 edhill 1.3
399 edhill 1.11 C !DESCRIPTION:
400     C Add a text attribute
401    
402     C !USES:
403 edhill 1.3 implicit none
404    
405 edhill 1.11 C !INPUT PARAMETERS:
406 edhill 1.19 integer myThid
407     character*(*) vname, tname, tval
408 edhill 1.20 integer ival
409     REAL*8 dval
410 edhill 1.11 CEOP
411 edhill 1.20 ival = 0
412     dval = 0.0D0
413     CALL MNC_CW_ADD_VATTR_ANY(vname, 1,
414     & tname, ' ', ' ', tval, ival, dval, myThid )
415 edhill 1.3 RETURN
416     END
417     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
418 edhill 1.11 CBOP
419     C !ROUTINE: MNC_CW_ADD_VATTR_INT
420     C !INTERFACE:
421 edhill 1.3 SUBROUTINE MNC_CW_ADD_VATTR_INT(
422 edhill 1.20 I vname, iname, ival,
423 edhill 1.9 I myThid )
424 edhill 1.3
425 edhill 1.11 C !DESCRIPTION:
426 edhill 1.20 C Add integer attribute
427 edhill 1.11
428     C !USES:
429 edhill 1.3 implicit none
430    
431 edhill 1.11 C !INPUT PARAMETERS:
432 edhill 1.19 integer myThid
433     character*(*) vname, iname
434     integer ival
435 edhill 1.20 REAL*8 dval
436 edhill 1.11 CEOP
437 edhill 1.20 dval = 0.0D0
438     CALL MNC_CW_ADD_VATTR_ANY(vname, 2,
439     & ' ', iname, ' ', ' ', ival, dval, myThid )
440 edhill 1.3 RETURN
441     END
442     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
443 edhill 1.20 CBOP
444 edhill 1.11 C !ROUTINE: MNC_CW_ADD_VATTR_DBL
445     C !INTERFACE:
446 edhill 1.3 SUBROUTINE MNC_CW_ADD_VATTR_DBL(
447 edhill 1.20 I vname, dname, dval,
448 edhill 1.9 I myThid )
449 edhill 1.3
450 edhill 1.11 C !DESCRIPTION:
451 edhill 1.20 C Add double-precision real attribute
452 edhill 1.11
453     C !USES:
454 edhill 1.3 implicit none
455    
456 edhill 1.11 C !INPUT PARAMETERS:
457 edhill 1.19 integer myThid
458     character*(*) vname, dname
459 edhill 1.20 integer ival
460 edhill 1.19 REAL*8 dval
461 edhill 1.11 CEOP
462 edhill 1.20 ival = 0
463     CALL MNC_CW_ADD_VATTR_ANY(vname, 3,
464     & ' ', ' ', dname, ' ', ival, dval, myThid )
465 edhill 1.3 RETURN
466     END
467     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
468 edhill 1.12 CBOP 1
469 edhill 1.11 C !ROUTINE: MNC_CW_ADD_VATTR_ANY
470 edhill 1.3
471 edhill 1.11 C !INTERFACE:
472 edhill 1.2 SUBROUTINE MNC_CW_ADD_VATTR_ANY(
473     I vname,
474 edhill 1.20 I atype,
475 edhill 1.19 I tname, iname, dname,
476     I tval, ival, dval,
477 edhill 1.9 I myThid )
478 edhill 1.2
479 edhill 1.11 C !DESCRIPTION:
480    
481     C !USES:
482 edhill 1.2 implicit none
483     #include "mnc_common.h"
484     #include "EEPARAMS.h"
485    
486 edhill 1.11 C !INPUT PARAMETERS:
487 edhill 1.19 integer myThid
488 edhill 1.20 integer atype
489 edhill 1.2 character*(*) vname
490 edhill 1.19 character*(*) tname, iname, dname
491     character*(*) tval
492     integer ival
493     REAL*8 dval
494 edhill 1.12 CEOP
495 edhill 1.2
496 edhill 1.11 C !LOCAL VARIABLES:
497 edhill 1.19 integer n, nvf,nvl, n1,n2, indv
498 edhill 1.11 character*(MAX_LEN_MBUF) msgbuf
499 edhill 1.12
500 edhill 1.2 C Functions
501     integer IFNBLNK, ILNBLNK
502    
503     nvf = IFNBLNK(vname)
504     nvl = ILNBLNK(vname)
505    
506     C Check that vname is defined
507 edhill 1.9 CALL MNC_GET_IND(MNC_MAX_ID, vname, mnc_cw_vname, indv, myThid)
508 edhill 1.2 IF (indv .LT. 1) THEN
509     write(msgbuf,'(3a)') 'MNC_CW_ADD_VATTR_ANY ERROR: ''',
510     & vname(nvf:nvl), ''' is not defined'
511     CALL print_error(msgbuf, mythid)
512     stop 'ABNORMAL END: S/R MNC_CW_ADD_VATTR_ANY'
513     ENDIF
514    
515 edhill 1.20 IF (atype .EQ. 1) THEN
516     C Text Attribute
517     n = mnc_cw_vnat(1,indv) + 1
518     n1 = IFNBLNK(tname)
519     n2 = ILNBLNK(tname)
520     C write(*,*) atype,tname(n1:n2)
521     mnc_cw_vtnm(n,indv)(1:MNC_MAX_CHAR) =
522 edhill 1.16 & mnc_blank_name(1:MNC_MAX_CHAR)
523 edhill 1.20 mnc_cw_vtnm(n,indv)(1:(n2-n1+1)) = tname(n1:n2)
524     n1 = IFNBLNK(tval)
525     n2 = ILNBLNK(tval)
526 edhill 1.21 IF ((n1 .EQ. 0) .OR. (n2 .EQ. 0)) THEN
527     mnc_cw_vtat(n,indv)(1:MNC_MAX_CHAR) =
528     & mnc_blank_name(1:MNC_MAX_CHAR)
529     mnc_cw_vnat(1,indv) = n
530     ELSE
531     mnc_cw_vtat(n,indv)(1:MNC_MAX_CHAR) =
532     & mnc_blank_name(1:MNC_MAX_CHAR)
533     mnc_cw_vtat(n,indv)(1:(n2-n1+1)) = tval(n1:n2)
534     mnc_cw_vnat(1,indv) = n
535     ENDIF
536 edhill 1.20 ENDIF
537    
538     IF (atype .EQ. 2) THEN
539     C Integer Attribute
540     n = mnc_cw_vnat(2,indv) + 1
541     n1 = IFNBLNK(iname)
542     n2 = ILNBLNK(iname)
543     C write(*,*) atype,iname(n1:n2)
544     mnc_cw_vinm(n,indv)(1:(n2-n1+1)) = iname(n1:n2)
545     mnc_cw_viat(n,indv) = ival
546     mnc_cw_vnat(2,indv) = n
547     ENDIF
548    
549     IF (atype .EQ. 3) THEN
550     C Double Attribute
551     n = mnc_cw_vnat(3,indv) + 1
552     n1 = IFNBLNK(dname)
553     n2 = ILNBLNK(dname)
554     C write(*,*) atype,dname(n1:n2)
555     mnc_cw_vdnm(n,indv)(1:(n2-n1+1)) = dname(n1:n2)
556     mnc_cw_vdat(n,indv) = dval
557     mnc_cw_vnat(3,indv) = n
558     ENDIF
559 edhill 1.19
560 edhill 1.3 RETURN
561     END
562    
563     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
564 edhill 1.12 CBOP 1
565 edhill 1.11 C !ROUTINE: MNC_CW_GET_TILE_NUM
566 edhill 1.3
567 edhill 1.11 C !INTERFACE:
568 edhill 1.3 SUBROUTINE MNC_CW_GET_TILE_NUM(
569     I bi, bj,
570 edhill 1.9 O uniq_tnum,
571     I myThid )
572 edhill 1.3
573 edhill 1.11 C !DESCRIPTION:
574    
575     C !USES:
576 edhill 1.3 implicit none
577     #include "EEPARAMS.h"
578     #include "SIZE.h"
579 edhill 1.7 #ifdef ALLOW_EXCH2
580     #include "W2_EXCH2_TOPOLOGY.h"
581     #include "W2_EXCH2_PARAMS.h"
582     #endif
583 edhill 1.3
584 edhill 1.11 C !INPUT PARAMETERS:
585 edhill 1.3 integer myThid, bi,bj, uniq_tnum
586 edhill 1.12 CEOP
587 edhill 1.3
588 edhill 1.11 C !LOCAL VARIABLES:
589 edhill 1.3 integer iG,jG
590    
591 edhill 1.4 iG = 0
592     jG = 0
593    
594 edhill 1.3 #ifdef ALLOW_EXCH2
595    
596     uniq_tnum = W2_myTileList(bi)
597    
598     #else
599    
600     C Global tile number for simple (non-cube) domains
601     iG = bi+(myXGlobalLo-1)/sNx
602     jG = bj+(myYGlobalLo-1)/sNy
603 edhill 1.4
604     uniq_tnum = (jG - 1)*(nPx*nSx) + iG
605 edhill 1.3
606     #endif
607    
608 edhill 1.4 CEH3 write(*,*) 'iG,jG,uniq_tnum :', iG,jG,uniq_tnum
609    
610 edhill 1.3 RETURN
611     END
612    
613     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
614 edhill 1.12 CBOP 1
615 edhill 1.25 C !ROUTINE: MNC_CW_GET_FACE_NUM
616    
617     C !INTERFACE:
618     SUBROUTINE MNC_CW_GET_FACE_NUM(
619     I bi, bj,
620     O uniq_fnum,
621     I myThid )
622    
623     C !DESCRIPTION:
624    
625     C !USES:
626     implicit none
627     #include "EEPARAMS.h"
628     #include "SIZE.h"
629     #ifdef ALLOW_EXCH2
630     #include "W2_EXCH2_TOPOLOGY.h"
631     #include "W2_EXCH2_PARAMS.h"
632     #endif
633    
634     C !INPUT PARAMETERS:
635     integer myThid, bi,bj, uniq_fnum
636     CEOP
637    
638     #ifdef ALLOW_EXCH2
639    
640     uniq_fnum = exch2_myFace( W2_myTileList(bi) )
641    
642     #else
643    
644     C Global face number for simple (EXCH "1") domains
645     uniq_fnum = -1
646    
647     #endif
648    
649     RETURN
650     END
651    
652     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
653     CBOP 1
654     C !ROUTINE: MNC_CW_GET_XYFO
655    
656     C !INTERFACE:
657     SUBROUTINE MNC_CW_GET_XYFO(
658     I bi, bj,
659     O ixoff, iyoff,
660     I myThid )
661    
662     C !DESCRIPTION:
663    
664     C !USES:
665     implicit none
666     #include "EEPARAMS.h"
667     #include "SIZE.h"
668     #ifdef ALLOW_EXCH2
669     #include "W2_EXCH2_TOPOLOGY.h"
670     #include "W2_EXCH2_PARAMS.h"
671     #endif
672    
673     C !INPUT PARAMETERS:
674     integer myThid, bi,bj, ixoff,iyoff
675     CEOP
676    
677     C !LOCAL VARIABLES:
678     integer uniq_tnum
679    
680     #ifdef ALLOW_EXCH2
681    
682     uniq_tnum = W2_myTileList(bi)
683     ixoff = exch2_tbasex( uniq_tnum )
684     iyoff = exch2_tbasey( uniq_tnum )
685    
686     #else
687    
688     C Global tile number for simple (non-cube) domains
689     C iG = bi+(myXGlobalLo-1)/sNx
690     C jG = bj+(myYGlobalLo-1)/sNy
691     C uniq_tnum = (jG - 1)*(nPx*nSx) + iG
692     ixoff = myXGlobalLo + bi * sNx
693     iyoff = myYGlobalLo + bj * sNy
694    
695     #endif
696    
697     RETURN
698     END
699    
700     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
701     CBOP 1
702 edhill 1.11 C !ROUTINE: MNC_CW_FILE_AORC
703    
704     C !INTERFACE:
705 edhill 1.3 SUBROUTINE MNC_CW_FILE_AORC(
706 edhill 1.4 I fname,
707 edhill 1.9 O indf,
708 edhill 1.23 I lbi, lbj, uniq_tnum,
709 edhill 1.9 I myThid )
710 edhill 1.3
711 edhill 1.11 C !DESCRIPTION:
712 edhill 1.13 C Open a NetCDF file, appending to the file if it already exists
713     C and, if not, creating a new file.
714 edhill 1.11
715     C !USES:
716 edhill 1.3 implicit none
717     #include "netcdf.inc"
718     #include "mnc_common.h"
719     #include "EEPARAMS.h"
720    
721 edhill 1.11 C !INPUT PARAMETERS:
722 edhill 1.23 integer myThid, indf, lbi, lbj, uniq_tnum
723 edhill 1.3 character*(*) fname
724 edhill 1.12 CEOP
725 edhill 1.3
726 edhill 1.11 C !LOCAL VARIABLES:
727 edhill 1.14 integer ierr
728 edhill 1.3
729     C Check if the file is already open
730 edhill 1.27 CALL MNC_GET_IND(MNC_MAX_FID, fname, mnc_f_names, indf, myThid)
731 edhill 1.3 IF (indf .GT. 0) THEN
732     RETURN
733     ENDIF
734    
735     C Try to open an existing file
736 edhill 1.9 CALL MNC_FILE_TRY_READ(fname, ierr, indf, myThid)
737 edhill 1.23 IF (ierr .NE. NF_NOERR) THEN
738     C Try to create a new one
739     CALL MNC_FILE_OPEN(fname, 0, indf, myThid)
740 edhill 1.3 ENDIF
741    
742 edhill 1.23 C Add the global attributes
743     CALL MNC_CW_SET_GATTR(fname, lbi,lbj, uniq_tnum, myThid)
744 edhill 1.2
745 edhill 1.1 RETURN
746     END
747    
748     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|

  ViewVC Help
Powered by ViewVC 1.1.22