/[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.4 by edhill, Mon Dec 20 17:10:27 2004 UTC revision 1.9 by mlosch, Thu May 22 12:21:19 2008 UTC
# Line 22  C     Write a CF-convention coordinate v Line 22  C     Write a CF-convention coordinate v
22  C     !USES:  C     !USES:
23        implicit none        implicit none
24  #include "netcdf.inc"  #include "netcdf.inc"
25  #include "mnc_common.h"  #include "MNC_COMMON.h"
26  #include "SIZE.h"  #include "SIZE.h"
27  #include "EEPARAMS.h"  #include "EEPARAMS.h"
28  #include "EESUPPORT.h"  #include "EESUPPORT.h"
# Line 44  C     !INPUT PARAMETERS: Line 44  C     !INPUT PARAMETERS:
44  CEOP  CEOP
45    
46  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
47        integer i,j, vid, nnf,nnl, doit, err        integer i, vid, nnf, nnl, doit, err
48        integer nids, cv_did(1), xtmin,ytmin        integer nids, cv_did(1), xtmin,ytmin
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)
# Line 68  C     Check all the coordinate variables Line 68  C     Check all the coordinate variables
68    
69          cv_start(1) = 1          cv_start(1) = 1
70          cv_count(1) = sNx          cv_count(1) = sNx
         DO i = cv_start(1),cv_count(1)  
71  #ifdef ALLOW_EXCH2  #ifdef ALLOW_EXCH2
72            rtmp(i) = xtmin + i          DO i = cv_start(1),cv_count(1)
73             rtmp(i) = xtmin + i
74            ENDDO
75  #else  #else
76            IF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
77             DO i = cv_start(1),cv_count(1)
78              rtmp(i) = xtmin + i
79             ENDDO
80            ELSE
81             DO i = cv_start(1),cv_count(1)
82            rtmp(i) = xC(i,1,bi,bj)            rtmp(i) = xC(i,1,bi,bj)
83             ENDDO
84            ENDIF
85  #endif  #endif
         ENDDO  
86    
87        ELSEIF (cvname(nnf:nnl) .EQ. 'Xp1') THEN        ELSEIF (cvname(nnf:nnl) .EQ. 'Xp1') THEN
88    
89          cv_start(1) = 1          cv_start(1) = 1
90          cv_count(1) = sNx + 1          cv_count(1) = sNx + 1
         DO i = cv_start(1),cv_count(1)  
91  #ifdef ALLOW_EXCH2  #ifdef ALLOW_EXCH2
92            rtmp(i) = xtmin + i          DO i = cv_start(1),cv_count(1)
93             rtmp(i) = xtmin + i
94            ENDDO
95  #else  #else
96            IF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
97             DO i = cv_start(1),cv_count(1)
98              rtmp(i) = xtmin + i
99             ENDDO
100            ELSE
101             DO i = cv_start(1),cv_count(1)
102            rtmp(i) = xG(i,1,bi,bj)            rtmp(i) = xG(i,1,bi,bj)
103             ENDDO
104            ENDIF
105  #endif  #endif
         ENDDO  
106    
107        ELSEIF (cvname(nnf:nnl) .EQ. 'Xwh') THEN        ELSEIF (cvname(nnf:nnl) .EQ. 'Xwh') THEN
108    
109          cv_start(1) = 1          cv_start(1) = 1
110          cv_count(1) = sNx + 2*OLx          cv_count(1) = sNx + 2*OLx
         DO i = cv_start(1),cv_count(1)  
111  #ifdef ALLOW_EXCH2  #ifdef ALLOW_EXCH2
112            rtmp(i) = xtmin - OLx + i          DO i = cv_start(1),cv_count(1)
113             rtmp(i) = xtmin + i
114            ENDDO
115  #else  #else
116            IF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
117             DO i = cv_start(1),cv_count(1)
118              rtmp(i) = xtmin - OLx + i
119             ENDDO
120            ELSE
121             DO i = cv_start(1),cv_count(1)
122            rtmp(i) = xC(i,1,bi,bj)            rtmp(i) = xC(i,1,bi,bj)
123             ENDDO
124            ENDIF
125  #endif  #endif
         ENDDO  
126                    
127        ELSEIF (cvname(nnf:nnl) .EQ. 'Y') THEN        ELSEIF (cvname(nnf:nnl) .EQ. 'Y') THEN
128    
129          cv_start(1) = 1          cv_start(1) = 1
130          cv_count(1) = sNy          cv_count(1) = sNy
         DO i = cv_start(1),cv_count(1)  
131  #ifdef ALLOW_EXCH2  #ifdef ALLOW_EXCH2
132            rtmp(i) = ytmin + i          DO i = cv_start(1),cv_count(1)
133             rtmp(i) = ytmin + i
134            ENDDO
135  #else  #else
136            IF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
137             DO i = cv_start(1),cv_count(1)
138              rtmp(i) = ytmin + i
139             ENDDO
140            ELSE
141             DO i = cv_start(1),cv_count(1)
142            rtmp(i) = yC(1,i,bi,bj)            rtmp(i) = yC(1,i,bi,bj)
143             ENDDO
144            ENDIF
145  #endif  #endif
         ENDDO  
146    
147        ELSEIF (cvname(nnf:nnl) .EQ. 'Yp1') THEN        ELSEIF (cvname(nnf:nnl) .EQ. 'Yp1') THEN
148    
149          cv_start(1) = 1          cv_start(1) = 1
150          cv_count(1) = sNy + 1          cv_count(1) = sNy + 1
         DO i = cv_start(1),cv_count(1)  
151  #ifdef ALLOW_EXCH2  #ifdef ALLOW_EXCH2
152            rtmp(i) = ytmin + i          DO i = cv_start(1),cv_count(1)
153             rtmp(i) = ytmin + i
154            ENDDO
155  #else  #else
156            IF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
157             DO i = cv_start(1),cv_count(1)
158              rtmp(i) = ytmin + i
159             ENDDO
160            ELSE
161             DO i = cv_start(1),cv_count(1)
162            rtmp(i) = yG(1,i,bi,bj)            rtmp(i) = yG(1,i,bi,bj)
163             ENDDO
164            ENDIF
165  #endif  #endif
         ENDDO  
166    
167        ELSEIF (cvname(nnf:nnl) .EQ. 'Ywh') THEN        ELSEIF (cvname(nnf:nnl) .EQ. 'Ywh') THEN
168    
169          cv_start(1) = 1          cv_start(1) = 1
170          cv_count(1) = sNy + 2*OLy          cv_count(1) = sNy + 2*OLy
         DO i = cv_start(1),cv_count(1)  
171  #ifdef ALLOW_EXCH2  #ifdef ALLOW_EXCH2
172            rtmp(i) = ytmin - OLy + i          DO i = cv_start(1),cv_count(1)
173             rtmp(i) = ytmin + i
174            ENDDO
175  #else  #else
176            IF ( usingCurvilinearGrid .OR. rotateGrid ) THEN
177             DO i = cv_start(1),cv_count(1)
178              rtmp(i) = ytmin - OLy + i
179             ENDDO
180            ELSE
181             DO i = cv_start(1),cv_count(1)
182            rtmp(i) = yC(1,i-OLy,bi,bj)            rtmp(i) = yC(1,i-OLy,bi,bj)
183             ENDDO
184            ENDIF
185  #endif  #endif
         ENDDO  
186    
187        ELSEIF (cvname(nnf:nnl) .EQ. 'Z') THEN        ELSEIF (cvname(nnf:nnl) .EQ. 'Z') THEN
188    
# Line 152  C     Check all the coordinate variables Line 200  C     Check all the coordinate variables
200            rtmp(i) = rF(i)            rtmp(i) = rF(i)
201          ENDDO          ENDDO
202    
203          ELSEIF (cvname(nnf:nnl) .EQ. 'Zu') THEN
204    
205            cv_start(1) = 1
206            cv_count(1) = Nr
207            DO i = cv_start(1),cv_count(1)
208              rtmp(i) = rF(i + 1)
209            ENDDO
210    
211          ELSEIF (cvname(nnf:nnl) .EQ. 'Zl') THEN
212    
213            cv_start(1) = 1
214            cv_count(1) = Nr
215            DO i = cv_start(1),cv_count(1)
216              rtmp(i) = rF(i)
217            ENDDO
218    
219          ELSEIF (cvname(nnf:nnl) .EQ. 'Zm1') THEN
220    
221            cv_start(1) = 1
222            cv_count(1) = Nr - 1
223            DO i = cv_start(1),cv_count(1)
224              rtmp(i) = rF(i + 1)
225            ENDDO
226    
227        ELSE        ELSE
228    
229          doit = 0          doit = 0
# Line 163  C     Check all the coordinate variables Line 235  C     Check all the coordinate variables
235          CALL MNC_FILE_REDEF(fname, myThid)          CALL MNC_FILE_REDEF(fname, myThid)
236          err = NF_DEF_VAR(fid, cvname, NF_DOUBLE,          err = NF_DEF_VAR(fid, cvname, NF_DOUBLE,
237       &       nids, cv_did, vid)       &       nids, cv_did, vid)
238            i = ILNBLNK( fname )
239          write(msgbuf,'(5a)') 'defining coordinate variable ''',          write(msgbuf,'(5a)') 'defining coordinate variable ''',
240       &       cvname(nnf:nnl), ''' in file ''', fname, ''''       &       cvname(nnf:nnl), ''' in file ''', fname(1:i), ''''
241          CALL MNC_HANDLE_ERR(err, msgbuf, myThid)          CALL MNC_HANDLE_ERR(err, msgbuf, myThid)
242          CALL MNC_FILE_ENDDEF(fname, myThid)          CALL MNC_FILE_ENDDEF(fname, myThid)
243          err = NF_PUT_VARA_DOUBLE(fid, vid,          err = NF_PUT_VARA_DOUBLE(fid, vid,
244       &       cv_start, cv_count, rtmp)       &       cv_start, cv_count, rtmp)
245          write(msgbuf,'(5a)') 'writing coordinate variable ''',          write(msgbuf,'(5a)') 'writing coordinate variable ''',
246       &       cvname(nnf:nnl), ''' in file ''', fname, ''''       &       cvname(nnf:nnl), ''' in file ''', fname(1:i), ''''
247          CALL MNC_HANDLE_ERR(err, msgbuf, myThid)          CALL MNC_HANDLE_ERR(err, msgbuf, myThid)
248                    
249        ENDIF        ENDIF

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

  ViewVC Help
Powered by ViewVC 1.1.22