C $Header: /u/gcmpack/MITgcm/pkg/offline/offline_state.F,v 1.4 2005/05/15 03:04:57 jmc Exp $
C $Name: $
#include "OFFLINE_OPTIONS.h"
#undef MULTIPLE_RECORD_STATE_FILES
CBOP
C !ROUTINE: OFFLINE_STATE
C !INTERFACE:
SUBROUTINE OFFLINE_STATE ( myTime, myIter, myThid )
C !DESCRIPTION: \bv
C *==========================================================*
C | SUBROUTINE OFFLINE_STATE
C | o Controlling routine for IO to dump model state.
C *==========================================================*
C \ev
C !USES:
IMPLICIT NONE
C == Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "DYNVARS.h"
#include "GRID.h"
#include "EOS.h"
LOGICAL DIFFERENT_MULTIPLE
EXTERNAL
INTEGER IO_ERRCOUNT
EXTERNAL
C !INPUT/OUTPUT PARAMETERS:
C myThid - Thread number for this instance of the routine.
C myIter - Iteration number
C myTime - Current time of simulation ( s )
_RL myTime
INTEGER myThid
INTEGER myIter
C !LOCAL VARIABLES:
CHARACTER*(MAX_LEN_MBUF) suff
INTEGER iRec
CEOP
IF (
& DIFFERENT_MULTIPLE(dumpFreq,myTime,deltaTClock) .OR.
& myTime.EQ.endTime .OR.
& myTime.EQ.startTime
& ) THEN
IF ( dumpFreq .EQ. 0.0 ) THEN
iRec = 1
ELSE
iRec = int ( (myTime-startTime) / dumpFreq +1.5 )
ENDIF
C-- Going to really do some IO. Make everyone except master thread wait.
_BARRIER
_BEGIN_MASTER( myThid )
C-- Write model fields
#ifdef MULTIPLE_RECORD_STATE_FILES
C Write each snap-shot as a new record in one file per variable
C - creates relatively few files but these files can become huge
#else /* MULTIPLE_RECORD_STATE_FILES */
C Write each snap-shot as a new file (original and default method)
C - creates many files but for large configurations is easier to
C transfer analyse a particular snap-shots
WRITE(suff,'(I10.10)') myIter
#ifdef ALLOW_PTRACERS
IF (usePTRACERS) CALL PTRACERS_WRITE_STATE(myIter,myTime,myThid)
#endif /* ALLOW_PTRACERS */
_END_MASTER( myThid )
_BARRIER
#endif
ENDIF
RETURN
END