/[MITgcm]/MITgcm/pkg/kpp/kpp_output.F
ViewVC logotype

Diff of /MITgcm/pkg/kpp/kpp_output.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.1 by jmc, Wed Jun 17 14:31:14 2009 UTC revision 1.3 by jmc, Tue Mar 16 00:14:47 2010 UTC
# Line 2  C $Header$ Line 2  C $Header$
2  C $Name$  C $Name$
3    
4  #include "KPP_OPTIONS.h"  #include "KPP_OPTIONS.h"
   
5  #undef  MULTIPLE_RECORD_KPP_STATE_FILES  #undef  MULTIPLE_RECORD_KPP_STATE_FILES
6  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  
7  CBOP  CBOP
8  C     !ROUTINE: KPP_OUTPUT  C     !ROUTINE: KPP_OUTPUT
9    
# Line 62  C     myThid :: my Thread Id number Line 61  C     myThid :: my Thread Id number
61    
62  #ifdef ALLOW_KPP  #ifdef ALLOW_KPP
63    
64  C     !LOCAL VARIABLES:  C     !FUNCTIONS:
       CHARACTER*(MAX_LEN_MBUF) suff  
65        LOGICAL  DIFFERENT_MULTIPLE        LOGICAL  DIFFERENT_MULTIPLE
66        EXTERNAL DIFFERENT_MULTIPLE        EXTERNAL DIFFERENT_MULTIPLE
67        INTEGER bi, bj, K  
68    C     !LOCAL VARIABLES:
69          CHARACTER*(MAX_LEN_MBUF) suff
70    #ifdef ALLOW_TIMEAVE
71          INTEGER bi, bj
72        _RL DDTT        _RL DDTT
73        LOGICAL dumpFiles        LOGICAL dumpFiles
74    #endif
75    #ifdef ALLOW_MNC
76        CHARACTER*(1) pf        CHARACTER*(1) pf
77    #endif
78  CEOP  CEOP
79    
80        IF ( writeBinaryPrec .EQ. precFloat64 ) THEN  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
81          pf(1:1) = 'D'  
82        ELSE  C     Initialize record numbers in KPP_TAVE
83          pf(1:1) = 'R'        IF ( myIter.EQ.nIter0 ) THEN
84            _BEGIN_MASTER( myThid )
85            kpp_drctrec = 1
86    #ifdef ALLOW_TIMEAVE
87            kpp_drctrecTave = 1
88    #endif
89            _END_MASTER( myThid )
90            _BARRIER
91        ENDIF        ENDIF
92    
93  C----------------------------------------------------------------  C----------------------------------------------------------------
# Line 126  C         NOTE: file size and number pro Line 138  C         NOTE: file size and number pro
138    
139  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
140          IF (KPPwriteState .AND. useMNC .AND. snapshot_mnc) THEN          IF (KPPwriteState .AND. useMNC .AND. snapshot_mnc) THEN
141              IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
142                pf(1:1) = 'D'
143              ELSE
144                pf(1:1) = 'R'
145              ENDIF
146            CALL MNC_CW_SET_UDIM('kpp_state', -1, myThid)            CALL MNC_CW_SET_UDIM('kpp_state', -1, myThid)
147            CALL MNC_CW_RL_W_S('D','kpp_state',0,0,'T',myTime,myThid)            CALL MNC_CW_RL_W_S('D','kpp_state',0,0,'T',myTime,myThid)
148            CALL MNC_CW_SET_UDIM('kpp_state', 0, myThid)            CALL MNC_CW_SET_UDIM('kpp_state', 0, myThid)
# Line 149  C--------------------------------------- Line 166  C---------------------------------------
166  C     Do KPP time averaging.  C     Do KPP time averaging.
167    
168  #ifdef ALLOW_TIMEAVE  #ifdef ALLOW_TIMEAVE
169          IF ( KPP_taveFreq .GT. 0. _d 0 ) THEN
170    
171  C     Initialize averages to zero  C     Initialize averages to zero
172        IF ( myIter.EQ.nIter0 ) THEN         IF ( myIter.EQ.nIter0 ) THEN
173    
174          DO bj = myByLo(myThid), myByHi(myThid)          DO bj = myByLo(myThid), myByHi(myThid)
175            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
# Line 160  C     Initialize averages to zero Line 178  C     Initialize averages to zero
178              CALL TIMEAVE_RESET(KPPghattave,   Nr,bi,bj,myThid)              CALL TIMEAVE_RESET(KPPghattave,   Nr,bi,bj,myThid)
179              CALL TIMEAVE_RESET(KPPdiffKzStave,Nr,bi,bj,myThid)              CALL TIMEAVE_RESET(KPPdiffKzStave,Nr,bi,bj,myThid)
180              CALL TIMEAVE_RESET(KPPhbltave,    1, bi,bj,myThid)              CALL TIMEAVE_RESET(KPPhbltave,    1, bi,bj,myThid)
181              DO k=1,Nr              KPP_timeAve(bi,bj) = 0.
               kpp_TimeAve(k,bi,bj)=0.  
             ENDDO  
182            ENDDO            ENDDO
183          ENDDO          ENDDO
184    
185        ELSE         ELSE
186    
187  C     Time Average KPP fields  C     Time Average KPP fields
188         DDTT=deltaTclock          DDTT=deltaTclock
189         DO bj = myByLo(myThid), myByHi(myThid)          DO bj = myByLo(myThid), myByHi(myThid)
190          DO bi = myBxLo(myThid), myBxHi(myThid)           DO bi = myBxLo(myThid), myBxHi(myThid)
191            CALL TIMEAVE_CUMULATE(            CALL TIMEAVE_CUMULATE(
192       &         KPPviscAztave, KPPviscAz, Nr,DDTT,bi,bj,myThid)       &         KPPviscAztave, KPPviscAz, Nr,DDTT,bi,bj,myThid)
193            CALL TIMEAVE_CUMULATE(            CALL TIMEAVE_CUMULATE(
# Line 183  C     Time Average KPP fields Line 199  C     Time Average KPP fields
199            CALL TIMEAVE_CUMULATE(            CALL TIMEAVE_CUMULATE(
200       &         KPPhbltave,    KPPhbl,    1, DDTT,bi,bj,myThid)       &         KPPhbltave,    KPPhbl,    1, DDTT,bi,bj,myThid)
201  C         Keep record of how much time has been integrated over  C         Keep record of how much time has been integrated over
202            DO k=1,Nr            KPP_timeAve(bi,bj) = KPP_timeAve(bi,bj)+DDTT
203              kpp_TimeAve(k,bi,bj)=kpp_TimeAve(k,bi,bj)+DDTT           ENDDO
           ENDDO  
204          ENDDO          ENDDO
        ENDDO  
205    
206        ENDIF         ENDIF
207    
208  C     Dump files and restart average computation if needed  C     Dump files and restart average computation if needed
209        dumpFiles = .FALSE.         dumpFiles = .FALSE.
210        IF ( myIter .NE. nIter0 ) THEN         IF ( myIter .NE. nIter0 ) THEN
211          dumpFiles =          dumpFiles =
212       &     DIFFERENT_MULTIPLE(KPP_taveFreq,myTime,deltaTClock)       &     DIFFERENT_MULTIPLE(KPP_taveFreq,myTime,deltaTClock)
213  #ifdef ALLOW_CAL  #ifdef ALLOW_CAL
# Line 203  C     Dump files and restart average com Line 217  C     Dump files and restart average com
217       I                        myTime, myIter, myThid )       I                        myTime, myIter, myThid )
218          ENDIF          ENDIF
219  #endif  #endif
220        ENDIF         ENDIF
221    
222        IF (dumpFiles) THEN         IF (dumpFiles) THEN
223  C       Normalize by integrated time  C       Normalize by integrated time
224          DO bj = myByLo(myThid), myByHi(myThid)          DO bj = myByLo(myThid), myByHi(myThid)
225            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
226              CALL TIMEAVE_NORMALIZ(KPPviscAztave,kpp_timeave,              CALL TIMEAVE_NORMALIZE( KPPviscAztave,
227       &           Nr, bi,bj,myThid)       &                              KPP_timeAve, Nr, bi, bj, myThid )
228              CALL TIMEAVE_NORMALIZ(KPPdiffKzTtave,kpp_timeave,              CALL TIMEAVE_NORMALIZE( KPPdiffKzTtave,
229       &           Nr, bi,bj,myThid)       &                              KPP_timeAve, Nr, bi, bj, myThid )
230              CALL TIMEAVE_NORMALIZ(KPPghattave,kpp_timeave,              CALL TIMEAVE_NORMALIZE( KPPghattave,
231       &           Nr, bi,bj,myThid)       &                              KPP_timeAve, Nr, bi, bj, myThid )
232              CALL TIMEAVE_NORMALIZ(KPPdiffKzStave,kpp_timeave,              CALL TIMEAVE_NORMALIZE( KPPdiffKzStave,
233       &           Nr, bi,bj,myThid)       &                              KPP_timeAve, Nr, bi, bj, myThid )
234              CALL TIMEAVE_NORMALIZ(KPPhbltave,kpp_timeave,              CALL TIMEAVE_NORMALIZE( KPPhbltave,
235       &           1,  bi,bj,myThid)       &                              KPP_timeAve, 1 , bi, bj, myThid )
236            ENDDO            ENDDO
237          ENDDO          ENDDO
238    
# Line 263  C         NOTE: file size and number pro Line 277  C         NOTE: file size and number pro
277    
278  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
279          IF (KPPwriteState .AND. useMNC .AND. timeave_mnc) THEN          IF (KPPwriteState .AND. useMNC .AND. timeave_mnc) THEN
280              IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
281                pf(1:1) = 'D'
282              ELSE
283                pf(1:1) = 'R'
284              ENDIF
285            CALL MNC_CW_SET_UDIM('kpp_timeave', -1, myThid)            CALL MNC_CW_SET_UDIM('kpp_timeave', -1, myThid)
286            CALL MNC_CW_RL_W_S('D','kpp_timeave',0,0,'T',myTime,myThid)            CALL MNC_CW_RL_W_S('D','kpp_timeave',0,0,'T',myTime,myThid)
287            CALL MNC_CW_SET_UDIM('kpp_timeave', 0, myThid)            CALL MNC_CW_SET_UDIM('kpp_timeave', 0, myThid)
# Line 288  C       Reset averages to zero Line 307  C       Reset averages to zero
307              CALL TIMEAVE_RESET(KPPghattave,   Nr,bi,bj,myThid)              CALL TIMEAVE_RESET(KPPghattave,   Nr,bi,bj,myThid)
308              CALL TIMEAVE_RESET(KPPdiffKzStave,Nr,bi,bj,myThid)              CALL TIMEAVE_RESET(KPPdiffKzStave,Nr,bi,bj,myThid)
309              CALL TIMEAVE_RESET(KPPhbltave,    1, bi,bj,myThid)              CALL TIMEAVE_RESET(KPPhbltave,    1, bi,bj,myThid)
310              DO k=1,Nr              KPP_timeAve(bi,bj) = 0.
               kpp_TimeAve(k,bi,bj)=0.  
             ENDDO  
311            ENDDO            ENDDO
312          ENDDO          ENDDO
313    
314        ENDIF  C--   end if dumpFiles
315           ENDIF
316    
317    C--   end if KPP_taveFreq > 0
318          ENDIF
319  #endif /* ALLOW_TIMEAVE */  #endif /* ALLOW_TIMEAVE */
320    
321  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
322  C     don't fill during call from INITIALISE_VARIA  C     do not fill during call from INITIALISE_VARIA
323        IF ( useDiagnostics .AND. myIter.NE.nIter0 ) THEN        IF ( useDiagnostics .AND. myIter.NE.nIter0 ) THEN
324         CALL DIAGNOSTICS_FILL(KPPviscAz ,'KPPviscA',0,Nr,0,1,1,myThid)         CALL DIAGNOSTICS_FILL(KPPviscAz ,'KPPviscA',0,Nr,0,1,1,myThid)
325         CALL DIAGNOSTICS_FILL(KPPdiffKzS,'KPPdiffS',0,Nr,0,1,1,myThid)         CALL DIAGNOSTICS_FILL(KPPdiffKzS,'KPPdiffS',0,Nr,0,1,1,myThid)

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

  ViewVC Help
Powered by ViewVC 1.1.22