62 USE yomhook
,ONLY : lhook, dr_hook
63 USE parkind1
,ONLY : jprb
69 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: pdg
70 REAL,
DIMENSION(:,:),
INTENT(IN) :: prootdepth
71 REAL,
DIMENSION(:,:),
INTENT(IN) :: proot_ext
72 REAL,
DIMENSION(:,:),
INTENT(IN) :: proot_lin
73 LOGICAL,
OPTIONAL,
INTENT(IN) :: ogv
75 REAL,
DIMENSION(:,:,:),
INTENT(OUT) :: prootfrac
87 INTEGER :: ini,inl,ipatch
88 INTEGER :: jj,jl,jpatch
90 REAL(KIND=JPRB) :: zhook_handle
95 IF (lhook) CALL dr_hook(
'INI_DATA_ROOTFRAC',0,zhook_handle)
102 IF (present(ogv))
THEN
103 IF(ogv) zrootfrgv = 0.5
106 prootfrac(:,:,:) = xundef
111 IF ( prootdepth(jj,jpatch)/=xundef .AND. prootdepth(jj,jpatch)/=0.0 )
THEN
114 zlog1 = 100. * log(proot_ext(jj,jpatch)) * pdg(jj,jl,jpatch)
115 zlog2 = 100. * log(proot_ext(jj,jpatch)) * zrootfrgv * prootdepth(jj,jpatch)
116 zjackson = min(1.0,(1.0-exp(zlog1))/(1.0-exp(zlog2)))
117 zunif = min(1.0,(pdg(jj,jl,jpatch)/zrootfrgv/prootdepth(jj,jpatch)))
118 prootfrac(jj,jl,jpatch) = proot_lin(jj,jpatch) * zunif &
119 + (1.0-proot_lin(jj,jpatch)) * zjackson
123 prootfrac(jj,:,jpatch) = 0.0
129 IF (lhook) CALL dr_hook(
'INI_DATA_ROOTFRAC',1,zhook_handle)
subroutine ini_data_rootfrac(PDG, PROOTDEPTH, PROOT_EXT, PROOT_LIN, PROOTFRAC, OGV)