/[MITgcm]/MITgcm/diags/src/write_time_averages.F
ViewVC logotype

Contents of /MITgcm/diags/src/write_time_averages.F

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


Revision 1.1 - (show annotations) (download)
Wed Jul 1 19:49:36 1998 UTC (25 years, 11 months ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint11, checkpoint12, checkpoint10
The time-averaging diagnostics has been modified to include
averages of "intermediate" quantities that exist only on a tile.
We currently only time-average K13, K23 and wVel but these
should be usable as a template for other diagnostics.
We have now split off these routines into a separate module
called diags/. Use of these routines is enabled by the
CPP flag ALLOW_DIAGNOSTICS set in model/inc/CPP_OPTIONS.h

1 #include "CPP_EEOPTIONS.h"
2
3 SUBROUTINE WRITE_TIME_AVERAGES(myCurrentTime, myIter, myThid)
4 C /==========================================================\
5 C | SUBROUTINE WRITE_TIME_AVERAGES |
6 C | |
7 C \==========================================================/
8
9 C == Global variables ===
10 #include "SIZE.h"
11 #include "EEPARAMS.h"
12 #include "PARAMS.h"
13 #include "AVER.h"
14 #include "DYNVARS.h"
15
16 LOGICAL DIFFERENT_MULTIPLE
17 EXTERNAL DIFFERENT_MULTIPLE
18
19 C == Routine arguments ==
20 C myThid - Thread number for this instance of the routine.
21 C myIter - Iteration number
22 C myCurrentTime - Current time of simulation ( s )
23 INTEGER myThid
24 INTEGER myIter
25 REAL myCurrentTime
26 INTEGER prevPrec
27
28 C == Local variables ==
29 C suff - Hold suffix part of a filename
30 C TimeAve - total time over average
31 CHARACTER*(MAX_LEN_FNAM) suff
32 REAL DDTT
33 INTEGER bi,bj,k
34
35 C Final Time Averages and Dump Files if needed
36 IF ( myIter.NE.nIter0 .AND.
37 & DIFFERENT_MULTIPLE(taveFreq,myCurrentTime,myCurrentTime-deltaTClock)
38 & ) THEN
39
40 WRITE(suff,'(I10.10)') myIter
41
42 C Normalize by integrated time
43 DO bj = myByLo(myThid), myByHi(myThid)
44 DO bi = myBxLo(myThid), myBxHi(myThid)
45 DO k=1,Nz
46 CALL TIMEAVER_FINAL_XYZ(thetatave,timeave,bi,bj,K,myThid)
47 CALL TIMEAVER_FINAL_XYZ(salttave,timeave,bi,bj,K,myThid)
48 CALL TIMEAVER_FINAL_XYZ(uVeltave,timeave,bi,bj,K,myThid)
49 CALL TIMEAVER_FINAL_XYZ(vVeltave,timeave,bi,bj,K,myThid)
50 CALL TIMEAVER_FINAL_XYZ(uttave,timeave,bi,bj,K,myThid)
51 CALL TIMEAVER_FINAL_XYZ(vttave,timeave,bi,bj,K,myThid)
52 CALL TIMEAVER_FINAL_XYZ(k13tave,intertimeave,bi,bj,K,myThid)
53 CALL TIMEAVER_FINAL_XYZ(k23tave,intertimeave,bi,bj,K,myThid)
54 CALL TIMEAVER_FINAL_XYZ(wVeltave,intertimeave,bi,bj,K,myThid)
55 ENDDO
56 ENDDO
57 ENDDO
58
59 C Write to files
60 _BARRIER
61 _BEGIN_MASTER( myThid )
62 prevPrec = writeBinaryPrec
63 writeBinaryPrec = precFloat32
64 CALL WRITE_FLD_XYZ_RL('Ttave.',suff,thetatave,myIter,myThid)
65 CALL WRITE_FLD_XYZ_RL('Stave.',suff,salttave,myIter,myThid)
66 CALL WRITE_FLD_XYZ_RL('uVeltave.',suff,uVeltave,myIter,myThid)
67 CALL WRITE_FLD_XYZ_RL('vVeltave.',suff,vVeltave,myIter,myThid)
68 CALL WRITE_FLD_XYZ_RL('UTtave.',suff,uttave,myIter,myThid)
69 CALL WRITE_FLD_XYZ_RL('VTtave.',suff,vttave,myIter,myThid)
70 CALL WRITE_FLD_XYZ_RL('K13tave.',suff,k13tave,myIter,myThid)
71 CALL WRITE_FLD_XYZ_RL('K23tave.',suff,k23tave,myIter,myThid)
72 CALL WRITE_FLD_XYZ_RL('WTtave.',suff,wVeltave,myIter,myThid)
73 writeBinaryPrec = prevPrec
74 _END_MASTER( myThid )
75 _BARRIER
76
77 DO bj = myByLo(myThid), myByHi(myThid)
78 DO bi = myBxLo(myThid), myBxHi(myThid)
79 DO k=1,Nz
80
81 C Reset the averages to zero
82 CALL TIMEAVER_INI_XYZ(thetatave, bi,bj,K,myThid)
83 CALL TIMEAVER_INI_XYZ(salttave, bi,bj,K,myThid)
84 CALL TIMEAVER_INI_XYZ(uVeltave, bi,bj,K,myThid)
85 CALL TIMEAVER_INI_XYZ(vVeltave, bi,bj,K,myThid)
86 CALL TIMEAVER_INI_XYZ(uttave, bi,bj,K,myThid)
87 CALL TIMEAVER_INI_XYZ(vttave, bi,bj,K,myThid)
88 CALL TIMEAVER_INI_XYZ(k13tave, bi,bj,K,myThid)
89 CALL TIMEAVER_INI_XYZ(k23tave, bi,bj,K,myThid)
90 CALL TIMEAVER_INI_XYZ(wVeltave, bi,bj,K,myThid)
91 TimeAve(k,bi,bj)=0.
92 InterTimeAve(k,bi,bj)=0.
93
94 C Time Averages of single fields
95 DDTT=0.5*deltaTclock
96 CALL TIMEAVER_1FLD_XYZ(theta, thetatave, DDTT, bi,bj,K,myThid)
97 CALL TIMEAVER_1FLD_XYZ(salt, salttave, DDTT, bi,bj,K,myThid)
98 CALL TIMEAVER_1FLD_XYZ(uVel, uVeltave, DDTT, bi,bj,K,myThid)
99 CALL TIMEAVER_1FLD_XYZ(vVel, vVeltave, DDTT, bi,bj,K,myThid)
100
101 C Time Averages of "double" fields
102 CALL TIMEAVER_2FLD_XYZ(theta, uVel, uttave, 1, DDTT, bi,bj,K,myThid)
103 CALL TIMEAVER_2FLD_XYZ(theta, vVel, vttave, 2, DDTT, bi,bj,K,myThid)
104
105 C Keep record of how much time has been integrated over
106 TimeAve(k,bi,bj)=TimeAve(k,bi,bj)+DDTT
107
108 ENDDO
109 ENDDO
110 ENDDO
111
112 ENDIF
113
114 RETURN
115 END

  ViewVC Help
Powered by ViewVC 1.1.22