/[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.16 by jmc, Thu Oct 26 00:29:33 2006 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     === Functions ====
37  C  iTracer              :: loop indices        LOGICAL  DIFFERENT_MULTIPLE
38  C  suff                 :: character buffer for creating suffix in filename        EXTERNAL DIFFERENT_MULTIPLE
39  C  iRec                 :: record number        INTEGER  IO_ERRCOUNT
40          EXTERNAL IO_ERRCOUNT
41    
42    C     !LOCAL VARIABLES:
43    C     iTracer   :: loop indices
44    C     suff      :: character buffer for creating suffix in filename
45    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  CEOP  #ifdef ALLOW_MNC
50          CHARACTER*(1) pf
51    #endif
52    
53          IF ( DIFFERENT_MULTIPLE( PTRACERS_dumpFreq, myTime, deltaTClock )
54         &  .OR. dumpInitAndLast.AND.( myTime.EQ.endTime .OR.
55         &                             myTime.EQ.startTime  )
56         &   ) THEN
57    
58    C--   Write to files
59           _BARRIER
60    
61    #ifdef ALLOW_MNC
62            IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
63              pf(1:1) = 'D'
64            ELSE
65              pf(1:1) = 'R'
66            ENDIF
67    
68           IF ( PTRACERS_snapshot_mnc ) THEN
69            CALL MNC_CW_SET_UDIM('ptracers', -1, myThid)
70            CALL MNC_CW_RL_W_S('D','ptracers',0,0,'T',myTime,myThid)
71            CALL MNC_CW_SET_UDIM('ptracers', 0, myThid)
72            CALL MNC_CW_I_W_S('I','ptracers',0,0,'iter',myIter,myThid)
73            DO iTracer = 1,PTRACERS_numInUse
74             CALL MNC_CW_RL_W(pf,'ptracers',0,0,PTRACERS_names(iTracer),
75         &        pTracer(1-OLx,1-OLy,1,1,1,iTracer),myThid)
76            ENDDO
77           ENDIF
78    #endif /*  ALLOW_MNC  */
79    
80           IF ( PTRACERS_snapshot_mdsio ) THEN
81    
82  C Loop over tracers  C       Loop over tracers
83        DO iTracer=1,PTRACERS_numInUse          DO iTracer=1,PTRACERS_numInUse
84    
85  #ifdef MULTIPLE_RECORD_STATE_FILES  #ifdef MULTIPLE_RECORD_STATE_FILES
86  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
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) / dumpFreq +1.5 )            iRec = 1 + NINT( (myTime-startTime) / PTRACERS_dumpFreq )
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) / dumpFreq +1.5 )            iRec = 1 + NINT( (myTime-startTime) / PTRACERS_dumpFreq )
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
101  C        Write each passive tracer as a record  C     Write each passive tracer as a record
102           WRITE(suff,'(A,I10.10)') 'PTRACERS',myIter            WRITE(suff,'(A,I10.10)') 'PTRACERS',myIter
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)') 'PTRACER',iTracer,'.',myIter            WRITE(suff,'(A7,I2.2,A1,I10.10)')
107           iRec=1       &         'PTRACER',iTracer,'.',myIter
108          ENDIF            iRec=1
109             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
116            ENDDO
117    
118           ENDIF
119    
120  C End of tracer loop         _BARRIER
121        ENDDO  C--   Writing to files: end
122          ENDIF
123    
124  #endif /* ALLOW_PTRACERS */  #endif /* ALLOW_PTRACERS */
125    

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

  ViewVC Help
Powered by ViewVC 1.1.22