/[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.2 by heimbach, Tue Nov 12 20:47:27 2002 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( 'FU.',suff,fu,myIter,myThid)
48                CALL WRITE_FLD_XY_RS( 'FV.',suff,fv,myIter,myThid)
49                CALL WRITE_FLD_XY_RS( 'EmPmR.',suff,EmPmR,myIter,myThid)
50                CALL WRITE_FLD_XY_RS( 'Qnet.',suff,Qnet,myIter,myThid)
51                CALL WRITE_FLD_XY_RS( 'Qsw.',suff,Qsw,myIter,myThid)
52                _END_MASTER( myThid )
53                _BARRIER
54    
55                DO bj=myByLo(myThid),myByHi(myThid)
56                   DO bi=myBxLo(myThid),myBxHi(myThid)
57                      DO j=1,sNy
58                         DO i=1,sNx
59                            arr(i,j,bi,bj)=UICE(i,j,1,bi,bj)
60                         ENDDO
61                      ENDDO
62                   ENDDO
63                ENDDO
64                _BARRIER
65                _BEGIN_MASTER( myThid )
66                CALL WRITE_FLD_XY_RS( 'UICE.',suff,arr,myIter,myThid)
67                _END_MASTER( myThid )
68                _BARRIER
69                
70                DO bj=myByLo(myThid),myByHi(myThid)
71                   DO bi=myBxLo(myThid),myBxHi(myThid)
72                      DO j=1,sNy
73                         DO i=1,sNx
74                            arr(i,j,bi,bj)=VICE(i,j,1,bi,bj)
75                         ENDDO
76                      ENDDO
77                   ENDDO
78                ENDDO
79                _BARRIER
80                _BEGIN_MASTER( myThid )
81                CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)
82                _END_MASTER( myThid )
83                _BARRIER
84                
85                DO bj=myByLo(myThid),myByHi(myThid)
86                   DO bi=myBxLo(myThid),myBxHi(myThid)
87                      DO j=1,sNy
88                         DO i=1,sNx
89                            arr(i,j,bi,bj)=HEFF(i,j,1,bi,bj)
90                         ENDDO
91                      ENDDO
92                   ENDDO
93                ENDDO
94                _BARRIER
95                _BEGIN_MASTER( myThid )
96                CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)
97                _END_MASTER( myThid )
98                _BARRIER
99                
100                DO bj=myByLo(myThid),myByHi(myThid)
101                   DO bi=myBxLo(myThid),myBxHi(myThid)
102                      DO j=1,sNy
103                         DO i=1,sNx
104                            arr(i,j,bi,bj)=AREA(i,j,1,bi,bj)
105                         ENDDO
106                      ENDDO
107                   ENDDO
108                ENDDO
109                _BARRIER
110                _BEGIN_MASTER( myThid )
111                CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)
112                _END_MASTER( myThid )
113                _BARRIER
114    
115    #ifdef SEAICE_DEBUG
116    c       CALL PLOT_FIELD_XYRS( gairx,'Current gairx ', myIter, myThid )
117    c       CALL PLOT_FIELD_XYRS( gairy,'Current gairy ', myIter, myThid )
118    c       CALL PLOT_FIELD_XYRS( tair ,'Current tair ' , myIter, myThid )
119    c       CALL PLOT_FIELD_XYRS( qa   ,'Current qa '   , myIter, myThid )
120    c       CALL PLOT_FIELD_XYRS( flo  ,'Current flo '  , myIter, myThid )
121    c       CALL PLOT_FIELD_XYRS( fsh  ,'Current fsh '  , myIter, myThid )
122           CALL PLOT_FIELD_XYRL( fu   ,'Current fu '   , myIter, myThid )
123           CALL PLOT_FIELD_XYRL( fv   ,'Current fv '   , myIter, myThid )
124           CALL PLOT_FIELD_XYRL( Qnet ,'Current Qnet ' , myIter, myThid )
125    #endif SEAICE_DEBUG
126    
127             ENDIF
128          ENDIF
129    
130    C----------------------------------------------------------------
131    C     Do SEAICE time averaging.
132    C----------------------------------------------------------------
133    
134    #ifdef ALLOW_TIMEAVE
135    
136    C--   Time-cumulations
137          DO bj = myByLo(myThid), myByHi(myThid)
138           DO bi = myBxLo(myThid), myBxHi(myThid)
139            DO j=1,sNy
140             DO i=1,sNx
141              FUtave(i,j,1,bi,bj)   =
142         &         FUtave(i,j,1,bi,bj)   +FU(i,j,bi,bj)    *deltaTclock
143              FVtave(i,j,1,bi,bj)   =
144         &         FVtave(i,j,1,bi,bj)   +FV(i,j,bi,bj)    *deltaTclock
145              EmPmRtave(i,j,1,bi,bj)=
146         &         EmPmRtave(i,j,1,bi,bj)+EmPmR(i,j,bi,bj) *deltaTclock
147              QNETtave(i,j,1,bi,bj) =
148         &         QNETtave(i,j,1,bi,bj) +QNET(i,j,bi,bj)  *deltaTclock
149              QSWtave(i,j,1,bi,bj)  =
150         &         QSWtave(i,j,1,bi,bj)  +QSW(i,j,bi,bj)   *deltaTclock
151              UICEtave(i,j,1,bi,bj) =
152         &         UICEtave(i,j,1,bi,bj) +UICE(i,j,1,bi,bj)*deltaTclock
153              VICEtave(i,j,1,bi,bj) =
154         &         VICEtave(i,j,1,bi,bj) +VICE(i,j,1,bi,bj)*deltaTclock
155              HEFFtave(i,j,1,bi,bj) =
156         &         HEFFtave(i,j,1,bi,bj) +HEFF(i,j,1,bi,bj)*deltaTclock
157              AREAtave(i,j,1,bi,bj) =
158         &         AREAtave(i,j,1,bi,bj) +AREA(i,j,1,bi,bj)*deltaTclock
159             ENDDO
160            ENDDO
161            DO k=1,Nr
162             SEAICE_TimeAve(k,bi,bj)=SEAICE_TimeAve(k,bi,bj)+deltaTclock
163            ENDDO
164           ENDDO
165          ENDDO
166    
167    C     Dump files and restart average computation if needed
168          IF ( myIter.NE.nIter0 .AND.
169         &     DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,myTime-deltaTClock)
170         &     ) THEN
171            
172    C      Normalize by integrated time
173           DO bj = myByLo(myThid), myByHi(myThid)
174            DO bi = myBxLo(myThid), myBxHi(myThid)
175             CALL TIMEAVE_NORMALIZ(FUtave   ,SEAICE_timeave, 1,
176         &                 bi,bj,myThid)
177             CALL TIMEAVE_NORMALIZ(FVtave   ,SEAICE_timeave, 1,
178         &                 bi,bj,myThid)
179             CALL TIMEAVE_NORMALIZ(EmPmRtave,SEAICE_timeave, 1,
180         &                 bi,bj,myThid)
181             CALL TIMEAVE_NORMALIZ(QNETtave ,SEAICE_timeave, 1,
182         &                 bi,bj,myThid)
183             CALL TIMEAVE_NORMALIZ(QSWtave  ,SEAICE_timeave, 1,
184         &                 bi,bj,myThid)
185             CALL TIMEAVE_NORMALIZ(UICEtave ,SEAICE_timeave, 1,
186         &                 bi,bj,myThid)
187             CALL TIMEAVE_NORMALIZ(VICEtave ,SEAICE_timeave, 1,
188         &                 bi,bj,myThid)
189             CALL TIMEAVE_NORMALIZ(HEFFtave ,SEAICE_timeave, 1,
190         &                 bi,bj,myThid)
191             CALL TIMEAVE_NORMALIZ(AREAtave ,SEAICE_timeave, 1,
192         &                 bi,bj,myThid)
193            ENDDO
194           ENDDO
195    
196           WRITE(suff,'(I10.10)') myIter
197          
198           CALL WRITE_FLD_XY_RL('FUtave.'   ,suff,FUtave   ,myIter,myThid)
199           CALL WRITE_FLD_XY_RL('FVtave.'   ,suff,FVtave   ,myIter,myThid)
200           CALL WRITE_FLD_XY_RL('EmPmRtave.',suff,EmPmRtave,myIter,myThid)
201           CALL WRITE_FLD_XY_RL('QNETtave.' ,suff,QNETtave ,myIter,myThid)
202           CALL WRITE_FLD_XY_RL('QSWtave.'  ,suff,QSWtave  ,myIter,myThid)
203           CALL WRITE_FLD_XY_RL('UICEtave.' ,suff,UICEtave ,myIter,myThid)
204           CALL WRITE_FLD_XY_RL('VICEtave.' ,suff,VICEtave ,myIter,myThid)
205           CALL WRITE_FLD_XY_RL('HEFFtave.' ,suff,HEFFtave ,myIter,myThid)
206           CALL WRITE_FLD_XY_RL('AREAtave.' ,suff,AREAtave ,myIter,myThid)
207          
208    C      Reset averages to zero
209           DO bj = myByLo(myThid), myByHi(myThid)
210            DO bi = myBxLo(myThid), myBxHi(myThid)
211             CALL TIMEAVE_RESET(FUtave   ,1,bi,bj,myThid)
212             CALL TIMEAVE_RESET(FVtave   ,1,bi,bj,myThid)
213             CALL TIMEAVE_RESET(EmPmRtave,1,bi,bj,myThid)
214             CALL TIMEAVE_RESET(QNETtave ,1,bi,bj,myThid)
215             CALL TIMEAVE_RESET(QSWtave  ,1,bi,bj,myThid)
216             CALL TIMEAVE_RESET(UICEtave ,1,bi,bj,myThid)
217             CALL TIMEAVE_RESET(VICEtave ,1,bi,bj,myThid)
218             CALL TIMEAVE_RESET(HEFFtave ,1,bi,bj,myThid)
219             CALL TIMEAVE_RESET(AREAtave ,1,bi,bj,myThid)
220             DO k=1,Nr
221              SEAICE_TimeAve(k,bi,bj)=0.
222             ENDDO
223            ENDDO
224           ENDDO
225          
226          ENDIF
227          
228    #endif /* ALLOW_TIMEAVE */
229    
230    #endif ALLOW_SEAICE
231          
232          RETURN
233          END

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

  ViewVC Help
Powered by ViewVC 1.1.22