/[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.22 by jmc, Wed Aug 9 04:33:25 2006 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                  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              _BARRIER
52    #ifdef ALLOW_MNC
53              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
54                CALL MNC_CW_SET_UDIM('sice', -1, myThid)
55                CALL MNC_CW_RL_W_S('D','sice',0,0,'T', myTime, myThid)
56                CALL MNC_CW_SET_UDIM('sice', 0, myThid)
57                CALL MNC_CW_I_W_S('I','sice',0,0,'iter', myIter, myThid)
58                CALL MNC_CW_RL_W_S('D','sice',0,0,'model_time',
59         &           myTime,myThid)
60    #if ( defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP) )
61                IF ( SEAICEuseEVP ) THEN
62                 CALL MNC_CW_RS_W(pf,'sice',0,0,'si_sigma1',
63         &            seaice_sigma1,myThid)
64                 CALL MNC_CW_RS_W(pf,'sice',0,0,'si_sigma2',
65         &            seaice_sigma2,myThid)
66                 CALL MNC_CW_RS_W(pf,'sice',0,0,'si_sigma12',
67         &            seaice_sigma12,myThid)
68                ENDIF
69    #endif /* SEAICE_CGRID and SEAICE_ALLOW_EVP */
70                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_UWIND',uwind,myThid)
71                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_VWIND',vwind,myThid)
72                CALL MNC_CW_RS_W(pf,'sice',0,0,'fu',fu,myThid)
73                CALL MNC_CW_RS_W(pf,'sice',0,0,'fv',fv,myThid)
74                CALL MNC_CW_RS_W(pf,'sice',0,0,'EmPmR',EmPmR,myThid)
75                CALL MNC_CW_RS_W(pf,'sice',0,0,'Qnet',Qnet,myThid)
76                CALL MNC_CW_RS_W(pf,'sice',0,0,'Qsw',Qsw,myThid)
77              ENDIF
78    #endif
79              IF (SEAICE_dump_mdsio) THEN
80              WRITE(suff,'(I10.10)') myIter              WRITE(suff,'(I10.10)') myIter
             _BARRIER  
             _BEGIN_MASTER( myThid )  
81              CALL WRITE_FLD_XY_RS( 'UWIND.',suff,uwind,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'UWIND.',suff,uwind,myIter,myThid)
82              CALL WRITE_FLD_XY_RS( 'VWIND.',suff,vwind,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'VWIND.',suff,vwind,myIter,myThid)
83              CALL WRITE_FLD_XY_RS( 'FU.',suff,fu,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'FU.',suff,fu,myIter,myThid)
# Line 51  C     == Local variables == Line 85  C     == Local variables ==
85              CALL WRITE_FLD_XY_RS( 'EmPmR.',suff,EmPmR,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'EmPmR.',suff,EmPmR,myIter,myThid)
86              CALL WRITE_FLD_XY_RS( 'Qnet.',suff,Qnet,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'Qnet.',suff,Qnet,myIter,myThid)
87              CALL WRITE_FLD_XY_RS( 'Qsw.',suff,Qsw,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'Qsw.',suff,Qsw,myIter,myThid)
88              _END_MASTER( myThid )  #if ( defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP) )
89              _BARRIER              IF ( SEAICEuseEVP ) THEN
90                 CALL WRITE_FLD_XY_RS('SIGMA1.',suff,seaice_sigma1,
91         &            myIter,myThid)
92                 CALL WRITE_FLD_XY_RS('SIGMA2.',suff,seaice_sigma2,
93         &            myIter,myThid)
94                 CALL WRITE_FLD_XY_RS('SIGMA12.',suff,seaice_sigma12,
95         &            myIter,myThid)
96                ENDIF
97    #endif /* SEAICE_CGRID and SEAICE_ALLOW_EVP */
98              ENDIF
99    
100  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
101         CALL PLOT_FIELD_XYRS( uwind , 'Current uwind ', myIter, myThid )         CALL PLOT_FIELD_XYRS( uwind , 'Current uwind ', myIter, myThid )
# Line 73  C     == Local variables == Line 116  C     == Local variables ==
116         CALL PLOT_FIELD_XYRL( Qsw   , 'Current Qsw   ', myIter, myThid )         CALL PLOT_FIELD_XYRL( Qsw   , 'Current Qsw   ', myIter, myThid )
117  #endif  #endif
118    
119              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
120                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
121                    DO j=1,sNy                DO j=1-Oly,sNy+Oly
122                       DO i=1,sNx                  DO i=1-Olx,sNx+Olx
123                          arr(i,j,bi,bj)=UICE(i,j,1,bi,bj)                    arr(i,j,bi,bj)=UICE(i,j,1,bi,bj)
124                       ENDDO                  ENDDO
125                    ENDDO                ENDDO
                ENDDO  
126              ENDDO              ENDDO
127              _BARRIER            ENDDO
128              _BEGIN_MASTER( myThid )            _BARRIER
129              IF (SEAICE_dump_mdsio) THEN
130              CALL WRITE_FLD_XY_RS( 'UICE.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'UICE.',suff,arr,myIter,myThid)
131              _END_MASTER( myThid )            ENDIF
132              _BARRIER  #ifdef ALLOW_MNC
133              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
134                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_UICE',arr,myThid)
135              ENDIF
136    #endif
137  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
138         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
139         CALL PLOT_FIELD_XYRS( arr   , 'Current uice  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current uice  ',
140         &         myIter, myThid )
141  #endif  #endif
142              _BARRIER
143    
144              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
145                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
146                    DO j=1,sNy                DO j=1-Oly,sNy+Oly
147                       DO i=1,sNx                  DO i=1-Olx,sNx+Olx
148                          arr(i,j,bi,bj)=VICE(i,j,1,bi,bj)                    arr(i,j,bi,bj)=VICE(i,j,1,bi,bj)
149                       ENDDO                  ENDDO
150                    ENDDO                ENDDO
                ENDDO  
151              ENDDO              ENDDO
152              _BARRIER            ENDDO
153              _BEGIN_MASTER( myThid )            _BARRIER
154              IF (SEAICE_dump_mdsio) THEN
155              CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)
156              _END_MASTER( myThid )            ENDIF
157              _BARRIER  #ifdef ALLOW_MNC
158              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
159                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_VICE',arr,myThid)
160              ENDIF
161    #endif
162  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
163         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
164         CALL PLOT_FIELD_XYRS( arr   , 'Current vice  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current vice  ',
165         &         myIter, myThid )
166  #endif  #endif
167                          _BARRIER
168              DO bj=myByLo(myThid),myByHi(myThid)  
169                 DO bi=myBxLo(myThid),myBxHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
170                    DO j=1,sNy              DO bi=myBxLo(myThid),myBxHi(myThid)
171                       DO i=1,sNx                DO j=1-Oly,sNy+Oly
172                          arr(i,j,bi,bj)=HEFF(i,j,1,bi,bj)                  DO i=1-Olx,sNx+Olx
173                       ENDDO                    arr(i,j,bi,bj)=HEFF(i,j,1,bi,bj)
174                    ENDDO                  ENDDO
175                 ENDDO                ENDDO
176              ENDDO              ENDDO
177              _BARRIER            ENDDO
178              _BEGIN_MASTER( myThid )            _BARRIER
179              IF (SEAICE_dump_mdsio) THEN
180              CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)
181              _END_MASTER( myThid )            ENDIF
182              _BARRIER  #ifdef ALLOW_MNC
183              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
184                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_HEFF',arr,myThid)
185              ENDIF
186    #endif
187  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
188         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
189         CALL PLOT_FIELD_XYRS( arr   , 'Current heff  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current heff  ',
190         &         myIter, myThid )
191  #endif  #endif
192                          _BARRIER
193              DO bj=myByLo(myThid),myByHi(myThid)  
194                 DO bi=myBxLo(myThid),myBxHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
195                    DO j=1,sNy              DO bi=myBxLo(myThid),myBxHi(myThid)
196                       DO i=1,sNx                DO j=1-Oly,sNy+Oly
197                          arr(i,j,bi,bj)=AREA(i,j,1,bi,bj)                  DO i=1-Olx,sNx+Olx
198                       ENDDO                    arr(i,j,bi,bj)=AREA(i,j,1,bi,bj)
199                    ENDDO                  ENDDO
200                 ENDDO                ENDDO
201              ENDDO              ENDDO
202              _BARRIER            ENDDO
203              _BEGIN_MASTER( myThid )            _BARRIER
204              IF (SEAICE_dump_mdsio) THEN
205              CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)
206              _END_MASTER( myThid )            ENDIF
207              _BARRIER  #ifdef ALLOW_MNC
208              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
209                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_AREA',arr,myThid)
210              ENDIF
211    #endif
212  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
213         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
214         CALL PLOT_FIELD_XYRS( arr   , 'Current area  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current area  ',
215         &         myIter, myThid )
216  #endif  #endif
217              _BARRIER
218    
219           ENDIF           ENDIF
220        ENDIF        ENDIF
# Line 190  C--   Time-cumulations Line 257  C--   Time-cumulations
257        ENDDO        ENDDO
258    
259  C     Dump files and restart average computation if needed  C     Dump files and restart average computation if needed
260        IF ( myIter.NE.nIter0 .AND.        dumpFiles = .FALSE.
261       &     DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,myTime-deltaTClock)        IF ( myIter .NE. nIter0 ) THEN
262       &     ) THEN          dumpFiles =
263                 &     DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,deltaTClock)
264    #ifdef ALLOW_CAL
265            IF ( useCAL ) THEN
266              CALL CAL_TIME2DUMP( SEAICE_taveFreq, deltaTClock,
267         U                        dumpFiles,
268         I                        myTime, myIter, myThid )
269            ENDIF
270    #endif
271          ENDIF
272    
273          IF (dumpFiles) THEN
274  C      Normalize by integrated time  C      Normalize by integrated time
275         DO bj = myByLo(myThid), myByHi(myThid)         DO bj = myByLo(myThid), myByHi(myThid)
276          DO bi = myBxLo(myThid), myBxHi(myThid)          DO bi = myBxLo(myThid), myBxHi(myThid)
# Line 217  C      Normalize by integrated time Line 294  C      Normalize by integrated time
294       &                 bi,bj,myThid)       &                 bi,bj,myThid)
295          ENDDO          ENDDO
296         ENDDO         ENDDO
297    c      IF (myIter.EQ.10) WRITE(0,*) myThid, dumpFiles
298    
        WRITE(suff,'(I10.10)') myIter  
299         _BARRIER         _BARRIER
300         _BEGIN_MASTER( myThid )  #ifdef ALLOW_MNC
301         CALL WRITE_FLD_XY_RL('FUtave.'   ,suff,FUtave   ,myIter,myThid)         IF (useMNC .AND. SEAICE_tave_mnc) THEN
302         CALL WRITE_FLD_XY_RL('FVtave.'   ,suff,FVtave   ,myIter,myThid)           CALL MNC_CW_SET_UDIM('sice_tave', -1, myThid)
303         CALL WRITE_FLD_XY_RL('EmPmRtave.',suff,EmPmRtave,myIter,myThid)           CALL MNC_CW_RL_W_S('D','sice_tave',0,0,'T', myTime, myThid)
304         CALL WRITE_FLD_XY_RL('QNETtave.' ,suff,QNETtave ,myIter,myThid)           CALL MNC_CW_SET_UDIM('sice_tave', 0, myThid)
305         CALL WRITE_FLD_XY_RL('QSWtave.'  ,suff,QSWtave  ,myIter,myThid)           CALL MNC_CW_I_W_S('I','sice_tave',0,0,'iter', myIter, myThid)
306         CALL WRITE_FLD_XY_RL('UICEtave.' ,suff,UICEtave ,myIter,myThid)  C        CALL MNC_CW_RL_W_S('D','sice_tave',0,0,'model_time',
307         CALL WRITE_FLD_XY_RL('VICEtave.' ,suff,VICEtave ,myIter,myThid)  C    &        myTime,myThid)
308         CALL WRITE_FLD_XY_RL('HEFFtave.' ,suff,HEFFtave ,myIter,myThid)           CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
309         CALL WRITE_FLD_XY_RL('AREAtave.' ,suff,AREAtave ,myIter,myThid)       &        'si_UICEtave',UICEtave,myThid)
310         _END_MASTER( myThid )           CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
311         &        'si_VICEtave',VICEtave,myThid)
312             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
313         &        'si_FUtave',FUtave,myThid)
314             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
315         &        'si_FVtave',FVtave,myThid)
316             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
317         &        'si_EmPmRtave',EmPmRtave,myThid)
318             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
319         &        'si_QNETtave',QNETtave,myThid)
320             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
321         &        'si_QSWtave',QSWtave,myThid)
322             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
323         &        'si_HEFFtave',HEFFtave,myThid)
324             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
325         &        'si_AREAtave',AREAtave,myThid)
326           ENDIF
327    #endif
328           IF (SEAICE_tave_mdsio) THEN
329             WRITE(suff,'(I10.10)') myIter
330             CALL WRITE_FLD_XY_RL('FUtave.'   ,suff,FUtave   ,myIter,myThid)
331             CALL WRITE_FLD_XY_RL('FVtave.'   ,suff,FVtave   ,myIter,myThid)
332             CALL WRITE_FLD_XY_RL('EmPmRtave.',suff,EmPmRtave,myIter,myThid)
333             CALL WRITE_FLD_XY_RL('QNETtave.' ,suff,QNETtave ,myIter,myThid)
334             CALL WRITE_FLD_XY_RL('QSWtave.'  ,suff,QSWtave  ,myIter,myThid)
335             CALL WRITE_FLD_XY_RL('UICEtave.' ,suff,UICEtave ,myIter,myThid)
336             CALL WRITE_FLD_XY_RL('VICEtave.' ,suff,VICEtave ,myIter,myThid)
337             CALL WRITE_FLD_XY_RL('HEFFtave.' ,suff,HEFFtave ,myIter,myThid)
338             CALL WRITE_FLD_XY_RL('AREAtave.' ,suff,AREAtave ,myIter,myThid)
339           ENDIF
340         _BARRIER         _BARRIER
341          
342  C      Reset averages to zero  C      Reset averages to zero
343         DO bj = myByLo(myThid), myByHi(myThid)         DO bj = myByLo(myThid), myByHi(myThid)
344          DO bi = myBxLo(myThid), myBxHi(myThid)          DO bi = myBxLo(myThid), myBxHi(myThid)
# Line 250  C      Reset averages to zero Line 356  C      Reset averages to zero
356           ENDDO           ENDDO
357          ENDDO          ENDDO
358         ENDDO         ENDDO
359          
360        ENDIF        ENDIF
361          
362  #endif /* ALLOW_TIMEAVE */  #endif /* ALLOW_TIMEAVE */
363    
364  #endif /* ALLOW_SEAICE */  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
365          
366    C--   do SEAICE monitor output : print some statistics about seaice fields
367          CALL SEAICE_MONITOR( myTime, myIter, myThid )
368    
369        RETURN        RETURN
370        END        END

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

  ViewVC Help
Powered by ViewVC 1.1.22