/[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.2 by dimitri, Thu Sep 25 03:01:59 2003 UTC revision 1.9 by edhill, Sat Dec 18 02:18:56 2004 UTC
# Line 4  C $Name$ Line 4  C $Name$
4  #include "PTRACERS_OPTIONS.h"  #include "PTRACERS_OPTIONS.h"
5    
6  CBOP  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  C     Calculates tendancy for passive tracers and integrates forward in
15  C     in time.  C     time.
16    
17  C !USES: ===============================================================  C     !USES:
18        IMPLICIT NONE        IMPLICIT NONE
19  #include "SIZE.h"  #include "SIZE.h"
20  #include "EEPARAMS.h"  #include "EEPARAMS.h"
21    #include "PARAMS.h"
22    #include "PTRACERS_SIZE.h"
23  #include "PTRACERS.h"  #include "PTRACERS.h"
24    
25  C !INPUT PARAMETERS: ===================================================  C     !INPUT PARAMETERS:
26  C  myIter               :: time-step number  C     myIter    :: time-step number
27  C  myTime               :: model time  C     myTime    :: model time
28  C  myThid               :: thread number  C     myThid    :: thread number
29        INTEGER myIter        INTEGER myIter
30        _RL myTime        _RL myTime
31        INTEGER myThid        INTEGER myThid
32    CEOP
 C !OUTPUT PARAMETERS: ==================================================  
 C  none  
33    
34  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
35    
36  C !LOCAL VARIABLES: ====================================================  C     !LOCAL VARIABLES:
37  C  iTracer              :: loop indices  C     iTracer   :: loop indices
38  C  suff                 :: character buffer for creating suffix in filename  C     suff      :: character buffer for creating suffix in filename
39  C  iRec                 :: record number  C     iRec      :: record number
40        INTEGER iTracer        INTEGER iTracer
41        CHARACTER*(MAX_LEN_MBUF) suff        CHARACTER*(MAX_LEN_MBUF) suff
42        INTEGER iRec        INTEGER iRec
 CEOP  
43    
44  C Loop over tracers        LOGICAL  DIFFERENT_MULTIPLE
45        DO iTracer=1,PTRACERS_numInUse        EXTERNAL DIFFERENT_MULTIPLE
46          INTEGER  IO_ERRCOUNT
47          EXTERNAL IO_ERRCOUNT
48    
49          IF (
50         &     DIFFERENT_MULTIPLE(PTRACERS_dumpFreq,myTime,
51         &     myTime-deltaTClock) .OR.
52         &     myTime.EQ.endTime .OR.
53         &     myTime.EQ.startTime
54         &     ) THEN
55          
56    C     Write to files
57           _BARRIER
58           _BEGIN_MASTER( myThid )
59    
60    #ifdef ALLOW_MNC
61           IF (useMNC .AND. PTRACERS_write_mnc) THEN
62            CALL MNC_CW_SET_UDIM('ptracers', -1, myThid)
63            CALL MNC_CW_I_W_S('I','ptracers',0,0,'T',myIter,myThid)
64            CALL MNC_CW_SET_UDIM('ptracers', 0, myThid)
65            DO iTracer = 1,PTRACERS_numInUse
66             CALL MNC_CW_RL_W('D','ptracers',0,0,PTRACERS_names(iTracer),
67         &        pTracer(1-OLx,1-OLy,1,1,1,iTracer),myThid)
68            ENDDO
69           ENDIF
70    #endif /*  ALLOW_MNC  */
71    
72  #ifdef MULTIPLE_RECORD_STATE_FILES         IF (PTRACERS_write_mdsio) THEN
 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) / 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) / 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 */  
73    
74          CALL WRITE_REC_XYZ_RL(suff,  C       Loop over tracers
75       &      pTracer(1-Olx,1-Oly,1,1,1,iTracer),iRec,myIter,myThid)          DO iTracer=1,PTRACERS_numInUse
76    
77  C End of tracer loop  #ifdef MULTIPLE_RECORD_STATE_FILES
78        ENDDO  C     Write each snap-shot as a record in a time-history file
79             IF (PTRACERS_useRecords) THEN
80    C     Write each passive tracer as a record
81              WRITE(suff,'(A)') 'PTRACERS'
82              iRec = int ( (myCurrentTime-startTime)
83         &         / PTRACERS_dumpFreq + 1.5 )
84              iRec = (iRec-1)*PTRACERS_num + iTracer + 1
85             ELSE
86    C     Write each passive tracer in its own file
87              WRITE(pref,'(A7,I2.2)') 'PTRACER',iTracer
88              iRec = int ( (myCurrentTime-startTime)
89         &         / PTRACERS_dumpFreq + 1.5 )
90             ENDIF
91    #else
92    C         Write each snap-shot as a new file with a 10-digit suffix to
93    C     indicate time-step number
94             IF (PTRACERS_useRecords) THEN
95    C     Write each passive tracer as a record
96              WRITE(suff,'(A,I10.10)') 'PTRACERS',myIter
97              iRec=iTracer
98             ELSE
99    C     Write each passive tracer in its own file
100              WRITE(suff,'(A7,I2.2,A1,I10.10)')
101         &         'PTRACER',iTracer,'.',myIter
102              iRec=1
103             ENDIF
104    #endif /* MULTIPLE_RECORD_STATE_FILES */
105            
106             CALL WRITE_REC_XYZ_RL(suff,
107         &        pTracer(1-Olx,1-Oly,1,1,1,iTracer),iRec,myIter,myThid)
108            
109    C     End of tracer loop
110            ENDDO
111            
112           ENDIF
113    
114           _END_MASTER( myThid )
115           _BARRIER
116    C     DIFFERENT_MULTIPLE
117          ENDIF
118    
119  #endif /* ALLOW_PTRACERS */  #endif /* ALLOW_PTRACERS */
120    

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.9

  ViewVC Help
Powered by ViewVC 1.1.22