6 SUBROUTINE ch_dep_isba(KK, PK, PEK, D, DM, CHIK, PUSTAR, PTA, PPA, PTRAD, KSIZE )
39 USE modd_data_cover_par
, ONLY : nvt_no, nvt_rock
42 USE modd_data_cover_par
62 TYPE(
diag_t),
INTENT(INOUT) :: D
65 REAL,
DIMENSION(:),
INTENT(IN) :: PUSTAR
66 REAL,
DIMENSION(:),
INTENT(IN) :: PTA
67 REAL,
DIMENSION(:),
INTENT(IN) :: PPA
68 REAL,
DIMENSION(:),
INTENT(IN) :: PTRAD
70 INTEGER,
INTENT(IN) :: KSIZE
74 REAL ,
DIMENSION(SIZE(PTRAD),KSIZE) :: ZDIFFMOLVAL
76 REAL ,
DIMENSION(SIZE(PTRAD),KSIZE) :: ZSCMDT
78 REAL ,
DIMENSION(SIZE(PTRAD),KSIZE) :: ZNATRB
81 REAL ,
DIMENSION(SIZE(PTRAD),KSIZE) :: ZHENRYVALCOR
82 REAL ,
DIMENSION(SIZE(PTRAD),KSIZE) :: ZSTOMRC
84 REAL ,
DIMENSION(SIZE(PTRAD),KSIZE) :: ZMESORC
86 REAL ,
DIMENSION(SIZE(PTRAD),KSIZE) :: ZEXTRC
89 REAL ,
DIMENSION(SIZE(PTRAD),KSIZE) :: ZSOILRC
91 REAL ,
DIMENSION(SIZE(PTRAD),KSIZE) :: ZNATRC
93 REAL ,
DIMENSION(SIZE(PTRAD),KSIZE) :: ZSNOWRC
95 REAL ,
DIMENSION(SIZE(PTRAD),KSIZE) :: ZCLAYRC
97 REAL ,
DIMENSION(SIZE(PTRAD),KSIZE) :: ZSANDRC
99 REAL ,
DIMENSION(SIZE(PTRAD),KSIZE) :: ZBARERC
101 REAL ,
DIMENSION(SIZE(PTRAD),KSIZE) :: ZROCKRC
104 REAL ,
DIMENSION(SIZE(PTRAD),KSIZE) :: ZRES_VEGTYPE
105 REAL ,
DIMENSION(SIZE(PTRAD),KSIZE) :: ZRES_SNOWTYPE
108 REAL,
DIMENSION(SIZE(PTRAD)) :: ZTYPE1_SAND, ZTYPE1_CLAY, ZTYPE1_SNOW
109 REAL,
DIMENSION(SIZE(PTRAD)) :: ZUSTAR
110 REAL,
DIMENSION(SIZE(PTRAD)) :: ZDIFFMOLH2O
112 REAL,
DIMENSION(SIZE(PTRAD)) :: ZLANDEXT
114 REAL,
DIMENSION(SIZE(PTRAD)) :: ZINCRC
116 REAL,
DIMENSION(SIZE(PTRAD)) :: ZCOEF1, ZCOEF2, ZCOEF3, ZCOEF4, ZCOEF5, ZINV1, ZINV2
117 REAL,
DIMENSION(SIZE(PTRAD)) :: ZTCOR
119 REAL,
DIMENSION(KSIZE) :: ZVAR1, ZVAR2, ZFACT1
121 REAL :: ZTYPE2_SAND, ZTYPE2_CLAY, ZTYPE2_SNOW
125 REAL(KIND=JPRB) :: ZHOOK_HANDLE
161 DO ji = 1,
SIZE(pek%XVEG)
166 ztype1_clay(ji) = 1000.
172 ztype1_sand(ji) = 1000.
177 ELSEIF (ptrad(ji) > 275.)
THEN 178 ztype1_snow(ji) = 540.
180 ztype1_snow(ji) = 70. * (275. - ptrad(ji))
184 zustar(ji) = max(pustar(ji), 1e-9)
186 zcoef5(ji) = 1./(
xkarman*zustar(ji))
191 IF (pek%XVEG(ji) > 0.)
THEN 192 zincrc(ji) = 14. * pek%XLAI(ji) * 4. * pek%XZ0(ji) / zustar(ji)
203 ELSEIF (pek%XLAI(ji) /=
xundef)
THEN 205 zlandext(ji) = 6000. - 4000. * tanh( 1.6 * (pek%XLAI(ji) - 1.6) )
211 zcoef1(ji) = 1./298. - 1./pta(ji)
213 zdiffmolh2o(ji) = 2.22e-05 + 1.46e-07 * (pta(ji) * (ppa(ji)/
xp00)**(
xrd/
xcpd) - 273.)
214 zcoef2(ji) = dm%XRS(ji) * zdiffmolh2o(ji)
216 zcoef3(ji) = 1./zlandext(ji)
218 IF ( ptrad(ji) < 271.)
THEN 219 zcoef4(ji) = 1000. * exp(-ptrad(ji) + 269.)
224 ztcor(ji) = min(2.5e3, zcoef4(ji))
227 zinv1(ji) = 1.e-5/chik%XSOILRC_SO2(ji)
229 zinv2(ji) = 1./chik%XSOILRC_O3(ji)
255 zdiffmolval(ji,jsv) = 2.22e-05 + (pta(ji) - 273.0) * zfact1(jsv)
260 zscmdt(ji,jsv) = 0.15e-4 / zdiffmolval(ji,jsv)
261 znatrb(ji,jsv) = ((zscmdt(ji,jsv)/0.72)**(2./3.)) * zcoef5(ji)
263 IF (pek%XLAI(ji)/=
xundef) znatrb(ji,jsv) = 2. * znatrb(ji,jsv)
285 IF (dm%XRS(ji)>0.)
THEN 287 zstomrc(ji,jsv) = zcoef2(ji) / zdiffmolval(ji,jsv)
292 zmesorc(ji,jsv) = 1. / ( zhenryvalcor(ji,jsv)/3000. + zvar2(jsv) )
296 zstomrc(ji,jsv) = 9999.
298 zmesorc(ji,jsv) = 9999.
305 IF (d%XHU(ji) >= 1.)
THEN 309 zextrc(ji,jsv) = 1./( zcoef3(ji) + 1.0e-7*zhenryvalcor(ji,jsv) + zvar1(jsv) )
311 ELSEIF ( dm%XRS(ji) > 0. )
THEN 313 zextrc(ji,jsv) = zlandext(ji) / ( 1.0e-5 * zhenryvalcor(ji,jsv) +
xsrealreactval(jsv) )
317 zextrc(ji,jsv) = 9999.
324 zextrc(ji,jsv) = zextrc(ji,jsv) + zcoef4(ji)
337 zsoilrc(ji,jsv) = 1. / ( zhenryvalcor(ji,jsv)*zinv1(ji) +
xsrealreactval(jsv)*zinv2(ji) )
339 IF ( zstomrc(ji,jsv)>0. .AND. zincrc(ji)>0. .AND. zextrc(ji,jsv)>0. )
THEN 344 znatrc(ji,jsv) = 1./ &
345 ( 1./(zstomrc(ji,jsv)+zmesorc(ji,jsv)) + 1./(zincrc(ji)+zsoilrc(ji,jsv)) + 1./zextrc(ji,jsv) )
348 znatrc(ji,jsv) = 1.e-4
357 zclayrc(ji,jsv) = ( 1.e5 * ztype1_clay(ji) * ztype2_clay ) / &
358 ( zhenryvalcor(ji,jsv)*ztype2_clay + ztype1_clay(ji)*1.e5*
xsrealreactval(jsv) )
363 zsandrc(ji,jsv) = ( 1.e5 * ztype1_sand(ji) * ztype2_sand ) / &
364 ( zhenryvalcor(ji,jsv)*ztype2_sand + ztype1_sand(ji)*1.e5*
xsrealreactval(jsv) )
369 zbarerc(ji,jsv) = 1./ ( kk%XSAND(ji,1)/zsandrc(ji,jsv) + (1.-kk%XSAND(ji,1))/zclayrc(ji,jsv) )
374 zbarerc(ji,jsv) = zbarerc(ji,jsv) + ztcor(ji)
379 zrockrc(ji,jsv) = ( 1.e5 * chik%XSOILRC_SO2(ji) * chik%XSOILRC_O3(ji) ) / &
380 (zhenryvalcor(ji,jsv)*chik%XSOILRC_O3(ji) + chik%XSOILRC_SO2(ji)*1.e5*
xsrealreactval(jsv) )
385 zrockrc(ji,jsv) = zrockrc(ji,jsv) + ztcor(ji)
393 zsnowrc(ji,jsv) = ( 1.e5 * ztype1_snow(ji) * ztype2_snow ) / &
394 ( zhenryvalcor(ji,jsv)*ztype2_snow + ztype1_snow(ji)*1.e5*
xsrealreactval(jsv) )
399 zsnowrc(ji,jsv) = zsnowrc(ji,jsv) + ztcor(ji)
405 IF ( pk%XVEGTYPE_PATCH(ji,nvt_rock)>0. )
THEN 406 zbarerc(ji,jsv) = ( pk%XVEGTYPE_PATCH(ji,nvt_no)+pk%XVEGTYPE_PATCH(ji,nvt_rock) ) / &
407 ( pk%XVEGTYPE_PATCH(ji,nvt_no)/zbarerc(ji,jsv) + pk%XVEGTYPE_PATCH(ji,nvt_rock)/zrockrc(ji,jsv) )
411 znatrc(ji,jsv) = 1./ ( pek%XVEG(ji)/znatrc(ji,jsv) + (1.-pek%XVEG(ji))/zbarerc(ji,jsv) )
426 zres_vegtype(ji,jsv) = pek%XRESA(ji) + znatrb(ji,jsv) + znatrc(ji,jsv)
427 zres_snowtype(ji,jsv) = pek%XRESA(ji) + znatrb(ji,jsv) + zsnowrc(ji,jsv)
429 chik%XDEP(ji,jsv) = ( 1-pek%XPSN(ji) )/zres_vegtype(ji,jsv) + pek%XPSN(ji)/zres_snowtype(ji,jsv)
real, dimension(:), allocatable, save xsrealreactval
subroutine ch_dep_isba(KK, PK, PEK, D, DM, CHIK, PUSTAR, PTA, PPA, PTRAD, KSIZE)
real, dimension(:,:), allocatable, save xsrealhenryval
real, dimension(:), allocatable, save xsrealmassmolval