--- MITgcm/pkg/diagnostics/diagnostics_write.F 2004/12/13 21:55:48 1.8 +++ MITgcm/pkg/diagnostics/diagnostics_write.F 2005/02/06 23:19:02 1.9 @@ -1,9 +1,9 @@ -C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/diagnostics/diagnostics_write.F,v 1.8 2004/12/13 21:55:48 jmc Exp $ +C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/diagnostics/diagnostics_write.F,v 1.9 2005/02/06 23:19:02 jmc Exp $ C $Name: $ #include "DIAG_OPTIONS.h" - SUBROUTINE DIAGNOSTICS_WRITE ( myIter, myThid ) + SUBROUTINE DIAGNOSTICS_WRITE ( myTime, myIter, myThid ) C*********************************************************************** C Purpose C ------- @@ -11,8 +11,9 @@ C C Arguments Description C ---------------------- -C myIter ..... Current Iteration Number -C myThid ..... my thread Id number +C myTime :: Current time of simulation ( s ) +C myIter :: Current Iteration Number +C myThid :: my thread Id number C*********************************************************************** IMPLICIT NONE #include "SIZE.h" @@ -21,28 +22,49 @@ #include "EEPARAMS.h" #include "PARAMS.h" + _RL myTime INTEGER myIter, myThid c Local variables c =============== INTEGER n + INTEGER myItM1, wrIter + LOGICAL dump2fileNow - IF ( myIter.ne.nIter0 ) THEN + IF ( myIter.NE.nIter0 ) THEN + myItM1 = myIter - 1 C*********************************************************************** C*** Check to see IF its time for Diagnostic Output *** C*********************************************************************** DO n = 1,nlists - IF ( MOD(myIter,freq(n)).EQ.0 ) THEN - CALL DIAGNOSTICS_OUT(n,myIter,myThid) + IF ( freq(n).LT.0 ) THEN + dump2fileNow = MOD(myItM1,-freq(n)) .EQ. INT(-freq(n)/2) +C-- write snap-shot with suffix = myIter to be consistent with +C time-average diagnostics (e.g., freq=-1 & freq=1): +c wrIter = myIter +C-- write snap-shot with suffix = myIter-1 to be consistent with +C state-variable time-step: + wrIter = myItM1 + ELSE + dump2fileNow = MOD(myIter,freq(n)) .EQ. 0 + wrIter = myIter + ENDIF + IF ( dump2fileNow ) THEN + CALL DIAGNOSTICS_OUT(n,wrIter,myThid) ENDIF ENDDO C- wait for everyone before setting arrays to zero: _BARRIER DO n = 1,nlists - IF ( MOD(myIter,freq(n)).EQ.0 ) CALL CLRINDX(n,myThid) + IF ( freq(n).LT.0 ) THEN + dump2fileNow = MOD(myItM1,-freq(n)) .EQ. INT(-freq(n)/2) + ELSE + dump2fileNow = MOD(myIter,freq(n)) .EQ. 0 + ENDIF + IF ( dump2fileNow ) CALL CLRINDX(n,myThid) ENDDO C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|