26 |
! Jean-Louis Dufresne, July 2002 |
! Jean-Louis Dufresne, July 2002 |
27 |
|
|
28 |
USE dimphy, ONLY: klev, klon |
USE dimphy, ONLY: klev, klon |
29 |
USE suphec_m, ONLY: rcpd, rcpv, rcs, rcw, rg, rlstt, rlvtt |
USE suphec_m, ONLY: rcpd, rcpv, rcw, rg, rlvtt |
30 |
|
|
31 |
! Arguments: |
! Arguments: |
32 |
|
|
90 |
REAL zec_col(klon) |
REAL zec_col(klon) |
91 |
REAL zh_dair_col(klon) |
REAL zh_dair_col(klon) |
92 |
REAL zh_qw_col(klon), zh_ql_col(klon) |
REAL zh_qw_col(klon), zh_ql_col(klon) |
93 |
REAL d_h_dair, d_h_qw, d_h_ql |
REAL airetot, zcpvap, zcwat |
|
REAL airetot, zcpvap, zcwat, zcice |
|
94 |
INTEGER i, k |
INTEGER i, k |
95 |
INTEGER, PARAMETER:: ndiag = 10 ! max number of diagnostic in parallel |
INTEGER, PARAMETER:: ndiag = 10 ! max number of diagnostic in parallel |
96 |
integer:: pas(ndiag) = 0 |
integer:: pas(ndiag) = 0 |
97 |
REAL, save:: h_vcol_pre(ndiag), h_dair_pre(ndiag), h_qw_pre(ndiag) |
REAL, save:: h_vcol_pre(ndiag) |
98 |
REAL, save:: h_ql_pre(ndiag), qw_pre(ndiag), ql_pre(ndiag) |
REAL, save:: qw_pre(ndiag), ql_pre(ndiag) |
99 |
REAL, save:: ec_pre(ndiag) |
REAL, save:: ec_pre(ndiag) |
100 |
|
|
101 |
!------------------------------------------------------------- |
!------------------------------------------------------------- |
118 |
|
|
119 |
zcpvap=RCPV |
zcpvap=RCPV |
120 |
zcwat=RCW |
zcwat=RCW |
|
zcice=RCS |
|
121 |
|
|
122 |
! Compute vertical sum for each atmospheric column |
! Compute vertical sum for each atmospheric column |
123 |
DO k = 1, klev |
DO k = 1, klev |
173 |
|
|
174 |
IF (idiag2 > 0 .and. pas(idiag2) /= 0) THEN |
IF (idiag2 > 0 .and. pas(idiag2) /= 0) THEN |
175 |
d_h_vcol = (h_vcol_tot - h_vcol_pre(idiag2) )/dtime |
d_h_vcol = (h_vcol_tot - h_vcol_pre(idiag2) )/dtime |
|
d_h_dair = (h_dair_tot- h_dair_pre(idiag2))/dtime |
|
|
d_h_qw = (h_qw_tot - h_qw_pre(idiag2) )/dtime |
|
|
d_h_ql = (h_ql_tot - h_ql_pre(idiag2) )/dtime |
|
176 |
d_qw = (qw_tot - qw_pre(idiag2) )/dtime |
d_qw = (qw_tot - qw_pre(idiag2) )/dtime |
177 |
d_ql = (ql_tot - ql_pre(idiag2) )/dtime |
d_ql = (ql_tot - ql_pre(idiag2) )/dtime |
178 |
d_ec = (ec_tot - ec_pre(idiag2) )/dtime |
d_ec = (ec_tot - ec_pre(idiag2) )/dtime |
179 |
d_qt = d_qw + d_ql |
d_qt = d_qw + d_ql |
180 |
ELSE |
ELSE |
181 |
d_h_vcol = 0. |
d_h_vcol = 0. |
|
d_h_dair = 0. |
|
|
d_h_qw = 0. |
|
|
d_h_ql = 0. |
|
182 |
d_qw = 0. |
d_qw = 0. |
183 |
d_ql = 0. |
d_ql = 0. |
184 |
d_ec = 0. |
d_ec = 0. |
194 |
! Store the new atmospheric state in "idiag" |
! Store the new atmospheric state in "idiag" |
195 |
pas(idiag)=pas(idiag)+1 |
pas(idiag)=pas(idiag)+1 |
196 |
h_vcol_pre(idiag) = h_vcol_tot |
h_vcol_pre(idiag) = h_vcol_tot |
|
h_dair_pre(idiag) = h_dair_tot |
|
|
h_qw_pre(idiag) = h_qw_tot |
|
|
h_ql_pre(idiag) = h_ql_tot |
|
197 |
qw_pre(idiag) = qw_tot |
qw_pre(idiag) = qw_tot |
198 |
ql_pre(idiag) = ql_tot |
ql_pre(idiag) = ql_tot |
199 |
ec_pre (idiag) = ec_tot |
ec_pre (idiag) = ec_tot |