/[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.6 by dimitri, Fri May 23 20:19:16 2003 UTC revision 1.16 by edhill, Thu Aug 11 02:50:12 2005 UTC
# Line 1  Line 1 
1  C  C $Header$
2    C $Name$
3    
4  #include "SEAICE_OPTIONS.h"  #include "SEAICE_OPTIONS.h"
5    
# Line 27  C     myThid        - Number of this ins Line 28  C     myThid        - Number of this ins
28        INTEGER myIter        INTEGER myIter
29        INTEGER myThid        INTEGER myThid
30    
 #ifdef ALLOW_SEAICE  
   
31  C     == Local variables ==  C     == Local variables ==
32        CHARACTER*(MAX_LEN_MBUF) suff        CHARACTER*(MAX_LEN_MBUF) suff
33        LOGICAL  DIFFERENT_MULTIPLE        LOGICAL  DIFFERENT_MULTIPLE
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          INTEGER thisdate(4), prevdate(4)
38          LOGICAL dumpFiles
39                    
40        IF (SEAICEwriteState) THEN        IF (SEAICEwriteState) THEN
41    
42           IF ( DIFFERENT_MULTIPLE(SEAICE_dumpFreq,myTime,          IF ( DIFFERENT_MULTIPLE(SEAICE_dumpFreq,myTime,deltaTClock)
43       &        myTime-deltaTClock) ) THEN       &       ) THEN
44                            
45    #ifdef ALLOW_MNC
46              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
47                CALL MNC_CW_SET_UDIM('sice', -1, myThid)
48                CALL MNC_CW_RL_W_S('D','sice',0,0,'T', myTime, myThid)
49                CALL MNC_CW_SET_UDIM('sice', 0, myThid)
50                CALL MNC_CW_I_W_S('I','sice',0,0,'iter', myIter, myThid)
51                CALL MNC_CW_RL_W_S('D','sice',0,0,'model_time',
52         &           myTime,myThid)
53                CALL MNC_CW_RS_W('D','sice',0,0,'si_UWIND',uwind,myThid)
54                CALL MNC_CW_RS_W('D','sice',0,0,'si_VWIND',vwind,myThid)
55                CALL MNC_CW_RS_W('D','sice',0,0,'fu',fu,myThid)
56                CALL MNC_CW_RS_W('D','sice',0,0,'fv',fv,myThid)
57                CALL MNC_CW_RS_W('D','sice',0,0,'EmPmR',EmPmR,myThid)
58                CALL MNC_CW_RS_W('D','sice',0,0,'Qnet',Qnet,myThid)
59                CALL MNC_CW_RS_W('D','sice',0,0,'Qsw',Qsw,myThid)
60              ENDIF
61    #endif
62              IF (SEAICE_dump_mdsio) THEN
63              WRITE(suff,'(I10.10)') myIter              WRITE(suff,'(I10.10)') myIter
64              _BARRIER              _BARRIER
65              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
# Line 53  C     == Local variables == Line 72  C     == Local variables ==
72              CALL WRITE_FLD_XY_RS( 'Qsw.',suff,Qsw,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'Qsw.',suff,Qsw,myIter,myThid)
73              _END_MASTER( myThid )              _END_MASTER( myThid )
74              _BARRIER              _BARRIER
75              ENDIF
76              
77  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
78         CALL PLOT_FIELD_XYRS( uwind , 'Current uwind ', myIter, myThid )         CALL PLOT_FIELD_XYRS( uwind , 'Current uwind ', myIter, myThid )
79         CALL PLOT_FIELD_XYRS( vwind , 'Current vwind ', myIter, myThid )         CALL PLOT_FIELD_XYRS( vwind , 'Current vwind ', myIter, myThid )
# Line 73  C     == Local variables == Line 93  C     == Local variables ==
93         CALL PLOT_FIELD_XYRL( Qsw   , 'Current Qsw   ', myIter, myThid )         CALL PLOT_FIELD_XYRL( Qsw   , 'Current Qsw   ', myIter, myThid )
94  #endif  #endif
95    
96              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
97                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
98                    DO j=1,sNy                DO j=1,sNy
99                       DO i=1,sNx                  DO i=1,sNx
100                          arr(i,j,bi,bj)=UICE(i,j,1,bi,bj)                    arr(i,j,bi,bj)=UICE(i,j,1,bi,bj)
101                       ENDDO                  ENDDO
102                    ENDDO                ENDDO
                ENDDO  
103              ENDDO              ENDDO
104              ENDDO
105    
106              IF (SEAICE_dump_mdsio) THEN
107              _BARRIER              _BARRIER
108              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
109              CALL WRITE_FLD_XY_RS( 'UICE.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'UICE.',suff,arr,myIter,myThid)
110              _END_MASTER( myThid )              _END_MASTER( myThid )
111              _BARRIER              _BARRIER
112              ENDIF
113    #ifdef ALLOW_MNC
114              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
115                CALL MNC_CW_RS_W('D','sice',0,0,'si_UICE',arr,myThid)
116              ENDIF
117    #endif
118  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
119         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
120         CALL PLOT_FIELD_XYRS( arr   , 'Current uice  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current uice  ',
121         &         myIter, myThid )
122  #endif  #endif
123    
124              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
125                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
126                    DO j=1,sNy                DO j=1,sNy
127                       DO i=1,sNx                  DO i=1,sNx
128                          arr(i,j,bi,bj)=VICE(i,j,1,bi,bj)                    arr(i,j,bi,bj)=VICE(i,j,1,bi,bj)
129                       ENDDO                  ENDDO
130                    ENDDO                ENDDO
                ENDDO  
131              ENDDO              ENDDO
132              ENDDO
133              IF (SEAICE_dump_mdsio) THEN
134              _BARRIER              _BARRIER
135              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
136              CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)
137              _END_MASTER( myThid )              _END_MASTER( myThid )
138              _BARRIER              _BARRIER
139              ENDIF
140    #ifdef ALLOW_MNC
141              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
142                CALL MNC_CW_RS_W('D','sice',0,0,'si_VICE',arr,myThid)
143              ENDIF
144    #endif
145  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
146         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
147         CALL PLOT_FIELD_XYRS( arr   , 'Current vice  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current vice  ',
148         &         myIter, myThid )
149  #endif  #endif
150                          
151              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
152                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
153                    DO j=1,sNy                DO j=1,sNy
154                       DO i=1,sNx                  DO i=1,sNx
155                          arr(i,j,bi,bj)=HEFF(i,j,1,bi,bj)                    arr(i,j,bi,bj)=HEFF(i,j,1,bi,bj)
156                       ENDDO                  ENDDO
157                    ENDDO                ENDDO
                ENDDO  
158              ENDDO              ENDDO
159              ENDDO
160              IF (SEAICE_dump_mdsio) THEN
161              _BARRIER              _BARRIER
162              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
163              CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)
164              _END_MASTER( myThid )              _END_MASTER( myThid )
165              _BARRIER              _BARRIER
166              ENDIF
167    #ifdef ALLOW_MNC
168              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
169                CALL MNC_CW_RS_W('D','sice',0,0,'si_HEFF',arr,myThid)
170              ENDIF
171    #endif
172  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
173         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
174         CALL PLOT_FIELD_XYRS( arr   , 'Current heff  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current heff  ',
175         &         myIter, myThid )
176  #endif  #endif
177                          
178              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
179                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
180                    DO j=1,sNy                DO j=1,sNy
181                       DO i=1,sNx                  DO i=1,sNx
182                          arr(i,j,bi,bj)=AREA(i,j,1,bi,bj)                    arr(i,j,bi,bj)=AREA(i,j,1,bi,bj)
183                       ENDDO                  ENDDO
184                    ENDDO                ENDDO
                ENDDO  
185              ENDDO              ENDDO
186              ENDDO
187              IF (SEAICE_dump_mdsio) THEN
188              _BARRIER              _BARRIER
189              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
190              CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)
191              _END_MASTER( myThid )              _END_MASTER( myThid )
192              _BARRIER              _BARRIER
193              ENDIF
194    #ifdef ALLOW_MNC
195              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
196                CALL MNC_CW_RS_W('D','sice',0,0,'si_AREA',arr,myThid)
197              ENDIF
198    #endif
199  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
200         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
201         CALL PLOT_FIELD_XYRS( arr   , 'Current area  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current area  ',
202         &         myIter, myThid )
203  #endif  #endif
204    
205           ENDIF           ENDIF
# Line 190  C--   Time-cumulations Line 243  C--   Time-cumulations
243        ENDDO        ENDDO
244    
245  C     Dump files and restart average computation if needed  C     Dump files and restart average computation if needed
246        IF ( myIter.NE.nIter0 .AND.        dumpFiles = .FALSE.
247       &     DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,myTime-deltaTClock)        IF ( myIter .NE. nIter0 ) THEN
248       &     ) THEN        IF ( DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,deltaTClock) )
249                 &     dumpFiles = .TRUE.
250    #ifdef ALLOW_CAL
251          IF ( calendarDumps .AND. (
252         & (SEAICE_taveFreq.GE. 2592000.AND.SEAICE_taveFreq.LE. 2678400).OR.
253         & (SEAICE_taveFreq.GE.31104000.AND.SEAICE_taveFreq.LE.31968000)))
254         & THEN
255    C--   Convert approximate months (30-31 days) and years (360-372 days)
256    C     to exact calendar months and years.
257    C-    First determine calendar dates for this and previous time step.
258           call cal_GetDate( myiter  ,mytime            ,thisdate,mythid )
259           call cal_GetDate( myiter-1,mytime-deltaTClock,prevdate,mythid )
260           dumpFiles = .FALSE.
261    C-    Monthly SEAICE_taveFreq:
262           IF( SEAICE_taveFreq.GE. 2592000 .AND. SEAICE_taveFreq.LE. 2678400
263         &      .AND. (thisdate(1)-prevdate(1)).GT.50   ) dumpFiles = .TRUE.
264    C-    Yearly  SEAICE_taveFreq:
265           IF( SEAICE_taveFreq.GE.31104000 .AND. SEAICE_taveFreq.LE.31968000
266         &      .AND. (thisdate(1)-prevdate(1)).GT.5000 ) dumpFiles = .TRUE.
267          ENDIF
268    #endif
269          ENDIF
270    
271          IF (dumpFiles) THEN
272  C      Normalize by integrated time  C      Normalize by integrated time
273         DO bj = myByLo(myThid), myByHi(myThid)         DO bj = myByLo(myThid), myByHi(myThid)
274          DO bi = myBxLo(myThid), myBxHi(myThid)          DO bi = myBxLo(myThid), myBxHi(myThid)
# Line 218  C      Normalize by integrated time Line 293  C      Normalize by integrated time
293          ENDDO          ENDDO
294         ENDDO         ENDDO
295    
296         WRITE(suff,'(I10.10)') myIter  #ifdef ALLOW_MNC
297         _BARRIER         IF (useMNC .AND. SEAICE_tave_mnc) THEN
298         _BEGIN_MASTER( myThid )           CALL MNC_CW_SET_UDIM('sice_tave', -1, myThid)
299         CALL WRITE_FLD_XY_RL('FUtave.'   ,suff,FUtave   ,myIter,myThid)           CALL MNC_CW_RL_W_S('D','sice_tave',0,0,'T', myTime, myThid)
300         CALL WRITE_FLD_XY_RL('FVtave.'   ,suff,FVtave   ,myIter,myThid)           CALL MNC_CW_SET_UDIM('sice_tave', 0, myThid)
301         CALL WRITE_FLD_XY_RL('EmPmRtave.',suff,EmPmRtave,myIter,myThid)           CALL MNC_CW_I_W_S('I','sice_tave',0,0,'iter', myIter, myThid)
302         CALL WRITE_FLD_XY_RL('QNETtave.' ,suff,QNETtave ,myIter,myThid)           CALL MNC_CW_RL_W_S('D','sice_tave',0,0,'model_time',
303         CALL WRITE_FLD_XY_RL('QSWtave.'  ,suff,QSWtave  ,myIter,myThid)       &        myTime,myThid)
304         CALL WRITE_FLD_XY_RL('UICEtave.' ,suff,UICEtave ,myIter,myThid)           CALL MNC_CW_RL_W('R','sice_tave',0,0,
305         CALL WRITE_FLD_XY_RL('VICEtave.' ,suff,VICEtave ,myIter,myThid)       &        'si_UICEtave',UICEtave,myThid)
306         CALL WRITE_FLD_XY_RL('HEFFtave.' ,suff,HEFFtave ,myIter,myThid)           CALL MNC_CW_RL_W('R','sice_tave',0,0,
307         CALL WRITE_FLD_XY_RL('AREAtave.' ,suff,AREAtave ,myIter,myThid)       &        'si_VICEtave',VICEtave,myThid)
308         _END_MASTER( myThid )           CALL MNC_CW_RL_W('R','sice_tave',0,0,
309         _BARRIER       &        'si_FUtave',FUtave,myThid)
310             CALL MNC_CW_RL_W('R','sice_tave',0,0,
311         &        'si_FVtave',FVtave,myThid)
312             CALL MNC_CW_RL_W('R','sice_tave',0,0,
313         &        'si_EmPmRtave',EmPmRtave,myThid)
314             CALL MNC_CW_RL_W('R','sice_tave',0,0,
315         &        'si_QNETtave',QNETtave,myThid)
316             CALL MNC_CW_RL_W('R','sice_tave',0,0,
317         &        'si_QSWtave',QSWtave,myThid)
318             CALL MNC_CW_RL_W('R','sice_tave',0,0,
319         &        'si_HEFFtave',HEFFtave,myThid)
320             CALL MNC_CW_RL_W('R','sice_tave',0,0,
321         &        'si_AREAtave',AREAtave,myThid)
322           ENDIF
323    #endif
324           IF (SEAICE_tave_mdsio) THEN
325             WRITE(suff,'(I10.10)') myIter
326             _BARRIER
327             _BEGIN_MASTER( myThid )
328             CALL WRITE_FLD_XY_RL('FUtave.'   ,suff,FUtave   ,myIter,myThid)
329             CALL WRITE_FLD_XY_RL('FVtave.'   ,suff,FVtave   ,myIter,myThid)
330             CALL WRITE_FLD_XY_RL('EmPmRtave.',suff,EmPmRtave,myIter,myThid)
331             CALL WRITE_FLD_XY_RL('QNETtave.' ,suff,QNETtave ,myIter,myThid)
332             CALL WRITE_FLD_XY_RL('QSWtave.'  ,suff,QSWtave  ,myIter,myThid)
333             CALL WRITE_FLD_XY_RL('UICEtave.' ,suff,UICEtave ,myIter,myThid)
334             CALL WRITE_FLD_XY_RL('VICEtave.' ,suff,VICEtave ,myIter,myThid)
335             CALL WRITE_FLD_XY_RL('HEFFtave.' ,suff,HEFFtave ,myIter,myThid)
336             CALL WRITE_FLD_XY_RL('AREAtave.' ,suff,AREAtave ,myIter,myThid)
337             _END_MASTER( myThid )
338             _BARRIER
339           ENDIF
340                
341  C      Reset averages to zero  C      Reset averages to zero
342         DO bj = myByLo(myThid), myByHi(myThid)         DO bj = myByLo(myThid), myByHi(myThid)
# Line 255  C      Reset averages to zero Line 360  C      Reset averages to zero
360                
361  #endif /* ALLOW_TIMEAVE */  #endif /* ALLOW_TIMEAVE */
362    
 #endif /* ALLOW_SEAICE */  
         
363        RETURN        RETURN
364        END        END

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.16

  ViewVC Help
Powered by ViewVC 1.1.22