/[MITgcm]/MITgcm/pkg/aim_v23/aim_write_tave.F
ViewVC logotype

Contents of /MITgcm/pkg/aim_v23/aim_write_tave.F

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


Revision 1.14 - (show annotations) (download)
Fri Mar 24 23:31:41 2017 UTC (7 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint66g, checkpoint66f, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, HEAD
Changes since 1.13: +10 -8 lines
use new S/R RW_GET_SUFFIX to get file suffix (according to "rwSuffixType")

1 C $Header: /u/gcmpack/MITgcm/pkg/aim_v23/aim_write_tave.F,v 1.13 2009/12/29 23:02:21 jmc Exp $
2 C $Name: $
3
4 #include "AIM_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: AIM_WRITE_TAVE
8 C !INTERFACE:
9 SUBROUTINE AIM_WRITE_TAVE( myTime, myIter, myThid )
10
11 C !DESCRIPTION:
12 C *==========================================================*
13 C | SUBROUTINE AIM_WRITE_TAVE
14 C | o Write out AIM time-average output
15 C *==========================================================*
16
17 C !USES:
18 IMPLICIT NONE
19
20 C === Global variables ===
21 #include "SIZE.h"
22 #include "EEPARAMS.h"
23 #include "PARAMS.h"
24 #include "AIM_PARAMS.h"
25 #include "AIM_TAVE.h"
26
27 C !INPUT/OUTPUT PARAMETERS:
28 C == Routine arguments ==
29 C myTime :: Current time of simulation ( s )
30 C myIter :: Iteration number
31 C myThid :: Number of this instance of the routine
32 _RL myTime
33 INTEGER myIter
34 INTEGER myThid
35 CEOP
36 #ifdef ALLOW_AIM
37 #ifdef ALLOW_AIM_TAVE
38
39 C !FUNCTIONS:
40 LOGICAL DIFFERENT_MULTIPLE
41 EXTERNAL DIFFERENT_MULTIPLE
42
43 C !LOCAL VARIABLES:
44 C == Local variables ==
45 INTEGER bi, bj
46 CHARACTER*(10) suff
47 CHARACTER*(MAX_LEN_FNAM) fn
48 CHARACTER*(MAX_LEN_MBUF) msgBuf
49 #ifdef ALLOW_MNC
50 CHARACTER*(8) mncfn
51 CHARACTER*(1) pf
52 #endif
53
54 IF (aim_taveFreq.LE.0.) RETURN
55
56 IF ( myIter.EQ.nIter0 ) THEN
57 C Initialize average arrays to zero
58 DO bj = myByLo(myThid), myByHi(myThid)
59 DO bi = myBxLo(myThid), myBxHi(myThid)
60 CALL TIMEAVE_RESET(USTRtave, 1, bi, bj, myThid)
61 CALL TIMEAVE_RESET(VSTRtave, 1, bi, bj, myThid)
62 CALL TIMEAVE_RESET(TSRtave, 1, bi, bj, myThid)
63 CALL TIMEAVE_RESET(OLRtave, 1, bi, bj, myThid)
64 CALL TIMEAVE_RESET(SSRtave, 1, bi, bj, myThid)
65 CALL TIMEAVE_RESET(SLRtave, 1, bi, bj, myThid)
66 CALL TIMEAVE_RESET(SHFtave, 1, bi, bj, myThid)
67 CALL TIMEAVE_RESET(EVAPtave, 1, bi, bj, myThid)
68 CALL TIMEAVE_RESET(PRECNVtave,1, bi, bj, myThid)
69 CALL TIMEAVE_RESET(PRECLStave,1, bi, bj, myThid)
70 CALL TIMEAVE_RESET(CLOUDCtave,1, bi, bj, myThid)
71 CALL TIMEAVE_RESET(CLTOPtave, 1, bi, bj, myThid)
72 CALL TIMEAVE_RESET(CBMFtave, 1, bi, bj, myThid)
73 CALL TIMEAVE_RESET(DRAGtave, 1, bi, bj, myThid)
74 CALL TIMEAVE_RESET(aimV0tave, 1, bi, bj, myThid)
75 CALL TIMEAVE_RESET(aimT0tave, 1, bi, bj, myThid)
76 CALL TIMEAVE_RESET(aimQ0tave, 1, bi, bj, myThid)
77 CALL TIMEAVE_RESET(EnFxPrtave,1, bi, bj, myThid)
78 CALL TIMEAVE_RESET(albedotave,1, bi, bj, myThid)
79 CALL TIMEAVE_RESET(dTsurftave,1, bi, bj, myThid)
80 CALL TIMEAVE_RESET(aimRHtave,Nr, bi, bj, myThid)
81 aim_timeAve(bi,bj) = 0.
82 ENDDO
83 ENDDO
84 ENDIF
85
86 C Dump files and restart average computation if needed
87 IF ( myIter.NE.nIter0 .AND.
88 & DIFFERENT_MULTIPLE(aim_taveFreq,myTime,deltaTClock)
89 & ) THEN
90
91 C Normalize by integrated time
92 DO bj = myByLo(myThid), myByHi(myThid)
93 DO bi = myBxLo(myThid), myBxHi(myThid)
94 CALL TIMEAVE_NORMALIZE(USTRtave, aim_timeAve,1,bi,bj,myThid)
95 CALL TIMEAVE_NORMALIZE(VSTRtave, aim_timeAve,1,bi,bj,myThid)
96 CALL TIMEAVE_NORMALIZE(TSRtave, aim_timeAve,1,bi,bj,myThid)
97 CALL TIMEAVE_NORMALIZE(OLRtave, aim_timeAve,1,bi,bj,myThid)
98 CALL TIMEAVE_NORMALIZE(SSRtave, aim_timeAve,1,bi,bj,myThid)
99 CALL TIMEAVE_NORMALIZE(SLRtave, aim_timeAve,1,bi,bj,myThid)
100 CALL TIMEAVE_NORMALIZE(SHFtave, aim_timeAve,1,bi,bj,myThid)
101 CALL TIMEAVE_NORMALIZE(EVAPtave, aim_timeAve,1,bi,bj,myThid)
102 CALL TIMEAVE_NORMALIZE(PRECNVtave,aim_timeAve,1,bi,bj,myThid)
103 CALL TIMEAVE_NORMALIZE(PRECLStave,aim_timeAve,1,bi,bj,myThid)
104 CALL TIMEAVE_NORMALIZE(CLOUDCtave,aim_timeAve,1,bi,bj,myThid)
105 CALL TIMEAVE_NORMALIZE(CLTOPtave, aim_timeAve,1,bi,bj,myThid)
106 CALL TIMEAVE_NORMALIZE(CBMFtave, aim_timeAve,1,bi,bj,myThid)
107 CALL TIMEAVE_NORMALIZE(DRAGtave, aim_timeAve,1,bi,bj,myThid)
108 CALL TIMEAVE_NORMALIZE(aimV0tave, aim_timeAve,1,bi,bj,myThid)
109 CALL TIMEAVE_NORMALIZE(aimT0tave, aim_timeAve,1,bi,bj,myThid)
110 CALL TIMEAVE_NORMALIZE(aimQ0tave, aim_timeAve,1,bi,bj,myThid)
111 CALL TIMEAVE_NORMALIZE(EnFxPrtave,aim_timeAve,1,bi,bj,myThid)
112 CALL TIMEAVE_NORMALIZE(albedotave,aim_timeAve,1,bi,bj,myThid)
113 CALL TIMEAVE_NORMALIZE(dTsurftave,aim_timeAve,1,bi,bj,myThid)
114
115 CALL TIMEAVE_NORMALIZE(aimRHtave,aim_timeAve,Nr,bi,bj,myThid)
116 ENDDO
117 ENDDO
118
119 #ifdef ALLOW_MNC
120 IF (useMNC .AND. aim_timeave_mnc) THEN
121 _BARRIER
122 c _BEGIN_MASTER( myThid )
123 IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
124 pf(1:1) = 'D'
125 ELSE
126 pf(1:1) = 'R'
127 ENDIF
128 C C 12345678
129 mncfn(1:8) = 'aim_tave'
130 CALL MNC_CW_SET_UDIM(mncfn, -1, myThid)
131 CALL MNC_CW_RL_W_S('D',mncfn,0,0,'T',myTime,myThid)
132 CALL MNC_CW_SET_UDIM(mncfn, 0, myThid)
133 CALL MNC_CW_I_W_S('I',mncfn,0,0,'iter',myIter,myThid)
134
135 CALL MNC_CW_RL_W(pf,mncfn,0,0,'USTRtave', USTRtave, myThid)
136 CALL MNC_CW_RL_W(pf,mncfn,0,0,'VSTRtave', VSTRtave, myThid)
137 CALL MNC_CW_RL_W(pf,mncfn,0,0,'TSRtave', TSRtave, myThid)
138 CALL MNC_CW_RL_W(pf,mncfn,0,0,'OLRtave', OLRtave, myThid)
139 CALL MNC_CW_RL_W(pf,mncfn,0,0,'SSRtave', SSRtave, myThid)
140 CALL MNC_CW_RL_W(pf,mncfn,0,0,'SLRtave', SLRtave, myThid)
141 CALL MNC_CW_RL_W(pf,mncfn,0,0,'SHFtave', SHFtave, myThid)
142 CALL MNC_CW_RL_W(pf,mncfn,0,0,'EVAPtave', EVAPtave, myThid)
143 CALL MNC_CW_RL_W(pf,mncfn,0,0,'PRECNVtave',PRECNVtave,myThid)
144 CALL MNC_CW_RL_W(pf,mncfn,0,0,'PRECLStave',PRECLStave,myThid)
145 CALL MNC_CW_RL_W(pf,mncfn,0,0,'CLOUDCtave',CLOUDCtave,myThid)
146 CALL MNC_CW_RL_W(pf,mncfn,0,0,'CLTOPtave', CLTOPtave, myThid)
147 CALL MNC_CW_RL_W(pf,mncfn,0,0,'CBMFtave', CBMFtave, myThid)
148 CALL MNC_CW_RL_W(pf,mncfn,0,0,'DRAGtave', DRAGtave, myThid)
149 CALL MNC_CW_RL_W(pf,mncfn,0,0,'aimV0tave', aimV0tave, myThid)
150 CALL MNC_CW_RL_W(pf,mncfn,0,0,'aimT0tave', aimT0tave, myThid)
151 CALL MNC_CW_RL_W(pf,mncfn,0,0,'aimQ0tave', aimQ0tave, myThid)
152 CALL MNC_CW_RL_W(pf,mncfn,0,0,'EnFxPrtave',EnFxPrtave,myThid)
153 CALL MNC_CW_RL_W(pf,mncfn,0,0,'albedotave',albedotave,myThid)
154 CALL MNC_CW_RL_W(pf,mncfn,0,0,'dTsurftave',dTsurftave,myThid)
155 CALL MNC_CW_RL_W(pf,mncfn,0,0,'aimRHtave', aimRHtave, myThid)
156 c _END_MASTER( myThid )
157 _BARRIER
158 ENDIF
159 #endif /* ALLOW_MNC */
160
161 IF (aim_timeave_mdsio) THEN
162 IF ( rwSuffixType.EQ.0 ) THEN
163 WRITE(suff,'(I10.10)') myIter
164 ELSE
165 CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
166 ENDIF
167
168 WRITE(fn,'(A,A)') 'aimPhytave.', suff
169 CALL WRITE_REC_XY_RL( fn, USTRtave, 1, myIter, myThid )
170 CALL WRITE_REC_XY_RL( fn, VSTRtave, 2, myIter, myThid )
171 CALL WRITE_REC_XY_RL( fn, TSRtave , 3, myIter, myThid )
172 CALL WRITE_REC_XY_RL( fn, OLRtave , 4, myIter, myThid )
173 CALL WRITE_REC_XY_RL( fn, SSRtave , 5, myIter, myThid )
174 CALL WRITE_REC_XY_RL( fn, SLRtave , 6, myIter, myThid )
175 CALL WRITE_REC_XY_RL( fn, SHFtave , 7, myIter, myThid )
176 CALL WRITE_REC_XY_RL( fn, EVAPtave, 8, myIter, myThid )
177 CALL WRITE_REC_XY_RL( fn, PRECNVtave, 9, myIter, myThid )
178 CALL WRITE_REC_XY_RL( fn, PRECLStave, 10, myIter, myThid )
179 CALL WRITE_REC_XY_RL( fn, CLOUDCtave, 11, myIter, myThid )
180 CALL WRITE_REC_XY_RL( fn, CLTOPtave, 12, myIter, myThid )
181 CALL WRITE_REC_XY_RL( fn, CBMFtave, 13, myIter, myThid )
182 CALL WRITE_REC_XY_RL( fn, DRAGtave, 14, myIter, myThid )
183 CALL WRITE_REC_XY_RL( fn, aimV0tave, 15, myIter, myThid )
184 CALL WRITE_REC_XY_RL( fn, aimT0tave, 16, myIter, myThid )
185 CALL WRITE_REC_XY_RL( fn, aimQ0tave, 17, myIter, myThid )
186 CALL WRITE_REC_XY_RL( fn, EnFxPrtave, 18, myIter, myThid )
187 CALL WRITE_REC_XY_RL( fn, albedotave, 19, myIter, myThid )
188 CALL WRITE_REC_XY_RL( fn, dTsurftave, 20, myIter, myThid )
189
190 CALL WRITE_FLD_XYZ_RL( 'aim_RHtave.', suff, aimRHtave,
191 & myIter, myThid )
192
193 WRITE(msgBuf,'(A,I10)')
194 & '// AIM Time-average written, t-step', myIter
195 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
196 & SQUEEZE_RIGHT, myThid )
197 WRITE(msgBuf,'(A)') ' '
198 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
199 & SQUEEZE_RIGHT, myThid )
200
201 ENDIF
202
203 C Reset averages to zero
204 DO bj = myByLo(myThid), myByHi(myThid)
205 DO bi = myBxLo(myThid), myBxHi(myThid)
206 CALL TIMEAVE_RESET(USTRtave, 1, bi, bj, myThid)
207 CALL TIMEAVE_RESET(VSTRtave, 1, bi, bj, myThid)
208 CALL TIMEAVE_RESET(TSRtave, 1, bi, bj, myThid)
209 CALL TIMEAVE_RESET(OLRtave, 1, bi, bj, myThid)
210 CALL TIMEAVE_RESET(SSRtave, 1, bi, bj, myThid)
211 CALL TIMEAVE_RESET(SLRtave, 1, bi, bj, myThid)
212 CALL TIMEAVE_RESET(SHFtave, 1, bi, bj, myThid)
213 CALL TIMEAVE_RESET(EVAPtave, 1, bi, bj, myThid)
214 CALL TIMEAVE_RESET(PRECNVtave,1, bi, bj, myThid)
215 CALL TIMEAVE_RESET(PRECLStave,1, bi, bj, myThid)
216 CALL TIMEAVE_RESET(CLOUDCtave,1, bi, bj, myThid)
217 CALL TIMEAVE_RESET(CLTOPtave, 1, bi, bj, myThid)
218 CALL TIMEAVE_RESET(CBMFtave, 1, bi, bj, myThid)
219 CALL TIMEAVE_RESET(DRAGtave, 1, bi, bj, myThid)
220 CALL TIMEAVE_RESET(aimV0tave, 1, bi, bj, myThid)
221 CALL TIMEAVE_RESET(aimT0tave, 1, bi, bj, myThid)
222 CALL TIMEAVE_RESET(aimQ0tave, 1, bi, bj, myThid)
223 CALL TIMEAVE_RESET(EnFxPrtave,1, bi, bj, myThid)
224 CALL TIMEAVE_RESET(albedotave,1, bi, bj, myThid)
225 CALL TIMEAVE_RESET(dTsurftave,1, bi, bj, myThid)
226 CALL TIMEAVE_RESET(aimRHtave,Nr, bi, bj, myThid)
227 aim_timeAve(bi,bj) = 0.
228 ENDDO
229 ENDDO
230
231 ENDIF
232
233 #endif /* ALLOW_AIM_TAVE */
234 #endif /* ALLOW_AIM */
235
236 RETURN
237 END

  ViewVC Help
Powered by ViewVC 1.1.22