/[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.11 by jmc, Wed Apr 6 18:46:34 2005 UTC revision 1.16 by edhill, Thu Aug 11 02:50:12 2005 UTC
# Line 19  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"
 #ifdef ALLOW_MNC  
 #include "MNC_PARAMS.h"  
 #endif  
22    
23  C     == Routine arguments ==  C     == Routine arguments ==
24  C     myTime        - Current time of simulation ( s )  C     myTime        - Current time of simulation ( s )
# Line 33  C     myThid        - Number of this ins Line 30  C     myThid        - Number of this ins
30    
31  C     == Local variables ==  C     == Local variables ==
32        CHARACTER*(MAX_LEN_MBUF) suff        CHARACTER*(MAX_LEN_MBUF) suff
33        LOGICAL  DIFF_BASE_MULTIPLE        LOGICAL  DIFFERENT_MULTIPLE
34        EXTERNAL DIFF_BASE_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        INTEGER thisdate(4), prevdate(4)        INTEGER thisdate(4), prevdate(4)
# Line 42  C     == Local variables == Line 39  C     == Local variables ==
39                    
40        IF (SEAICEwriteState) THEN        IF (SEAICEwriteState) THEN
41    
42           IF ( DIFF_BASE_MULTIPLE(baseTime,SEAICE_dumpFreq,          IF ( DIFFERENT_MULTIPLE(SEAICE_dumpFreq,myTime,deltaTClock)
43       &        myTime,deltaTClock) ) THEN       &       ) THEN
44                            
45  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
46             IF (useMNC .AND. seaice_mnc) THEN            IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
47               CALL MNC_CW_SET_UDIM('sice', -1, myThid)              CALL MNC_CW_SET_UDIM('sice', -1, myThid)
48               CALL MNC_CW_I_W_S('I','sice',0,0,'T', myIter, myThid)              CALL MNC_CW_RL_W_S('D','sice',0,0,'T', myTime, myThid)
49               CALL MNC_CW_SET_UDIM('sice', 0, myThid)              CALL MNC_CW_SET_UDIM('sice', 0, myThid)
50               CALL MNC_CW_RL_W_S('D','sice',0,0,'model_time',              CALL MNC_CW_I_W_S('I','sice',0,0,'iter', myIter, myThid)
51       &            myTime,myThid)              CALL MNC_CW_RL_W_S('D','sice',0,0,'model_time',
52               CALL MNC_CW_RL_W('D','sice',0,0,'UWIND',uwind,myThid)       &           myTime,myThid)
53               CALL MNC_CW_RL_W('D','sice',0,0,'VWIND',vwind,myThid)              CALL MNC_CW_RS_W('D','sice',0,0,'si_UWIND',uwind,myThid)
54               CALL MNC_CW_RL_W('D','sice',0,0,'FU',fu,myThid)              CALL MNC_CW_RS_W('D','sice',0,0,'si_VWIND',vwind,myThid)
55               CALL MNC_CW_RL_W('D','sice',0,0,'FV',fv,myThid)              CALL MNC_CW_RS_W('D','sice',0,0,'fu',fu,myThid)
56               CALL MNC_CW_RL_W('D','sice',0,0,'EmPmR',EmPmR,myThid)              CALL MNC_CW_RS_W('D','sice',0,0,'fv',fv,myThid)
57               CALL MNC_CW_RL_W('D','sice',0,0,'Qnet',Qnet,myThid)              CALL MNC_CW_RS_W('D','sice',0,0,'EmPmR',EmPmR,myThid)
58               CALL MNC_CW_RL_W('D','sice',0,0,'Qsw',Qsw,myThid)              CALL MNC_CW_RS_W('D','sice',0,0,'Qnet',Qnet,myThid)
59             ENDIF              CALL MNC_CW_RS_W('D','sice',0,0,'Qsw',Qsw,myThid)
60  #endif            ENDIF
61             IF (seaice_mdsio) THEN  #endif
62               WRITE(suff,'(I10.10)') myIter            IF (SEAICE_dump_mdsio) THEN
63               _BARRIER              WRITE(suff,'(I10.10)') myIter
64               _BEGIN_MASTER( myThid )              _BARRIER
65               CALL WRITE_FLD_XY_RS( 'UWIND.',suff,uwind,myIter,myThid)              _BEGIN_MASTER( myThid )
66               CALL WRITE_FLD_XY_RS( 'VWIND.',suff,vwind,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'UWIND.',suff,uwind,myIter,myThid)
67               CALL WRITE_FLD_XY_RS( 'FU.',suff,fu,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'VWIND.',suff,vwind,myIter,myThid)
68               CALL WRITE_FLD_XY_RS( 'FV.',suff,fv,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'FU.',suff,fu,myIter,myThid)
69               CALL WRITE_FLD_XY_RS( 'EmPmR.',suff,EmPmR,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'FV.',suff,fv,myIter,myThid)
70               CALL WRITE_FLD_XY_RS( 'Qnet.',suff,Qnet,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'EmPmR.',suff,EmPmR,myIter,myThid)
71               CALL WRITE_FLD_XY_RS( 'Qsw.',suff,Qsw,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'Qnet.',suff,Qnet,myIter,myThid)
72               _END_MASTER( myThid )              CALL WRITE_FLD_XY_RS( 'Qsw.',suff,Qsw,myIter,myThid)
73               _BARRIER              _END_MASTER( myThid )
74             ENDIF              _BARRIER
75              ENDIF
76              
77  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
78         CALL PLOT_FIELD_XYRS( uwind , 'Current uwind ', myIter, myThid )         CALL PLOT_FIELD_XYRS( uwind , 'Current uwind ', myIter, myThid )
79         CALL PLOT_FIELD_XYRS( vwind , 'Current vwind ', myIter, myThid )         CALL PLOT_FIELD_XYRS( vwind , 'Current vwind ', myIter, myThid )
# Line 95  C     == Local variables == Line 93  C     == Local variables ==
93         CALL PLOT_FIELD_XYRL( Qsw   , 'Current Qsw   ', myIter, myThid )         CALL PLOT_FIELD_XYRL( Qsw   , 'Current Qsw   ', myIter, myThid )
94  #endif  #endif
95    
96              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
97                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
98                    DO j=1,sNy                DO j=1,sNy
99                       DO i=1,sNx                  DO i=1,sNx
100                          arr(i,j,bi,bj)=UICE(i,j,1,bi,bj)                    arr(i,j,bi,bj)=UICE(i,j,1,bi,bj)
101                       ENDDO                  ENDDO
102                    ENDDO                ENDDO
                ENDDO  
103              ENDDO              ENDDO
104              ENDDO
105    
106              IF (SEAICE_dump_mdsio) THEN
107              _BARRIER              _BARRIER
108              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
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              ENDIF
113    #ifdef ALLOW_MNC
114              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
115                CALL MNC_CW_RS_W('D','sice',0,0,'si_UICE',arr,myThid)
116              ENDIF
117    #endif
118  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
119         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
120         CALL PLOT_FIELD_XYRS( arr   , 'Current uice  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current uice  ',
121         &         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,sNy
127                       DO i=1,sNx                  DO i=1,sNx
128                          arr(i,j,bi,bj)=VICE(i,j,1,bi,bj)                    arr(i,j,bi,bj)=VICE(i,j,1,bi,bj)
129                       ENDDO                  ENDDO
130                    ENDDO                ENDDO
                ENDDO  
131              ENDDO              ENDDO
132              ENDDO
133              IF (SEAICE_dump_mdsio) THEN
134              _BARRIER              _BARRIER
135              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
136              CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)
137              _END_MASTER( myThid )              _END_MASTER( myThid )
138              _BARRIER              _BARRIER
139              ENDIF
140    #ifdef ALLOW_MNC
141              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
142                CALL MNC_CW_RS_W('D','sice',0,0,'si_VICE',arr,myThid)
143              ENDIF
144    #endif
145  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
146         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
147         CALL PLOT_FIELD_XYRS( arr   , 'Current vice  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current vice  ',
148         &         myIter, myThid )
149  #endif  #endif
150                          
151              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
152                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
153                    DO j=1,sNy                DO j=1,sNy
154                       DO i=1,sNx                  DO i=1,sNx
155                          arr(i,j,bi,bj)=HEFF(i,j,1,bi,bj)                    arr(i,j,bi,bj)=HEFF(i,j,1,bi,bj)
156                       ENDDO                  ENDDO
157                    ENDDO                ENDDO
                ENDDO  
158              ENDDO              ENDDO
159              ENDDO
160              IF (SEAICE_dump_mdsio) THEN
161              _BARRIER              _BARRIER
162              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
163              CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)
164              _END_MASTER( myThid )              _END_MASTER( myThid )
165              _BARRIER              _BARRIER
166              ENDIF
167    #ifdef ALLOW_MNC
168              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
169                CALL MNC_CW_RS_W('D','sice',0,0,'si_HEFF',arr,myThid)
170              ENDIF
171    #endif
172  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
173         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
174         CALL PLOT_FIELD_XYRS( arr   , 'Current heff  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current heff  ',
175         &         myIter, myThid )
176  #endif  #endif
177                          
178              DO bj=myByLo(myThid),myByHi(myThid)            DO bj=myByLo(myThid),myByHi(myThid)
179                 DO bi=myBxLo(myThid),myBxHi(myThid)              DO bi=myBxLo(myThid),myBxHi(myThid)
180                    DO j=1,sNy                DO j=1,sNy
181                       DO i=1,sNx                  DO i=1,sNx
182                          arr(i,j,bi,bj)=AREA(i,j,1,bi,bj)                    arr(i,j,bi,bj)=AREA(i,j,1,bi,bj)
183                       ENDDO                  ENDDO
184                    ENDDO                ENDDO
                ENDDO  
185              ENDDO              ENDDO
186              ENDDO
187              IF (SEAICE_dump_mdsio) THEN
188              _BARRIER              _BARRIER
189              _BEGIN_MASTER( myThid )              _BEGIN_MASTER( myThid )
190              CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)              CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)
191              _END_MASTER( myThid )              _END_MASTER( myThid )
192              _BARRIER              _BARRIER
193              ENDIF
194    #ifdef ALLOW_MNC
195              IF ( useMNC .AND. SEAICE_dump_mnc ) THEN
196                CALL MNC_CW_RS_W('D','sice',0,0,'si_AREA',arr,myThid)
197              ENDIF
198    #endif
199  #ifdef SEAICE_DEBUG  #ifdef SEAICE_DEBUG
200         _EXCH_XY_R4( arr, myThid )            _EXCH_XY_R4( arr, myThid )
201         CALL PLOT_FIELD_XYRS( arr   , 'Current area  ', myIter, myThid )            CALL PLOT_FIELD_XYRS( arr   , 'Current area  ',
202         &         myIter, myThid )
203  #endif  #endif
204    
205           ENDIF           ENDIF
# Line 214  C--   Time-cumulations Line 245  C--   Time-cumulations
245  C     Dump files and restart average computation if needed  C     Dump files and restart average computation if needed
246        dumpFiles = .FALSE.        dumpFiles = .FALSE.
247        IF ( myIter .NE. nIter0 ) THEN        IF ( myIter .NE. nIter0 ) THEN
248        IF ( DIFF_BASE_MULTIPLE(baseTime,SEAICE_taveFreq,        IF ( DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,deltaTClock) )
      &                        myTime,deltaTClock))  
249       &     dumpFiles = .TRUE.       &     dumpFiles = .TRUE.
250  #ifdef ALLOW_CAL  #ifdef ALLOW_CAL
251        IF ( calendarDumps .AND. (        IF ( calendarDumps .AND. (
# Line 264  C      Normalize by integrated time Line 294  C      Normalize by integrated time
294         ENDDO         ENDDO
295    
296  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
297         IF (useMNC .AND. seaice_mnc) THEN         IF (useMNC .AND. SEAICE_tave_mnc) THEN
298           CALL MNC_CW_SET_UDIM('sice_tave', -1, myThid)           CALL MNC_CW_SET_UDIM('sice_tave', -1, myThid)
299           CALL MNC_CW_I_W_S('I','sice_tave',0,0,'T', myIter, myThid)           CALL MNC_CW_RL_W_S('D','sice_tave',0,0,'T', myTime, myThid)
300           CALL MNC_CW_SET_UDIM('sice_tave', 0, myThid)           CALL MNC_CW_SET_UDIM('sice_tave', 0, myThid)
301             CALL MNC_CW_I_W_S('I','sice_tave',0,0,'iter', myIter, myThid)
302           CALL MNC_CW_RL_W_S('D','sice_tave',0,0,'model_time',           CALL MNC_CW_RL_W_S('D','sice_tave',0,0,'model_time',
303       &        myTime,myThid)       &        myTime,myThid)
304           CALL MNC_CW_RL_W('R','sice_tave',0,0,           CALL MNC_CW_RL_W('R','sice_tave',0,0,
305       &        'UICEtave',UICEtave,myThid)       &        'si_UICEtave',UICEtave,myThid)
306           CALL MNC_CW_RL_W('R','sice_tave',0,0,           CALL MNC_CW_RL_W('R','sice_tave',0,0,
307       &        'VICEtave',VICEtave,myThid)       &        'si_VICEtave',VICEtave,myThid)
308           CALL MNC_CW_RL_W('R','sice_tave',0,0,           CALL MNC_CW_RL_W('R','sice_tave',0,0,
309       &        'FUtave',FUtave,myThid)       &        'si_FUtave',FUtave,myThid)
310           CALL MNC_CW_RL_W('R','sice_tave',0,0,           CALL MNC_CW_RL_W('R','sice_tave',0,0,
311       &        'FVtave',FVtave,myThid)       &        'si_FVtave',FVtave,myThid)
312           CALL MNC_CW_RL_W('R','sice_tave',0,0,           CALL MNC_CW_RL_W('R','sice_tave',0,0,
313       &        'EmPmRtave',EmPmRtave,myThid)       &        'si_EmPmRtave',EmPmRtave,myThid)
314           CALL MNC_CW_RL_W('R','sice_tave',0,0,           CALL MNC_CW_RL_W('R','sice_tave',0,0,
315       &        'QNETtave',QNETtave,myThid)       &        'si_QNETtave',QNETtave,myThid)
316           CALL MNC_CW_RL_W('R','sice_tave',0,0,           CALL MNC_CW_RL_W('R','sice_tave',0,0,
317       &        'QSWtave',QSWtave,myThid)       &        'si_QSWtave',QSWtave,myThid)
318           CALL MNC_CW_RL_W('R','sice_tave',0,0,           CALL MNC_CW_RL_W('R','sice_tave',0,0,
319       &        'HEFFtave',HEFFtave,myThid)       &        'si_HEFFtave',HEFFtave,myThid)
320           CALL MNC_CW_RL_W('R','sice_tave',0,0,           CALL MNC_CW_RL_W('R','sice_tave',0,0,
321       &        'AREAtave',AREAtave,myThid)       &        'si_AREAtave',AREAtave,myThid)
322         ENDIF         ENDIF
323  #endif  #endif
324         IF (seaice_mdsio) THEN         IF (SEAICE_tave_mdsio) THEN
325           WRITE(suff,'(I10.10)') myIter           WRITE(suff,'(I10.10)') myIter
326           _BARRIER           _BARRIER
327           _BEGIN_MASTER( myThid )           _BEGIN_MASTER( myThid )

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.16

  ViewVC Help
Powered by ViewVC 1.1.22