/[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.6 by edhill, Thu Oct 7 01:48:08 2004 UTC revision 1.17 by jmc, Tue Jan 9 22:27:12 2007 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( myIter,myTime,myThid )        SUBROUTINE PTRACERS_WRITE_STATE(
11         I     myIter, myTime, myThid )
12    
13  C     !DESCRIPTION:  C     !DESCRIPTION:
14  C     Calculates tendancy for passive tracers and integrates forward in  C     dump to files current passive tracer state
 C     time.  
15    
16  C     !USES:  C     !USES:
17        IMPLICIT NONE        IMPLICIT NONE
18  #include "SIZE.h"  #include "SIZE.h"
19  #include "EEPARAMS.h"  #include "EEPARAMS.h"
20  #include "PARAMS.h"  #include "PARAMS.h"
 #ifdef ALLOW_MNC  
 #include "MNC_PARAMS.h"  
 #endif  
21  #include "PTRACERS_SIZE.h"  #include "PTRACERS_SIZE.h"
22  #include "PTRACERS.h"  #include "PTRACERS.h"
23    
# Line 35  CEOP Line 32  CEOP
32    
33  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
34    
35    C     === Functions ====
36          LOGICAL  DIFFERENT_MULTIPLE
37          EXTERNAL DIFFERENT_MULTIPLE
38          INTEGER  IO_ERRCOUNT
39          EXTERNAL IO_ERRCOUNT
40    
41  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
42  C     iTracer   :: loop indices  C     iTracer   :: loop indices
43  C     suff      :: character buffer for creating suffix in filename  C     suff      :: character buffer for creating suffix in filename
# Line 43  C     iRec      :: record number Line 46  C     iRec      :: record number
46        CHARACTER*(MAX_LEN_MBUF) suff        CHARACTER*(MAX_LEN_MBUF) suff
47        INTEGER iRec        INTEGER iRec
48  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
49        INTEGER ii        CHARACTER*(1) pf
50    #endif
51    
52          IF ( DIFFERENT_MULTIPLE( PTRACERS_dumpFreq, myTime, deltaTClock )
53         &  .OR. dumpInitAndLast.AND.( myTime.EQ.endTime .OR.
54         &                             myTime.EQ.startTime  )
55         &   ) THEN
56    
57    C--   Write to files
58           _BARRIER
59    
60    #ifdef ALLOW_MNC
61            IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
62              pf(1:1) = 'D'
63            ELSE
64              pf(1:1) = 'R'
65            ENDIF
66    
67        IF (useMNC .AND. PTRACERS_write_mnc) THEN         IF ( PTRACERS_snapshot_mnc ) THEN
68          CALL MNC_CW_SET_UDIM('ptracers', -1, myThid)          CALL MNC_CW_SET_UDIM('ptracers', -1, myThid)
69          CALL MNC_CW_I_W_S('I','ptracers',0,0,'iter',myIter,myThid)          CALL MNC_CW_RL_W_S('D','ptracers',0,0,'T',myTime,myThid)
70          CALL MNC_CW_SET_UDIM('ptracers', 0, myThid)          CALL MNC_CW_SET_UDIM('ptracers', 0, myThid)
71          DO ii = 1,PTRACERS_numInUse          CALL MNC_CW_I_W_S('I','ptracers',0,0,'iter',myIter,myThid)
72            CALL MNC_CW_RL_W('D','ptracers',0,0,PTRACERS_names(ii),          DO iTracer = 1,PTRACERS_numInUse
73       &         pTracer(1-OLx,1-OLy,1,1,1,ii),myThid)           CALL MNC_CW_RL_W(pf,'ptracers',0,0,PTRACERS_names(iTracer),
74         &        pTracer(1-OLx,1-OLy,1,1,1,iTracer),myThid)
75          ENDDO          ENDDO
76        ENDIF         ENDIF
77  #endif /*  ALLOW_MNC  */  #endif /*  ALLOW_MNC  */
78    
79        IF (PTRACERS_write_mdsio) THEN         IF ( PTRACERS_snapshot_mdsio ) THEN
80    
81  C       Loop over tracers  C       Loop over tracers
82          DO iTracer=1,PTRACERS_numInUse          DO iTracer=1,PTRACERS_numInUse
83    
84  #ifdef MULTIPLE_RECORD_STATE_FILES  #ifdef MULTIPLE_RECORD_STATE_FILES
85  C         Write each snap-shot as a record in a time-history file  C     Write each snap-shot as a record in a time-history file
86            IF (PTRACERS_useRecords) THEN           IF (PTRACERS_useRecords) THEN
87  C           Write each passive tracer as a record  C     Write each passive tracer as a record
88              WRITE(suff,'(A)') 'PTRACERS'            WRITE(suff,'(A)') 'PTRACERS'
89              iRec = int ( (myCurrentTime-startTime) / dumpFreq +1.5 )            iRec = 1 + NINT( (myTime-startTime) / PTRACERS_dumpFreq )
90              iRec = (iRec-1)*PTRACERS_num + iTracer + 1            iRec = (iRec-1)*PTRACERS_num + iTracer + 1
91            ELSE           ELSE
92  C           Write each passive tracer in its own file  C     Write each passive tracer in its own file
93              WRITE(pref,'(A7,I2.2)') 'PTRACER',iTracer            WRITE(pref,'(A7,I2.2)') 'PTRACER',iTracer
94              iRec = int ( (myCurrentTime-startTime) / dumpFreq +1.5 )            iRec = 1 + NINT( (myTime-startTime) / PTRACERS_dumpFreq )
95            ENDIF           ENDIF
96  #else  #else
97  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
98  C         indicate time-step number  C     indicate time-step number
99            IF (PTRACERS_useRecords) THEN           IF (PTRACERS_useRecords) THEN
100  C           Write each passive tracer as a record  C     Write each passive tracer as a record
101              WRITE(suff,'(A,I10.10)') 'PTRACERS',myIter            WRITE(suff,'(A,I10.10)') 'PTRACERS',myIter
102              iRec=iTracer            iRec=iTracer
103            ELSE           ELSE
104  C           Write each passive tracer in its own file  C     Write each passive tracer in its own file
105              WRITE(suff,'(A7,I2.2,A1,I10.10)')            WRITE(suff,'(A7,I2.2,A1,I10.10)')
106       &           'PTRACER',iTracer,'.',myIter       &         'PTRACER',iTracer,'.',myIter
107              iRec=1            iRec=1
108            ENDIF           ENDIF
109  #endif /* MULTIPLE_RECORD_STATE_FILES */  #endif /* MULTIPLE_RECORD_STATE_FILES */
110    
111            CALL WRITE_REC_XYZ_RL(suff,           CALL WRITE_REC_XYZ_RL(suff,
112       &         pTracer(1-Olx,1-Oly,1,1,1,iTracer),iRec,myIter,myThid)       &        pTracer(1-Olx,1-Oly,1,1,1,iTracer),iRec,myIter,myThid)
113              
114  C         End of tracer loop  C     End of tracer loop
115          ENDDO          ENDDO
116            
117           ENDIF
118    
119           _BARRIER
120    C--   Writing to files: end
121        ENDIF        ENDIF
122    
123  #endif /* ALLOW_PTRACERS */  #endif /* ALLOW_PTRACERS */
124    
125        RETURN        RETURN

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.17

  ViewVC Help
Powered by ViewVC 1.1.22