/[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.1 by heimbach, Mon Nov 11 22:01:21 2002 UTC revision 1.1.2.8 by dimitri, Thu May 22 20:49:14 2003 UTC
# Line 0  Line 1 
1    C
2    
3    #include "SEAICE_OPTIONS.h"
4    
5          SUBROUTINE SEAICE_DO_DIAGS( myTime, myIter, myThid )
6    C     /==========================================================\
7    C     | SUBROUTINE SEAICE_DO_DIAGS                               |
8    C     | o Do SEAICE diagnostic output.                           |
9    C     \==========================================================/
10          IMPLICIT NONE
11    
12    C     === Global variables ===
13    #include "SIZE.h"
14    #include "EEPARAMS.h"
15    #include "PARAMS.h"
16    #include "FFIELDS.h"
17    #include "SEAICE_DIAGS.h"
18    #include "SEAICE_PARAMS.h"
19    #include "SEAICE_FFIELDS.h"
20    #include "SEAICE.h"
21    
22    C     == Routine arguments ==
23    C     myTime        - Current time of simulation ( s )
24    C     myIter        - Iteration number
25    C     myThid        - Number of this instance of SEAICE_DO_DIAGS
26          _RL     myTime
27          INTEGER myIter
28          INTEGER myThid
29    
30    #ifdef ALLOW_SEAICE
31    
32    C     == Local variables ==
33          CHARACTER*(MAX_LEN_MBUF) suff
34          LOGICAL  DIFFERENT_MULTIPLE
35          EXTERNAL DIFFERENT_MULTIPLE
36          INTEGER i, j, k, bi, bj
37          _RS arr(1-oLx:sNx+oLx,1-oLy:sNy+oLy,nSx,nSy)
38            
39          IF (SEAICEwriteState) THEN
40    
41             IF ( DIFFERENT_MULTIPLE(SEAICE_dumpFreq,myTime,
42         &        myTime-deltaTClock) ) THEN
43                
44                WRITE(suff,'(I10.10)') myIter
45                _BARRIER
46                _BEGIN_MASTER( myThid )
47                CALL WRITE_FLD_XY_RS( 'UWIND.',suff,uwind,myIter,myThid)
48                CALL WRITE_FLD_XY_RS( 'VWIND.',suff,vwind,myIter,myThid)
49                CALL WRITE_FLD_XY_RS( 'FU.',suff,fu,myIter,myThid)
50                CALL WRITE_FLD_XY_RS( 'FV.',suff,fv,myIter,myThid)
51                CALL WRITE_FLD_XY_RS( 'EmPmR.',suff,EmPmR,myIter,myThid)
52                CALL WRITE_FLD_XY_RS( 'Qnet.',suff,Qnet,myIter,myThid)
53                CALL WRITE_FLD_XY_RS( 'Qsw.',suff,Qsw,myIter,myThid)
54                _END_MASTER( myThid )
55                _BARRIER
56    
57    #ifdef SEAICE_DEBUG
58           CALL PLOT_FIELD_XYRS( uwind , 'Current uwind ', myIter, myThid )
59           CALL PLOT_FIELD_XYRS( vwind , 'Current vwind ', myIter, myThid )
60           CALL PLOT_FIELD_XYRS( atemp , 'Current atemp ', myIter, myThid )
61           CALL PLOT_FIELD_XYRS( aqh   , 'Current aqh   ', myIter, myThid )
62           CALL PLOT_FIELD_XYRS( lwdown, 'Current lwdown', myIter, myThid )
63           CALL PLOT_FIELD_XYRS( swdown, 'Current swdown', myIter, myThid )
64           CALL PLOT_FIELD_XYRS( precip, 'Current precip', myIter, myThid )
65           CALL PLOT_FIELD_XYRL( evap  , 'Current evap  ', myIter, myThid )
66           CALL PLOT_FIELD_XYRS( runoff, 'Current runoff', myIter, myThid )
67           CALL PLOT_FIELD_XYRS( SSS   , 'Current SSS   ', myIter, myThid )
68           CALL PLOT_FIELD_XYRS( SST   , 'Current SST   ', myIter, myThid )
69           CALL PLOT_FIELD_XYRL( fu    , 'Current fu    ', myIter, myThid )
70           CALL PLOT_FIELD_XYRL( fv    , 'Current fv    ', myIter, myThid )
71           CALL PLOT_FIELD_XYRL( EmPmR , 'Current EmPmR ', myIter, myThid )
72           CALL PLOT_FIELD_XYRL( Qnet  , 'Current Qnet  ', myIter, myThid )
73           CALL PLOT_FIELD_XYRL( Qsw   , 'Current Qsw   ', myIter, myThid )
74    #endif
75    
76                DO bj=myByLo(myThid),myByHi(myThid)
77                   DO bi=myBxLo(myThid),myBxHi(myThid)
78                      DO j=1,sNy
79                         DO i=1,sNx
80                            arr(i,j,bi,bj)=UICE(i,j,1,bi,bj)
81                         ENDDO
82                      ENDDO
83                   ENDDO
84                ENDDO
85                _BARRIER
86                _BEGIN_MASTER( myThid )
87                CALL WRITE_FLD_XY_RS( 'UICE.',suff,arr,myIter,myThid)
88                _END_MASTER( myThid )
89                _BARRIER
90    #ifdef SEAICE_DEBUG
91           _EXCH_XY_R4( arr, myThid )
92           CALL PLOT_FIELD_XYRS( arr   , 'Current uice  ', myIter, myThid )
93    #endif
94    
95                DO bj=myByLo(myThid),myByHi(myThid)
96                   DO bi=myBxLo(myThid),myBxHi(myThid)
97                      DO j=1,sNy
98                         DO i=1,sNx
99                            arr(i,j,bi,bj)=VICE(i,j,1,bi,bj)
100                         ENDDO
101                      ENDDO
102                   ENDDO
103                ENDDO
104                _BARRIER
105                _BEGIN_MASTER( myThid )
106                CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)
107                _END_MASTER( myThid )
108                _BARRIER
109    #ifdef SEAICE_DEBUG
110           _EXCH_XY_R4( arr, myThid )
111           CALL PLOT_FIELD_XYRS( arr   , 'Current vice  ', myIter, myThid )
112    #endif
113                
114                DO bj=myByLo(myThid),myByHi(myThid)
115                   DO bi=myBxLo(myThid),myBxHi(myThid)
116                      DO j=1,sNy
117                         DO i=1,sNx
118                            arr(i,j,bi,bj)=HEFF(i,j,1,bi,bj)
119                         ENDDO
120                      ENDDO
121                   ENDDO
122                ENDDO
123                _BARRIER
124                _BEGIN_MASTER( myThid )
125                CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)
126                _END_MASTER( myThid )
127                _BARRIER
128    #ifdef SEAICE_DEBUG
129           _EXCH_XY_R4( arr, myThid )
130           CALL PLOT_FIELD_XYRS( arr   , 'Current heff  ', myIter, myThid )
131    #endif
132                
133                DO bj=myByLo(myThid),myByHi(myThid)
134                   DO bi=myBxLo(myThid),myBxHi(myThid)
135                      DO j=1,sNy
136                         DO i=1,sNx
137                            arr(i,j,bi,bj)=AREA(i,j,1,bi,bj)
138                         ENDDO
139                      ENDDO
140                   ENDDO
141                ENDDO
142                _BARRIER
143                _BEGIN_MASTER( myThid )
144                CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)
145                _END_MASTER( myThid )
146                _BARRIER
147    #ifdef SEAICE_DEBUG
148           _EXCH_XY_R4( arr, myThid )
149           CALL PLOT_FIELD_XYRS( arr   , 'Current area  ', myIter, myThid )
150    #endif
151    
152             ENDIF
153          ENDIF
154    
155    C----------------------------------------------------------------
156    C     Do SEAICE time averaging.
157    C----------------------------------------------------------------
158    
159    #ifdef ALLOW_TIMEAVE
160    
161    C--   Time-cumulations
162          DO bj = myByLo(myThid), myByHi(myThid)
163           DO bi = myBxLo(myThid), myBxHi(myThid)
164            DO j=1,sNy
165             DO i=1,sNx
166              FUtave(i,j,1,bi,bj)   =
167         &         FUtave(i,j,1,bi,bj)   +FU(i,j,bi,bj)    *deltaTclock
168              FVtave(i,j,1,bi,bj)   =
169         &         FVtave(i,j,1,bi,bj)   +FV(i,j,bi,bj)    *deltaTclock
170              EmPmRtave(i,j,1,bi,bj)=
171         &         EmPmRtave(i,j,1,bi,bj)+EmPmR(i,j,bi,bj) *deltaTclock
172              QNETtave(i,j,1,bi,bj) =
173         &         QNETtave(i,j,1,bi,bj) +QNET(i,j,bi,bj)  *deltaTclock
174              QSWtave(i,j,1,bi,bj)  =
175         &         QSWtave(i,j,1,bi,bj)  +QSW(i,j,bi,bj)   *deltaTclock
176              UICEtave(i,j,1,bi,bj) =
177         &         UICEtave(i,j,1,bi,bj) +UICE(i,j,1,bi,bj)*deltaTclock
178              VICEtave(i,j,1,bi,bj) =
179         &         VICEtave(i,j,1,bi,bj) +VICE(i,j,1,bi,bj)*deltaTclock
180              HEFFtave(i,j,1,bi,bj) =
181         &         HEFFtave(i,j,1,bi,bj) +HEFF(i,j,1,bi,bj)*deltaTclock
182              AREAtave(i,j,1,bi,bj) =
183         &         AREAtave(i,j,1,bi,bj) +AREA(i,j,1,bi,bj)*deltaTclock
184             ENDDO
185            ENDDO
186            DO k=1,Nr
187             SEAICE_TimeAve(k,bi,bj)=SEAICE_TimeAve(k,bi,bj)+deltaTclock
188            ENDDO
189           ENDDO
190          ENDDO
191    
192    C     Dump files and restart average computation if needed
193          IF ( myIter.NE.nIter0 .AND.
194         &     DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,myTime-deltaTClock)
195         &     ) THEN
196            
197    C      Normalize by integrated time
198           DO bj = myByLo(myThid), myByHi(myThid)
199            DO bi = myBxLo(myThid), myBxHi(myThid)
200             CALL TIMEAVE_NORMALIZ(FUtave   ,SEAICE_timeave, 1,
201         &                 bi,bj,myThid)
202             CALL TIMEAVE_NORMALIZ(FVtave   ,SEAICE_timeave, 1,
203         &                 bi,bj,myThid)
204             CALL TIMEAVE_NORMALIZ(EmPmRtave,SEAICE_timeave, 1,
205         &                 bi,bj,myThid)
206             CALL TIMEAVE_NORMALIZ(QNETtave ,SEAICE_timeave, 1,
207         &                 bi,bj,myThid)
208             CALL TIMEAVE_NORMALIZ(QSWtave  ,SEAICE_timeave, 1,
209         &                 bi,bj,myThid)
210             CALL TIMEAVE_NORMALIZ(UICEtave ,SEAICE_timeave, 1,
211         &                 bi,bj,myThid)
212             CALL TIMEAVE_NORMALIZ(VICEtave ,SEAICE_timeave, 1,
213         &                 bi,bj,myThid)
214             CALL TIMEAVE_NORMALIZ(HEFFtave ,SEAICE_timeave, 1,
215         &                 bi,bj,myThid)
216             CALL TIMEAVE_NORMALIZ(AREAtave ,SEAICE_timeave, 1,
217         &                 bi,bj,myThid)
218            ENDDO
219           ENDDO
220    
221           WRITE(suff,'(I10.10)') myIter
222           _BARRIER
223           _BEGIN_MASTER( myThid )
224           CALL WRITE_FLD_XY_RL('FUtave.'   ,suff,FUtave   ,myIter,myThid)
225           CALL WRITE_FLD_XY_RL('FVtave.'   ,suff,FVtave   ,myIter,myThid)
226           CALL WRITE_FLD_XY_RL('EmPmRtave.',suff,EmPmRtave,myIter,myThid)
227           CALL WRITE_FLD_XY_RL('QNETtave.' ,suff,QNETtave ,myIter,myThid)
228           CALL WRITE_FLD_XY_RL('QSWtave.'  ,suff,QSWtave  ,myIter,myThid)
229           CALL WRITE_FLD_XY_RL('UICEtave.' ,suff,UICEtave ,myIter,myThid)
230           CALL WRITE_FLD_XY_RL('VICEtave.' ,suff,VICEtave ,myIter,myThid)
231           CALL WRITE_FLD_XY_RL('HEFFtave.' ,suff,HEFFtave ,myIter,myThid)
232           CALL WRITE_FLD_XY_RL('AREAtave.' ,suff,AREAtave ,myIter,myThid)
233           _END_MASTER( myThid )
234           _BARRIER
235          
236    C      Reset averages to zero
237           DO bj = myByLo(myThid), myByHi(myThid)
238            DO bi = myBxLo(myThid), myBxHi(myThid)
239             CALL TIMEAVE_RESET(FUtave   ,1,bi,bj,myThid)
240             CALL TIMEAVE_RESET(FVtave   ,1,bi,bj,myThid)
241             CALL TIMEAVE_RESET(EmPmRtave,1,bi,bj,myThid)
242             CALL TIMEAVE_RESET(QNETtave ,1,bi,bj,myThid)
243             CALL TIMEAVE_RESET(QSWtave  ,1,bi,bj,myThid)
244             CALL TIMEAVE_RESET(UICEtave ,1,bi,bj,myThid)
245             CALL TIMEAVE_RESET(VICEtave ,1,bi,bj,myThid)
246             CALL TIMEAVE_RESET(HEFFtave ,1,bi,bj,myThid)
247             CALL TIMEAVE_RESET(AREAtave ,1,bi,bj,myThid)
248             DO k=1,Nr
249              SEAICE_TimeAve(k,bi,bj)=ZERO
250             ENDDO
251            ENDDO
252           ENDDO
253          
254          ENDIF
255          
256    #endif /* ALLOW_TIMEAVE */
257    
258    #endif /* ALLOW_SEAICE */
259          
260          RETURN
261          END

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.1.2.8

  ViewVC Help
Powered by ViewVC 1.1.22