C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/ptracers/ptracers_write_state.F,v 1.10 2005/04/06 18:45:48 jmc 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 DIFF_BASE_MULTIPLE EXTERNAL DIFF_BASE_MULTIPLE INTEGER IO_ERRCOUNT EXTERNAL IO_ERRCOUNT IF ( & DIFF_BASE_MULTIPLE(baseTime,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_I_W_S('I','ptracers',0,0,'T',myIter,myThid) CALL MNC_CW_SET_UDIM('ptracers', 0, 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 C DIFF_BASE_MULTIPLE ENDIF #endif /* ALLOW_PTRACERS */ RETURN END