22 |
! - if icbs1=icb1, compute also tp1(icb1+1), tvp1(icb1+1) & clw1(icb1+1) |
! - if icbs1=icb1, compute also tp1(icb1+1), tvp1(icb1+1) & clw1(icb1+1) |
23 |
|
|
24 |
use cv30_param_m, only: minorig, nl |
use cv30_param_m, only: minorig, nl |
25 |
use cv_thermo_m, only: cl, clmcpv, cpd, cpv, eps, rrv |
use cv_thermo_m, only: clmcpv, eps |
26 |
USE dimphy, ONLY: klev, klon |
USE dimphy, ONLY: klev, klon |
27 |
use SUPHEC_M, only: rlvtt |
use SUPHEC_M, only: rcw, rlvtt, rcpd, rcpv, rv |
28 |
|
|
29 |
! inputs: |
! inputs: |
30 |
integer, intent(in):: icb1(klon) |
integer, intent(in):: icb1(klon) |
61 |
! *** Calculate certain parcel quantities, including static energy *** |
! *** Calculate certain parcel quantities, including static energy *** |
62 |
|
|
63 |
do i=1, klon |
do i=1, klon |
64 |
ah0(i)=(cpd*(1.-qnk(i))+cl*qnk(i))*tnk(i) & |
ah0(i)=(rcpd*(1.-qnk(i))+rcw*qnk(i))*tnk(i) & |
65 |
+qnk(i)*(rlvtt-clmcpv*(tnk(i)-273.15))+gznk(i) |
+qnk(i)*(rlvtt-clmcpv*(tnk(i)-273.15))+gznk(i) |
66 |
cpp(i)=cpd*(1.-qnk(i))+qnk(i)*cpv |
cpp(i)=rcpd*(1.-qnk(i))+qnk(i)*rcpv |
67 |
cpinv(i)=1./cpp(i) |
cpinv(i)=1./cpp(i) |
68 |
end do |
end do |
69 |
|
|
119 |
|
|
120 |
! First iteration. |
! First iteration. |
121 |
|
|
122 |
s=cpd*(1.-qnk(i))+cl*qnk(i) & |
s=rcpd*(1.-qnk(i))+rcw*qnk(i) & |
123 |
+alv*alv*qg/(rrv*ticb(i)*ticb(i)) |
+alv*alv*qg/(rv*ticb(i)*ticb(i)) |
124 |
s=1./s |
s=1./s |
125 |
|
|
126 |
ahg=cpd*tg+(cl-cpd)*qnk(i)*tg+alv*qg+gzicb(i) |
ahg=rcpd*tg+(rcw-rcpd)*qnk(i)*tg+alv*qg+gzicb(i) |
127 |
tg=tg+s*(ah0(i)-ahg) |
tg=tg+s*(ah0(i)-ahg) |
128 |
|
|
129 |
!debug tc=tg-t0 |
!debug tc=tg-t0 |
136 |
|
|
137 |
! Second iteration. |
! Second iteration. |
138 |
|
|
139 |
ahg=cpd*tg+(cl-cpd)*qnk(i)*tg+alv*qg+gzicb(i) |
ahg=rcpd*tg+(rcw-rcpd)*qnk(i)*tg+alv*qg+gzicb(i) |
140 |
tg=tg+s*(ah0(i)-ahg) |
tg=tg+s*(ah0(i)-ahg) |
141 |
|
|
142 |
!debug tc=tg-t0 |
!debug tc=tg-t0 |
152 |
|
|
153 |
! no approximation: |
! no approximation: |
154 |
tp1(i, icbs1(i))=(ah0(i)-gz1(i, icbs1(i))-alv*qg) & |
tp1(i, icbs1(i))=(ah0(i)-gz1(i, icbs1(i))-alv*qg) & |
155 |
/(cpd+(cl-cpd)*qnk(i)) |
/(rcpd+(rcw-rcpd)*qnk(i)) |
156 |
|
|
157 |
clw1(i, icbs1(i))=qnk(i)-qg |
clw1(i, icbs1(i))=qnk(i)-qg |
158 |
clw1(i, icbs1(i))=max(0.0, clw1(i, icbs1(i))) |
clw1(i, icbs1(i))=max(0.0, clw1(i, icbs1(i))) |
189 |
|
|
190 |
! First iteration. |
! First iteration. |
191 |
|
|
192 |
s=cpd*(1.-qnk(i))+cl*qnk(i) & |
s=rcpd*(1.-qnk(i))+rcw*qnk(i) & |
193 |
+alv*alv*qg/(rrv*ticb(i)*ticb(i)) |
+alv*alv*qg/(rv*ticb(i)*ticb(i)) |
194 |
s=1./s |
s=1./s |
195 |
|
|
196 |
ahg=cpd*tg+(cl-cpd)*qnk(i)*tg+alv*qg+gzicb(i) |
ahg=rcpd*tg+(rcw-rcpd)*qnk(i)*tg+alv*qg+gzicb(i) |
197 |
tg=tg+s*(ah0(i)-ahg) |
tg=tg+s*(ah0(i)-ahg) |
198 |
|
|
199 |
!debug tc=tg-t0 |
!debug tc=tg-t0 |
207 |
|
|
208 |
! Second iteration. |
! Second iteration. |
209 |
|
|
210 |
ahg=cpd*tg+(cl-cpd)*qnk(i)*tg+alv*qg+gzicb(i) |
ahg=rcpd*tg+(rcw-rcpd)*qnk(i)*tg+alv*qg+gzicb(i) |
211 |
tg=tg+s*(ah0(i)-ahg) |
tg=tg+s*(ah0(i)-ahg) |
212 |
|
|
213 |
!debug tc=tg-t0 |
!debug tc=tg-t0 |
223 |
|
|
224 |
! no approximation: |
! no approximation: |
225 |
tp1(i, icb1(i)+1)=(ah0(i)-gz1(i, icb1(i)+1)-alv*qg) & |
tp1(i, icb1(i)+1)=(ah0(i)-gz1(i, icb1(i)+1)-alv*qg) & |
226 |
/(cpd+(cl-cpd)*qnk(i)) |
/(rcpd+(rcw-rcpd)*qnk(i)) |
227 |
|
|
228 |
clw1(i, icb1(i)+1)=qnk(i)-qg |
clw1(i, icb1(i)+1)=qnk(i)-qg |
229 |
clw1(i, icb1(i)+1)=max(0.0, clw1(i, icb1(i)+1)) |
clw1(i, icb1(i)+1)=max(0.0, clw1(i, icb1(i)+1)) |