44 |
C TimeAve :: total time over average |
C TimeAve :: total time over average |
45 |
C useVariableK :: T when vertical diffusion is not constant |
C useVariableK :: T when vertical diffusion is not constant |
46 |
LOGICAL useVariableK |
LOGICAL useVariableK |
|
INTEGER prevPrec |
|
47 |
CHARACTER*(MAX_LEN_FNAM) suff |
CHARACTER*(MAX_LEN_FNAM) suff |
48 |
INTEGER bi,bj,k |
INTEGER bi,bj |
49 |
INTEGER beginIOErrCount |
INTEGER beginIOErrCount |
50 |
INTEGER endIOErrCount |
INTEGER endIOErrCount |
51 |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
|
INTEGER thisdate(4), prevdate(4) |
|
52 |
LOGICAL dumpFiles |
LOGICAL dumpFiles |
53 |
|
#ifdef ALLOW_MNC |
54 |
|
CHARACTER*(1) pf |
55 |
|
#endif |
56 |
|
#ifdef ALLOW_CAL |
57 |
|
INTEGER thisdate(4), prevdate(4) |
58 |
|
#endif |
59 |
|
|
60 |
C Final Time Averages and Dump Files if needed |
C Final Time Averages and Dump Files if needed |
61 |
dumpFiles = .FALSE. |
dumpFiles = .FALSE. |
62 |
IF ( DIFFERENT_MULTIPLE(taveFreq,myTime,deltaTClock) ) |
IF ( DIFFERENT_MULTIPLE(taveFreq,myTime,deltaTClock) ) |
101 |
CALL TIMEAVE_NORMALIZ(wVeltave, TimeAve_half,Nr,bi,bj,myThid) |
CALL TIMEAVE_NORMALIZ(wVeltave, TimeAve_half,Nr,bi,bj,myThid) |
102 |
CALL TIMEAVE_NORMALIZ(phiHydLowtave,TimeAve_full,1, |
CALL TIMEAVE_NORMALIZ(phiHydLowtave,TimeAve_full,1, |
103 |
& bi,bj,myThid) |
& bi,bj,myThid) |
|
#ifndef MINIMAL_TAVE_OUTPUT |
|
104 |
CALL TIMEAVE_NORMALIZ(UTtave, TimeAve_half,Nr,bi,bj,myThid) |
CALL TIMEAVE_NORMALIZ(UTtave, TimeAve_half,Nr,bi,bj,myThid) |
105 |
CALL TIMEAVE_NORMALIZ(VTtave, TimeAve_half,Nr,bi,bj,myThid) |
CALL TIMEAVE_NORMALIZ(VTtave, TimeAve_half,Nr,bi,bj,myThid) |
106 |
CALL TIMEAVE_NORMALIZ(WTtave, TimeAve_half,Nr,bi,bj,myThid) |
CALL TIMEAVE_NORMALIZ(WTtave, TimeAve_half,Nr,bi,bj,myThid) |
134 |
& bi,bj,myThid) |
& bi,bj,myThid) |
135 |
CALL TIMEAVE_NORMALIZ(ConvectCountTave,TimeAve_full,Nr, |
CALL TIMEAVE_NORMALIZ(ConvectCountTave,TimeAve_full,Nr, |
136 |
& bi,bj,myThid) |
& bi,bj,myThid) |
|
#endif /* ndef MINIMAL_TAVE_OUTPUT */ |
|
137 |
ENDDO |
ENDDO |
138 |
ENDDO |
ENDDO |
139 |
|
|
150 |
#endif |
#endif |
151 |
C Read IO error counter |
C Read IO error counter |
152 |
beginIOErrCount = IO_ERRCOUNT(myThid) |
beginIOErrCount = IO_ERRCOUNT(myThid) |
|
c prevPrec = writeBinaryPrec |
|
|
c writeBinaryPrec = precFloat32 |
|
153 |
CALL WRITE_FLD_XY_RL('ETAtave.' ,suff,etatave ,myIter,myThid) |
CALL WRITE_FLD_XY_RL('ETAtave.' ,suff,etatave ,myIter,myThid) |
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) |
|
#ifndef MINIMAL_TAVE_OUTPUT |
|
159 |
CALL WRITE_FLD_XY_RL('Eta2tave.',suff,Eta2tave ,myIter,myThid) |
CALL WRITE_FLD_XY_RL('Eta2tave.',suff,Eta2tave ,myIter,myThid) |
160 |
CALL WRITE_FLD_XYZ_RL('UTtave.',suff,UTtave,myIter,myThid) |
CALL WRITE_FLD_XYZ_RL('UTtave.',suff,UTtave,myIter,myThid) |
161 |
CALL WRITE_FLD_XYZ_RL('VTtave.',suff,VTtave,myIter,myThid) |
CALL WRITE_FLD_XYZ_RL('VTtave.',suff,VTtave,myIter,myThid) |
182 |
#endif /* ALLOW_MOM_VECINV */ |
#endif /* ALLOW_MOM_VECINV */ |
183 |
CALL WRITE_FLD_XYZ_RL('PhHytave.',suff,phiHydtave, |
CALL WRITE_FLD_XYZ_RL('PhHytave.',suff,phiHydtave, |
184 |
& myIter,myThid) |
& myIter,myThid) |
|
#endif /* ndef MINIMAL_TAVE_OUTPUT */ |
|
185 |
IF ( fluidIsWater ) THEN |
IF ( fluidIsWater ) THEN |
186 |
CALL WRITE_FLD_XY_RL('PHLtave.',suff,phiHydLowtave, |
CALL WRITE_FLD_XY_RL('PHLtave.',suff,phiHydLowtave, |
187 |
& myIter,myThid) |
& myIter,myThid) |
193 |
& myIter,myThid) |
& myIter,myThid) |
194 |
CALL WRITE_FLD_XY_RL('sFluxtave.',suff,sFluxtave, |
CALL WRITE_FLD_XY_RL('sFluxtave.',suff,sFluxtave, |
195 |
& myIter,myThid) |
& myIter,myThid) |
|
#ifndef MINIMAL_TAVE_OUTPUT |
|
196 |
CALL WRITE_FLD_XY_RL('PHL2tave.',suff,phiHydLow2tave, |
CALL WRITE_FLD_XY_RL('PHL2tave.',suff,phiHydLow2tave, |
197 |
& myIter,myThid) |
& myIter,myThid) |
198 |
CALL WRITE_FLD_XYZ_RL('Convtave.',suff,ConvectCountTave, |
CALL WRITE_FLD_XYZ_RL('Convtave.',suff,ConvectCountTave, |
199 |
& myIter,myThid) |
& myIter,myThid) |
|
#endif /* ndef MINIMAL_TAVE_OUTPUT */ |
|
200 |
ENDIF |
ENDIF |
201 |
|
|
|
#ifndef MINIMAL_TAVE_OUTPUT |
|
202 |
#ifdef NONLIN_FRSURF |
#ifdef NONLIN_FRSURF |
203 |
CALL WRITE_FLD_XYZ_RL('hUtave.',suff,hUtave,myIter,myThid) |
CALL WRITE_FLD_XYZ_RL('hUtave.',suff,hUtave,myIter,myThid) |
204 |
CALL WRITE_FLD_XYZ_RL('hVtave.',suff,hVtave,myIter,myThid) |
CALL WRITE_FLD_XYZ_RL('hVtave.',suff,hVtave,myIter,myThid) |
206 |
C CALL WRITE_FLD_XYZ_RL('hFacWtave.',suff,hFacWtave,myIter,myThid) |
C CALL WRITE_FLD_XYZ_RL('hFacWtave.',suff,hFacWtave,myIter,myThid) |
207 |
C CALL WRITE_FLD_XYZ_RL('hFacStave.',suff,hFacStave,myIter,myThid) |
C CALL WRITE_FLD_XYZ_RL('hFacStave.',suff,hFacStave,myIter,myThid) |
208 |
#endif /* NONLIN_FRSURF */ |
#endif /* NONLIN_FRSURF */ |
|
#endif /* ndef MINIMAL_TAVE_OUTPUT */ |
|
209 |
|
|
|
C writeBinaryPrec = prevPrec |
|
210 |
C Reread IO error counter |
C Reread IO error counter |
211 |
endIOErrCount = IO_ERRCOUNT(myThid) |
endIOErrCount = IO_ERRCOUNT(myThid) |
212 |
|
|
233 |
#ifdef ALLOW_MNC |
#ifdef ALLOW_MNC |
234 |
IF (useMNC .AND. timeave_mnc) THEN |
IF (useMNC .AND. timeave_mnc) THEN |
235 |
|
|
236 |
|
IF ( writeBinaryPrec .EQ. precFloat64 ) THEN |
237 |
|
pf(1:1) = 'D' |
238 |
|
ELSE |
239 |
|
pf(1:1) = 'R' |
240 |
|
ENDIF |
241 |
|
|
242 |
CALL MNC_CW_SET_UDIM('tave', -1, myThid) |
CALL MNC_CW_SET_UDIM('tave', -1, myThid) |
243 |
CALL MNC_CW_RL_W_S('D','tave',0,0,'T', myTime, myThid) |
CALL MNC_CW_RL_W_S('D','tave',0,0,'T', myTime, myThid) |
244 |
CALL MNC_CW_SET_UDIM('tave', 0, myThid) |
CALL MNC_CW_SET_UDIM('tave', 0, myThid) |
245 |
CALL MNC_CW_I_W_S('I','tave',0,0,'iter', myIter, myThid) |
CALL MNC_CW_I_W_S('I','tave',0,0,'iter', myIter, myThid) |
246 |
CALL MNC_CW_RL_W_S('D','tave',0,0,'model_time',myTime,myThid) |
C 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(pf,'tave',0,0,'ETAtave',etatave,myThid) |
248 |
C EH3: something is wrong here... |
C EH3: something is wrong here... |
249 |
C CALL MNC_CW_RL_W('D','tave',0,0,'Eta2tave',Eta2tave,myThid) |
C CALL MNC_CW_RL_W(pf,'tave',0,0,'Eta2tave',Eta2tave,myThid) |
250 |
CALL MNC_CW_RL_W('D','tave',0,0,'Ttave',thetatave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'Ttave',thetatave,myThid) |
251 |
CALL MNC_CW_RL_W('D','tave',0,0,'Stave',salttave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'Stave',salttave,myThid) |
252 |
CALL MNC_CW_RL_W('D','tave',0,0,'uVeltave',uVeltave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'uVeltave',uVeltave,myThid) |
253 |
CALL MNC_CW_RL_W('D','tave',0,0,'vVeltave',vVeltave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'vVeltave',vVeltave,myThid) |
254 |
CALL MNC_CW_RL_W('D','tave',0,0,'wVeltave',wVeltave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'wVeltave',wVeltave,myThid) |
255 |
CALL MNC_CW_RL_W('D','tave',0,0,'UTtave',UTtave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'UTtave',UTtave,myThid) |
256 |
CALL MNC_CW_RL_W('D','tave',0,0,'VTtave',VTtave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'VTtave',VTtave,myThid) |
257 |
CALL MNC_CW_RL_W('D','tave',0,0,'WTtave',WTtave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'WTtave',WTtave,myThid) |
258 |
CALL MNC_CW_RL_W('D','tave',0,0,'UStave',UStave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'UStave',UStave,myThid) |
259 |
CALL MNC_CW_RL_W('D','tave',0,0,'VStave',VStave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'VStave',VStave,myThid) |
260 |
CALL MNC_CW_RL_W('D','tave',0,0,'WStave',WStave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'WStave',WStave,myThid) |
261 |
CALL MNC_CW_RL_W('D','tave',0,0,'TTtave',TTtave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'TTtave',TTtave,myThid) |
262 |
CALL MNC_CW_RL_W('D','tave',0,0,'UUtave',UUtave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'UUtave',UUtave,myThid) |
263 |
CALL MNC_CW_RL_W('D','tave',0,0,'VVtave',VVtave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'VVtave',VVtave,myThid) |
264 |
CALL MNC_CW_RL_W('D','tave',0,0,'UVtave',UVtave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'UVtave',UVtave,myThid) |
265 |
C CALL MNC_CW_RL_W('D','tave',0,0,'KEtave',KEtave,myThid) |
C CALL MNC_CW_RL_W(pf,'tave',0,0,'KEtave',KEtave,myThid) |
266 |
IF (useVariableK) THEN |
IF (useVariableK) THEN |
267 |
CALL MNC_CW_RL_W('D','tave',0,0,'Tdiftave', |
CALL MNC_CW_RL_W(pf,'tave',0,0,'Tdiftave', |
268 |
& TdiffRtave,myThid) |
& TdiffRtave,myThid) |
269 |
ENDIF |
ENDIF |
270 |
#ifdef ALLOW_MOM_VECINV |
#ifdef ALLOW_MOM_VECINV |
271 |
IF (vectorInvariantMomentum) THEN |
IF (vectorInvariantMomentum) THEN |
272 |
CALL MNC_CW_RL_W('D','tave',0,0,'uZtave',uZetatave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'uZtave',uZetatave,myThid) |
273 |
CALL MNC_CW_RL_W('D','tave',0,0,'vZtave',vZetatave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'vZtave',vZetatave,myThid) |
274 |
ENDIF |
ENDIF |
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(pf,'tave',0,0,'PhHytave', |
277 |
& phiHydtave,myThid) |
& phiHydtave,myThid) |
278 |
IF ( fluidIsWater ) THEN |
IF ( fluidIsWater ) THEN |
279 |
CALL MNC_CW_RL_W('D','tave',0,0,'PHLtave', |
CALL MNC_CW_RL_W(pf,'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(pf,'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(pf,'tave',0,0,'Convtave', |
284 |
& ConvectCountTave,myThid) |
& ConvectCountTave,myThid) |
285 |
CALL MNC_CW_RL_W('D','tave',0,0,'uFluxtave', |
CALL MNC_CW_RL_W(pf,'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(pf,'tave',0,0,'vFluxtave', |
288 |
& vFluxtave,myThid) |
& vFluxtave,myThid) |
289 |
CALL MNC_CW_RL_W('D','tave',0,0,'tFluxtave', |
CALL MNC_CW_RL_W(pf,'tave',0,0,'tFluxtave', |
290 |
& tFluxtave,myThid) |
& tFluxtave,myThid) |
291 |
CALL MNC_CW_RL_W('D','tave',0,0,'sFluxtave', |
CALL MNC_CW_RL_W(pf,'tave',0,0,'sFluxtave', |
292 |
& sFluxtave,myThid) |
& sFluxtave,myThid) |
293 |
ENDIF |
ENDIF |
294 |
|
|
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(pf,'tave',0,0,'hUtave',hUtave,myThid) |
297 |
CALL MNC_CW_RL_W('D','tave',0,0,'hVtave',hVtave,myThid) |
CALL MNC_CW_RL_W(pf,'tave',0,0,'hVtave',hVtave,myThid) |
298 |
C CALL MNC_CW_RL_W('D','tave',0,0,'hFacCtave',hFacCtave,myThid) |
C CALL MNC_CW_RL_W(pf,'tave',0,0,'hFacCtave',hFacCtave,myThid) |
299 |
C CALL MNC_CW_RL_W('D','tave',0,0,'hFacWtave',hFacWtave,myThid) |
C CALL MNC_CW_RL_W(pf,'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(pf,'tave',0,0,'hFacStave',hFacStave,myThid) |
301 |
#endif /* NONLIN_FRSURF */ |
#endif /* NONLIN_FRSURF */ |
302 |
|
|
303 |
ENDIF |
ENDIF |