/[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.18 by mlosch, Tue Mar 14 21:21:53 2006 UTC revision 1.23 by jmc, Thu Aug 17 00:18:44 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)
       INTEGER thisdate(4), prevdate(4)  
37        LOGICAL dumpFiles        LOGICAL dumpFiles
38        CHARACTER*(1) pf        CHARACTER*(1) pf
39    
# Line 43  C     == Local variables == Line 42  C     == Local variables ==
42        ELSE        ELSE
43          pf(1:1) = 'R'          pf(1:1) = 'R'
44        ENDIF        ENDIF
45          
46        IF (SEAICEwriteState) THEN        IF (SEAICEwriteState) THEN
47    
48          IF ( DIFFERENT_MULTIPLE(SEAICE_dumpFreq,myTime,deltaTClock)          IF ( DIFFERENT_MULTIPLE(SEAICE_dumpFreq,myTime,deltaTClock)
49         &    .OR. dumpInitAndLast.AND.( myTime.EQ.endTime .OR.
50         &                               myTime.EQ.startTime  )
51       &       ) THEN       &       ) THEN
52                
53              _BARRIER
54  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
55            IF ( useMNC .AND. SEAICE_dump_mnc ) THEN            IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
56              CALL MNC_CW_SET_UDIM('sice', -1, myThid)              CALL MNC_CW_SET_UDIM('sice', -1, myThid)
# Line 57  C     == Local variables == Line 59  C     == Local variables ==
59              CALL MNC_CW_I_W_S('I','sice',0,0,'iter', myIter, myThid)              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',              CALL MNC_CW_RL_W_S('D','sice',0,0,'model_time',
61       &           myTime,myThid)       &           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)              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)              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)              CALL MNC_CW_RS_W(pf,'sice',0,0,'fu',fu,myThid)
# Line 68  C     == Local variables == Line 80  C     == Local variables ==
80  #endif  #endif
81            IF (SEAICE_dump_mdsio) THEN            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 77  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            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 )
107         CALL PLOT_FIELD_XYRS( vwind , 'Current vwind ', myIter, myThid )         CALL PLOT_FIELD_XYRS( vwind , 'Current vwind ', myIter, myThid )
# Line 109  C     == Local variables == Line 130  C     == Local variables ==
130                ENDDO                ENDDO
131              ENDDO              ENDDO
132            ENDDO            ENDDO
133              _BARRIER
134            IF (SEAICE_dump_mdsio) THEN            IF (SEAICE_dump_mdsio) THEN
             _BARRIER  
             _BEGIN_MASTER( myThid )  
135              CALL WRITE_FLD_XY_RS( 'UICE.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'UICE.',suff,arr,myIter,myThid)
             _END_MASTER( myThid )  
             _BARRIER  
136            ENDIF            ENDIF
137  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
138            IF ( useMNC .AND. SEAICE_dump_mnc ) THEN            IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
# Line 124  C     == Local variables == Line 141  C     == Local variables ==
141  #endif  #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  ',            CALL PLOT_FIELD_XYRS( arr   , 'Current uice  ',
145       &         myIter, myThid )       &         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)
# Line 137  C     == Local variables == Line 155  C     == Local variables ==
155                ENDDO                ENDDO
156              ENDDO              ENDDO
157            ENDDO            ENDDO
158              _BARRIER
159            IF (SEAICE_dump_mdsio) THEN            IF (SEAICE_dump_mdsio) THEN
             _BARRIER  
             _BEGIN_MASTER( myThid )  
160              CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)
             _END_MASTER( myThid )  
             _BARRIER  
161            ENDIF            ENDIF
162  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
163            IF ( useMNC .AND. SEAICE_dump_mnc ) THEN            IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
# Line 151  C     == Local variables == Line 166  C     == Local variables ==
166  #endif  #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  ',            CALL PLOT_FIELD_XYRS( arr   , 'Current vice  ',
170       &         myIter, myThid )       &         myIter, myThid )
171  #endif  #endif
172                        _BARRIER
173    
174            DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
175              DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
176                DO j=1-Oly,sNy+Oly                DO j=1-Oly,sNy+Oly
# Line 164  C     == Local variables == Line 180  C     == Local variables ==
180                ENDDO                ENDDO
181              ENDDO              ENDDO
182            ENDDO            ENDDO
183              _BARRIER
184            IF (SEAICE_dump_mdsio) THEN            IF (SEAICE_dump_mdsio) THEN
             _BARRIER  
             _BEGIN_MASTER( myThid )  
185              CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)
             _END_MASTER( myThid )  
             _BARRIER  
186            ENDIF            ENDIF
187  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
188            IF ( useMNC .AND. SEAICE_dump_mnc ) THEN            IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
# Line 181  C     == Local variables == Line 194  C     == Local variables ==
194            CALL PLOT_FIELD_XYRS( arr   , 'Current heff  ',            CALL PLOT_FIELD_XYRS( arr   , 'Current heff  ',
195       &         myIter, myThid )       &         myIter, myThid )
196  #endif  #endif
197                        _BARRIER
198    
199            DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
200              DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
201                DO j=1-Oly,sNy+Oly                DO j=1-Oly,sNy+Oly
# Line 191  C     == Local variables == Line 205  C     == Local variables ==
205                ENDDO                ENDDO
206              ENDDO              ENDDO
207            ENDDO            ENDDO
208              _BARRIER
209            IF (SEAICE_dump_mdsio) THEN            IF (SEAICE_dump_mdsio) THEN
             _BARRIER  
             _BEGIN_MASTER( myThid )  
210              CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)
             _END_MASTER( myThid )  
             _BARRIER  
211            ENDIF            ENDIF
212  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
213            IF ( useMNC .AND. SEAICE_dump_mnc ) THEN            IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
# Line 208  C     == Local variables == Line 219  C     == Local variables ==
219            CALL PLOT_FIELD_XYRS( arr   , 'Current area  ',            CALL PLOT_FIELD_XYRS( arr   , 'Current area  ',
220       &         myIter, myThid )       &         myIter, myThid )
221  #endif  #endif
222              _BARRIER
223    
224           ENDIF           ENDIF
225        ENDIF        ENDIF
# Line 252  C--   Time-cumulations Line 264  C--   Time-cumulations
264  C     Dump files and restart average computation if needed  C     Dump files and restart average computation if needed
265        dumpFiles = .FALSE.        dumpFiles = .FALSE.
266        IF ( myIter .NE. nIter0 ) THEN        IF ( myIter .NE. nIter0 ) THEN
267        IF ( DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,deltaTClock) )          dumpFiles =
268       &     dumpFiles = .TRUE.       &     DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,deltaTClock)
269  #ifdef ALLOW_CAL  #ifdef ALLOW_CAL
270        IF ( calendarDumps .AND. (          IF ( useCAL ) THEN
271       & (SEAICE_taveFreq.GE. 2592000.AND.SEAICE_taveFreq.LE. 2678400).OR.            CALL CAL_TIME2DUMP( SEAICE_taveFreq, deltaTClock,
272       & (SEAICE_taveFreq.GE.31104000.AND.SEAICE_taveFreq.LE.31968000)))       U                        dumpFiles,
273       & THEN       I                        myTime, myIter, myThid )
274  C--   Convert approximate months (30-31 days) and years (360-372 days)          ENDIF
 C     to exact calendar months and years.  
 C-    First determine calendar dates for this and previous time step.  
        call cal_GetDate( myiter  ,mytime            ,thisdate,mythid )  
        call cal_GetDate( myiter-1,mytime-deltaTClock,prevdate,mythid )  
        dumpFiles = .FALSE.  
 C-    Monthly SEAICE_taveFreq:  
        IF( SEAICE_taveFreq.GE. 2592000 .AND. SEAICE_taveFreq.LE. 2678400  
      &      .AND. (thisdate(1)-prevdate(1)).GT.50   ) dumpFiles = .TRUE.  
 C-    Yearly  SEAICE_taveFreq:  
        IF( SEAICE_taveFreq.GE.31104000 .AND. SEAICE_taveFreq.LE.31968000  
      &      .AND. (thisdate(1)-prevdate(1)).GT.5000 ) dumpFiles = .TRUE.  
       ENDIF  
275  #endif  #endif
276        ENDIF        ENDIF
277    
# Line 299  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    
304           _BARRIER
305  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
306         IF (useMNC .AND. SEAICE_tave_mnc) THEN         IF (useMNC .AND. SEAICE_tave_mnc) THEN
307           CALL MNC_CW_SET_UDIM('sice_tave', -1, myThid)           CALL MNC_CW_SET_UDIM('sice_tave', -1, myThid)
# Line 330  C    &        myTime,myThid) Line 332  C    &        myTime,myThid)
332  #endif  #endif
333         IF (SEAICE_tave_mdsio) THEN         IF (SEAICE_tave_mdsio) THEN
334           WRITE(suff,'(I10.10)') myIter           WRITE(suff,'(I10.10)') myIter
          _BARRIER  
          _BEGIN_MASTER( myThid )  
335           CALL WRITE_FLD_XY_RL('FUtave.'   ,suff,FUtave   ,myIter,myThid)           CALL WRITE_FLD_XY_RL('FUtave.'   ,suff,FUtave   ,myIter,myThid)
336           CALL WRITE_FLD_XY_RL('FVtave.'   ,suff,FVtave   ,myIter,myThid)           CALL WRITE_FLD_XY_RL('FVtave.'   ,suff,FVtave   ,myIter,myThid)
337           CALL WRITE_FLD_XY_RL('EmPmRtave.',suff,EmPmRtave,myIter,myThid)           CALL WRITE_FLD_XY_RL('EmPmRtave.',suff,EmPmRtave,myIter,myThid)
# Line 341  C    &        myTime,myThid) Line 341  C    &        myTime,myThid)
341           CALL WRITE_FLD_XY_RL('VICEtave.' ,suff,VICEtave ,myIter,myThid)           CALL WRITE_FLD_XY_RL('VICEtave.' ,suff,VICEtave ,myIter,myThid)
342           CALL WRITE_FLD_XY_RL('HEFFtave.' ,suff,HEFFtave ,myIter,myThid)           CALL WRITE_FLD_XY_RL('HEFFtave.' ,suff,HEFFtave ,myIter,myThid)
343           CALL WRITE_FLD_XY_RL('AREAtave.' ,suff,AREAtave ,myIter,myThid)           CALL WRITE_FLD_XY_RL('AREAtave.' ,suff,AREAtave ,myIter,myThid)
          _END_MASTER( myThid )  
          _BARRIER  
344         ENDIF         ENDIF
345                 _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 362  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    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
370    
371    C--   do SEAICE monitor output : print some statistics about seaice fields
372          CALL SEAICE_MONITOR( myTime, myIter, myThid )
373    
374        RETURN        RETURN
375        END        END

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.23

  ViewVC Help
Powered by ViewVC 1.1.22