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

Diff of /MITgcm/pkg/mnc/mnc_cw_cvars.F

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

revision 1.9 by mlosch, Thu May 22 12:21:19 2008 UTC revision 1.10 by mlosch, Fri May 23 12:40:37 2008 UTC
# Line 49  C     !LOCAL VARIABLES: Line 49  C     !LOCAL VARIABLES:
49        character*(MAX_LEN_MBUF) msgbuf        character*(MAX_LEN_MBUF) msgbuf
50        integer cv_start(1), cv_count(1)        integer cv_start(1), cv_count(1)
51        _RS rtmp(sNx + 2*OLx + sNy + 2*OLy + Nr)        _RS rtmp(sNx + 2*OLx + sNy + 2*OLy + Nr)
52    C     variables for text attributes
53          integer MAX_LEN_NAME, ia
54          PARAMETER ( MAX_LEN_NAME = 128 )
55          character*(MAX_LEN_NAME) units, long_name, positive
56    
57          DO i=1,MAX_LEN_NAME
58             units(i:i)     = ' '
59             long_name(i:i) = ' '
60             positive(i:i)  = ' '
61          ENDDO
62    
63        nnf = IFNBLNK(cvname)        nnf = IFNBLNK(cvname)
64        nnl = ILNBLNK(cvname)        nnl = ILNBLNK(cvname)
# Line 83  C     Check all the coordinate variables Line 93  C     Check all the coordinate variables
93           ENDDO           ENDDO
94          ENDIF          ENDIF
95  #endif  #endif
96            IF ( usingCartesianGrid ) THEN
97             long_name = 'X-coordinate of cell center'
98             units     = 'meters'
99            ELSEIF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
100             long_name = 'i-index of cell center'
101             units     = 'none'
102            ELSEIF ( usingSphericalPolarGrid ) THEN
103             long_name = 'longitude of cell center'
104             units     = 'degrees_east'
105            ELSEIF ( usingCylindricalGrid ) THEN
106             long_name = 'polar angle coordinate of cell center'
107             units     = 'degrees'
108            ELSE
109    C       unknown grid type
110             print *, 'S/R MNC_CW_CVARS: Ooops, unknown horizontal grid!'
111            ENDIF
112    
113        ELSEIF (cvname(nnf:nnl) .EQ. 'Xp1') THEN        ELSEIF (cvname(nnf:nnl) .EQ. 'Xp1') THEN
114    
# Line 103  C     Check all the coordinate variables Line 129  C     Check all the coordinate variables
129           ENDDO           ENDDO
130          ENDIF          ENDIF
131  #endif  #endif
132            IF ( usingCartesianGrid ) THEN
133             long_name = 'X-Coordinate of cell corner'
134             units     = 'meters'
135            ELSEIF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
136             long_name = 'i-index of cell corner'
137             units     = 'none'
138            ELSEIF ( usingSphericalPolarGrid ) THEN
139             long_name = 'longitude of cell corner'
140             units     = 'degrees_east'
141            ELSEIF ( usingCylindricalGrid ) THEN
142             long_name = 'polar angle  of cell corner'
143             units     = 'degrees'
144            ELSE
145    C       unknown grid type
146             print *, 'S/R MNC_CW_CVARS: Ooops, unknown horizontal grid!'
147            ENDIF
148    
149        ELSEIF (cvname(nnf:nnl) .EQ. 'Xwh') THEN        ELSEIF (cvname(nnf:nnl) .EQ. 'Xwh') THEN
150    
# Line 120  C     Check all the coordinate variables Line 162  C     Check all the coordinate variables
162          ELSE          ELSE
163           DO i = cv_start(1),cv_count(1)           DO i = cv_start(1),cv_count(1)
164            rtmp(i) = xC(i,1,bi,bj)            rtmp(i) = xC(i,1,bi,bj)
165    CML????          rtmp(i) = xC(i-Olx,1,bi,bj)
166           ENDDO           ENDDO
167          ENDIF          ENDIF
168  #endif  #endif
169            IF ( usingCartesianGrid ) THEN
170             long_name = 'X-Coordinate of cell center including overlaps'
171             units     = 'meters'
172            ELSEIF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
173             long_name = 'i-index of cell center including overlaps'
174             units     = 'none'
175            ELSEIF ( usingSphericalPolarGrid ) THEN
176             long_name = 'longitude of cell center including overlaps'
177             units     = 'degrees_east'
178            ELSEIF ( usingCylindricalGrid ) THEN
179             long_name =
180         &        'polar angle coordinate of cell center including overlaps'
181             units     = 'degrees'
182            ELSE
183    C       unknown grid type
184             print *, 'S/R MNC_CW_CVARS: Ooops, unknown horizontal grid!'
185            ENDIF
186                    
187        ELSEIF (cvname(nnf:nnl) .EQ. 'Y') THEN        ELSEIF (cvname(nnf:nnl) .EQ. 'Y') THEN
188    
# Line 143  C     Check all the coordinate variables Line 203  C     Check all the coordinate variables
203           ENDDO           ENDDO
204          ENDIF          ENDIF
205  #endif  #endif
206            IF ( usingCartesianGrid ) THEN
207             long_name = 'Y-Coordinate of cell center'
208             units     = 'meters'
209            ELSEIF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
210             long_name = 'j-index of cell center'
211             units     = 'none'
212            ELSEIF ( usingSphericalPolarGrid ) THEN
213             long_name = 'latitude of cell center'
214             units     = 'degrees_north'
215            ELSEIF ( usingCylindricalGrid ) THEN
216             long_name = 'radial coordinate of cell center'
217             units     = 'meters'
218            ELSE
219    C       unknown grid type
220             print *, 'S/R MNC_CW_CVARS: Ooops, unknown horizontal grid!'
221            ENDIF
222    
223        ELSEIF (cvname(nnf:nnl) .EQ. 'Yp1') THEN        ELSEIF (cvname(nnf:nnl) .EQ. 'Yp1') THEN
224    
# Line 163  C     Check all the coordinate variables Line 239  C     Check all the coordinate variables
239           ENDDO           ENDDO
240          ENDIF          ENDIF
241  #endif  #endif
242            IF ( usingCartesianGrid ) THEN
243             long_name = 'Y-Coordinate of cell corner'
244             units     = 'meters'
245            ELSEIF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
246             long_name = 'j-index of cell corner'
247             units     = 'none'
248            ELSEIF ( usingSphericalPolarGrid ) THEN
249             long_name = 'latitude of cell corner'
250             units     = 'degrees_north'
251            ELSEIF ( usingCylindricalGrid ) THEN
252             long_name = 'radial coordinate of cell corner'
253             units     = 'meters'
254            ELSE
255    C       unknown grid type
256             print *, 'S/R MNC_CW_CVARS: Ooops, unknown horizontal grid!'
257            ENDIF
258    
259        ELSEIF (cvname(nnf:nnl) .EQ. 'Ywh') THEN        ELSEIF (cvname(nnf:nnl) .EQ. 'Ywh') THEN
260    
# Line 183  C     Check all the coordinate variables Line 275  C     Check all the coordinate variables
275           ENDDO           ENDDO
276          ENDIF          ENDIF
277  #endif  #endif
278            IF ( usingCartesianGrid ) THEN
279             long_name = 'Y-Coordinate of cell center including overlaps'
280             units     = 'meters'
281            ELSEIF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
282             long_name = 'j-index of cell center including overlaps'
283             units     = 'none'
284            ELSEIF ( usingSphericalPolarGrid ) THEN
285             long_name = 'latitude of cell center including overlaps'
286             units     = 'degrees_north'
287            ELSEIF ( usingCylindricalGrid ) THEN
288             long_name =
289         &        'radial coordinate of cell center including overlaps'
290             units     = 'meters'
291            ELSE
292    C       unknown grid type
293             print *, 'S/R MNC_CW_CVARS: Ooops, unknown horizontal grid!'
294            ENDIF
295    
296        ELSEIF (cvname(nnf:nnl) .EQ. 'Z') THEN        ELSEIF (cvname(nnf:nnl) .EQ. 'Z') THEN
297    
# Line 191  C     Check all the coordinate variables Line 300  C     Check all the coordinate variables
300          DO i = cv_start(1),cv_count(1)          DO i = cv_start(1),cv_count(1)
301            rtmp(i) = rC(i)            rtmp(i) = rC(i)
302          ENDDO          ENDDO
303    C    
304            long_name = 'vertical coordinate of cell center'
305            IF ( usingZCoords ) THEN
306             units     = 'meters'
307             positive  = 'up'
308            ELSEIF ( usingPCoords ) THEN
309             units     = 'pascal'
310            ELSE
311    C       unknown grid type
312             print *, 'S/R MNC_CW_CVARS: Ooops, unknown vertical grid!'
313            ENDIF
314    
315        ELSEIF (cvname(nnf:nnl) .EQ. 'Zp1') THEN        ELSEIF (cvname(nnf:nnl) .EQ. 'Zp1') THEN
316    
# Line 199  C     Check all the coordinate variables Line 319  C     Check all the coordinate variables
319          DO i = cv_start(1),cv_count(1)          DO i = cv_start(1),cv_count(1)
320            rtmp(i) = rF(i)            rtmp(i) = rF(i)
321          ENDDO          ENDDO
322    C
323            long_name = 'vertical coordinate of cell interface'
324            IF ( usingZCoords ) THEN
325             units     = 'meters'
326             positive  = 'up'
327            ELSEIF ( usingPCoords ) THEN
328             units     = 'pascal'
329            ELSE
330    C       unknown grid type
331             print *, 'S/R MNC_CW_CVARS: Ooops, unknown vertical grid!'
332            ENDIF
333    
334        ELSEIF (cvname(nnf:nnl) .EQ. 'Zu') THEN        ELSEIF (cvname(nnf:nnl) .EQ. 'Zu') THEN
335    
# Line 207  C     Check all the coordinate variables Line 338  C     Check all the coordinate variables
338          DO i = cv_start(1),cv_count(1)          DO i = cv_start(1),cv_count(1)
339            rtmp(i) = rF(i + 1)            rtmp(i) = rF(i + 1)
340          ENDDO          ENDDO
341    C
342            IF ( usingZCoords ) THEN
343             long_name = 'vertical coordinate of lower cell interface'
344             units     = 'meters'
345             positive  = 'up'
346            ELSEIF ( usingPCoords ) THEN
347             long_name = 'vertical coordinate of upper cell interface'
348             units     = 'pascal'
349            ELSE
350    C       unknown grid type
351             print *, 'S/R MNC_CW_CVARS: Ooops, unknown vertical grid!'
352            ENDIF
353    
354        ELSEIF (cvname(nnf:nnl) .EQ. 'Zl') THEN        ELSEIF (cvname(nnf:nnl) .EQ. 'Zl') THEN
355    
# Line 215  C     Check all the coordinate variables Line 358  C     Check all the coordinate variables
358          DO i = cv_start(1),cv_count(1)          DO i = cv_start(1),cv_count(1)
359            rtmp(i) = rF(i)            rtmp(i) = rF(i)
360          ENDDO          ENDDO
361    C
362            IF ( usingZCoords ) THEN
363             long_name = 'vertical coordinate of upper cell interface'
364             units     = 'meters'
365             positive  = 'up'
366            ELSEIF ( usingPCoords ) THEN
367             long_name = 'vertical coordinate of lower cell interface'
368             units     = 'pascal'
369            ELSE
370    C       unknown grid type
371             print *, 'S/R MNC_CW_CVARS: Ooops, unknown vertical grid!'
372            ENDIF
373    
374        ELSEIF (cvname(nnf:nnl) .EQ. 'Zm1') THEN        ELSEIF (cvname(nnf:nnl) .EQ. 'Zm1') THEN
375    
# Line 223  C     Check all the coordinate variables Line 378  C     Check all the coordinate variables
378          DO i = cv_start(1),cv_count(1)          DO i = cv_start(1),cv_count(1)
379            rtmp(i) = rF(i + 1)            rtmp(i) = rF(i + 1)
380          ENDDO          ENDDO
381    C
382            IF ( usingZCoords ) THEN
383             long_name = 'vertical coordinate of lower cell interface'
384             units     = 'meters'
385             positive  = 'up'
386            ELSEIF ( usingPCoords ) THEN
387             long_name = 'vertical coordinate of upper cell interface'
388             units     = 'pascal'
389            ELSE
390    C       unknown grid type
391             print *, 'S/R MNC_CW_CVARS: Ooops, unknown vertical grid!'
392            ENDIF
393    
394        ELSE        ELSE
395    
# Line 239  C     Check all the coordinate variables Line 406  C     Check all the coordinate variables
406          write(msgbuf,'(5a)') 'defining coordinate variable ''',          write(msgbuf,'(5a)') 'defining coordinate variable ''',
407       &       cvname(nnf:nnl), ''' in file ''', fname(1:i), ''''       &       cvname(nnf:nnl), ''' in file ''', fname(1:i), ''''
408          CALL MNC_HANDLE_ERR(err, msgbuf, myThid)          CALL MNC_HANDLE_ERR(err, msgbuf, myThid)
409    C     add attributes if set
410            ia = ILNBLNK(long_name)
411            IF ( ia .GT. 0 ) THEN
412             err = NF_PUT_ATT_TEXT(fid, vid, 'long_name', ia, long_name)
413             write(msgbuf,'(5a)')
414         &     'adding attribute ''long_name'' to coordinate variable ''',
415         &     cvname(nnf:nnl), ''' in file ''', fname(1:i), ''''
416             CALL MNC_HANDLE_ERR(err, msgbuf, myThid)
417            ENDIF
418            ia = ILNBLNK(units)
419            IF ( ia .GT. 0 ) THEN
420             err = NF_PUT_ATT_TEXT(fid, vid, 'units', ia, units)
421             write(msgbuf,'(5a)')
422         &     'adding attribute ''units'' to coordinate variable ''',
423         &     cvname(nnf:nnl), ''' in file ''', fname(1:i), ''''
424             CALL MNC_HANDLE_ERR(err, msgbuf, myThid)
425            ENDIF
426            ia = ILNBLNK(positive)
427            IF ( ia .GT. 0 ) THEN
428             err = NF_PUT_ATT_TEXT(fid, vid, 'positive', ia, positive)
429             write(msgbuf,'(5a)')
430         &     'adding attribute ''positive'' to coordinate variable ''',
431         &     cvname(nnf:nnl), ''' in file ''', fname(1:i), ''''
432             CALL MNC_HANDLE_ERR(err, msgbuf, myThid)
433            ENDIF
434    C    
435          CALL MNC_FILE_ENDDEF(fname, myThid)          CALL MNC_FILE_ENDDEF(fname, myThid)
436          err = NF_PUT_VARA_DOUBLE(fid, vid,          err = NF_PUT_VARA_DOUBLE(fid, vid,
437       &       cv_start, cv_count, rtmp)       &       cv_start, cv_count, rtmp)

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.22