1 SUBROUTINE canres(SOLAR,SFCTMP,Q2,SFCPRS,SMC, &
3 & RSMIN,NROOTS,SMCWLT,SMCREF, &
4 & RCS,RCQ,RCT,RCSOIL,SLDPTH)
47 use params_mod,
only: xlai, pq0, a2, a3, a4
48 use ctlblk_mod,
only: novegtype, nsoil, ivegsrc
53 integer,
parameter :: nosoiltype=19
55 INTEGER,
allocatable:: IROOT(:)
56 INTEGER,
intent(in) :: IVEG,ISOIL
57 INTEGER,
intent(out) :: NROOTS
59 real,
intent(in) :: SOLAR,SFCTMP,Q2,SFCPRS
60 real,
dimension(NSOIL),
intent(in) :: SMC,SLDPTH
61 real,
intent(out) :: RCT,RCS,RCQ,RCSOIL,GC,RC,SMCWLT,SMCREF, &
65 REAL ZSOIL(NSOIL), PART(NSOIL)
66 REAL,
allocatable :: RSMN(:),RGL(:),HS(:)
67 REAL SMWLT(nosoiltype),SMREF(nosoiltype) &
70 REAL P,QS,GX,TAIR4,ST1,SLVCP,RR,DELTA,TBLO, &
157 DATA smref /0.236, 0.283, 0.312, 0.360, 0.360, 0.329, &
158 & 0.315, 0.387, 0.382, 0.338, 0.404, 0.403, &
159 & 0.348, 0.000, 0.133, 0.283, 0.403, 0.133, &
162 DATA smwlt /0.023, 0.028, 0.047, 0.084, 0.084, 0.066, &
163 & 0.069, 0.120, 0.103, 0.100, 0.126, 0.135, &
164 & 0.069, 0.000, 0.012, 0.028, 0.135, 0.012, &
173 allocate(iroot(novegtype))
174 allocate(rsmn(novegtype))
175 allocate(rgl(novegtype))
176 allocate(hs(novegtype))
178 iroot=(/4,4,4,4,4,3,3,3,3,3,3,3,1,3,2,3,0,3,3,2/)
179 rsmn=(/300.0, 300.0, 300.0, 175.0, 175.0, 225.0, &
180 225.0, 70.0, 70.0, 70.0, 40.0, 70.0, &
181 400.0, 70.0, 200.0, 400.0, 100.0, 225.0, &
183 rgl=(/30.0, 30.0, 30.0, 30.0, 30.0, 100.0, &
184 & 100.0, 65.0, 65.0, 100.0, 100.0, 100.0, &
185 & 100.0, 100.0, 100.0, 100.0, 30.0, 100.0, &
187 hs=(/47.35, 41.69, 47.35, 54.53, 51.93, 42.00, &
188 & 42.00, 42.00, 42.00, 36.35, 60.00, 36.25, &
189 & 42.00, 36.25, 42.00, 42.00, 51.75, 42.00, &
192 iroot=(/1,3,3,3,3,3,3,3,3,3,4,4,4,4,4,0,2,2,1,3, &
194 rsmn=(/200.0, 70.0, 70.0, 70.0, 70.0, 70.0, &
195 & 70.0, 300.0, 170.0, 70.0, 100.0, 150.0, &
199 & 150.0, 250.0, 150.0, 100.0, 40.0, 100.0, &
200 & 300.0, 150.0, 150.0, 150.0, 200.0, 200.0/)
201 rgl=(/100.0, 100.0, 100.0, 100.0, 100.0, 65.0, &
202 & 100.0, 100.0, 100.0, 65.0, 30.0, 30.0, &
203 & 30.0, 30.0, 30.0, 30.0, 100.0, 30.0, &
204 & 100.0, 100.0, 100.0, 100.0, 100.0, 100.0/)
205 hs=(/42.00, 36.25, 36.25, 36.25, 36.25, 44.14, &
206 & 36.35, 42.00, 39.18, 54.53, 54.53, 47.35, &
207 & 41.69, 47.35, 51.93, 51.75, 60.00, 51.93, &
208 & 42.00, 42.00, 42.00, 42.00, 42.00, 42.00/)
224 zsoil(n)=-1.0*sldpth(n)
226 zsoil(n)=zsoil(n-1)-sldpth(n)
232 smcwlt = smwlt(isoil)
233 smcref = smref(isoil)
241 ff = 0.55*2.0*solar/(rgl(iveg)*xlai)
242 rcs = (ff + rsmin/rsmax) / (1.0 + ff)
244 rcs = max(rcs,0.0001)
251 rct = 1.0 - 0.0016*((topt-sfctmp)**2.0)
253 rct = max(rct,0.0001)
263 q2sat=pq0/sfcprs*exp(a2*(tblo-a3)/(tblo-a4))
266 rcq = 1.0/(1.0+hs(iveg)*(qs-q2))
269 rcq = max(rcq,0.0001)
277 gx = (smc(1)-smcwlt)/(smcref-smcwlt)
282 part(1) = (zsoil(1)/zsoil(nroots)) * gx
289 gx = (smc(k)-smcwlt)/(smcref-smcwlt)
293 part(k) = ((zsoil(k)-zsoil(k-1))/zsoil(nroots)) * gx
301 rcsoil = rcsoil+part(k)
304 rcsoil = max(rcsoil,0.0001)
305 rcsoil = min(rcsoil,1.0)
317 rc = rcmin/(rcs*rct*rcq*rcsoil)
319 rc = max(rcmin,min(rc,rcmax))
323 deallocate(iroot,rsmn,rgl,hs)