--- MITgcm/pkg/diagnostics/diagnostics_switch_onoff.F 2005/05/15 03:36:19 1.6 +++ MITgcm/pkg/diagnostics/diagnostics_switch_onoff.F 2005/05/23 19:31:09 1.11 @@ -1,4 +1,4 @@ -C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/diagnostics/diagnostics_switch_onoff.F,v 1.6 2005/05/15 03:36:19 jmc Exp $ +C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/diagnostics/diagnostics_switch_onoff.F,v 1.11 2005/05/23 19:31:09 molod Exp $ C $Name: $ #include "DIAG_OPTIONS.h" @@ -28,9 +28,6 @@ #include "PARAMS.h" #include "DIAGNOSTICS_SIZE.h" #include "DIAGNOSTICS.h" -#ifdef ALLOW_FIZHI -#include "chronos.h" -#endif C !INPUT PARAMETERS: C myTime :: current Time of simulation ( s ) @@ -47,10 +44,13 @@ c CHARACTER*(MAX_LEN_MBUF) msgBuf c INTEGER newIter INTEGER j, m, n + INTEGER bi, bj, iSp LOGICAL time4SnapShot _RL phiSec, freqSec + LOGICAL dBugFlag #ifdef ALLOW_FIZHI - integer yymmdd,hhmmss,nsecf2 + logical alarm2,alarm2next + character *9 tagname #endif LOGICAL DIFF_PHASE_MULTIPLE @@ -68,20 +68,15 @@ freqSec = freq(n) phiSec = phase(n) + time4SnapShot = DIFF_PHASE_MULTIPLE( phiSec, freqSec, + & myTime, deltaTclock ) #ifdef ALLOW_FIZHI if( useFIZHI) then - yymmdd = int(freq(n)) - hhmmss = int((freq(n) - int(freq(n)))*1.e6) - freqSec = nsecf2(hhmmss,yymmdd,nymd) - yymmdd = int(phase(n)) - hhmmss = int((phase(n) - int(phase(n)))*1.e6) - phiSec = nsecf2(hhmmss,yymmdd,nymd) + write(tagname,'(A,I2.2)')'diagtag',n + time4SnapShot = alarm2next(tagname,deltaT) endif #endif - time4SnapShot = DIFF_PHASE_MULTIPLE( phiSec, freqSec, - & myTime, deltaTclock ) - IF ( time4SnapShot ) THEN C-- switch ON diagnostics of output-stream # n DO m=1,nActive(n) @@ -101,12 +96,61 @@ ENDIF ENDDO -C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| - _END_MASTER(myThid) C-jmc: do we need a "BARRIER" at this point ? c _BARRIER +C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| + + DO n = 1,diagSt_nbLists + + IF ( diagSt_freq(n).LT.0. ) THEN +C-- Select diagnostics list that uses instantaneous output + + dBugFlag = debugLevel.GT.debLevB + + freqSec = diagSt_freq(n) + phiSec = diagSt_phase(n) + time4SnapShot = DIFF_PHASE_MULTIPLE( phiSec, freqSec, + & myTime, deltaTclock ) + +#ifdef ALLOW_FIZHI + if( useFIZHI) then + write(tagname,'(A,I2.2)')'diagStg',n + time4SnapShot = alarm2(tagname) + endif +#endif + + DO bj=myByLo(myThid), myByHi(myThid) + DO bi=myBxLo(myThid), myBxHi(myThid) + dBugFlag = dBugFlag.AND.(bi.EQ.1.AND.bj.EQ.1.AND.myThid.EQ.1) + IF ( time4SnapShot ) THEN +C-- switch ON diagnostics of output-stream # n + DO m=1,diagSt_nbActv(n) + j = jSdiag(m,n) + iSp = iSdiag(j) + IF (dBugFlag.AND.qSdiag(0,0,iSp,bi,bj).NE. 0.) + & WRITE(0,'(I8,I4,3A,1PE10.3,A,I3)') myIter, + & j,' ',cdiag(j),' :',qSdiag(0,0,iSp,bi,bj),' ->', 0 + qSdiag(0,0,iSp,bi,bj) = 0. + ENDDO + ELSE +C-- switch OFF diagnostics of output-stream # n + DO m=1,diagSt_nbActv(n) + j = jSdiag(m,n) + iSp = iSdiag(j) + IF (dBugFlag.AND.qSdiag(0,0,iSp,bi,bj).NE.-1.) + & WRITE(0,'(I8,I4,3A,1PE10.3,A,I3)') myIter, + & j,' ',cdiag(j),' :',qSdiag(0,0,iSp,bi,bj),' ->',-1 + qSdiag(0,0,iSp,bi,bj) = -1. + ENDDO + ENDIF + ENDDO + ENDDO + + ENDIF + ENDDO + RETURN END