/[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.8 by dimitri, Mon Dec 27 20:34:11 2004 UTC revision 1.20 by mlosch, Mon Mar 20 21:36:11 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)
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    #ifdef ALLOW_MNC
52              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
53                CALL MNC_CW_SET_UDIM('sice', -1, myThid)
54                CALL MNC_CW_RL_W_S('D','sice',0,0,'T', myTime, myThid)
55                CALL MNC_CW_SET_UDIM('sice', 0, myThid)
56                CALL MNC_CW_I_W_S('I','sice',0,0,'iter', myIter, myThid)
57                CALL MNC_CW_RL_W_S('D','sice',0,0,'model_time',
58         &           myTime,myThid)
59    #if ( defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP) )
60                IF ( SEAICEuseEVP ) THEN
61                 CALL MNC_CW_RS_W(pf,'sice',0,0,'si_sigma1',
62         &            seaice_sigma1,myThid)
63                 CALL MNC_CW_RS_W(pf,'sice',0,0,'si_sigma2',
64         &            seaice_sigma2,myThid)
65                 CALL MNC_CW_RS_W(pf,'sice',0,0,'si_sigma12',
66         &            seaice_sigma12,myThid)
67                ENDIF
68    #endif /* SEAICE_CGRID and SEAICE_ALLOW_EVP */
69                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_UWIND',uwind,myThid)
70                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_VWIND',vwind,myThid)
71                CALL MNC_CW_RS_W(pf,'sice',0,0,'fu',fu,myThid)
72                CALL MNC_CW_RS_W(pf,'sice',0,0,'fv',fv,myThid)
73                CALL MNC_CW_RS_W(pf,'sice',0,0,'EmPmR',EmPmR,myThid)
74                CALL MNC_CW_RS_W(pf,'sice',0,0,'Qnet',Qnet,myThid)
75                CALL MNC_CW_RS_W(pf,'sice',0,0,'Qsw',Qsw,myThid)
76              ENDIF
77    #endif
78              IF (SEAICE_dump_mdsio) THEN
79              WRITE(suff,'(I10.10)') myIter              WRITE(suff,'(I10.10)') myIter
80              _BARRIER              _BARRIER
81              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
# Line 50  C     == Local variables == Line 86  C     == Local variables ==
86              CALL WRITE_FLD_XY_RS( 'EmPmR.',suff,EmPmR,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'EmPmR.',suff,EmPmR,myIter,myThid)
87              CALL WRITE_FLD_XY_RS( 'Qnet.',suff,Qnet,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'Qnet.',suff,Qnet,myIter,myThid)
88              CALL WRITE_FLD_XY_RS( 'Qsw.',suff,Qsw,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'Qsw.',suff,Qsw,myIter,myThid)
89    #if ( defined(SEAICE_CGRID) && defined(SEAICE_ALLOW_EVP) )
90                IF ( SEAICEuseEVP ) THEN
91                 CALL WRITE_FLD_XY_Rs('SIGMA1.',suff,seaice_sigma1,
92         &            myIter,myThid)
93                 CALL WRITE_FLD_XY_Rs('SIGMA2.',suff,seaice_sigma2,
94         &            myIter,myThid)
95                 CALL WRITE_FLD_XY_Rs('SIGMA12.',suff,seaice_sigma12,
96         &            myIter,myThid)
97                ENDIF
98    #endif /* SEAICE_CGRID and SEAICE_ALLOW_EVP */
99              _END_MASTER( myThid )              _END_MASTER( myThid )
100              _BARRIER              _BARRIER
101              ENDIF
102              
103  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
104         CALL PLOT_FIELD_XYRS( uwind , 'Current uwind ', myIter, myThid )         CALL PLOT_FIELD_XYRS( uwind , 'Current uwind ', myIter, myThid )
105         CALL PLOT_FIELD_XYRS( vwind , 'Current vwind ', myIter, myThid )         CALL PLOT_FIELD_XYRS( vwind , 'Current vwind ', myIter, myThid )
# Line 72  C     == Local variables == Line 119  C     == Local variables ==
119         CALL PLOT_FIELD_XYRL( Qsw   , 'Current Qsw   ', myIter, myThid )         CALL PLOT_FIELD_XYRL( Qsw   , 'Current Qsw   ', myIter, myThid )
120  #endif  #endif
121    
122              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
123                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
124                    DO j=1,sNy                DO j=1-Oly,sNy+Oly
125                       DO i=1,sNx                  DO i=1-Olx,sNx+Olx
126                          arr(i,j,bi,bj)=UICE(i,j,1,bi,bj)                    arr(i,j,bi,bj)=UICE(i,j,1,bi,bj)
127                       ENDDO                  ENDDO
128                    ENDDO                ENDDO
                ENDDO  
129              ENDDO              ENDDO
130              ENDDO
131    
132              IF (SEAICE_dump_mdsio) THEN
133              _BARRIER              _BARRIER
134              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
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 )              _END_MASTER( myThid )
137              _BARRIER              _BARRIER
138              ENDIF
139    #ifdef ALLOW_MNC
140              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
141                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_UICE',arr,myThid)
142              ENDIF
143    #endif
144  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
145         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
146         CALL PLOT_FIELD_XYRS( arr   , 'Current uice  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current uice  ',
147         &         myIter, myThid )
148  #endif  #endif
149    
150              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
151                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
152                    DO j=1,sNy                DO j=1-Oly,sNy+Oly
153                       DO i=1,sNx                  DO i=1-Olx,sNx+Olx
154                          arr(i,j,bi,bj)=VICE(i,j,1,bi,bj)                    arr(i,j,bi,bj)=VICE(i,j,1,bi,bj)
155                       ENDDO                  ENDDO
156                    ENDDO                ENDDO
                ENDDO  
157              ENDDO              ENDDO
158              ENDDO
159              IF (SEAICE_dump_mdsio) THEN
160              _BARRIER              _BARRIER
161              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
162              CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)
163              _END_MASTER( myThid )              _END_MASTER( myThid )
164              _BARRIER              _BARRIER
165              ENDIF
166    #ifdef ALLOW_MNC
167              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
168                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_VICE',arr,myThid)
169              ENDIF
170    #endif
171  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
172         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
173         CALL PLOT_FIELD_XYRS( arr   , 'Current vice  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current vice  ',
174         &         myIter, myThid )
175  #endif  #endif
176                          
177              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
178                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
179                    DO j=1,sNy                DO j=1-Oly,sNy+Oly
180                       DO i=1,sNx                  DO i=1-Olx,sNx+Olx
181                          arr(i,j,bi,bj)=HEFF(i,j,1,bi,bj)                    arr(i,j,bi,bj)=HEFF(i,j,1,bi,bj)
182                       ENDDO                  ENDDO
183                    ENDDO                ENDDO
                ENDDO  
184              ENDDO              ENDDO
185              ENDDO
186              IF (SEAICE_dump_mdsio) THEN
187              _BARRIER              _BARRIER
188              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
189              CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)
190              _END_MASTER( myThid )              _END_MASTER( myThid )
191              _BARRIER              _BARRIER
192              ENDIF
193    #ifdef ALLOW_MNC
194              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
195                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_HEFF',arr,myThid)
196              ENDIF
197    #endif
198  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
199         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
200         CALL PLOT_FIELD_XYRS( arr   , 'Current heff  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current heff  ',
201         &         myIter, myThid )
202  #endif  #endif
203                          
204              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
205                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
206                    DO j=1,sNy                DO j=1-Oly,sNy+Oly
207                       DO i=1,sNx                  DO i=1-Olx,sNx+Olx
208                          arr(i,j,bi,bj)=AREA(i,j,1,bi,bj)                    arr(i,j,bi,bj)=AREA(i,j,1,bi,bj)
209                       ENDDO                  ENDDO
210                    ENDDO                ENDDO
                ENDDO  
211              ENDDO              ENDDO
212              ENDDO
213              IF (SEAICE_dump_mdsio) THEN
214              _BARRIER              _BARRIER
215              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
216              CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)
217              _END_MASTER( myThid )              _END_MASTER( myThid )
218              _BARRIER              _BARRIER
219              ENDIF
220    #ifdef ALLOW_MNC
221              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
222                CALL MNC_CW_RS_W(pf,'sice',0,0,'si_AREA',arr,myThid)
223              ENDIF
224    #endif
225  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
226         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
227         CALL PLOT_FIELD_XYRS( arr   , 'Current area  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current area  ',
228         &         myIter, myThid )
229  #endif  #endif
230    
231           ENDIF           ENDIF
# Line 189  C--   Time-cumulations Line 269  C--   Time-cumulations
269        ENDDO        ENDDO
270    
271  C     Dump files and restart average computation if needed  C     Dump files and restart average computation if needed
272        IF ( myIter.NE.nIter0 .AND.        dumpFiles = .FALSE.
273       &     DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,myTime-deltaTClock)        IF ( myIter .NE. nIter0 ) THEN
274       &     ) THEN          dumpFiles =
275                 &     DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,deltaTClock)
276    #ifdef ALLOW_CAL
277            IF ( useCAL ) THEN
278              CALL CAL_TIME2DUMP( SEAICE_taveFreq, deltaTClock,
279         U                        dumpFiles,
280         I                        myTime, myIter, myThid )
281            ENDIF
282    #endif
283          ENDIF
284    
285          IF (dumpFiles) THEN
286  C      Normalize by integrated time  C      Normalize by integrated time
287         DO bj = myByLo(myThid), myByHi(myThid)         DO bj = myByLo(myThid), myByHi(myThid)
288          DO bi = myBxLo(myThid), myBxHi(myThid)          DO bi = myBxLo(myThid), myBxHi(myThid)
# Line 217  C      Normalize by integrated time Line 307  C      Normalize by integrated time
307          ENDDO          ENDDO
308         ENDDO         ENDDO
309    
310         WRITE(suff,'(I10.10)') myIter  #ifdef ALLOW_MNC
311         _BARRIER         IF (useMNC .AND. SEAICE_tave_mnc) THEN
312         _BEGIN_MASTER( myThid )           CALL MNC_CW_SET_UDIM('sice_tave', -1, myThid)
313         CALL WRITE_FLD_XY_RL('FUtave.'   ,suff,FUtave   ,myIter,myThid)           CALL MNC_CW_RL_W_S('D','sice_tave',0,0,'T', myTime, myThid)
314         CALL WRITE_FLD_XY_RL('FVtave.'   ,suff,FVtave   ,myIter,myThid)           CALL MNC_CW_SET_UDIM('sice_tave', 0, myThid)
315         CALL WRITE_FLD_XY_RL('EmPmRtave.',suff,EmPmRtave,myIter,myThid)           CALL MNC_CW_I_W_S('I','sice_tave',0,0,'iter', myIter, myThid)
316         CALL WRITE_FLD_XY_RL('QNETtave.' ,suff,QNETtave ,myIter,myThid)  C        CALL MNC_CW_RL_W_S('D','sice_tave',0,0,'model_time',
317         CALL WRITE_FLD_XY_RL('QSWtave.'  ,suff,QSWtave  ,myIter,myThid)  C    &        myTime,myThid)
318         CALL WRITE_FLD_XY_RL('UICEtave.' ,suff,UICEtave ,myIter,myThid)           CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
319         CALL WRITE_FLD_XY_RL('VICEtave.' ,suff,VICEtave ,myIter,myThid)       &        'si_UICEtave',UICEtave,myThid)
320         CALL WRITE_FLD_XY_RL('HEFFtave.' ,suff,HEFFtave ,myIter,myThid)           CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
321         CALL WRITE_FLD_XY_RL('AREAtave.' ,suff,AREAtave ,myIter,myThid)       &        'si_VICEtave',VICEtave,myThid)
322         _END_MASTER( myThid )           CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
323         _BARRIER       &        'si_FUtave',FUtave,myThid)
324             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
325         &        'si_FVtave',FVtave,myThid)
326             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
327         &        'si_EmPmRtave',EmPmRtave,myThid)
328             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
329         &        'si_QNETtave',QNETtave,myThid)
330             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
331         &        'si_QSWtave',QSWtave,myThid)
332             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
333         &        'si_HEFFtave',HEFFtave,myThid)
334             CALL MNC_CW_RL_W(pf,'sice_tave',0,0,
335         &        'si_AREAtave',AREAtave,myThid)
336           ENDIF
337    #endif
338           IF (SEAICE_tave_mdsio) THEN
339             WRITE(suff,'(I10.10)') myIter
340             _BARRIER
341             _BEGIN_MASTER( myThid )
342             CALL WRITE_FLD_XY_RL('FUtave.'   ,suff,FUtave   ,myIter,myThid)
343             CALL WRITE_FLD_XY_RL('FVtave.'   ,suff,FVtave   ,myIter,myThid)
344             CALL WRITE_FLD_XY_RL('EmPmRtave.',suff,EmPmRtave,myIter,myThid)
345             CALL WRITE_FLD_XY_RL('QNETtave.' ,suff,QNETtave ,myIter,myThid)
346             CALL WRITE_FLD_XY_RL('QSWtave.'  ,suff,QSWtave  ,myIter,myThid)
347             CALL WRITE_FLD_XY_RL('UICEtave.' ,suff,UICEtave ,myIter,myThid)
348             CALL WRITE_FLD_XY_RL('VICEtave.' ,suff,VICEtave ,myIter,myThid)
349             CALL WRITE_FLD_XY_RL('HEFFtave.' ,suff,HEFFtave ,myIter,myThid)
350             CALL WRITE_FLD_XY_RL('AREAtave.' ,suff,AREAtave ,myIter,myThid)
351             _END_MASTER( myThid )
352             _BARRIER
353           ENDIF
354                
355  C      Reset averages to zero  C      Reset averages to zero
356         DO bj = myByLo(myThid), myByHi(myThid)         DO bj = myByLo(myThid), myByHi(myThid)

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.20

  ViewVC Help
Powered by ViewVC 1.1.22