C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_write_state.F,v 1.12 2005/05/25 04:03:10 edhill Exp $
C $Name: $
#include "PTRACERS_OPTIONS.h"
CBOP
C !ROUTINE: PTRACERS_WRITE_STATE
C !INTERFACE:
SUBROUTINE PTRACERS_WRITE_STATE(
I myIter, myTime, myThid )
C !DESCRIPTION:
C Calculates tendancy for passive tracers and integrates forward in
C time.
C !USES:
IMPLICIT NONE
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "PTRACERS_SIZE.h"
#include "PTRACERS.h"
C !INPUT PARAMETERS:
C myIter :: time-step number
C myTime :: model time
C myThid :: thread number
INTEGER myIter
_RL myTime
INTEGER myThid
CEOP
#ifdef ALLOW_PTRACERS
C !LOCAL VARIABLES:
C iTracer :: loop indices
C suff :: character buffer for creating suffix in filename
C iRec :: record number
INTEGER iTracer
CHARACTER*(MAX_LEN_MBUF) suff
INTEGER iRec
LOGICAL DIFFERENT_MULTIPLE
EXTERNAL
INTEGER IO_ERRCOUNT
EXTERNAL
IF ( DIFFERENT_MULTIPLE( PTRACERS_dumpFreq, myTime, deltaTClock )
& .OR.myTime.EQ.endTime
& .OR.myTime.EQ.startTime
& ) THEN
C Write to files
_BARRIER
_BEGIN_MASTER( myThid )
#ifdef ALLOW_MNC
IF (useMNC .AND. PTRACERS_write_mnc) THEN
CALL MNC_CW_SET_UDIM('ptracers', -1, myThid)
CALL MNC_CW_RL_W_S('D','ptracers',0,0,'T',myTime,myThid)
CALL MNC_CW_SET_UDIM('ptracers', 0, myThid)
CALL MNC_CW_I_W_S('I','ptracers',0,0,'iter',myIter,myThid)
DO iTracer = 1,PTRACERS_numInUse
CALL MNC_CW_RL_W('D','ptracers',0,0,PTRACERS_names(iTracer),
& pTracer(1-OLx,1-OLy,1,1,1,iTracer),myThid)
ENDDO
ENDIF
#endif /* ALLOW_MNC */
IF (PTRACERS_write_mdsio) THEN
C Loop over tracers
DO iTracer=1,PTRACERS_numInUse
#ifdef MULTIPLE_RECORD_STATE_FILES
C Write each snap-shot as a record in a time-history file
IF (PTRACERS_useRecords) THEN
C Write each passive tracer as a record
WRITE(suff,'(A)') 'PTRACERS'
iRec = int ( (myCurrentTime-startTime)
& / PTRACERS_dumpFreq + 1.5 )
iRec = (iRec-1)*PTRACERS_num + iTracer + 1
ELSE
C Write each passive tracer in its own file
WRITE(pref,'(A7,I2.2)') 'PTRACER',iTracer
iRec = int ( (myCurrentTime-startTime)
& / PTRACERS_dumpFreq + 1.5 )
ENDIF
#else
C Write each snap-shot as a new file with a 10-digit suffix to
C indicate time-step number
IF (PTRACERS_useRecords) THEN
C Write each passive tracer as a record
WRITE(suff,'(A,I10.10)') 'PTRACERS',myIter
iRec=iTracer
ELSE
C Write each passive tracer in its own file
WRITE(suff,'(A7,I2.2,A1,I10.10)')
& 'PTRACER',iTracer,'.',myIter
iRec=1
ENDIF
#endif /* MULTIPLE_RECORD_STATE_FILES */
CALL WRITE_REC_XYZ_RL(suff,
& pTracer(1-Olx,1-Oly,1,1,1,iTracer),iRec,myIter,myThid)
C End of tracer loop
ENDDO
ENDIF
_END_MASTER( myThid )
_BARRIER
ENDIF
#endif /* ALLOW_PTRACERS */
RETURN
END