3 SUBROUTINE lsc_scav(pdtime,it,iflag_lscav,oliq,flxr,flxs,rneb,beta_fisrt, &
4 beta_v1,
pplay,paprs,t,tr_seri,d_tr_insc, &
5 d_tr_bcscav,d_tr_evap,qprls)
22 include
"dimensions.h"
27 REAL,
INTENT(IN) :: pdtime
28 INTEGER,
INTENT(IN) ::
it
29 INTEGER,
INTENT(IN) :: iflag_lscav
31 REAL,
DIMENSION(klon,klev+1),
INTENT(IN) :: flxr
32 REAL,
DIMENSION(klon,klev+1),
INTENT(IN) :: flxs
33 REAL,
INTENT(IN) :: oliq
34 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: rneb
35 REAL,
DIMENSION(klon,klev),
INTENT(IN) ::
pplay
36 REAL,
DIMENSION(klon,klev+1),
INTENT(IN) :: paprs
37 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: t
39 REAL,
DIMENSION(klon,klev,nbtr),
INTENT(IN) :: tr_seri
40 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: beta_fisrt
41 REAL,
DIMENSION(klon,klev),
INTENT(OUT) :: beta_v1
42 REAL,
DIMENSION(klon) :: his_dh
43 REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT) :: d_tr_insc
44 REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT) :: d_tr_bcscav
45 REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT) :: d_tr_evap
46 REAL,
DIMENSION(klon,nbtr),
INTENT(OUT) :: qprls
48 REAL,
DIMENSION(klon,klev) :: dxbc
52 LOGICAL,
SAVE :: debut=.true.
55 REAL,
PARAMETER :: henry=1.4
57 REAL,
PARAMETER :: kk=2900.
62 REAL,
DIMENSION(klon,klev) :: scav
63 REAL,
DIMENSION(klon,klev) :: zrho
64 REAL,
DIMENSION(klon,klev) :: zdz
65 REAL,
DIMENSION(klon,klev) :: zmass
69 REAL,
PARAMETER :: frac_gas=1.0
71 REAL,
DIMENSION(klon,klev) :: deltap
72 REAL,
DIMENSION(klon,klev) :: beta_ev
77 REAL,
SAVE :: frac_fine_scav
78 REAL,
SAVE :: frac_coar_scav
88 REAL :: pr, ps, ice, water
115 OPEN(99,file=
'lsc_scav_param.data',status=
'old', &
116 form=
'formatted',err=9999)
117 READ(99,*,end=9998) alpha_r
118 READ(99,*,end=9998) alpha_s
119 READ(99,*,end=9998) r_r
120 READ(99,*,end=9998) r_s
121 READ(99,*,end=9998) frac_fine_scav
122 READ(99,*,end=9998) frac_coar_scav
123 READ(99,*,end=9998) frac_aer
128 print*,
'alpha_r',alpha_r
129 print*,
'alpha_s',alpha_s
132 print*,
'frac_fine_scav',frac_fine_scav
133 print*,
'frac_coar_scav',frac_coar_scav
134 print*,
'frac_aer ev',frac_aer
160 d_tr_bcscav(
i,
k,
it)=0.
169 zdz(
i,
k)=(paprs(
i,
k)-paprs(
i,
k+1))/zrho(
i,
k)/rg
170 zmass(
i,
k)=(paprs(
i,
k)-paprs(
i,
k+1))/rg
183 scav(
i,
k)=frac_fine_scav
189 henry_t=henry*exp(-kk*(1./298.-1./t(
i,
k)))
191 scav(
i,
k)=f_a/(1.+f_a)
200 if (iflag_lscav .eq. 4)
then
210 dxin=tr_seri(
i,
k,
it)*(exp(-scav(
i,
k)*
beta*pdtime)-1.)
212 his_dh(
i)=his_dh(
i)-dxin*zmass(
i,
k)/pdtime
213 d_tr_insc(
i,
k,
it)=dxin
217 d_tr_bcscav(
i,
k,
it)=0.
219 pr=0.5*(flxr(
i,
k)+flxr(
i,
k+1))
220 ps=0.5*(flxs(
i,
k)+flxs(
i,
k+1))
222 ice=ps*alpha_s/r_s/rho_ice
223 dxbc(
i,
k)=-3./4.*tr_seri(
i,
k,
it)*pdtime*(water+ice)
225 his_dh(
i)=his_dh(
i)-dxbc(
i,
k)*zmass(
i,
k)/pdtime
226 d_tr_bcscav(
i,
k,
it)=dxbc(
i,
k)
230 deltap(
i,
k)=flxr(
i,
k+1)+flxs(
i,
k+1)-flxr(
i,
k)-flxs(
i,
k)
231 deltap(
i,
k)=max(deltap(
i,
k),0.)
233 if(flxr(
i,
k+1)+flxs(
i,
k+1).gt.1.e-16)
then
234 beta_ev(
i,
k)=deltap(
i,
k)/(flxr(
i,
k+1)+flxs(
i,
k+1))
239 beta_ev(
i,
k)=max(min(1.,beta_ev(
i,
k)),0.)
243 if(abs(1-(1-frac_ev)*beta_ev(
i,
k)).gt.1.e-16)
then
246 dxev=frac_ev*beta_ev(
i,
k)*his_dh(
i) *pdtime/(zmass(
i,
k)) &
247 /(1 -(1-frac_ev)*beta_ev(
i,
k))
248 his_dh(
i)=his_dh(
i)*(1 - frac_ev*beta_ev(
i,
k) / (1 -(1-frac_ev)*beta_ev(
i,
k)))
251 dxev=his_dh(
i) *pdtime/(zmass(
i,
k))
262 d_tr_evap(
i,
k,
it)=dxev
269 qprls(
i,
it) = his_dh(
i)/max(flxr(
i,1)+flxs(
i,1),1.e-16)