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

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

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

revision 1.9 by jmc, Mon Nov 5 18:48:04 2007 UTC revision 1.10 by jmc, Sat Jan 2 23:45:46 2010 UTC
# Line 3  C $Name$ Line 3  C $Name$
3    
4  #include "PTRACERS_OPTIONS.h"  #include "PTRACERS_OPTIONS.h"
5    
 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  
6  CBOP 1  CBOP 1
7  C     !ROUTINE: PTRACERS_WRITE_TIMEAVE  C     !ROUTINE: PTRACERS_WRITE_TIMEAVE
8    
9  C     !INTERFACE:  C     !INTERFACE:
10        SUBROUTINE PTRACERS_WRITE_TIMEAVE(myTime, myIter, myThid)        SUBROUTINE PTRACERS_WRITE_TIMEAVE( myTime, myIter, myThid )
11    
12  C     !DESCRIPTION:  C     !DESCRIPTION:
13  C     At the end of average period, write the time-average  C     At the end of average period, write the time-average
# Line 21  C     !USES: Line 20  C     !USES:
20  #include "PARAMS.h"  #include "PARAMS.h"
21  #include "PTRACERS_SIZE.h"  #include "PTRACERS_SIZE.h"
22  #include "PTRACERS_PARAMS.h"  #include "PTRACERS_PARAMS.h"
23  #include "PTRACERS_STATV.h"  #include "PTRACERS_TAVE.h"
24  C     Functions  
25    C     !FUNCTIONS:
26        LOGICAL  DIFFERENT_MULTIPLE        LOGICAL  DIFFERENT_MULTIPLE
27        EXTERNAL DIFFERENT_MULTIPLE        EXTERNAL DIFFERENT_MULTIPLE
28        INTEGER  IO_ERRCOUNT        INTEGER  IO_ERRCOUNT
29        EXTERNAL IO_ERRCOUNT        EXTERNAL IO_ERRCOUNT
30    
31  C     !INPUT PARAMETERS:  C     !INPUT PARAMETERS:
32  C     myTime  ::  Current time of simulation ( s )  C     myTime  :: Current time of simulation ( s )
33  C     myIter  ::  Iteration number  C     myIter  :: Iteration number
34  C     myThid  ::  Thread number for this instance of the routine.  C     myThid  :: my Thread Id number
35        _RL     myTime        _RL     myTime
36        INTEGER myIter        INTEGER myIter
37        INTEGER myThid        INTEGER myThid
# Line 41  CEOP Line 41  CEOP
41    
42  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
43  C     suff    ::  Hold suffix part of a filename  C     suff    ::  Hold suffix part of a filename
 C     TimeAve ::  total time over average  
44        CHARACTER*(MAX_LEN_FNAM) suff        CHARACTER*(MAX_LEN_FNAM) suff
45        INTEGER bi,bj, iTracer        INTEGER bi, bj, iTr
46        INTEGER beginIOErrCount        INTEGER beginIOErrCount
47        INTEGER endIOErrCount        INTEGER endIOErrCount
48        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
49  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
50        INTEGER ii,jj, ilnb        INTEGER jj, ilnb
51  C     Functions  C     Functions
52        INTEGER ILNBLNK        INTEGER  ILNBLNK
53          EXTERNAL ILNBLNK
54        CHARACTER*(1) pf        CHARACTER*(1) pf
55  #endif /*  ALLOW_MNC  */  #endif /*  ALLOW_MNC  */
56    
57    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
58    
59  C     Final Time Averages and Dump Files if needed  C     Final Time Averages and Dump Files if needed
60        IF ( DIFFERENT_MULTIPLE( PTRACERS_taveFreq, myTime, deltaTClock )        IF ( DIFFERENT_MULTIPLE( PTRACERS_taveFreq, myTime, deltaTClock )
61       &   ) THEN       &   ) THEN
62    
63          DO bj = myByLo(myThid), myByHi(myThid)          DO bj = myByLo(myThid), myByHi(myThid)
64            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
65  C           Normalize by integrated time  C--         Normalize by integrated time
66              DO iTracer=1,PTRACERS_numInUse              DO iTr=1,PTRACERS_numInUse
67                CALL TIMEAVE_NORMALIZ(                CALL TIMEAVE_NORMALIZE(
68       &             ptracerFluxtave(1-Olx,1-Oly,  1,1,iTracer),       &                     ptracerFluxtave(1-Olx,1-Oly,  1,1,iTr),
69       &             ptracer_full, 1,bi,bj,myThid)       &                     ptracer_full,  1, bi, bj, myThid )
70                CALL TIMEAVE_NORMALIZ(                CALL TIMEAVE_NORMALIZE(
71       &             ptracertave    (1-Olx,1-Oly,1,1,1,iTracer),       &                     ptracertave    (1-Olx,1-Oly,1,1,1,iTr),
72       &             ptracer_half,Nr,bi,bj,myThid)       &                     ptracer_half, Nr, bi, bj, myThid )
73              ENDDO              ENDDO
74            ENDDO            ENDDO
75          ENDDO          ENDDO
76    
77  C       Write to files  C--     Write to files
         _BARRIER  
78    
79  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
80          IF ( PTRACERS_timeave_mnc ) THEN          IF ( PTRACERS_timeave_mnc ) THEN
# Line 94  C       Write to files Line 95  C       Write to files
95            CALL MNC_CW_I_W_S('I','ptr_flux_tave',0,0,'iter',myIter,            CALL MNC_CW_I_W_S('I','ptr_flux_tave',0,0,'iter',myIter,
96       &         myThid)       &         myThid)
97    
98            DO ii = 1,PTRACERS_numInUse            DO iTr = 1,PTRACERS_numInUse
99              CALL MNC_CW_RL_W(pf,'ptr_tave',0,0,PTRACERS_names(ii),              CALL MNC_CW_RL_W(pf,'ptr_tave',0,0,PTRACERS_names(iTr),
100       &           ptracertave(1-OLx,1-OLy,1,1,1,ii),myThid)       &           ptracertave(1-OLx,1-OLy,1,1,1,iTr),myThid)
101              DO jj = 1,MAX_LEN_FNAM              DO jj = 1,MAX_LEN_FNAM
102                suff(jj:jj) = ' '                suff(jj:jj) = ' '
103              ENDDO              ENDDO
104              ilnb = ILNBLNK(PTRACERS_names(ii))              ilnb = ILNBLNK(PTRACERS_names(iTr))
105              WRITE(suff,'(a,a)') 'surf_',PTRACERS_names(ii)(1:ilnb)              WRITE(suff,'(A,A)') 'surf_',PTRACERS_names(iTr)(1:ilnb)
106              CALL MNC_CW_RL_W(pf,'ptr_flux_tave',0,0,suff,              CALL MNC_CW_RL_W(pf,'ptr_flux_tave',0,0,suff,
107       &           ptracerFluxtave(1-OLx,1-OLy,1,1,ii),myThid)       &           ptracerFluxtave(1-OLx,1-OLy,1,1,iTr),myThid)
108            ENDDO            ENDDO
109          ENDIF          ENDIF
110  #endif /*  ALLOW_MNC  */  #endif /*  ALLOW_MNC  */
111    
112          IF ( PTRACERS_timeave_mdsio ) THEN          IF ( PTRACERS_timeave_mdsio ) THEN
113    
 C         Set IO "context" for writing state  
 #ifdef USE_DFILE  
           CALL DFILE_SET_RW  
           CALL DFILE_SET_CONT_ON_ERROR  
 #endif  
114  C         Read IO error counter  C         Read IO error counter
115            beginIOErrCount = IO_ERRCOUNT(myThid)            beginIOErrCount = IO_ERRCOUNT(myThid)
116    
117            DO iTracer=1,PTRACERS_numInUse            DO iTr=1,PTRACERS_numInUse
118              WRITE(suff,'(A7,I2.2,A1,I10.10)') 'PtrFluxtave',              WRITE(suff,'(A7,I2.2,A1,I10.10)') 'PtrFluxtave',
119       &           iTracer,'.',myIter       &                                         iTr, '.', myIter
120              CALL WRITE_FLD_XY_RL (suff,' ',              CALL WRITE_FLD_XY_RL ( suff, ' ',
121       &           ptracerFluxtave(1-Olx,1-Oly,  1,1,iTracer),       &                 ptracerFluxtave(1-Olx,1-Oly,  1,1,iTr),
122       &           myIter,myThid)       &                 myIter, myThid )
123              WRITE(suff,'(A7,I2.2,A1,I10.10)') 'PTRtave',              WRITE(suff,'(A7,I2.2,A1,I10.10)') 'PTRtave',
124       &           iTracer,'.',myIter       &                                         iTr, '.', myIter
125              CALL WRITE_FLD_XYZ_RL(suff,' ',              CALL WRITE_FLD_XYZ_RL( suff, ' ',
126       &           ptracertave    (1-Olx,1-Oly,1,1,1,iTracer),       &                 ptracertave    (1-Olx,1-Oly,1,1,1,iTr),
127       &           myIter,myThid)       &                 myIter, myThid )
128            ENDDO            ENDDO
129    
130  C         Reread IO error counter  C         Reread IO error counter
# Line 158  C-          normal case: 1 message is en Line 154  C-          normal case: 1 message is en
154    
155          ENDIF          ENDIF
156    
         _BARRIER  
   
157          DO bj = myByLo(myThid), myByHi(myThid)          DO bj = myByLo(myThid), myByHi(myThid)
158            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
159    
160  C           Like before the 1rst iteration,  C           Like before the 1rst iteration,
161  C           ==> call TIMEAVE_STATVARS with myIter=nIter0 :  C           ==> call TIMEAVE_TIMEAVE with myIter=nIter0 :
162  C           1) Reset the averages to zero ;  C           1) Reset the averages to zero ;
163  C           2) Start to cumulate state-variables with Half time step.  C           2) Start to cumulate state-variables with Half time step.
164    
165              CALL PTRACERS_STATVARS(myTime, nIter0, bi, bj, myThid)              CALL PTRACERS_TIMEAVE( myTime, nIter0, bi, bj, myThid )
166    
167            ENDDO            ENDDO
168          ENDDO          ENDDO

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

  ViewVC Help
Powered by ViewVC 1.1.22