/[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.23 by edhill, Wed Oct 13 04:37:38 2004 UTC revision 1.27 by dimitri, Sun Feb 20 11:46:25 2005 UTC
# Line 50  C     useVariableK :: T when vertical di Line 50  C     useVariableK :: T when vertical di
50        INTEGER beginIOErrCount        INTEGER beginIOErrCount
51        INTEGER endIOErrCount        INTEGER endIOErrCount
52        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
53          INTEGER thisdate(4), prevdate(4)
54          LOGICAL dumpFiles
55    
56  C     Final Time Averages and Dump Files if needed  C     Final Time Averages and Dump Files if needed
57        IF (DIFFERENT_MULTIPLE(taveFreq,myTime,myTime-deltaTClock)) THEN        dumpFiles = .FALSE.
58          IF (DIFFERENT_MULTIPLE(taveFreq,myTime,myTime-deltaTClock))
59         &     dumpFiles = .TRUE.
60    #ifdef ALLOW_CAL
61          IF ( calendarDumps .AND. (
62         &       ( taveFreq.GE. 2592000 .AND. taveFreq.LE. 2678400 ) .OR.
63         &       ( taveFreq.GE.31104000 .AND. taveFreq.LE.31968000 ))) THEN
64    C--   Convert approximate months (30-31 days) and years (360-372 days)
65    C     to exact calendar months and years.
66    C-    First determine calendar dates for this and previous time step.
67             call cal_GetDate( myiter  ,mytime            ,thisdate,mythid )
68             call cal_GetDate( myiter-1,mytime-deltaTClock,prevdate,mythid )
69             dumpFiles = .FALSE.
70    C-    Monthly taveFreq:
71             IF( taveFreq.GE. 2592000 .AND. taveFreq.LE. 2678400 .AND.
72         &        (thisdate(1)-prevdate(1)).GT.50   ) dumpFiles = .TRUE.
73    C-    Yearly  taveFreq:
74             IF( taveFreq.GE.31104000 .AND. taveFreq.LE.31968000 .AND.
75         &        (thisdate(1)-prevdate(1)).GT.5000 ) dumpFiles = .TRUE.
76          ENDIF
77    #endif
78    
79          IF (dumpFiles) THEN
80          useVariableK = useKPP .OR. usePP81 .OR. useMY82 .OR. useGGL90          useVariableK = useKPP .OR. usePP81 .OR. useMY82 .OR. useGGL90
81       &      .OR. useGMredi .OR. ivdc_kappa.NE.0.       &      .OR. useGMredi .OR. ivdc_kappa.NE.0.
82          WRITE(suff,'(I10.10)') myIter          WRITE(suff,'(I10.10)') myIter
# Line 72  C         Normalize by integrated time Line 95  C         Normalize by integrated time
95            CALL TIMEAVE_NORMALIZ(uVeltave, TimeAve_half,Nr,bi,bj,myThid)            CALL TIMEAVE_NORMALIZ(uVeltave, TimeAve_half,Nr,bi,bj,myThid)
96            CALL TIMEAVE_NORMALIZ(vVeltave, TimeAve_half,Nr,bi,bj,myThid)            CALL TIMEAVE_NORMALIZ(vVeltave, TimeAve_half,Nr,bi,bj,myThid)
97            CALL TIMEAVE_NORMALIZ(wVeltave, TimeAve_half,Nr,bi,bj,myThid)            CALL TIMEAVE_NORMALIZ(wVeltave, TimeAve_half,Nr,bi,bj,myThid)
98              CALL TIMEAVE_NORMALIZ(phiHydLowtave,TimeAve_full,1,
99         &         bi,bj,myThid)
100    #ifndef MINIMAL_TAVE_OUTPUT
101            CALL TIMEAVE_NORMALIZ(UTtave,   TimeAve_half,Nr,bi,bj,myThid)            CALL TIMEAVE_NORMALIZ(UTtave,   TimeAve_half,Nr,bi,bj,myThid)
102            CALL TIMEAVE_NORMALIZ(VTtave,   TimeAve_half,Nr,bi,bj,myThid)            CALL TIMEAVE_NORMALIZ(VTtave,   TimeAve_half,Nr,bi,bj,myThid)
103            CALL TIMEAVE_NORMALIZ(WTtave,   TimeAve_half,Nr,bi,bj,myThid)            CALL TIMEAVE_NORMALIZ(WTtave,   TimeAve_half,Nr,bi,bj,myThid)
104            CALL TIMEAVE_NORMALIZ(UStave,   TimeAve_half,Nr,bi,bj,myThid)            CALL TIMEAVE_NORMALIZ(UStave,   TimeAve_half,Nr,bi,bj,myThid)
105            CALL TIMEAVE_NORMALIZ(VStave,   TimeAve_half,Nr,bi,bj,myThid)            CALL TIMEAVE_NORMALIZ(VStave,   TimeAve_half,Nr,bi,bj,myThid)
106            CALL TIMEAVE_NORMALIZ(WStave,   TimeAve_half,Nr,bi,bj,myThid)            CALL TIMEAVE_NORMALIZ(WStave,   TimeAve_half,Nr,bi,bj,myThid)
 #ifndef HRCUBE  
107            CALL TIMEAVE_NORMALIZ(Eta2tave, TimeAve_half,1 ,bi,bj,myThid)            CALL TIMEAVE_NORMALIZ(Eta2tave, TimeAve_half,1 ,bi,bj,myThid)
108            CALL TIMEAVE_NORMALIZ(TTtave,   TimeAve_half,Nr,bi,bj,myThid)            CALL TIMEAVE_NORMALIZ(TTtave,   TimeAve_half,Nr,bi,bj,myThid)
109            CALL TIMEAVE_NORMALIZ(UUtave,   TimeAve_half,Nr,bi,bj,myThid)            CALL TIMEAVE_NORMALIZ(UUtave,   TimeAve_half,Nr,bi,bj,myThid)
# Line 102  C         CALL TIMEAVE_NORMALIZ(hFacStav Line 127  C         CALL TIMEAVE_NORMALIZ(hFacStav
127  #endif  #endif
128            CALL TIMEAVE_NORMALIZ(phiHydtave,TimeAve_full,Nr,            CALL TIMEAVE_NORMALIZ(phiHydtave,TimeAve_full,Nr,
129       &         bi,bj,myThid)       &         bi,bj,myThid)
           CALL TIMEAVE_NORMALIZ(phiHydLowtave,TimeAve_full,1,  
      &         bi,bj,myThid)  
130            CALL TIMEAVE_NORMALIZ(phiHydLow2Tave,TimeAve_full,1,            CALL TIMEAVE_NORMALIZ(phiHydLow2Tave,TimeAve_full,1,
131       &         bi,bj,myThid)       &         bi,bj,myThid)
132            CALL TIMEAVE_NORMALIZ(ConvectCountTave,TimeAve_full,Nr,            CALL TIMEAVE_NORMALIZ(ConvectCountTave,TimeAve_full,Nr,
133       &         bi,bj,myThid)       &         bi,bj,myThid)
134  #endif /* ndef HRCUBE */  #endif /* ndef MINIMAL_TAVE_OUTPUT */
135          ENDDO          ENDDO
136          ENDDO          ENDDO
137    
# Line 128  C         Read IO error counter Line 151  C         Read IO error counter
151  c         prevPrec = writeBinaryPrec  c         prevPrec = writeBinaryPrec
152  c         writeBinaryPrec = precFloat32  c         writeBinaryPrec = precFloat32
153            CALL WRITE_FLD_XY_RL('ETAtave.' ,suff,etatave  ,myIter,myThid)            CALL WRITE_FLD_XY_RL('ETAtave.' ,suff,etatave  ,myIter,myThid)
 #ifndef HRCUBE  
           CALL WRITE_FLD_XY_RL('Eta2tave.',suff,Eta2tave ,myIter,myThid)  
 #endif /* ndef HRCUBE */  
   
154            CALL WRITE_FLD_XYZ_RL('Ttave.',suff,thetatave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('Ttave.',suff,thetatave,myIter,myThid)
155            CALL WRITE_FLD_XYZ_RL('Stave.',suff,salttave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('Stave.',suff,salttave,myIter,myThid)
156            CALL WRITE_FLD_XYZ_RL('uVeltave.',suff,uVeltave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('uVeltave.',suff,uVeltave,myIter,myThid)
157            CALL WRITE_FLD_XYZ_RL('vVeltave.',suff,vVeltave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('vVeltave.',suff,vVeltave,myIter,myThid)
158            CALL WRITE_FLD_XYZ_RL('wVeltave.',suff,wVeltave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('wVeltave.',suff,wVeltave,myIter,myThid)
159    #ifndef MINIMAL_TAVE_OUTPUT
160              CALL WRITE_FLD_XY_RL('Eta2tave.',suff,Eta2tave ,myIter,myThid)
161            CALL WRITE_FLD_XYZ_RL('UTtave.',suff,UTtave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('UTtave.',suff,UTtave,myIter,myThid)
162            CALL WRITE_FLD_XYZ_RL('VTtave.',suff,VTtave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('VTtave.',suff,VTtave,myIter,myThid)
163            CALL WRITE_FLD_XYZ_RL('WTtave.',suff,WTtave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('WTtave.',suff,WTtave,myIter,myThid)
164            CALL WRITE_FLD_XYZ_RL('UStave.',suff,UStave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('UStave.',suff,UStave,myIter,myThid)
165            CALL WRITE_FLD_XYZ_RL('VStave.',suff,VStave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('VStave.',suff,VStave,myIter,myThid)
166            CALL WRITE_FLD_XYZ_RL('WStave.',suff,WStave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('WStave.',suff,WStave,myIter,myThid)
 #ifndef HRCUBE  
167            CALL WRITE_FLD_XYZ_RL('TTtave.',suff,TTtave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('TTtave.',suff,TTtave,myIter,myThid)
168            CALL WRITE_FLD_XYZ_RL('UUtave.',suff,UUtave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('UUtave.',suff,UUtave,myIter,myThid)
169            CALL WRITE_FLD_XYZ_RL('VVtave.',suff,VVtave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('VVtave.',suff,VVtave,myIter,myThid)
# Line 163  C         CALL WRITE_FLD_XYZ_RL('KEtave. Line 183  C         CALL WRITE_FLD_XYZ_RL('KEtave.
183  #endif /* ALLOW_MOM_VECINV */  #endif /* ALLOW_MOM_VECINV */
184            CALL WRITE_FLD_XYZ_RL('PhHytave.',suff,phiHydtave,            CALL WRITE_FLD_XYZ_RL('PhHytave.',suff,phiHydtave,
185       &         myIter,myThid)       &         myIter,myThid)
186  #endif /* ndef HRCUBE */  #endif /* ndef MINIMAL_TAVE_OUTPUT */
187            IF ( buoyancyRelation(1:7) .EQ. 'OCEANIC' ) THEN            IF ( fluidIsWater ) THEN
 #ifndef HRCUBE  
188              CALL WRITE_FLD_XY_RL('PHLtave.',suff,phiHydLowtave,              CALL WRITE_FLD_XY_RL('PHLtave.',suff,phiHydLowtave,
189       &           myIter,myThid)       &           myIter,myThid)
             CALL WRITE_FLD_XY_RL('PHL2tave.',suff,phiHydLow2tave,  
      &           myIter,myThid)  
             CALL WRITE_FLD_XYZ_RL('Convtave.',suff,ConvectCountTave,  
      &           myIter,myThid)  
 #endif /* ndef HRCUBE */  
190              CALL WRITE_FLD_XY_RL('uFluxtave.',suff,uFluxtave,              CALL WRITE_FLD_XY_RL('uFluxtave.',suff,uFluxtave,
191       &           myIter,myThid)       &           myIter,myThid)
192              CALL WRITE_FLD_XY_RL('vFluxtave.',suff,vFluxtave,              CALL WRITE_FLD_XY_RL('vFluxtave.',suff,vFluxtave,
# Line 181  C         CALL WRITE_FLD_XYZ_RL('KEtave. Line 195  C         CALL WRITE_FLD_XYZ_RL('KEtave.
195       &           myIter,myThid)       &           myIter,myThid)
196              CALL WRITE_FLD_XY_RL('sFluxtave.',suff,sFluxtave,              CALL WRITE_FLD_XY_RL('sFluxtave.',suff,sFluxtave,
197       &           myIter,myThid)       &           myIter,myThid)
198    #ifndef MINIMAL_TAVE_OUTPUT
199                CALL WRITE_FLD_XY_RL('PHL2tave.',suff,phiHydLow2tave,
200         &           myIter,myThid)
201                CALL WRITE_FLD_XYZ_RL('Convtave.',suff,ConvectCountTave,
202         &           myIter,myThid)
203    #endif /* ndef MINIMAL_TAVE_OUTPUT */
204            ENDIF            ENDIF
205                        
206  #ifndef HRCUBE  #ifndef MINIMAL_TAVE_OUTPUT
207  #ifdef NONLIN_FRSURF  #ifdef NONLIN_FRSURF
208            CALL WRITE_FLD_XYZ_RL('hUtave.',suff,hUtave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('hUtave.',suff,hUtave,myIter,myThid)
209            CALL WRITE_FLD_XYZ_RL('hVtave.',suff,hVtave,myIter,myThid)            CALL WRITE_FLD_XYZ_RL('hVtave.',suff,hVtave,myIter,myThid)
# Line 191  C         CALL WRITE_FLD_XYZ_RL('hFacCta Line 211  C         CALL WRITE_FLD_XYZ_RL('hFacCta
211  C         CALL WRITE_FLD_XYZ_RL('hFacWtave.',suff,hFacWtave,myIter,myThid)  C         CALL WRITE_FLD_XYZ_RL('hFacWtave.',suff,hFacWtave,myIter,myThid)
212  C         CALL WRITE_FLD_XYZ_RL('hFacStave.',suff,hFacStave,myIter,myThid)  C         CALL WRITE_FLD_XYZ_RL('hFacStave.',suff,hFacStave,myIter,myThid)
213  #endif /* NONLIN_FRSURF */  #endif /* NONLIN_FRSURF */
214  #endif /* ndef HRCUBE */  #endif /* ndef MINIMAL_TAVE_OUTPUT */
215                        
216  C         writeBinaryPrec = prevPrec  C         writeBinaryPrec = prevPrec
217  C         Reread IO error counter  C         Reread IO error counter
# Line 221  C         Check for IO errors Line 241  C         Check for IO errors
241          IF (useMNC .AND. timeave_mnc) THEN          IF (useMNC .AND. timeave_mnc) THEN
242                        
243            CALL MNC_CW_SET_UDIM('tave', -1, myThid)            CALL MNC_CW_SET_UDIM('tave', -1, myThid)
244            CALL MNC_CW_I_W_S('I','tave',0,0,'iter', myIter, myThid)            CALL MNC_CW_I_W_S('I','tave',0,0,'T', myIter, myThid)
245            CALL MNC_CW_SET_UDIM('tave', 0, myThid)            CALL MNC_CW_SET_UDIM('tave', 0, myThid)
246            CALL MNC_CW_RL_W_S('D','tave',0,0,'model_time',myTime,myThid)            CALL MNC_CW_RL_W_S('D','tave',0,0,'model_time',myTime,myThid)
247            CALL MNC_CW_RL_W('D','tave',0,0,'ETAtave',etatave,myThid)            CALL MNC_CW_RL_W('D','tave',0,0,'ETAtave',etatave,myThid)
248  #ifndef HRCUBE  C         EH3: something is wrong here...
 C         EH3: something is wriong here...  
249  C         CALL MNC_CW_RL_W('D','tave',0,0,'Eta2tave',Eta2tave,myThid)  C         CALL MNC_CW_RL_W('D','tave',0,0,'Eta2tave',Eta2tave,myThid)
 #endif /* ndef HRCUBE */  
250            CALL MNC_CW_RL_W('D','tave',0,0,'Ttave',thetatave,myThid)            CALL MNC_CW_RL_W('D','tave',0,0,'Ttave',thetatave,myThid)
251            CALL MNC_CW_RL_W('D','tave',0,0,'Stave',salttave,myThid)            CALL MNC_CW_RL_W('D','tave',0,0,'Stave',salttave,myThid)
252            CALL MNC_CW_RL_W('D','tave',0,0,'uVeltave',uVeltave,myThid)            CALL MNC_CW_RL_W('D','tave',0,0,'uVeltave',uVeltave,myThid)
# Line 240  C         CALL MNC_CW_RL_W('D','tave',0, Line 258  C         CALL MNC_CW_RL_W('D','tave',0,
258            CALL MNC_CW_RL_W('D','tave',0,0,'UStave',UStave,myThid)            CALL MNC_CW_RL_W('D','tave',0,0,'UStave',UStave,myThid)
259            CALL MNC_CW_RL_W('D','tave',0,0,'VStave',VStave,myThid)            CALL MNC_CW_RL_W('D','tave',0,0,'VStave',VStave,myThid)
260            CALL MNC_CW_RL_W('D','tave',0,0,'WStave',WStave,myThid)            CALL MNC_CW_RL_W('D','tave',0,0,'WStave',WStave,myThid)
 #ifndef HRCUBE  
261            CALL MNC_CW_RL_W('D','tave',0,0,'TTtave',TTtave,myThid)            CALL MNC_CW_RL_W('D','tave',0,0,'TTtave',TTtave,myThid)
262            CALL MNC_CW_RL_W('D','tave',0,0,'UUtave',UUtave,myThid)            CALL MNC_CW_RL_W('D','tave',0,0,'UUtave',UUtave,myThid)
263            CALL MNC_CW_RL_W('D','tave',0,0,'VVtave',VVtave,myThid)            CALL MNC_CW_RL_W('D','tave',0,0,'VVtave',VVtave,myThid)
# Line 258  C         CALL MNC_CW_RL_W('D','tave',0, Line 275  C         CALL MNC_CW_RL_W('D','tave',0,
275  #endif /* ALLOW_MOM_VECINV */  #endif /* ALLOW_MOM_VECINV */
276            CALL MNC_CW_RL_W('D','tave',0,0,'PhHytave',            CALL MNC_CW_RL_W('D','tave',0,0,'PhHytave',
277       &         phiHydtave,myThid)       &         phiHydtave,myThid)
278  #endif /* ndef HRCUBE */            IF ( fluidIsWater ) THEN
           IF ( buoyancyRelation(1:7) .EQ. 'OCEANIC' ) THEN  
 #ifndef HRCUBE  
279              CALL MNC_CW_RL_W('D','tave',0,0,'PHLtave',              CALL MNC_CW_RL_W('D','tave',0,0,'PHLtave',
280       &           phiHydLowtave,myThid)       &           phiHydLowtave,myThid)
281              CALL MNC_CW_RL_W('D','tave',0,0,'PHL2tave',              CALL MNC_CW_RL_W('D','tave',0,0,'PHL2tave',
282       &           phiHydLow2tave,myThid)       &           phiHydLow2tave,myThid)
283              CALL MNC_CW_RL_W('D','tave',0,0,'Convtave',              CALL MNC_CW_RL_W('D','tave',0,0,'Convtave',
284       &           ConvectCountTave,myThid)       &           ConvectCountTave,myThid)
 #endif /* ndef HRCUBE */  
285              CALL MNC_CW_RL_W('D','tave',0,0,'uFluxtave',              CALL MNC_CW_RL_W('D','tave',0,0,'uFluxtave',
286       &           uFluxtave,myThid)       &           uFluxtave,myThid)
287              CALL MNC_CW_RL_W('D','tave',0,0,'vFluxtave',              CALL MNC_CW_RL_W('D','tave',0,0,'vFluxtave',
# Line 278  C         CALL MNC_CW_RL_W('D','tave',0, Line 292  C         CALL MNC_CW_RL_W('D','tave',0,
292       &           sFluxtave,myThid)       &           sFluxtave,myThid)
293            ENDIF            ENDIF
294    
 #ifndef HRCUBE  
295  #ifdef NONLIN_FRSURF  #ifdef NONLIN_FRSURF
296            CALL MNC_CW_RL_W('D','tave',0,0,'hUtave',hUtave,myThid)            CALL MNC_CW_RL_W('D','tave',0,0,'hUtave',hUtave,myThid)
297            CALL MNC_CW_RL_W('D','tave',0,0,'hVtave',hVtave,myThid)            CALL MNC_CW_RL_W('D','tave',0,0,'hVtave',hVtave,myThid)
# Line 286  C         CALL MNC_CW_RL_W('D','tave',0, Line 299  C         CALL MNC_CW_RL_W('D','tave',0,
299  C         CALL MNC_CW_RL_W('D','tave',0,0,'hFacWtave',hFacWtave,myThid)  C         CALL MNC_CW_RL_W('D','tave',0,0,'hFacWtave',hFacWtave,myThid)
300  C         CALL MNC_CW_RL_W('D','tave',0,0,'hFacStave',hFacStave,myThid)  C         CALL MNC_CW_RL_W('D','tave',0,0,'hFacStave',hFacStave,myThid)
301  #endif /* NONLIN_FRSURF */  #endif /* NONLIN_FRSURF */
 #endif /* ndef HRCUBE */  
302    
303          ENDIF          ENDIF
304  #endif /* ALLOW_MNC */  #endif /* ALLOW_MNC */

Legend:
Removed from v.1.23  
changed lines
  Added in v.1.27

  ViewVC Help
Powered by ViewVC 1.1.22