6 SUBROUTINE diagedyn(tit,iprt,idiag,idiag2,dtime
7 e , ucov , vcov , ps, p ,pk ,
teta ,
q, ql)
57 #include "dimensions.h"
63 #include "../phylmd/YOMCST.h"
64 #include "../phylmd/YOETHF.h"
71 INTEGER iprt,idiag, idiag2
83 REAL d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec
87 REAL h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot
88 . , h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot
106 REAL zairm(imjmp1,llm)
107 REAL zecin(imjmp1,llm)
108 REAL zpaprs(imjmp1,llm)
120 REAL zh_dair_col(imjmp1)
121 REAL zh_qw_col(imjmp1), zh_ql_col(imjmp1), zh_qs_col(imjmp1)
123 REAL d_h_dair, d_h_qw, d_h_ql, d_h_qs
125 REAL airetot, zcpvap, zcwat, zcice
127 INTEGER i,
k, jj,
ij ,
l ,ip1jjm1
135 REAL h_vcol_pre(ndiag), h_dair_pre(ndiag), h_qw_pre(ndiag)
136 $ , h_ql_pre(ndiag), h_qs_pre(ndiag), qw_pre(ndiag)
137 $ , ql_pre(ndiag), qs_pre(ndiag) , ec_pre(ndiag)
138 SAVE h_vcol_pre, h_dair_pre, h_qw_pre, h_ql_pre
139 $ , h_qs_pre, qw_pre, ql_pre, qs_pre , ec_pre
145 CALL
covcont( llm , ucov , vcov , ucont, vcont )
146 CALL
enercin( vcov , ucov , vcont , ucont , ecin )
151 print*,
'MAIS POURQUOI DONC DIAGEDYN NE MARCHE PAS ?'
159 zps(
i)=ps(
ij+ip1jjm1)
168 zairm(
i,
l) = masse(
ij+ip1jjm1,
l)
169 zecin(
i,
l) = ecin(
ij+ip1jjm1,
l)
170 zpaprs(
i,
l) = p(
ij+ip1jjm1,
l)
171 zpk(
i,
l) = pk(
ij+ip1jjm1,
l)
173 zqw(
i,
l) =
q(
ij+ip1jjm1,
l)
174 zql(
i,
l) = ql(
ij+ip1jjm1,
l)
201 zqw_col(
i) = zqw_col(
i) + zqw(
i,
k)*zairm(
i,
k)
202 zql_col(
i) = zql_col(
i) + zql(
i,
k)*zairm(
i,
k)
203 zqs_col(
i) = zqs_col(
i) + zqs(
i,
k)*zairm(
i,
k)
205 zec_col(
i) = zec_col(
i)
206 $ +zecin(
i,
k)*zairm(
i,
k)
208 zt(
i,
k)= zh(
i,
k) * zpk(
i,
k) / rcpd
209 zh_dair_col(
i) = zh_dair_col(
i)
210 $ + rcpd*(1.-zqw(
i,
k)-zql(
i,
k)-zqs(
i,
k))*zairm(
i,
k)*zt(
i,
k)
211 zh_qw_col(
i) = zh_qw_col(
i)
212 $ + zcpvap*zqw(
i,
k)*zairm(
i,
k)*zt(
i,
k)
213 zh_ql_col(
i) = zh_ql_col(
i)
214 $ + zcwat*zql(
i,
k)*zairm(
i,
k)*zt(
i,
k)
215 $ - rlvtt*zql(
i,
k)*zairm(
i,
k)
216 zh_qs_col(
i) = zh_qs_col(
i)
217 $ + zcice*zqs(
i,
k)*zairm(
i,
k)*zt(
i,
k)
218 $ - rlstt*zqs(
i,
k)*zairm(
i,
k)
237 qw_tot = qw_tot + zqw_col(
i)
238 ql_tot = ql_tot + zql_col(
i)
239 qs_tot = qs_tot + zqs_col(
i)
240 ec_tot = ec_tot + zec_col(
i)
241 h_dair_tot = h_dair_tot + zh_dair_col(
i)
242 h_qw_tot = h_qw_tot + zh_qw_col(
i)
243 h_ql_tot = h_ql_tot + zh_ql_col(
i)
244 h_qs_tot = h_qs_tot + zh_qs_col(
i)
252 h_dair_tot = h_dair_tot/
airetot
257 h_vcol_tot = h_dair_tot+h_qw_tot+h_ql_tot+h_qs_tot
265 IF ( (idiag2.gt.0) .and. (pas(idiag2) .ne. 0) )
THEN
266 d_h_vcol = (h_vcol_tot - h_vcol_pre(idiag2) )/
dtime
267 d_h_dair = (h_dair_tot- h_dair_pre(idiag2))/
dtime
268 d_h_qw = (h_qw_tot - h_qw_pre(idiag2) )/
dtime
269 d_h_ql = (h_ql_tot - h_ql_pre(idiag2) )/
dtime
270 d_h_qs = (h_qs_tot - h_qs_pre(idiag2) )/
dtime
271 d_qw = (qw_tot - qw_pre(idiag2) )/
dtime
272 d_ql = (ql_tot - ql_pre(idiag2) )/
dtime
273 d_qs = (qs_tot - qs_pre(idiag2) )/
dtime
274 d_ec = (ec_tot - ec_pre(idiag2) )/
dtime
275 d_qt = d_qw + d_ql + d_qs
290 WRITE(6,9000) tit,pas(idiag),d_qt,d_qw,d_ql,d_qs
291 9000
format(
'Dyn3d. Watter Mass Budget (kg/m2/s)',a15
293 WRITE(6,9001) tit,pas(idiag), d_h_vcol
294 9001
format(
'Dyn3d. Enthalpy Budget (W/m2) ',a15,1i6,10(f8.2))
295 WRITE(6,9002) tit,pas(idiag), d_ec
296 9002
format(
'Dyn3d. Cinetic Energy Budget (W/m2) ',a15,1i6,10(f8.2))
298 9003
format(
'Dyn3d. Cinetic Energy (W/m2) ',a15,1i6,10(e15.6))
299 WRITE(6,9004) tit,pas(idiag), d_h_vcol+d_ec
300 9004
format(
'Dyn3d. Total Energy Budget (W/m2) ',a15,1i6,10(f8.2))
305 pas(idiag)=pas(idiag)+1
306 h_vcol_pre(idiag) = h_vcol_tot
307 h_dair_pre(idiag) = h_dair_tot
308 h_qw_pre(idiag) = h_qw_tot
309 h_ql_pre(idiag) = h_ql_tot
310 h_qs_pre(idiag) = h_qs_tot
311 qw_pre(idiag) = qw_tot
312 ql_pre(idiag) = ql_tot
313 qs_pre(idiag) = qs_tot
314 ec_pre(idiag) = ec_tot
317 write(
lunout,*)
'diagedyn: Needs Earth physics to function'