/[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.5 by dimitri, Tue Feb 18 05:33:55 2003 UTC revision 1.12 by jmc, Sun May 15 03:04:57 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 18  C     === Global variables === Line 19  C     === Global variables ===
19  #include "SEAICE_PARAMS.h"  #include "SEAICE_PARAMS.h"
20  #include "SEAICE_FFIELDS.h"  #include "SEAICE_FFIELDS.h"
21  #include "SEAICE.h"  #include "SEAICE.h"
22    #ifdef ALLOW_MNC
23    #include "MNC_PARAMS.h"
24    #endif
25    
26  C     == Routine arguments ==  C     == Routine arguments ==
27  C     myTime        - Current time of simulation ( s )  C     myTime        - Current time of simulation ( s )
# Line 27  C     myThid        - Number of this ins Line 31  C     myThid        - Number of this ins
31        INTEGER myIter        INTEGER myIter
32        INTEGER myThid        INTEGER myThid
33    
 #ifdef ALLOW_SEAICE  
   
34  C     == Local variables ==  C     == Local variables ==
35        CHARACTER*(MAX_LEN_MBUF) suff        CHARACTER*(MAX_LEN_MBUF) suff
36        LOGICAL  DIFFERENT_MULTIPLE        LOGICAL  DIFFERENT_MULTIPLE
37        EXTERNAL DIFFERENT_MULTIPLE        EXTERNAL DIFFERENT_MULTIPLE
38        INTEGER i, j, k, bi, bj        INTEGER i, j, k, bi, bj
39        _RS arr(1-oLx:sNx+oLx,1-oLy:sNy+oLy,nSx,nSy)        _RS arr(1-oLx:sNx+oLx,1-oLy:sNy+oLy,nSx,nSy)
40          INTEGER thisdate(4), prevdate(4)
41          LOGICAL dumpFiles
42                    
43        IF (SEAICEwriteState) THEN        IF (SEAICEwriteState) THEN
44    
45           IF ( DIFFERENT_MULTIPLE(SEAICE_dumpFreq,myTime,           IF ( DIFFERENT_MULTIPLE(SEAICE_dumpFreq,myTime,deltaTClock)
46       &        myTime-deltaTClock) ) THEN       &      ) THEN
47                            
48              WRITE(suff,'(I10.10)') myIter  #ifdef ALLOW_MNC
49              _BARRIER             IF (useMNC .AND. seaice_mnc) THEN
50              _BEGIN_MASTER( myThid )               CALL MNC_CW_SET_UDIM('sice', -1, myThid)
51              CALL WRITE_FLD_XY_RS( 'FU.',suff,fu,myIter,myThid)               CALL MNC_CW_I_W_S('I','sice',0,0,'T', myIter, myThid)
52              CALL WRITE_FLD_XY_RS( 'FV.',suff,fv,myIter,myThid)               CALL MNC_CW_SET_UDIM('sice', 0, myThid)
53              CALL WRITE_FLD_XY_RS( 'EmPmR.',suff,EmPmR,myIter,myThid)               CALL MNC_CW_RL_W_S('D','sice',0,0,'model_time',
54              CALL WRITE_FLD_XY_RS( 'Qnet.',suff,Qnet,myIter,myThid)       &            myTime,myThid)
55              CALL WRITE_FLD_XY_RS( 'Qsw.',suff,Qsw,myIter,myThid)               CALL MNC_CW_RL_W('D','sice',0,0,'UWIND',uwind,myThid)
56              _END_MASTER( myThid )               CALL MNC_CW_RL_W('D','sice',0,0,'VWIND',vwind,myThid)
57              _BARRIER               CALL MNC_CW_RL_W('D','sice',0,0,'FU',fu,myThid)
58                 CALL MNC_CW_RL_W('D','sice',0,0,'FV',fv,myThid)
59                 CALL MNC_CW_RL_W('D','sice',0,0,'EmPmR',EmPmR,myThid)
60                 CALL MNC_CW_RL_W('D','sice',0,0,'Qnet',Qnet,myThid)
61                 CALL MNC_CW_RL_W('D','sice',0,0,'Qsw',Qsw,myThid)
62               ENDIF
63    #endif
64               IF (seaice_mdsio) THEN
65                 WRITE(suff,'(I10.10)') myIter
66                 _BARRIER
67                 _BEGIN_MASTER( myThid )
68                 CALL WRITE_FLD_XY_RS( 'UWIND.',suff,uwind,myIter,myThid)
69                 CALL WRITE_FLD_XY_RS( 'VWIND.',suff,vwind,myIter,myThid)
70                 CALL WRITE_FLD_XY_RS( 'FU.',suff,fu,myIter,myThid)
71                 CALL WRITE_FLD_XY_RS( 'FV.',suff,fv,myIter,myThid)
72                 CALL WRITE_FLD_XY_RS( 'EmPmR.',suff,EmPmR,myIter,myThid)
73                 CALL WRITE_FLD_XY_RS( 'Qnet.',suff,Qnet,myIter,myThid)
74                 CALL WRITE_FLD_XY_RS( 'Qsw.',suff,Qsw,myIter,myThid)
75                 _END_MASTER( myThid )
76                 _BARRIER
77               ENDIF
78    
79    #ifdef SEAICE_DEBUG
80           CALL PLOT_FIELD_XYRS( uwind , 'Current uwind ', myIter, myThid )
81           CALL PLOT_FIELD_XYRS( vwind , 'Current vwind ', myIter, myThid )
82           CALL PLOT_FIELD_XYRS( atemp , 'Current atemp ', myIter, myThid )
83           CALL PLOT_FIELD_XYRS( aqh   , 'Current aqh   ', myIter, myThid )
84           CALL PLOT_FIELD_XYRS( lwdown, 'Current lwdown', myIter, myThid )
85           CALL PLOT_FIELD_XYRS( swdown, 'Current swdown', myIter, myThid )
86           CALL PLOT_FIELD_XYRS( precip, 'Current precip', myIter, myThid )
87           CALL PLOT_FIELD_XYRL( evap  , 'Current evap  ', myIter, myThid )
88           CALL PLOT_FIELD_XYRS( runoff, 'Current runoff', myIter, myThid )
89           CALL PLOT_FIELD_XYRS( SSS   , 'Current SSS   ', myIter, myThid )
90           CALL PLOT_FIELD_XYRS( SST   , 'Current SST   ', myIter, myThid )
91           CALL PLOT_FIELD_XYRL( fu    , 'Current fu    ', myIter, myThid )
92           CALL PLOT_FIELD_XYRL( fv    , 'Current fv    ', myIter, myThid )
93           CALL PLOT_FIELD_XYRL( EmPmR , 'Current EmPmR ', myIter, myThid )
94           CALL PLOT_FIELD_XYRL( Qnet  , 'Current Qnet  ', myIter, myThid )
95           CALL PLOT_FIELD_XYRL( Qsw   , 'Current Qsw   ', myIter, myThid )
96    #endif
97    
98              DO bj=myByLo(myThid),myByHi(myThid)              DO bj=myByLo(myThid),myByHi(myThid)
99                 DO bi=myBxLo(myThid),myBxHi(myThid)                 DO bi=myBxLo(myThid),myBxHi(myThid)
# Line 66  C     == Local variables == Line 109  C     == Local variables ==
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                #ifdef SEAICE_DEBUG
113           _EXCH_XY_R4( arr, myThid )
114           CALL PLOT_FIELD_XYRS( arr   , 'Current uice  ', myIter, myThid )
115    #endif
116    
117              DO bj=myByLo(myThid),myByHi(myThid)              DO bj=myByLo(myThid),myByHi(myThid)
118                 DO bi=myBxLo(myThid),myBxHi(myThid)                 DO bi=myBxLo(myThid),myBxHi(myThid)
119                    DO j=1,sNy                    DO j=1,sNy
# Line 81  C     == Local variables == Line 128  C     == Local variables ==
128              CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)
129              _END_MASTER( myThid )              _END_MASTER( myThid )
130              _BARRIER              _BARRIER
131    #ifdef SEAICE_DEBUG
132           _EXCH_XY_R4( arr, myThid )
133           CALL PLOT_FIELD_XYRS( arr   , 'Current vice  ', myIter, myThid )
134    #endif
135                            
136              DO bj=myByLo(myThid),myByHi(myThid)              DO bj=myByLo(myThid),myByHi(myThid)
137                 DO bi=myBxLo(myThid),myBxHi(myThid)                 DO bi=myBxLo(myThid),myBxHi(myThid)
# Line 96  C     == Local variables == Line 147  C     == Local variables ==
147              CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)
148              _END_MASTER( myThid )              _END_MASTER( myThid )
149              _BARRIER              _BARRIER
150    #ifdef SEAICE_DEBUG
151           _EXCH_XY_R4( arr, myThid )
152           CALL PLOT_FIELD_XYRS( arr   , 'Current heff  ', myIter, myThid )
153    #endif
154                            
155              DO bj=myByLo(myThid),myByHi(myThid)              DO bj=myByLo(myThid),myByHi(myThid)
156                 DO bi=myBxLo(myThid),myBxHi(myThid)                 DO bi=myBxLo(myThid),myBxHi(myThid)
# Line 111  C     == Local variables == Line 166  C     == Local variables ==
166              CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)
167              _END_MASTER( myThid )              _END_MASTER( myThid )
168              _BARRIER              _BARRIER
   
169  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
170  c      CALL PLOT_FIELD_XYRS( uwind ,'Current uwind ' , myIter, myThid )         _EXCH_XY_R4( arr, myThid )
171  c      CALL PLOT_FIELD_XYRS( vwind ,'Current vwind ' , myIter, myThid )         CALL PLOT_FIELD_XYRS( arr   , 'Current area  ', myIter, myThid )
 c      CALL PLOT_FIELD_XYRS( atemp ,'Current atemp ' , myIter, myThid )  
 c      CALL PLOT_FIELD_XYRS( aqh   ,'Current aqh '   , myIter, myThid )  
 c      CALL PLOT_FIELD_XYRS( lwdown,'Current lwdown ', myIter, myThid )  
 c      CALL PLOT_FIELD_XYRS( swdown,'Current swdown ', myIter, myThid )  
        CALL PLOT_FIELD_XYRL( fu    ,'Current fu '    , myIter, myThid )  
        CALL PLOT_FIELD_XYRL( fv    ,'Current fv '    , myIter, myThid )  
        CALL PLOT_FIELD_XYRL( Qnet  ,'Current Qnet '  , myIter, myThid )  
        CALL PLOT_FIELD_XYRL( evap  ,'Current evap '  , myIter, myThid )  
172  #endif  #endif
173    
174           ENDIF           ENDIF
# Line 166  C--   Time-cumulations Line 212  C--   Time-cumulations
212        ENDDO        ENDDO
213    
214  C     Dump files and restart average computation if needed  C     Dump files and restart average computation if needed
215        IF ( myIter.NE.nIter0 .AND.        dumpFiles = .FALSE.
216       &     DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,myTime-deltaTClock)        IF ( myIter .NE. nIter0 ) THEN
217       &     ) THEN        IF ( DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,deltaTClock) )
218                 &     dumpFiles = .TRUE.
219    #ifdef ALLOW_CAL
220          IF ( calendarDumps .AND. (
221         & (SEAICE_taveFreq.GE. 2592000.AND.SEAICE_taveFreq.LE. 2678400).OR.
222         & (SEAICE_taveFreq.GE.31104000.AND.SEAICE_taveFreq.LE.31968000)))
223         & THEN
224    C--   Convert approximate months (30-31 days) and years (360-372 days)
225    C     to exact calendar months and years.
226    C-    First determine calendar dates for this and previous time step.
227           call cal_GetDate( myiter  ,mytime            ,thisdate,mythid )
228           call cal_GetDate( myiter-1,mytime-deltaTClock,prevdate,mythid )
229           dumpFiles = .FALSE.
230    C-    Monthly SEAICE_taveFreq:
231           IF( SEAICE_taveFreq.GE. 2592000 .AND. SEAICE_taveFreq.LE. 2678400
232         &      .AND. (thisdate(1)-prevdate(1)).GT.50   ) dumpFiles = .TRUE.
233    C-    Yearly  SEAICE_taveFreq:
234           IF( SEAICE_taveFreq.GE.31104000 .AND. SEAICE_taveFreq.LE.31968000
235         &      .AND. (thisdate(1)-prevdate(1)).GT.5000 ) dumpFiles = .TRUE.
236          ENDIF
237    #endif
238          ENDIF
239    
240          IF (dumpFiles) THEN
241  C      Normalize by integrated time  C      Normalize by integrated time
242         DO bj = myByLo(myThid), myByHi(myThid)         DO bj = myByLo(myThid), myByHi(myThid)
243          DO bi = myBxLo(myThid), myBxHi(myThid)          DO bi = myBxLo(myThid), myBxHi(myThid)
# Line 194  C      Normalize by integrated time Line 262  C      Normalize by integrated time
262          ENDDO          ENDDO
263         ENDDO         ENDDO
264    
265         WRITE(suff,'(I10.10)') myIter  #ifdef ALLOW_MNC
266         _BARRIER         IF (useMNC .AND. seaice_mnc) THEN
267         _BEGIN_MASTER( myThid )           CALL MNC_CW_SET_UDIM('sice_tave', -1, myThid)
268         CALL WRITE_FLD_XY_RL('FUtave.'   ,suff,FUtave   ,myIter,myThid)           CALL MNC_CW_I_W_S('I','sice_tave',0,0,'T', myIter, myThid)
269         CALL WRITE_FLD_XY_RL('FVtave.'   ,suff,FVtave   ,myIter,myThid)           CALL MNC_CW_SET_UDIM('sice_tave', 0, myThid)
270         CALL WRITE_FLD_XY_RL('EmPmRtave.',suff,EmPmRtave,myIter,myThid)           CALL MNC_CW_RL_W_S('D','sice_tave',0,0,'model_time',
271         CALL WRITE_FLD_XY_RL('QNETtave.' ,suff,QNETtave ,myIter,myThid)       &        myTime,myThid)
272         CALL WRITE_FLD_XY_RL('QSWtave.'  ,suff,QSWtave  ,myIter,myThid)           CALL MNC_CW_RL_W('R','sice_tave',0,0,
273         CALL WRITE_FLD_XY_RL('UICEtave.' ,suff,UICEtave ,myIter,myThid)       &        'UICEtave',UICEtave,myThid)
274         CALL WRITE_FLD_XY_RL('VICEtave.' ,suff,VICEtave ,myIter,myThid)           CALL MNC_CW_RL_W('R','sice_tave',0,0,
275         CALL WRITE_FLD_XY_RL('HEFFtave.' ,suff,HEFFtave ,myIter,myThid)       &        'VICEtave',VICEtave,myThid)
276         CALL WRITE_FLD_XY_RL('AREAtave.' ,suff,AREAtave ,myIter,myThid)           CALL MNC_CW_RL_W('R','sice_tave',0,0,
277         _END_MASTER( myThid )       &        'FUtave',FUtave,myThid)
278         _BARRIER           CALL MNC_CW_RL_W('R','sice_tave',0,0,
279         &        'FVtave',FVtave,myThid)
280             CALL MNC_CW_RL_W('R','sice_tave',0,0,
281         &        'EmPmRtave',EmPmRtave,myThid)
282             CALL MNC_CW_RL_W('R','sice_tave',0,0,
283         &        'QNETtave',QNETtave,myThid)
284             CALL MNC_CW_RL_W('R','sice_tave',0,0,
285         &        'QSWtave',QSWtave,myThid)
286             CALL MNC_CW_RL_W('R','sice_tave',0,0,
287         &        'HEFFtave',HEFFtave,myThid)
288             CALL MNC_CW_RL_W('R','sice_tave',0,0,
289         &        'AREAtave',AREAtave,myThid)
290           ENDIF
291    #endif
292           IF (seaice_mdsio) THEN
293             WRITE(suff,'(I10.10)') myIter
294             _BARRIER
295             _BEGIN_MASTER( myThid )
296             CALL WRITE_FLD_XY_RL('FUtave.'   ,suff,FUtave   ,myIter,myThid)
297             CALL WRITE_FLD_XY_RL('FVtave.'   ,suff,FVtave   ,myIter,myThid)
298             CALL WRITE_FLD_XY_RL('EmPmRtave.',suff,EmPmRtave,myIter,myThid)
299             CALL WRITE_FLD_XY_RL('QNETtave.' ,suff,QNETtave ,myIter,myThid)
300             CALL WRITE_FLD_XY_RL('QSWtave.'  ,suff,QSWtave  ,myIter,myThid)
301             CALL WRITE_FLD_XY_RL('UICEtave.' ,suff,UICEtave ,myIter,myThid)
302             CALL WRITE_FLD_XY_RL('VICEtave.' ,suff,VICEtave ,myIter,myThid)
303             CALL WRITE_FLD_XY_RL('HEFFtave.' ,suff,HEFFtave ,myIter,myThid)
304             CALL WRITE_FLD_XY_RL('AREAtave.' ,suff,AREAtave ,myIter,myThid)
305             _END_MASTER( myThid )
306             _BARRIER
307           ENDIF
308                
309  C      Reset averages to zero  C      Reset averages to zero
310         DO bj = myByLo(myThid), myByHi(myThid)         DO bj = myByLo(myThid), myByHi(myThid)
# Line 231  C      Reset averages to zero Line 328  C      Reset averages to zero
328                
329  #endif /* ALLOW_TIMEAVE */  #endif /* ALLOW_TIMEAVE */
330    
 #endif /* ALLOW_SEAICE */  
         
331        RETURN        RETURN
332        END        END

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.22