/[MITgcm]/MITgcm/pkg/diagnostics/diagnostics_switch_onoff.F
ViewVC logotype

Diff of /MITgcm/pkg/diagnostics/diagnostics_switch_onoff.F

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

revision 1.13 by molod, Sun Oct 16 18:38:55 2005 UTC revision 1.14 by jmc, Mon Jun 5 18:17:22 2006 UTC
# Line 41  CEOP Line 41  CEOP
41  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
42  C      newIter :: future iteration number  C      newIter :: future iteration number
43  C      j,m,n   :: loop index  C      j,m,n   :: loop index
44  c     CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
45  c     INTEGER newIter  c     INTEGER newIter
46        INTEGER m, n, nd        INTEGER m, n, nd
47        INTEGER bi, bj, ip, iSp        INTEGER bi, bj, ip, iSp
48        LOGICAL time4SnapShot        LOGICAL time4SnapShot
49        _RL     phiSec, freqSec        _RL     phiSec, freqSec
50          INTEGER nInterval
51          _RL     xInterval
52        LOGICAL dBugFlag        LOGICAL dBugFlag
53  #ifdef ALLOW_FIZHI  #ifdef ALLOW_FIZHI
54        logical alarm2,alarm2next        LOGICAL alarm2, alarm2next
55        character *9 tagname        CHARACTER *9 tagname
56  #endif  #endif
57    
58        LOGICAL  DIFF_PHASE_MULTIPLE        LOGICAL  DIFF_PHASE_MULTIPLE
# Line 58  c     INTEGER newIter Line 60  c     INTEGER newIter
60    
61  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
62    
63          dBugFlag = debugLevel.GT.debLevB .AND. myThid.EQ.1
64    
65  c     newIter = 1 + myIter  c     newIter = 1 + myIter
66        DO n = 1,nlists        DO n = 1,nlists
67    
# Line 69  C--    Select diagnostics list that uses Line 73  C--    Select diagnostics list that uses
73          time4SnapShot = DIFF_PHASE_MULTIPLE( phiSec, freqSec,          time4SnapShot = DIFF_PHASE_MULTIPLE( phiSec, freqSec,
74       &                                       myTime, deltaTclock )       &                                       myTime, deltaTclock )
75  #ifdef ALLOW_FIZHI  #ifdef ALLOW_FIZHI
76          if( useFIZHI) then          IF ( useFIZHI ) THEN
77           write(tagname,'(A,I2.2)')'diagtag',n           WRITE(tagname,'(A,I2.2)')'diagtag',n
78           time4SnapShot = alarm2next(tagname,deltaT)           time4SnapShot = alarm2next(tagname,deltaT)
79          endif          ENDIF
80  #endif  #endif
81    
82          DO bj=myByLo(myThid), myByHi(myThid)          DO bj=myByLo(myThid), myByHi(myThid)
# Line 97  c             IF (ndiag(nd).NE.-1) WRITE Line 101  c             IF (ndiag(nd).NE.-1) WRITE
101           ENDDO           ENDDO
102          ENDDO          ENDDO
103    
104    C--    list with instantaneous output: end
105         ENDIF         ENDIF
106    
107           IF ( averageCycle(n).GT.1 ) THEN
108    C--    Select diagnostics list that uses periodic averaging
109            xInterval = myTime + deltaTclock*0.5 _d 0 - averagePhase(n)
110            xInterval = xInterval / averageFreq(n)
111            IF ( xInterval.GE.0. ) THEN
112              nInterval = INT(xInterval)
113            ELSE
114              nInterval = 1 + INT( -xInterval/FLOAT(averageCycle(n)) )
115              nInterval = nInterval*averageCycle(n) + INT(xInterval) - 1
116            ENDIF
117            nInterval = MOD(nInterval,averageCycle(n))
118    
119    C-     check future value of pdiag:
120            IF (dBugFlag.AND.pdiag(n,1,1).NE.nInterval)
121         &    WRITE(0,'(A,I8,3(A,I3),F17.6)') 'DIAG_SWITCH_ONOFF: at it=',
122         &      myIter, ', list:', n, ' switch',
123         &      pdiag(n,1,1),' ->', nInterval, xInterval
124            IF ( nInterval.LT.0 .OR. nInterval.GE.averageCycle(n) ) THEN
125              WRITE(msgBuf,'(2A,I2,A,I4)') 'DIAGNOSTICS_SWITCH_ONOFF:',
126         &       ' error setting pdiag(n=',n,') to:', nInterval
127              CALL PRINT_ERROR( msgBuf , myThid )
128              WRITE(msgBuf,'(2A,I3,A,F17.6)') 'DIAGNOSTICS_SWITCH_ONOFF:',
129         &       ' cycle=', averageCycle(n), ', xInt=', xInterval
130              CALL PRINT_ERROR( msgBuf , myThid )
131              STOP 'ABNORMAL END: S/R DIAGNOSTICS_SWITCH_ONOFF'
132            ENDIF
133    
134            DO bj=myByLo(myThid), myByHi(myThid)
135             DO bi=myBxLo(myThid), myBxHi(myThid)
136               pdiag(n,bi,bj) = nInterval
137             ENDDO
138            ENDDO
139    C--    list with periodic averaging: end
140           ENDIF
141    
142        ENDDO        ENDDO
143    
144  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
# Line 115  C--    Select diagnostics list that uses Line 156  C--    Select diagnostics list that uses
156       &                                       myTime, deltaTclock )       &                                       myTime, deltaTclock )
157    
158  #ifdef ALLOW_FIZHI  #ifdef ALLOW_FIZHI
159          if( useFIZHI) then          IF ( useFIZHI ) THEN
160           write(tagname,'(A,I2.2)')'diagStg',n           WRITE(tagname,'(A,I2.2)')'diagStg',n
161           time4SnapShot = alarm2next(tagname,deltaT)           time4SnapShot = alarm2next(tagname,deltaT)
162          endif          ENDIF
163  #endif  #endif
164    
165          DO bj=myByLo(myThid), myByHi(myThid)          DO bj=myByLo(myThid), myByHi(myThid)

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

  ViewVC Help
Powered by ViewVC 1.1.22