/[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.34 - (hide annotations) (download)
Sun Jun 28 01:08:25 2009 UTC (14 years, 10 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62, checkpoint62a, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61s, checkpoint61z, checkpoint61x, checkpoint61y
Changes since 1.33: +88 -88 lines
add bj in exch2 arrays and S/R

1 jmc 1.34 C $Header: /u/gcmpack/MITgcm/pkg/mnc/mnc_cwrapper.F,v 1.33 2009/05/12 19:56:36 jmc Exp $
2 edhill 1.1 C $Name: $
3 jmc 1.34
4 edhill 1.1 #include "MNC_OPTIONS.h"
5 jmc 1.34
6 edhill 1.1 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 jmc 1.34 SUBROUTINE MNC_CW_ADD_GNAME(
12     I name,
13     I ndim,
14     I dlens,
15     I dnames,
16     I inds_beg, inds_end,
17 edhill 1.9 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 jmc 1.34
22 edhill 1.11 C !USES:
23 edhill 1.1 implicit none
24 mlosch 1.31 #include "MNC_COMMON.h"
25 edhill 1.1 #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 jmc 1.34 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 jmc 1.34 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 jmc 1.34 SUBROUTINE MNC_CW_DEL_GNAME(
78     I name,
79 edhill 1.15 I myThid )
80    
81     C !DESCRIPTION:
82     C Delete a grid name from the MNC convenience wrapper layer.
83 jmc 1.34
84 edhill 1.15 C !USES:
85     implicit none
86 mlosch 1.31 #include "MNC_COMMON.h"
87 edhill 1.15 #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 jmc 1.34
126 edhill 1.11 C !USES:
127 edhill 1.2 implicit none
128 mlosch 1.31 #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 jmc 1.34
145 edhill 1.10 DO i = 1,NBLNK
146     blnk(i:i) = ' '
147     ENDDO
148 jmc 1.34
149 edhill 1.10 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 jmc 1.34 IF (mnc_cw_gname(j)(1:MNC_MAX_CHAR)
157 edhill 1.2 & .NE. mnc_blank_name(1:MNC_MAX_CHAR)) THEN
158 jmc 1.34
159 edhill 1.2 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 jmc 1.34 & j, ntot, ' : ', mnc_cw_gname(j)(1:20), mnc_cw_ndim(j),
164     & ' : ', (mnc_cw_dims(i,j), i=1,5),
165 edhill 1.2 & ' | ', (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 jmc 1.34
171 edhill 1.2 ENDIF
172     ENDDO
173 jmc 1.34
174 edhill 1.10 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 jmc 1.34 IF (mnc_cw_vname(j)(1:MNC_MAX_CHAR)
182 edhill 1.3 & .NE. mnc_blank_name(1:MNC_MAX_CHAR)) THEN
183 jmc 1.34
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 jmc 1.34 & j, ntot, ' | ',
188 edhill 1.10 & mnc_cw_vname(j)(1:20), ' | ', mnc_cw_vgind(j)
189     CALL PRINT_MESSAGE(
190     & s1, standardMessageUnit, SQUEEZE_RIGHT, mythid)
191 jmc 1.34
192 edhill 1.3 DO i = 1,mnc_cw_vnat(1,j)
193 edhill 1.10 s1(1:NBLNK) = blnk(1:NBLNK)
194 jmc 1.34 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 jmc 1.34 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 jmc 1.34 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 jmc 1.34
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 jmc 1.34
229 edhill 1.10 _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 jmc 1.34 SUBROUTINE MNC_CW_APPEND_VNAME(
240     I vname,
241     I gname,
242     I bi_dim, bj_dim,
243 edhill 1.13 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 jmc 1.34
249 edhill 1.13 C !USES:
250     implicit none
251 mlosch 1.31 #include "MNC_COMMON.h"
252 edhill 1.13
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 jmc 1.34 SUBROUTINE MNC_CW_ADD_VNAME(
277     I vname,
278     I gname,
279     I bi_dim, bj_dim,
280 edhill 1.9 I myThid )
281 edhill 1.2
282 jmc 1.34 C !DESCRIPTION:
283 edhill 1.13 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 jmc 1.34
293 edhill 1.11 C !USES:
294 edhill 1.2 implicit none
295 mlosch 1.31 #include "MNC_COMMON.h"
296 edhill 1.2 #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 jmc 1.34 write(msgbuf,'(3a)') 'MNC_CW_ADD_VNAME ERROR: ''',
319 edhill 1.2 & 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 jmc 1.34 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 jmc 1.34 write(msgbuf,'(3a)') 'MNC_CW_ADD_VNAME ERROR: ''',
330 edhill 1.2 & 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 jmc 1.34 SUBROUTINE MNC_CW_DEL_VNAME(
357     I vname,
358 edhill 1.15 I myThid )
359    
360 jmc 1.34 C !DESCRIPTION:
361 edhill 1.15 C Delete a variable type from the MNC CW layer.
362 jmc 1.34
363 edhill 1.15 C !USES:
364     implicit none
365 mlosch 1.31 #include "MNC_COMMON.h"
366 edhill 1.15 #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 jmc 1.34 SUBROUTINE MNC_CW_ADD_VATTR_TEXT(
396     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 jmc 1.34
402 edhill 1.11 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 jmc 1.34 SUBROUTINE MNC_CW_ADD_VATTR_INT(
422     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 jmc 1.34 SUBROUTINE MNC_CW_ADD_VATTR_DBL(
447     I vname, dname, dval,
448 edhill 1.9 I myThid )
449 edhill 1.3
450 edhill 1.11 C !DESCRIPTION:
451 jmc 1.34 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 jmc 1.34 SUBROUTINE MNC_CW_ADD_VATTR_ANY(
473     I vname,
474 edhill 1.20 I atype,
475 edhill 1.19 I tname, iname, dname,
476 jmc 1.34 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 mlosch 1.31 #include "MNC_COMMON.h"
484 edhill 1.2 #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.30 integer n, nvf,nvl, n1,n2, indv, ic
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 jmc 1.34 write(msgbuf,'(3a)') 'MNC_CW_ADD_VATTR_ANY ERROR: ''',
510 edhill 1.2 & 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 edhill 1.28 IF ((n2-n1+1) .GT. MNC_MAX_CHAR) THEN
521 jmc 1.34 write(msgbuf,'(3a,i6,2a)')
522 edhill 1.28 & 'MNC_CW_ADD_VATTR_ANY WARNING: attribute name ''',
523     & tname(n1:n2), ''' has more than ', MNC_MAX_CHAR,
524 edhill 1.30 & ' characters and has been truncated to fit--please',
525     & 'use a smaller name or increase MNC_MAX_CHAR'
526 jmc 1.29 CALL PRINT_MESSAGE( msgbuf, errorMessageUnit,
527     & SQUEEZE_RIGHT , myThid)
528 edhill 1.28 C MNC_MAX_CHAR = n2 - n1 + 1
529     n2 = MNC_MAX_CHAR + n1 - 1
530     ENDIF
531 edhill 1.20 C write(*,*) atype,tname(n1:n2)
532     mnc_cw_vtnm(n,indv)(1:MNC_MAX_CHAR) =
533 edhill 1.16 & mnc_blank_name(1:MNC_MAX_CHAR)
534 edhill 1.20 mnc_cw_vtnm(n,indv)(1:(n2-n1+1)) = tname(n1:n2)
535 edhill 1.28
536 edhill 1.20 n1 = IFNBLNK(tval)
537     n2 = ILNBLNK(tval)
538 edhill 1.30 IF ((n2-n1+1) .GT. MNC_MAX_CATT) THEN
539 jmc 1.34 write(msgbuf,'(3a,i6,2a)')
540 edhill 1.28 & 'MNC_CW_ADD_VATTR_ANY WARNING: attribute value ''',
541 edhill 1.30 & tval(n1:n2), ''' has more than ', MNC_MAX_CATT,
542     & ' characters and has been truncated to fit--please',
543     & 'use a smaller name or increase MNC_MAX_CATT'
544 jmc 1.29 CALL PRINT_MESSAGE( msgbuf, errorMessageUnit,
545     & SQUEEZE_RIGHT , myThid)
546 edhill 1.30 n2 = MNC_MAX_CATT + n1 - 1
547 edhill 1.28 ENDIF
548 jmc 1.34
549 edhill 1.30 mnc_cw_vnat(1,indv) = n
550     DO ic = 1,MNC_MAX_CATT
551     mnc_cw_vtat(n,indv)(ic:ic) = ' '
552     ENDDO
553     IF ((n1 .NE. 0) .AND. (n2 .NE. 0)) THEN
554 edhill 1.21 mnc_cw_vtat(n,indv)(1:(n2-n1+1)) = tval(n1:n2)
555     ENDIF
556 edhill 1.20 ENDIF
557 jmc 1.34
558 edhill 1.20 IF (atype .EQ. 2) THEN
559     C Integer Attribute
560     n = mnc_cw_vnat(2,indv) + 1
561     n1 = IFNBLNK(iname)
562     n2 = ILNBLNK(iname)
563     C write(*,*) atype,iname(n1:n2)
564     mnc_cw_vinm(n,indv)(1:(n2-n1+1)) = iname(n1:n2)
565     mnc_cw_viat(n,indv) = ival
566     mnc_cw_vnat(2,indv) = n
567     ENDIF
568    
569     IF (atype .EQ. 3) THEN
570     C Double Attribute
571     n = mnc_cw_vnat(3,indv) + 1
572     n1 = IFNBLNK(dname)
573     n2 = ILNBLNK(dname)
574     C write(*,*) atype,dname(n1:n2)
575     mnc_cw_vdnm(n,indv)(1:(n2-n1+1)) = dname(n1:n2)
576     mnc_cw_vdat(n,indv) = dval
577     mnc_cw_vnat(3,indv) = n
578     ENDIF
579 jmc 1.34
580 edhill 1.3 RETURN
581     END
582    
583     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
584 edhill 1.12 CBOP 1
585 edhill 1.11 C !ROUTINE: MNC_CW_GET_TILE_NUM
586 edhill 1.3
587 edhill 1.11 C !INTERFACE:
588 jmc 1.34 SUBROUTINE MNC_CW_GET_TILE_NUM(
589     I bi, bj,
590     O uniq_tnum,
591 edhill 1.9 I myThid )
592 edhill 1.3
593 edhill 1.11 C !DESCRIPTION:
594    
595     C !USES:
596 edhill 1.3 implicit none
597     #include "EEPARAMS.h"
598     #include "SIZE.h"
599 edhill 1.7 #ifdef ALLOW_EXCH2
600 jmc 1.33 #include "W2_EXCH2_SIZE.h"
601 edhill 1.7 #include "W2_EXCH2_TOPOLOGY.h"
602     #endif
603 edhill 1.3
604 edhill 1.11 C !INPUT PARAMETERS:
605 edhill 1.3 integer myThid, bi,bj, uniq_tnum
606 edhill 1.12 CEOP
607 edhill 1.3
608 edhill 1.11 C !LOCAL VARIABLES:
609 edhill 1.3 integer iG,jG
610    
611 edhill 1.4 iG = 0
612     jG = 0
613    
614 edhill 1.3 #ifdef ALLOW_EXCH2
615    
616 jmc 1.34 uniq_tnum = W2_myTileList(bi,bj)
617 edhill 1.3
618     #else
619    
620     C Global tile number for simple (non-cube) domains
621     iG = bi+(myXGlobalLo-1)/sNx
622     jG = bj+(myYGlobalLo-1)/sNy
623 edhill 1.4
624     uniq_tnum = (jG - 1)*(nPx*nSx) + iG
625 edhill 1.3
626     #endif
627    
628 edhill 1.4 CEH3 write(*,*) 'iG,jG,uniq_tnum :', iG,jG,uniq_tnum
629    
630 edhill 1.3 RETURN
631     END
632    
633     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
634 edhill 1.12 CBOP 1
635 edhill 1.25 C !ROUTINE: MNC_CW_GET_FACE_NUM
636    
637     C !INTERFACE:
638 jmc 1.34 SUBROUTINE MNC_CW_GET_FACE_NUM(
639     I bi, bj,
640     O uniq_fnum,
641 edhill 1.25 I myThid )
642    
643     C !DESCRIPTION:
644    
645     C !USES:
646     implicit none
647     #include "EEPARAMS.h"
648     #include "SIZE.h"
649     #ifdef ALLOW_EXCH2
650 jmc 1.33 #include "W2_EXCH2_SIZE.h"
651 edhill 1.25 #include "W2_EXCH2_TOPOLOGY.h"
652     #endif
653    
654     C !INPUT PARAMETERS:
655     integer myThid, bi,bj, uniq_fnum
656     CEOP
657    
658     #ifdef ALLOW_EXCH2
659    
660 jmc 1.34 uniq_fnum = exch2_myFace( W2_myTileList(bi,bj) )
661 edhill 1.25
662     #else
663    
664     C Global face number for simple (EXCH "1") domains
665     uniq_fnum = -1
666    
667     #endif
668    
669     RETURN
670     END
671    
672     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
673     CBOP 1
674     C !ROUTINE: MNC_CW_GET_XYFO
675    
676     C !INTERFACE:
677 jmc 1.34 SUBROUTINE MNC_CW_GET_XYFO(
678     I bi, bj,
679     O ixoff, iyoff,
680 edhill 1.25 I myThid )
681    
682     C !DESCRIPTION:
683    
684     C !USES:
685     implicit none
686     #include "EEPARAMS.h"
687     #include "SIZE.h"
688     #ifdef ALLOW_EXCH2
689 jmc 1.33 #include "W2_EXCH2_SIZE.h"
690 edhill 1.25 #include "W2_EXCH2_TOPOLOGY.h"
691     #endif
692    
693     C !INPUT PARAMETERS:
694     integer myThid, bi,bj, ixoff,iyoff
695     CEOP
696    
697     C !LOCAL VARIABLES:
698     integer uniq_tnum
699    
700     #ifdef ALLOW_EXCH2
701    
702 jmc 1.34 uniq_tnum = W2_myTileList(bi,bj)
703 edhill 1.25 ixoff = exch2_tbasex( uniq_tnum )
704     iyoff = exch2_tbasey( uniq_tnum )
705    
706     #else
707    
708     C Global tile number for simple (non-cube) domains
709     C iG = bi+(myXGlobalLo-1)/sNx
710     C jG = bj+(myYGlobalLo-1)/sNy
711     C uniq_tnum = (jG - 1)*(nPx*nSx) + iG
712     ixoff = myXGlobalLo + bi * sNx
713     iyoff = myYGlobalLo + bj * sNy
714    
715     #endif
716    
717     RETURN
718     END
719    
720     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
721     CBOP 1
722 edhill 1.11 C !ROUTINE: MNC_CW_FILE_AORC
723 jmc 1.34
724 edhill 1.11 C !INTERFACE:
725 jmc 1.34 SUBROUTINE MNC_CW_FILE_AORC(
726     I fname,
727     O indf,
728     I lbi, lbj, uniq_tnum,
729 edhill 1.9 I myThid )
730 edhill 1.3
731 edhill 1.11 C !DESCRIPTION:
732 edhill 1.13 C Open a NetCDF file, appending to the file if it already exists
733     C and, if not, creating a new file.
734 edhill 1.11
735     C !USES:
736 edhill 1.3 implicit none
737 mlosch 1.31 #include "MNC_COMMON.h"
738 edhill 1.3 #include "EEPARAMS.h"
739 utke 1.32 #include "netcdf.inc"
740 edhill 1.3
741 edhill 1.11 C !INPUT PARAMETERS:
742 edhill 1.23 integer myThid, indf, lbi, lbj, uniq_tnum
743 edhill 1.3 character*(*) fname
744 edhill 1.12 CEOP
745 edhill 1.3
746 edhill 1.11 C !LOCAL VARIABLES:
747 edhill 1.14 integer ierr
748 edhill 1.3
749     C Check if the file is already open
750 edhill 1.27 CALL MNC_GET_IND(MNC_MAX_FID, fname, mnc_f_names, indf, myThid)
751 edhill 1.3 IF (indf .GT. 0) THEN
752     RETURN
753     ENDIF
754    
755     C Try to open an existing file
756 edhill 1.9 CALL MNC_FILE_TRY_READ(fname, ierr, indf, myThid)
757 edhill 1.23 IF (ierr .NE. NF_NOERR) THEN
758     C Try to create a new one
759     CALL MNC_FILE_OPEN(fname, 0, indf, myThid)
760 edhill 1.3 ENDIF
761    
762 edhill 1.23 C Add the global attributes
763     CALL MNC_CW_SET_GATTR(fname, lbi,lbj, uniq_tnum, myThid)
764 edhill 1.2
765 edhill 1.1 RETURN
766     END
767    
768     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|

  ViewVC Help
Powered by ViewVC 1.1.22