/[MITgcm]/MITgcm/pkg/timeave/timeave_statv_write.F
ViewVC logotype

Diff of /MITgcm/pkg/timeave/timeave_statv_write.F

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

revision 1.36 by mlosch, Tue Feb 7 12:49:26 2006 UTC revision 1.37 by jmc, Mon Mar 20 15:15:39 2006 UTC
# Line 38  C     myTime - Current time of simulatio Line 38  C     myTime - Current time of simulatio
38        _RL     myTime        _RL     myTime
39  CEOP  CEOP
40    
41  #ifdef ALLOW_TIMEAVE  #ifdef ALLOW_TIMEAVE
42  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
43  C     suff         :: Hold suffix part of a filename  C     suff         :: Hold suffix part of a filename
44  C     TimeAve      :: total time over average  C     TimeAve      :: total time over average
# Line 53  C     useVariableK :: T when vertical di Line 53  C     useVariableK :: T when vertical di
53  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
54        CHARACTER*(1) pf        CHARACTER*(1) pf
55  #endif  #endif
 #ifdef ALLOW_CAL  
       INTEGER thisdate(4), prevdate(4)  
 #endif  
56    
57  C     Final Time Averages and Dump Files if needed  C     Final Time Averages and Dump Files if needed
58        dumpFiles = .FALSE.        dumpFiles = DIFFERENT_MULTIPLE(taveFreq,myTime,deltaTClock)
       IF ( DIFFERENT_MULTIPLE(taveFreq,myTime,deltaTClock) )  
      &     dumpFiles = .TRUE.  
59  #ifdef ALLOW_CAL  #ifdef ALLOW_CAL
60        IF ( calendarDumps .AND. (        IF ( useCAL ) THEN
61       &       ( taveFreq.GE. 2592000 .AND. taveFreq.LE. 2678400 ) .OR.           CALL CAL_TIME2DUMP( taveFreq, deltaTClock,
62       &       ( taveFreq.GE.31104000 .AND. taveFreq.LE.31968000 ))) THEN       U                       dumpFiles,
63  C--   Convert approximate months (30-31 days) and years (360-372 days)       I                       myTime, myIter, myThid )
 C     to exact calendar months and years.  
 C-    First determine calendar dates for this and previous time step.  
          call cal_GetDate( myiter  ,mytime            ,thisdate,mythid )  
          call cal_GetDate( myiter-1,mytime-deltaTClock,prevdate,mythid )  
          dumpFiles = .FALSE.  
 C-    Monthly taveFreq:  
          IF( taveFreq.GE. 2592000 .AND. taveFreq.LE. 2678400 .AND.  
      &        (thisdate(1)-prevdate(1)).GT.50   ) dumpFiles = .TRUE.  
 C-    Yearly  taveFreq:  
          IF( taveFreq.GE.31104000 .AND. taveFreq.LE.31968000 .AND.  
      &        (thisdate(1)-prevdate(1)).GT.5000 ) dumpFiles = .TRUE.  
64        ENDIF        ENDIF
65  #endif  #endif
66    
# Line 120  C         Normalize by integrated time Line 104  C         Normalize by integrated time
104  C         CALL TIMEAVE_NORMALIZ(hFacCtave,TimeAve_half,Nr,bi,bj,myThid)  C         CALL TIMEAVE_NORMALIZ(hFacCtave,TimeAve_half,Nr,bi,bj,myThid)
105  C         CALL TIMEAVE_NORMALIZ(hFacWtave,TimeAve_half,Nr,bi,bj,myThid)  C         CALL TIMEAVE_NORMALIZ(hFacWtave,TimeAve_half,Nr,bi,bj,myThid)
106  C         CALL TIMEAVE_NORMALIZ(hFacStave,TimeAve_half,Nr,bi,bj,myThid)  C         CALL TIMEAVE_NORMALIZ(hFacStave,TimeAve_half,Nr,bi,bj,myThid)
107  #endif /* NONLIN_FRSURF */  #endif /* NONLIN_FRSURF */
108    
109            CALL TIMEAVE_NORMALIZ(TdiffRtave,TimeAve_full,Nr,            CALL TIMEAVE_NORMALIZ(TdiffRtave,TimeAve_full,Nr,
110       &         bi,bj,myThid)       &         bi,bj,myThid)
# Line 142  C       Write to files Line 126  C       Write to files
126  C       _BEGIN_MASTER( myThid )  C       _BEGIN_MASTER( myThid )
127    
128          IF (timeave_mdsio) THEN          IF (timeave_mdsio) THEN
129              
130  C         Set IO "context" for writing state  C         Set IO "context" for writing state
131  #ifdef USE_DFILE  #ifdef USE_DFILE
132            CALL DFILE_SET_RW            CALL DFILE_SET_RW
# Line 168  C         Read IO error counter Line 152  C         Read IO error counter
152            CALL WRITE_FLD_XYZ_RL('VVtave.',suff,VVtave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('VVtave.',suff,VVtave,myIter,myThid)
153            CALL WRITE_FLD_XYZ_RL('UVtave.',suff,UVtave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('UVtave.',suff,UVtave,myIter,myThid)
154  C         CALL WRITE_FLD_XYZ_RL('KEtave.',suff,KEtave,myIter,myThid)  C         CALL WRITE_FLD_XYZ_RL('KEtave.',suff,KEtave,myIter,myThid)
155              
156            IF (useVariableK)            IF (useVariableK)
157       &         CALL WRITE_FLD_XYZ_RL('Tdiftave.',suff,TdiffRtave,       &         CALL WRITE_FLD_XYZ_RL('Tdiftave.',suff,TdiffRtave,
158       &         myIter,myThid)       &         myIter,myThid)
# Line 198  C         CALL WRITE_FLD_XYZ_RL('KEtave. Line 182  C         CALL WRITE_FLD_XYZ_RL('KEtave.
182              CALL WRITE_FLD_XYZ_RL('Convtave.',suff,ConvectCountTave,              CALL WRITE_FLD_XYZ_RL('Convtave.',suff,ConvectCountTave,
183       &           myIter,myThid)       &           myIter,myThid)
184            ENDIF            ENDIF
185              
186  #ifdef NONLIN_FRSURF  #ifdef NONLIN_FRSURF
187            CALL WRITE_FLD_XYZ_RL('hUtave.',suff,hUtave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('hUtave.',suff,hUtave,myIter,myThid)
188            CALL WRITE_FLD_XYZ_RL('hVtave.',suff,hVtave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('hVtave.',suff,hVtave,myIter,myThid)
189  C         CALL WRITE_FLD_XYZ_RL('hFacCtave.',suff,hFacCtave,myIter,myThid)  C         CALL WRITE_FLD_XYZ_RL('hFacCtave.',suff,hFacCtave,myIter,myThid)
190  C         CALL WRITE_FLD_XYZ_RL('hFacWtave.',suff,hFacWtave,myIter,myThid)  C         CALL WRITE_FLD_XYZ_RL('hFacWtave.',suff,hFacWtave,myIter,myThid)
191  C         CALL WRITE_FLD_XYZ_RL('hFacStave.',suff,hFacStave,myIter,myThid)  C         CALL WRITE_FLD_XYZ_RL('hFacStave.',suff,hFacStave,myIter,myThid)
192  #endif /* NONLIN_FRSURF */  #endif /* NONLIN_FRSURF */
193              
194  C         Reread IO error counter  C         Reread IO error counter
195            endIOErrCount = IO_ERRCOUNT(myThid)            endIOErrCount = IO_ERRCOUNT(myThid)
196    
# Line 219  C         Check for IO errors Line 203  C         Check for IO errors
203              WRITE(msgBuf,'(A,I10)') 'Timestep ',myIter              WRITE(msgBuf,'(A,I10)') 'Timestep ',myIter
204              CALL PRINT_ERROR( msgBuf, 1 )              CALL PRINT_ERROR( msgBuf, 1 )
205            ELSE            ELSE
206              WRITE(msgBuf,'(A,I10)')                WRITE(msgBuf,'(A,I10)')
207       &           '// Time-average data written, t-step', myIter       &           '// Time-average data written, t-step', myIter
208              CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,              CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
209       &           SQUEEZE_RIGHT, 1 )       &           SQUEEZE_RIGHT, 1 )
210              WRITE(msgBuf,'(A)')  ' '              WRITE(msgBuf,'(A)')  ' '
211              CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,              CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
212       &           SQUEEZE_RIGHT, 1 )       &           SQUEEZE_RIGHT, 1 )
213            ENDIF            ENDIF
214              
215          ENDIF          ENDIF
216    
217  #ifdef ALLOW_MNC          #ifdef ALLOW_MNC
218          IF (useMNC .AND. timeave_mnc) THEN          IF (useMNC .AND. timeave_mnc) THEN
219              
220            IF ( writeBinaryPrec .EQ. precFloat64 ) THEN            IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
221              pf(1:1) = 'D'              pf(1:1) = 'D'
222            ELSE            ELSE
# Line 298  C         CALL MNC_CW_RL_W(pf,'tave',0,0 Line 282  C         CALL MNC_CW_RL_W(pf,'tave',0,0
282  C         CALL MNC_CW_RL_W(pf,'tave',0,0,'hFacCtave',hFacCtave,myThid)  C         CALL MNC_CW_RL_W(pf,'tave',0,0,'hFacCtave',hFacCtave,myThid)
283  C         CALL MNC_CW_RL_W(pf,'tave',0,0,'hFacWtave',hFacWtave,myThid)  C         CALL MNC_CW_RL_W(pf,'tave',0,0,'hFacWtave',hFacWtave,myThid)
284  C         CALL MNC_CW_RL_W(pf,'tave',0,0,'hFacStave',hFacStave,myThid)  C         CALL MNC_CW_RL_W(pf,'tave',0,0,'hFacStave',hFacStave,myThid)
285  #endif /* NONLIN_FRSURF */  #endif /* NONLIN_FRSURF */
286    
287          ENDIF          ENDIF
288  #endif /* ALLOW_MNC */  #endif /* ALLOW_MNC */
289    
290  C       _END_MASTER( myThid )  C       _END_MASTER( myThid )
291          _BARRIER          _BARRIER
292            
293          DO bj = myByLo(myThid), myByHi(myThid)          DO bj = myByLo(myThid), myByHi(myThid)
294            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
295                
296  C           Like before the 1rst iteration,  C           Like before the 1rst iteration,
297  C           ==> call TIMEAVE_STATVARS with myIter=nIter0 :  C           ==> call TIMEAVE_STATVARS with myIter=nIter0 :
298  C           1) Reset the averages to zero ;  C           1) Reset the averages to zero ;
299  C           2) Start to cumulate state-variables with Half time step.  C           2) Start to cumulate state-variables with Half time step.
300                
301              CALL TIMEAVE_STATVARS(myTime, nIter0, bi, bj, myThid)              CALL TIMEAVE_STATVARS(myTime, nIter0, bi, bj, myThid)
302                
303            ENDDO            ENDDO
304          ENDDO          ENDDO
305            
306        ENDIF        ENDIF
307          
308  #endif /* ALLOW_TIMEAVE */  #endif /* ALLOW_TIMEAVE */
309    
310        RETURN        RETURN

Legend:
Removed from v.1.36  
changed lines
  Added in v.1.37

  ViewVC Help
Powered by ViewVC 1.1.22