/[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.7 by edhill, Thu Oct 9 04:19:20 2003 UTC revision 1.26 by dimitri, Fri Nov 3 23:02:47 2006 UTC
# Line 28  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       &    .OR. dumpInitAndLast.AND.( myTime.EQ.endTime .OR.
50                     &                               myTime.EQ.startTime  )
51         &       ) THEN
52    
53              _BARRIER
54    #ifdef ALLOW_MNC
55              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
56                CALL MNC_CW_SET_UDIM('sice', -1, myThid)
57                CALL MNC_CW_RL_W_S('D','sice',0,0,'T', myTime, myThid)
58                CALL MNC_CW_SET_UDIM('sice', 0, myThid)
59                CALL MNC_CW_I_W_S('I','sice',0,0,'iter', myIter, myThid)
60                CALL MNC_CW_RL_W_S('D','sice',0,0,'model_time',
61         &           myTime,myThid)
62    #if ( defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP) )
63                IF ( SEAICEuseEVP ) THEN
64                 CALL MNC_CW_RS_W(pf,'sice',0,0,'si_sigma1',
65         &            seaice_sigma1,myThid)
66                 CALL MNC_CW_RS_W(pf,'sice',0,0,'si_sigma2',
67         &            seaice_sigma2,myThid)
68                 CALL MNC_CW_RS_W(pf,'sice',0,0,'si_sigma12',
69         &            seaice_sigma12,myThid)
70                ENDIF
71    #endif /* SEAICE_CGRID and SEAICE_ALLOW_EVP */
72                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_UWIND',uwind,myThid)
73                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_VWIND',vwind,myThid)
74                CALL MNC_CW_RS_W(pf,'sice',0,0,'fu',fu,myThid)
75                CALL MNC_CW_RS_W(pf,'sice',0,0,'fv',fv,myThid)
76                CALL MNC_CW_RS_W(pf,'sice',0,0,'EmPmR',EmPmR,myThid)
77                CALL MNC_CW_RS_W(pf,'sice',0,0,'Qnet',Qnet,myThid)
78                CALL MNC_CW_RS_W(pf,'sice',0,0,'Qsw',Qsw,myThid)
79              ENDIF
80    #endif
81              IF (SEAICE_dump_mdsio) THEN
82              WRITE(suff,'(I10.10)') myIter              WRITE(suff,'(I10.10)') myIter
83              _BARRIER              IF ( myIter.NE.nIter0 ) THEN
             _BEGIN_MASTER( myThid )  
84              CALL WRITE_FLD_XY_RS( 'UWIND.',suff,uwind,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'UWIND.',suff,uwind,myIter,myThid)
85              CALL WRITE_FLD_XY_RS( 'VWIND.',suff,vwind,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'VWIND.',suff,vwind,myIter,myThid)
86              CALL WRITE_FLD_XY_RS( 'FU.',suff,fu,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'FU.',suff,fu,myIter,myThid)
# Line 52  C     == Local variables == Line 88  C     == Local variables ==
88              CALL WRITE_FLD_XY_RS( 'EmPmR.',suff,EmPmR,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'EmPmR.',suff,EmPmR,myIter,myThid)
89              CALL WRITE_FLD_XY_RS( 'Qnet.',suff,Qnet,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'Qnet.',suff,Qnet,myIter,myThid)
90              CALL WRITE_FLD_XY_RS( 'Qsw.',suff,Qsw,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'Qsw.',suff,Qsw,myIter,myThid)
91              _END_MASTER( myThid )              ENDIF
92              _BARRIER              CALL WRITE_FLD_XY_RL( 'HSNOW.',suff,HSNOW,myIter,myThid)
93    #if ( defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP) )
94                IF ( SEAICEuseEVP ) THEN
95                 CALL WRITE_FLD_XY_RS('SIGMA1.',suff,seaice_sigma1,
96         &            myIter,myThid)
97                 CALL WRITE_FLD_XY_RS('SIGMA2.',suff,seaice_sigma2,
98         &            myIter,myThid)
99                 CALL WRITE_FLD_XY_RS('SIGMA12.',suff,seaice_sigma12,
100         &            myIter,myThid)
101                ENDIF
102    #endif /* SEAICE_CGRID and SEAICE_ALLOW_EVP */
103              ENDIF
104    
105  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
106         CALL PLOT_FIELD_XYRS( uwind , 'Current uwind ', myIter, myThid )         CALL PLOT_FIELD_XYRS( uwind , 'Current uwind ', myIter, myThid )
# Line 74  C     == Local variables == Line 121  C     == Local variables ==
121         CALL PLOT_FIELD_XYRL( Qsw   , 'Current Qsw   ', myIter, myThid )         CALL PLOT_FIELD_XYRL( Qsw   , 'Current Qsw   ', 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-Oly,sNy+Oly
127                       DO i=1,sNx                  DO i=1-Olx,sNx+Olx
128                          arr(i,j,bi,bj)=UICE(i,j,1,bi,bj)                    arr(i,j,bi,bj)=UICE(i,j,1,bi,bj)
129                       ENDDO                  ENDDO
130                    ENDDO                ENDDO
                ENDDO  
131              ENDDO              ENDDO
132              _BARRIER            ENDDO
133              _BEGIN_MASTER( myThid )            _BARRIER
134              IF (SEAICE_dump_mdsio) THEN
135              CALL WRITE_FLD_XY_RS( 'UICE.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'UICE.',suff,arr,myIter,myThid)
136              _END_MASTER( myThid )            ENDIF
137              _BARRIER  #ifdef ALLOW_MNC
138              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
139                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_UICE',arr,myThid)
140              ENDIF
141    #endif
142  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
143         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
144         CALL PLOT_FIELD_XYRS( arr   , 'Current uice  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current uice  ',
145         &         myIter, myThid )
146  #endif  #endif
147              _BARRIER
148    
149              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
150                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
151                    DO j=1,sNy                DO j=1-Oly,sNy+Oly
152                       DO i=1,sNx                  DO i=1-Olx,sNx+Olx
153                          arr(i,j,bi,bj)=VICE(i,j,1,bi,bj)                    arr(i,j,bi,bj)=VICE(i,j,1,bi,bj)
154                       ENDDO                  ENDDO
155                    ENDDO                ENDDO
                ENDDO  
156              ENDDO              ENDDO
157              _BARRIER            ENDDO
158              _BEGIN_MASTER( myThid )            _BARRIER
159              IF (SEAICE_dump_mdsio) THEN
160              CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)
161              _END_MASTER( myThid )            ENDIF
162              _BARRIER  #ifdef ALLOW_MNC
163              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
164                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_VICE',arr,myThid)
165              ENDIF
166    #endif
167  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
168         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
169         CALL PLOT_FIELD_XYRS( arr   , 'Current vice  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current vice  ',
170         &         myIter, myThid )
171  #endif  #endif
172                          _BARRIER
173              DO bj=myByLo(myThid),myByHi(myThid)  
174                 DO bi=myBxLo(myThid),myBxHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
175                    DO j=1,sNy              DO bi=myBxLo(myThid),myBxHi(myThid)
176                       DO i=1,sNx                DO j=1-Oly,sNy+Oly
177                          arr(i,j,bi,bj)=HEFF(i,j,1,bi,bj)                  DO i=1-Olx,sNx+Olx
178                       ENDDO                    arr(i,j,bi,bj)=HEFF(i,j,1,bi,bj)
179                    ENDDO                  ENDDO
180                 ENDDO                ENDDO
181              ENDDO              ENDDO
182              _BARRIER            ENDDO
183              _BEGIN_MASTER( myThid )            _BARRIER
184              IF (SEAICE_dump_mdsio) THEN
185              CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)
186              _END_MASTER( myThid )            ENDIF
187              _BARRIER  #ifdef ALLOW_MNC
188              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
189                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_HEFF',arr,myThid)
190              ENDIF
191    #endif
192  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
193         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
194         CALL PLOT_FIELD_XYRS( arr   , 'Current heff  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current heff  ',
195         &         myIter, myThid )
196  #endif  #endif
197                          _BARRIER
198              DO bj=myByLo(myThid),myByHi(myThid)  
199                 DO bi=myBxLo(myThid),myBxHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
200                    DO j=1,sNy              DO bi=myBxLo(myThid),myBxHi(myThid)
201                       DO i=1,sNx                DO j=1-Oly,sNy+Oly
202                          arr(i,j,bi,bj)=AREA(i,j,1,bi,bj)                  DO i=1-Olx,sNx+Olx
203                       ENDDO                    arr(i,j,bi,bj)=AREA(i,j,1,bi,bj)
204                    ENDDO                  ENDDO
205                 ENDDO                ENDDO
206              ENDDO              ENDDO
207              _BARRIER            ENDDO
208              _BEGIN_MASTER( myThid )            _BARRIER
209              IF (SEAICE_dump_mdsio) THEN
210              CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)
211              _END_MASTER( myThid )            ENDIF
212              _BARRIER  #ifdef ALLOW_MNC
213              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
214                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_AREA',arr,myThid)
215              ENDIF
216    #endif
217  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
218         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
219         CALL PLOT_FIELD_XYRS( arr   , 'Current area  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current area  ',
220         &         myIter, myThid )
221  #endif  #endif
222              _BARRIER
223    
224           ENDIF           ENDIF
225        ENDIF        ENDIF
# Line 191  C--   Time-cumulations Line 262  C--   Time-cumulations
262        ENDDO        ENDDO
263    
264  C     Dump files and restart average computation if needed  C     Dump files and restart average computation if needed
265        IF ( myIter.NE.nIter0 .AND.        dumpFiles = .FALSE.
266       &     DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,myTime-deltaTClock)        IF ( myIter .NE. nIter0 ) THEN
267       &     ) THEN          dumpFiles =
268                 &     DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,deltaTClock)
269    #ifdef ALLOW_CAL
270            IF ( useCAL ) THEN
271              CALL CAL_TIME2DUMP( SEAICE_taveFreq, deltaTClock,
272         U                        dumpFiles,
273         I                        myTime, myIter, myThid )
274            ENDIF
275    #endif
276          ENDIF
277    
278          IF (dumpFiles) THEN
279  C      Normalize by integrated time  C      Normalize by integrated time
280         DO bj = myByLo(myThid), myByHi(myThid)         DO bj = myByLo(myThid), myByHi(myThid)
281          DO bi = myBxLo(myThid), myBxHi(myThid)          DO bi = myBxLo(myThid), myBxHi(myThid)
# Line 218  C      Normalize by integrated time Line 299  C      Normalize by integrated time
299       &                 bi,bj,myThid)       &                 bi,bj,myThid)
300          ENDDO          ENDDO
301         ENDDO         ENDDO
302    c      IF (myIter.EQ.10) WRITE(0,*) myThid, dumpFiles
303    
        WRITE(suff,'(I10.10)') myIter  
304         _BARRIER         _BARRIER
305         _BEGIN_MASTER( myThid )  #ifdef ALLOW_MNC
306         CALL WRITE_FLD_XY_RL('FUtave.'   ,suff,FUtave   ,myIter,myThid)         IF (useMNC .AND. SEAICE_tave_mnc) THEN
307         CALL WRITE_FLD_XY_RL('FVtave.'   ,suff,FVtave   ,myIter,myThid)           CALL MNC_CW_SET_UDIM('sice_tave', -1, myThid)
308         CALL WRITE_FLD_XY_RL('EmPmRtave.',suff,EmPmRtave,myIter,myThid)           CALL MNC_CW_RL_W_S('D','sice_tave',0,0,'T', myTime, myThid)
309         CALL WRITE_FLD_XY_RL('QNETtave.' ,suff,QNETtave ,myIter,myThid)           CALL MNC_CW_SET_UDIM('sice_tave', 0, myThid)
310         CALL WRITE_FLD_XY_RL('QSWtave.'  ,suff,QSWtave  ,myIter,myThid)           CALL MNC_CW_I_W_S('I','sice_tave',0,0,'iter', myIter, myThid)
311         CALL WRITE_FLD_XY_RL('UICEtave.' ,suff,UICEtave ,myIter,myThid)  C        CALL MNC_CW_RL_W_S('D','sice_tave',0,0,'model_time',
312         CALL WRITE_FLD_XY_RL('VICEtave.' ,suff,VICEtave ,myIter,myThid)  C    &        myTime,myThid)
313         CALL WRITE_FLD_XY_RL('HEFFtave.' ,suff,HEFFtave ,myIter,myThid)           CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
314         CALL WRITE_FLD_XY_RL('AREAtave.' ,suff,AREAtave ,myIter,myThid)       &        'si_UICEtave',UICEtave,myThid)
315         _END_MASTER( myThid )           CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
316         &        'si_VICEtave',VICEtave,myThid)
317             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
318         &        'si_FUtave',FUtave,myThid)
319             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
320         &        'si_FVtave',FVtave,myThid)
321             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
322         &        'si_EmPmRtave',EmPmRtave,myThid)
323             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
324         &        'si_QNETtave',QNETtave,myThid)
325             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
326         &        'si_QSWtave',QSWtave,myThid)
327             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
328         &        'si_HEFFtave',HEFFtave,myThid)
329             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
330         &        'si_AREAtave',AREAtave,myThid)
331           ENDIF
332    #endif
333           IF (SEAICE_tave_mdsio) THEN
334             WRITE(suff,'(I10.10)') myIter
335             CALL WRITE_FLD_XY_RL('FUtave.'   ,suff,FUtave   ,myIter,myThid)
336             CALL WRITE_FLD_XY_RL('FVtave.'   ,suff,FVtave   ,myIter,myThid)
337             CALL WRITE_FLD_XY_RL('EmPmRtave.',suff,EmPmRtave,myIter,myThid)
338             CALL WRITE_FLD_XY_RL('QNETtave.' ,suff,QNETtave ,myIter,myThid)
339             CALL WRITE_FLD_XY_RL('QSWtave.'  ,suff,QSWtave  ,myIter,myThid)
340             CALL WRITE_FLD_XY_RL('UICEtave.' ,suff,UICEtave ,myIter,myThid)
341             CALL WRITE_FLD_XY_RL('VICEtave.' ,suff,VICEtave ,myIter,myThid)
342             CALL WRITE_FLD_XY_RL('HEFFtave.' ,suff,HEFFtave ,myIter,myThid)
343             CALL WRITE_FLD_XY_RL('AREAtave.' ,suff,AREAtave ,myIter,myThid)
344           ENDIF
345         _BARRIER         _BARRIER
346          
347  C      Reset averages to zero  C      Reset averages to zero
348         DO bj = myByLo(myThid), myByHi(myThid)         DO bj = myByLo(myThid), myByHi(myThid)
349          DO bi = myBxLo(myThid), myBxHi(myThid)          DO bi = myBxLo(myThid), myBxHi(myThid)
# Line 251  C      Reset averages to zero Line 361  C      Reset averages to zero
361           ENDDO           ENDDO
362          ENDDO          ENDDO
363         ENDDO         ENDDO
364          
365        ENDIF        ENDIF
366          
367  #endif /* ALLOW_TIMEAVE */  #endif /* ALLOW_TIMEAVE */
368    
369  #endif /* ALLOW_SEAICE */  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
370          
371    #ifdef ALLOW_DIAGNOSTICS
372          IF ( useDiagnostics ) THEN
373           DO bj = myByLo(myThid), myByHi(myThid)
374            DO bi = myBxLo(myThid), myBxHi(myThid)
375             CALL DIAGNOSTICS_FILL(AREA(1-oLx,1-oLy,1,bi,bj),
376         &          'SIarea  ',0,1 ,2,bi,bj,myThid)
377             CALL DIAGNOSTICS_FILL(HEFF(1-oLx,1-oLy,1,bi,bj),
378         &        'SIheff  ',0,1 ,2,bi,bj,myThid)
379             CALL DIAGNOSTICS_FILL(UICE(1-oLx,1-oLy,1,bi,bj),
380         &        'SIuice  ',0,1 ,2,bi,bj,myThid)
381             CALL DIAGNOSTICS_FILL(VICE(1-oLx,1-oLy,1,bi,bj),
382         &        'SIvice  ',0,1 ,2,bi,bj,myThid)
383            ENDDO
384           ENDDO
385    c
386           CALL DIAGNOSTICS_FILL(HSNOW  ,'SIhsnow ',0,1 ,0,1,1,myThid)
387    c
388           CALL DIAGNOSTICS_FILL(UWIND  ,'SIuwind ',0,1 ,0,1,1,myThid)
389           CALL DIAGNOSTICS_FILL(VWIND  ,'SIvwind ',0,1 ,0,1,1,myThid)
390           CALL DIAGNOSTICS_FILL(FU     ,'SIfu    ',0,1 ,0,1,1,myThid)
391           CALL DIAGNOSTICS_FILL(FV     ,'SIfv    ',0,1 ,0,1,1,myThid)
392           CALL DIAGNOSTICS_FILL(EmPmR  ,'SIempmr ',0,1 ,0,1,1,myThid)
393           CALL DIAGNOSTICS_FILL(Qnet   ,'SIqnet  ',0,1 ,0,1,1,myThid)
394           CALL DIAGNOSTICS_FILL(Qsw    ,'SIqsw   ',0,1 ,0,1,1,myThid)
395          ENDIF
396    #endif /* ALLOW_DIAGNOSTICS */
397    
398    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
399    
400    C--   do SEAICE monitor output : print some statistics about seaice fields
401          CALL SEAICE_MONITOR( myTime, myIter, myThid )
402    
403    
404    
405        RETURN        RETURN
406        END        END

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.26

  ViewVC Help
Powered by ViewVC 1.1.22