/[MITgcm]/MITgcm/pkg/seaice/seaice_do_diags.F
ViewVC logotype

Diff of /MITgcm/pkg/seaice/seaice_do_diags.F

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

revision 1.8 by dimitri, Mon Dec 27 20:34:11 2004 UTC revision 1.19 by jmc, Mon Mar 20 15:15:39 2006 UTC
# Line 34  C     == Local variables == Line 34  C     == Local variables ==
34        EXTERNAL DIFFERENT_MULTIPLE        EXTERNAL DIFFERENT_MULTIPLE
35        INTEGER i, j, k, bi, bj        INTEGER i, j, k, bi, bj
36        _RS arr(1-oLx:sNx+oLx,1-oLy:sNy+oLy,nSx,nSy)        _RS arr(1-oLx:sNx+oLx,1-oLy:sNy+oLy,nSx,nSy)
37                  LOGICAL dumpFiles
38          CHARACTER*(1) pf
39    
40          IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
41            pf(1:1) = 'D'
42          ELSE
43            pf(1:1) = 'R'
44          ENDIF
45          
46        IF (SEAICEwriteState) THEN        IF (SEAICEwriteState) THEN
47    
48           IF ( DIFFERENT_MULTIPLE(SEAICE_dumpFreq,myTime,          IF ( DIFFERENT_MULTIPLE(SEAICE_dumpFreq,myTime,deltaTClock)
49       &        myTime-deltaTClock) ) THEN       &       ) THEN
50                            
51    #ifdef ALLOW_MNC
52              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
53                CALL MNC_CW_SET_UDIM('sice', -1, myThid)
54                CALL MNC_CW_RL_W_S('D','sice',0,0,'T', myTime, myThid)
55                CALL MNC_CW_SET_UDIM('sice', 0, myThid)
56                CALL MNC_CW_I_W_S('I','sice',0,0,'iter', myIter, myThid)
57                CALL MNC_CW_RL_W_S('D','sice',0,0,'model_time',
58         &           myTime,myThid)
59                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_UWIND',uwind,myThid)
60                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_VWIND',vwind,myThid)
61                CALL MNC_CW_RS_W(pf,'sice',0,0,'fu',fu,myThid)
62                CALL MNC_CW_RS_W(pf,'sice',0,0,'fv',fv,myThid)
63                CALL MNC_CW_RS_W(pf,'sice',0,0,'EmPmR',EmPmR,myThid)
64                CALL MNC_CW_RS_W(pf,'sice',0,0,'Qnet',Qnet,myThid)
65                CALL MNC_CW_RS_W(pf,'sice',0,0,'Qsw',Qsw,myThid)
66              ENDIF
67    #endif
68              IF (SEAICE_dump_mdsio) THEN
69              WRITE(suff,'(I10.10)') myIter              WRITE(suff,'(I10.10)') myIter
70              _BARRIER              _BARRIER
71              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
# Line 52  C     == Local variables == Line 78  C     == Local variables ==
78              CALL WRITE_FLD_XY_RS( 'Qsw.',suff,Qsw,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'Qsw.',suff,Qsw,myIter,myThid)
79              _END_MASTER( myThid )              _END_MASTER( myThid )
80              _BARRIER              _BARRIER
81              ENDIF
82              
83  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
84         CALL PLOT_FIELD_XYRS( uwind , 'Current uwind ', myIter, myThid )         CALL PLOT_FIELD_XYRS( uwind , 'Current uwind ', myIter, myThid )
85         CALL PLOT_FIELD_XYRS( vwind , 'Current vwind ', myIter, myThid )         CALL PLOT_FIELD_XYRS( vwind , 'Current vwind ', myIter, myThid )
# Line 72  C     == Local variables == Line 99  C     == Local variables ==
99         CALL PLOT_FIELD_XYRL( Qsw   , 'Current Qsw   ', myIter, myThid )         CALL PLOT_FIELD_XYRL( Qsw   , 'Current Qsw   ', myIter, myThid )
100  #endif  #endif
101    
102              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
103                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
104                    DO j=1,sNy                DO j=1-Oly,sNy+Oly
105                       DO i=1,sNx                  DO i=1-Olx,sNx+Olx
106                          arr(i,j,bi,bj)=UICE(i,j,1,bi,bj)                    arr(i,j,bi,bj)=UICE(i,j,1,bi,bj)
107                       ENDDO                  ENDDO
108                    ENDDO                ENDDO
                ENDDO  
109              ENDDO              ENDDO
110              ENDDO
111    
112              IF (SEAICE_dump_mdsio) THEN
113              _BARRIER              _BARRIER
114              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
115              CALL WRITE_FLD_XY_RS( 'UICE.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'UICE.',suff,arr,myIter,myThid)
116              _END_MASTER( myThid )              _END_MASTER( myThid )
117              _BARRIER              _BARRIER
118              ENDIF
119    #ifdef ALLOW_MNC
120              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
121                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_UICE',arr,myThid)
122              ENDIF
123    #endif
124  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
125         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
126         CALL PLOT_FIELD_XYRS( arr   , 'Current uice  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current uice  ',
127         &         myIter, myThid )
128  #endif  #endif
129    
130              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
131                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
132                    DO j=1,sNy                DO j=1-Oly,sNy+Oly
133                       DO i=1,sNx                  DO i=1-Olx,sNx+Olx
134                          arr(i,j,bi,bj)=VICE(i,j,1,bi,bj)                    arr(i,j,bi,bj)=VICE(i,j,1,bi,bj)
135                       ENDDO                  ENDDO
136                    ENDDO                ENDDO
                ENDDO  
137              ENDDO              ENDDO
138              ENDDO
139              IF (SEAICE_dump_mdsio) THEN
140              _BARRIER              _BARRIER
141              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
142              CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)
143              _END_MASTER( myThid )              _END_MASTER( myThid )
144              _BARRIER              _BARRIER
145              ENDIF
146    #ifdef ALLOW_MNC
147              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
148                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_VICE',arr,myThid)
149              ENDIF
150    #endif
151  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
152         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
153         CALL PLOT_FIELD_XYRS( arr   , 'Current vice  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current vice  ',
154         &         myIter, myThid )
155  #endif  #endif
156                          
157              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
158                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
159                    DO j=1,sNy                DO j=1-Oly,sNy+Oly
160                       DO i=1,sNx                  DO i=1-Olx,sNx+Olx
161                          arr(i,j,bi,bj)=HEFF(i,j,1,bi,bj)                    arr(i,j,bi,bj)=HEFF(i,j,1,bi,bj)
162                       ENDDO                  ENDDO
163                    ENDDO                ENDDO
                ENDDO  
164              ENDDO              ENDDO
165              ENDDO
166              IF (SEAICE_dump_mdsio) THEN
167              _BARRIER              _BARRIER
168              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
169              CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)
170              _END_MASTER( myThid )              _END_MASTER( myThid )
171              _BARRIER              _BARRIER
172              ENDIF
173    #ifdef ALLOW_MNC
174              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
175                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_HEFF',arr,myThid)
176              ENDIF
177    #endif
178  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
179         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
180         CALL PLOT_FIELD_XYRS( arr   , 'Current heff  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current heff  ',
181         &         myIter, myThid )
182  #endif  #endif
183                          
184              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
185                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
186                    DO j=1,sNy                DO j=1-Oly,sNy+Oly
187                       DO i=1,sNx                  DO i=1-Olx,sNx+Olx
188                          arr(i,j,bi,bj)=AREA(i,j,1,bi,bj)                    arr(i,j,bi,bj)=AREA(i,j,1,bi,bj)
189                       ENDDO                  ENDDO
190                    ENDDO                ENDDO
                ENDDO  
191              ENDDO              ENDDO
192              ENDDO
193              IF (SEAICE_dump_mdsio) THEN
194              _BARRIER              _BARRIER
195              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
196              CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)
197              _END_MASTER( myThid )              _END_MASTER( myThid )
198              _BARRIER              _BARRIER
199              ENDIF
200    #ifdef ALLOW_MNC
201              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
202                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_AREA',arr,myThid)
203              ENDIF
204    #endif
205  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
206         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
207         CALL PLOT_FIELD_XYRS( arr   , 'Current area  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current area  ',
208         &         myIter, myThid )
209  #endif  #endif
210    
211           ENDIF           ENDIF
# Line 189  C--   Time-cumulations Line 249  C--   Time-cumulations
249        ENDDO        ENDDO
250    
251  C     Dump files and restart average computation if needed  C     Dump files and restart average computation if needed
252        IF ( myIter.NE.nIter0 .AND.        dumpFiles = .FALSE.
253       &     DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,myTime-deltaTClock)        IF ( myIter .NE. nIter0 ) THEN
254       &     ) THEN          dumpFiles =
255                 &     DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,deltaTClock)
256    #ifdef ALLOW_CAL
257            IF ( useCAL ) THEN
258              CALL CAL_TIME2DUMP( SEAICE_taveFreq, deltaTClock,
259         U                        dumpFiles,
260         I                        myTime, myIter, myThid )
261            ENDIF
262    #endif
263          ENDIF
264    
265          IF (dumpFiles) THEN
266  C      Normalize by integrated time  C      Normalize by integrated time
267         DO bj = myByLo(myThid), myByHi(myThid)         DO bj = myByLo(myThid), myByHi(myThid)
268          DO bi = myBxLo(myThid), myBxHi(myThid)          DO bi = myBxLo(myThid), myBxHi(myThid)
# Line 217  C      Normalize by integrated time Line 287  C      Normalize by integrated time
287          ENDDO          ENDDO
288         ENDDO         ENDDO
289    
290         WRITE(suff,'(I10.10)') myIter  #ifdef ALLOW_MNC
291         _BARRIER         IF (useMNC .AND. SEAICE_tave_mnc) THEN
292         _BEGIN_MASTER( myThid )           CALL MNC_CW_SET_UDIM('sice_tave', -1, myThid)
293         CALL WRITE_FLD_XY_RL('FUtave.'   ,suff,FUtave   ,myIter,myThid)           CALL MNC_CW_RL_W_S('D','sice_tave',0,0,'T', myTime, myThid)
294         CALL WRITE_FLD_XY_RL('FVtave.'   ,suff,FVtave   ,myIter,myThid)           CALL MNC_CW_SET_UDIM('sice_tave', 0, myThid)
295         CALL WRITE_FLD_XY_RL('EmPmRtave.',suff,EmPmRtave,myIter,myThid)           CALL MNC_CW_I_W_S('I','sice_tave',0,0,'iter', myIter, myThid)
296         CALL WRITE_FLD_XY_RL('QNETtave.' ,suff,QNETtave ,myIter,myThid)  C        CALL MNC_CW_RL_W_S('D','sice_tave',0,0,'model_time',
297         CALL WRITE_FLD_XY_RL('QSWtave.'  ,suff,QSWtave  ,myIter,myThid)  C    &        myTime,myThid)
298         CALL WRITE_FLD_XY_RL('UICEtave.' ,suff,UICEtave ,myIter,myThid)           CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
299         CALL WRITE_FLD_XY_RL('VICEtave.' ,suff,VICEtave ,myIter,myThid)       &        'si_UICEtave',UICEtave,myThid)
300         CALL WRITE_FLD_XY_RL('HEFFtave.' ,suff,HEFFtave ,myIter,myThid)           CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
301         CALL WRITE_FLD_XY_RL('AREAtave.' ,suff,AREAtave ,myIter,myThid)       &        'si_VICEtave',VICEtave,myThid)
302         _END_MASTER( myThid )           CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
303         _BARRIER       &        'si_FUtave',FUtave,myThid)
304             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
305         &        'si_FVtave',FVtave,myThid)
306             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
307         &        'si_EmPmRtave',EmPmRtave,myThid)
308             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
309         &        'si_QNETtave',QNETtave,myThid)
310             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
311         &        'si_QSWtave',QSWtave,myThid)
312             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
313         &        'si_HEFFtave',HEFFtave,myThid)
314             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
315         &        'si_AREAtave',AREAtave,myThid)
316           ENDIF
317    #endif
318           IF (SEAICE_tave_mdsio) THEN
319             WRITE(suff,'(I10.10)') myIter
320             _BARRIER
321             _BEGIN_MASTER( myThid )
322             CALL WRITE_FLD_XY_RL('FUtave.'   ,suff,FUtave   ,myIter,myThid)
323             CALL WRITE_FLD_XY_RL('FVtave.'   ,suff,FVtave   ,myIter,myThid)
324             CALL WRITE_FLD_XY_RL('EmPmRtave.',suff,EmPmRtave,myIter,myThid)
325             CALL WRITE_FLD_XY_RL('QNETtave.' ,suff,QNETtave ,myIter,myThid)
326             CALL WRITE_FLD_XY_RL('QSWtave.'  ,suff,QSWtave  ,myIter,myThid)
327             CALL WRITE_FLD_XY_RL('UICEtave.' ,suff,UICEtave ,myIter,myThid)
328             CALL WRITE_FLD_XY_RL('VICEtave.' ,suff,VICEtave ,myIter,myThid)
329             CALL WRITE_FLD_XY_RL('HEFFtave.' ,suff,HEFFtave ,myIter,myThid)
330             CALL WRITE_FLD_XY_RL('AREAtave.' ,suff,AREAtave ,myIter,myThid)
331             _END_MASTER( myThid )
332             _BARRIER
333           ENDIF
334                
335  C      Reset averages to zero  C      Reset averages to zero
336         DO bj = myByLo(myThid), myByHi(myThid)         DO bj = myByLo(myThid), myByHi(myThid)

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.19

  ViewVC Help
Powered by ViewVC 1.1.22