/[MITgcm]/MITgcm/pkg/ptracers/ptracers_write_state.F
ViewVC logotype

Diff of /MITgcm/pkg/ptracers/ptracers_write_state.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.15 by edhill, Thu Sep 29 12:19:52 2005 UTC revision 1.16 by jmc, Thu Oct 26 00:29:33 2006 UTC
# Line 7  CBOP Line 7  CBOP
7  C     !ROUTINE: PTRACERS_WRITE_STATE  C     !ROUTINE: PTRACERS_WRITE_STATE
8    
9  C     !INTERFACE:  C     !INTERFACE:
10        SUBROUTINE PTRACERS_WRITE_STATE(        SUBROUTINE PTRACERS_WRITE_STATE(
11       I     myIter, myTime, myThid )       I     myIter, myTime, myThid )
12    
13  C     !DESCRIPTION:  C     !DESCRIPTION:
# Line 33  CEOP Line 33  CEOP
33    
34  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
35    
36    C     === Functions ====
37          LOGICAL  DIFFERENT_MULTIPLE
38          EXTERNAL DIFFERENT_MULTIPLE
39          INTEGER  IO_ERRCOUNT
40          EXTERNAL IO_ERRCOUNT
41    
42  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
43  C     iTracer   :: loop indices  C     iTracer   :: loop indices
44  C     suff      :: character buffer for creating suffix in filename  C     suff      :: character buffer for creating suffix in filename
# Line 40  C     iRec      :: record number Line 46  C     iRec      :: record number
46        INTEGER iTracer        INTEGER iTracer
47        CHARACTER*(MAX_LEN_MBUF) suff        CHARACTER*(MAX_LEN_MBUF) suff
48        INTEGER iRec        INTEGER iRec
49    #ifdef ALLOW_MNC
50        CHARACTER*(1) pf        CHARACTER*(1) pf
51    #endif
       LOGICAL  DIFFERENT_MULTIPLE  
       EXTERNAL DIFFERENT_MULTIPLE  
       INTEGER  IO_ERRCOUNT  
       EXTERNAL IO_ERRCOUNT  
52    
53        IF ( DIFFERENT_MULTIPLE( PTRACERS_dumpFreq, myTime, deltaTClock )        IF ( DIFFERENT_MULTIPLE( PTRACERS_dumpFreq, myTime, deltaTClock )
54       &  .OR. dumpInitAndLast.AND.( myTime.EQ.endTime .OR.       &  .OR. dumpInitAndLast.AND.( myTime.EQ.endTime .OR.
55       &                             myTime.EQ.startTime  )       &                             myTime.EQ.startTime  )
56       &   ) THEN       &   ) THEN
57          
58    C--   Write to files
59           _BARRIER
60    
61    #ifdef ALLOW_MNC
62          IF ( writeBinaryPrec .EQ. precFloat64 ) THEN          IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
63            pf(1:1) = 'D'            pf(1:1) = 'D'
64          ELSE          ELSE
65            pf(1:1) = 'R'            pf(1:1) = 'R'
66          ENDIF          ENDIF
67    
 C     Write to files  
        _BARRIER  
        _BEGIN_MASTER( myThid )  
   
 #ifdef ALLOW_MNC  
68         IF ( PTRACERS_snapshot_mnc ) THEN         IF ( PTRACERS_snapshot_mnc ) THEN
69          CALL MNC_CW_SET_UDIM('ptracers', -1, myThid)          CALL MNC_CW_SET_UDIM('ptracers', -1, myThid)
70          CALL MNC_CW_RL_W_S('D','ptracers',0,0,'T',myTime,myThid)          CALL MNC_CW_RL_W_S('D','ptracers',0,0,'T',myTime,myThid)
# Line 85  C     Write each snap-shot as a record i Line 87  C     Write each snap-shot as a record i
87           IF (PTRACERS_useRecords) THEN           IF (PTRACERS_useRecords) THEN
88  C     Write each passive tracer as a record  C     Write each passive tracer as a record
89            WRITE(suff,'(A)') 'PTRACERS'            WRITE(suff,'(A)') 'PTRACERS'
90            iRec = int ( (myCurrentTime-startTime)            iRec = 1 + NINT( (myTime-startTime) / PTRACERS_dumpFreq )
      &         / PTRACERS_dumpFreq + 1.5 )  
91            iRec = (iRec-1)*PTRACERS_num + iTracer + 1            iRec = (iRec-1)*PTRACERS_num + iTracer + 1
92           ELSE           ELSE
93  C     Write each passive tracer in its own file  C     Write each passive tracer in its own file
94            WRITE(pref,'(A7,I2.2)') 'PTRACER',iTracer            WRITE(pref,'(A7,I2.2)') 'PTRACER',iTracer
95            iRec = int ( (myCurrentTime-startTime)            iRec = 1 + NINT( (myTime-startTime) / PTRACERS_dumpFreq )
      &         / PTRACERS_dumpFreq + 1.5 )  
96           ENDIF           ENDIF
97  #else  #else
98  C         Write each snap-shot as a new file with a 10-digit suffix to  C         Write each snap-shot as a new file with a 10-digit suffix to
99  C     indicate time-step number  C     indicate time-step number
100           IF (PTRACERS_useRecords) THEN           IF (PTRACERS_useRecords) THEN
# Line 103  C     Write each passive tracer as a rec Line 103  C     Write each passive tracer as a rec
103            iRec=iTracer            iRec=iTracer
104           ELSE           ELSE
105  C     Write each passive tracer in its own file  C     Write each passive tracer in its own file
106            WRITE(suff,'(A7,I2.2,A1,I10.10)')            WRITE(suff,'(A7,I2.2,A1,I10.10)')
107       &         'PTRACER',iTracer,'.',myIter       &         'PTRACER',iTracer,'.',myIter
108            iRec=1            iRec=1
109           ENDIF           ENDIF
110  #endif /* MULTIPLE_RECORD_STATE_FILES */  #endif /* MULTIPLE_RECORD_STATE_FILES */
111            
112           CALL WRITE_REC_XYZ_RL(suff,           CALL WRITE_REC_XYZ_RL(suff,
113       &        pTracer(1-Olx,1-Oly,1,1,1,iTracer),iRec,myIter,myThid)       &        pTracer(1-Olx,1-Oly,1,1,1,iTracer),iRec,myIter,myThid)
114            
115  C     End of tracer loop  C     End of tracer loop
116          ENDDO          ENDDO
117            
118         ENDIF         ENDIF
119    
        _END_MASTER( myThid )  
120         _BARRIER         _BARRIER
121    C--   Writing to files: end
122        ENDIF        ENDIF
123    
124  #endif /* ALLOW_PTRACERS */  #endif /* ALLOW_PTRACERS */

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.16

  ViewVC Help
Powered by ViewVC 1.1.22