3 SUBROUTINE cltracrn( itr, dtime,u1lay, v1lay, &
4 cdrag,coef,t,ftsol,pctsrf, &
5 tr,trs,paprs,
pplay,delp, &
6 masktr,fshtr,hsoltr,tautr,vdeptr, &
49 INTEGER,
INTENT(IN) :: itr
50 REAL,
INTENT(IN) ::
dtime
51 REAL,
DIMENSION(klon),
INTENT(IN) :: u1lay, v1lay
52 REAL,
DIMENSION(klon),
INTENT(IN) :: cdrag
53 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: coef, t
54 REAL,
DIMENSION(klon,nbsrf),
INTENT(IN) :: ftsol, pctsrf
55 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: tr
56 REAL,
DIMENSION(klon),
INTENT(IN) :: trs
57 REAL,
DIMENSION(klon,klev+1),
INTENT(IN) :: paprs
58 REAL,
DIMENSION(klon,klev),
INTENT(IN) ::
pplay, delp
59 REAL,
DIMENSION(klon),
INTENT(IN) :: masktr
60 REAL,
DIMENSION(klon),
INTENT(IN) :: fshtr
61 REAL,
INTENT(IN) :: hsoltr
62 REAL,
INTENT(IN) :: tautr
63 REAL,
INTENT(IN) :: vdeptr
64 REAL,
DIMENSION(klon),
INTENT(IN) :: lat
67 REAL,
DIMENSION(klon,klev),
INTENT(OUT) :: d_tr
68 REAL,
DIMENSION(klon),
INTENT(OUT) :: d_trs
71 REAL,
DIMENSION(klon,klev) :: flux_tr
73 REAL,
DIMENSION(klon) :: rotrhi
74 REAL,
DIMENSION(klon,klev) :: zx_coef
75 REAL,
DIMENSION(klon) :: zx_buf
76 REAL,
DIMENSION(klon,klev) :: zx_ctr
77 REAL,
DIMENSION(klon,klev) :: zx_dtr
78 REAL,
DIMENSION(klon) :: zx_trs
81 REAL,
DIMENSION(klon,klev) :: local_tr
82 REAL,
DIMENSION(klon) :: local_trs
83 REAL,
DIMENSION(klon) :: zts
84 REAL,
DIMENSION(klon) :: zx_alpha1, zx_alpha2
96 zts(
i) = zts(
i) + ftsol(
i,
n)*pctsrf(
i,
n)
101 rotrhi(
i) = rd * zts(
i) / hsoltr
106 local_tr(
i,
k) = tr(
i,
k)
111 local_trs(
i) = trs(
i)
120 zx_alpha2(
i) = 1.0 - zx_alpha1(
i)
124 zx_coef(
i,1) = cdrag(
i)*(1.0+sqrt(u1lay(
i)**2+v1lay(
i)**2)) &
126 zx_coef(
i,1) = zx_coef(
i,1) *
dtime*rg
132 *(paprs(
i,
k)*2/(t(
i,
k)+t(
i,
k-1))/rd)**2
143 DO l =
klev-1, 2 , -1
145 zx_buf(
i) = delp(
i,
l)+zx_coef(
i,
l) &
146 +zx_coef(
i,
l+1)*(1.-zx_dtr(
i,
l+1))
148 zx_ctr(
i,
l) = ( local_tr(
i,
l)*delp(
i,
l) &
149 + zx_coef(
i,
l+1)*zx_ctr(
i,
l+1) )/zx_buf(
i)
150 zx_dtr(
i,
l) = zx_coef(
i,
l) / zx_buf(
i)
155 zx_buf(
i) = delp(
i,1) + zx_coef(
i,2)*(1.-zx_dtr(
i,2)) &
156 + masktr(
i) * zx_coef(
i,1) &
157 *( zx_alpha1(
i)+zx_alpha2(
i)*zx_dtr(
i,2) )
159 zx_ctr(
i,1) = ( local_tr(
i,1)*delp(
i,1) &
162 - masktr(
i) * zx_coef(
i,1) &
163 *zx_alpha2(
i) ) ) / zx_buf(
i)
164 zx_dtr(
i,1) = masktr(
i) * zx_coef(
i,1) / zx_buf(
i)
178 IF ( nint(masktr(
i)) .EQ. 1 )
THEN
179 zx_trs(
i) = local_trs(
i)
182 +rotrhi(
i)*masktr(
i)*zx_coef(
i,1)/rg &
183 *(zx_ctr(
i,1)*(zx_alpha1(
i)+zx_alpha2(
i)*zx_dtr(
i,2)) &
184 +zx_alpha2(
i)*zx_ctr(
i,2))
186 zx_b = 1. + rotrhi(
i)*masktr(
i)*zx_coef(
i,1)/rg &
188 *(zx_alpha1(
i)+zx_alpha2(
i)*zx_dtr(
i,2))) &
190 +
dtime * vdeptr / hsoltr
191 zx_trs(
i) = zx_a / zx_b
192 local_trs(
i) = zx_trs(
i)
198 IF ( (itr.eq.id_rn.AND.nint(masktr(
i)).EQ.1.AND.lat(
i).GE.60..AND.lat(
i).LE.70.).OR. &
199 (itr.eq.id_pb.AND.nint(masktr(
i)).EQ.1.AND.lat(
i).GE.60..AND.lat(
i).LE.70.) )
THEN
200 zx_trs(
i) = local_trs(
i)
202 +(fshtr(
i)/2.)*
dtime*rotrhi(
i) &
203 +rotrhi(
i)*masktr(
i)*zx_coef(
i,1)/rg &
204 *(zx_ctr(
i,1)*(zx_alpha1(
i)+zx_alpha2(
i)*zx_dtr(
i,2)) &
205 +zx_alpha2(
i)*zx_ctr(
i,2))
207 zx_b = 1. + rotrhi(
i)*masktr(
i)*zx_coef(
i,1)/rg &
209 *(zx_alpha1(
i)+zx_alpha2(
i)*zx_dtr(
i,2))) &
211 +
dtime * vdeptr / hsoltr
213 zx_trs(
i) = zx_a / zx_b
214 local_trs(
i) = zx_trs(
i)
224 IF ( (itr.EQ.id_rn.AND.nint(masktr(
i)).EQ.0).OR. &
225 (itr.EQ.id_rn.AND.nint(masktr(
i)).EQ.1.AND.lat(
i).LT.-60.))
THEN
233 IF ( (itr.EQ.id_rn.AND.nint(masktr(
i)).EQ.0).OR. &
234 (itr.EQ.id_rn.AND.nint(masktr(
i)).EQ.1.AND.lat(
i).GT.70.))
THEN
242 IF (itr.eq.id_rn.AND.nint(masktr(
i)).EQ.0)
THEN
254 local_tr(
i,1) = zx_ctr(
i,1)+zx_dtr(
i,1)*zx_trs(
i)
258 local_tr(
i,
l) = zx_ctr(
i,
l) + zx_dtr(
i,
l)*local_tr(
i,
l-1)
265 flux_tr(
i,1) = masktr(
i)*zx_coef(
i,1)/rg &
266 * (zx_alpha1(
i)*local_tr(
i,1)+zx_alpha2(
i)*local_tr(
i,2) &
271 flux_tr(
i,
l) = zx_coef(
i,
l)/rg &
272 * (local_tr(
i,
l)-local_tr(
i,
l-1)) /
dtime
280 d_tr(
i,
l) = local_tr(
i,
l) - tr(
i,
l)
284 d_trs(
i) = local_trs(
i) - trs(
i)