6 SUBROUTINE dif_layer(KLU, IO, PK, OMEB_3L )
56 INTEGER,
INTENT(IN) :: KLU
60 LOGICAL,
INTENT(IN),
OPTIONAL :: OMEB_3L
65 REAL,
DIMENSION(KLU) :: ZWORK
66 INTEGER,
DIMENSION(KLU) :: IWORK
67 INTEGER :: JL, JI, IDEPTH
70 REAL(KIND=JPRB) :: ZHOOK_HANDLE
79 IF (
PRESENT(omeb_3l)) gmeb_3l = omeb_3l
84 pk%XDZG(:,1) = pk%XDG(:,1)
85 DO jl=2,io%NGROUND_LAYER
87 pk%XDZG(ji,jl) = pk%XDG(ji,jl) - pk%XDG(ji,jl-1)
96 DO jl = 1, io%NGROUND_LAYER
97 IF (any((pk%XROOTFRAC(:,jl)<0. .OR. pk%XROOTFRAC(:,jl)>1.) .AND. pk%XPATCH(:).NE.0.)) &
98 CALL abor1_sfx(
'DIF_LAYER: WITH CISBA=DIF ROOTFRAC MUST BE DEFINED')
102 pk%XSOILWGHT(:,:) = 0.0
105 DO jl=1,io%NGROUND_LAYER
107 IF(jl<io%NGROUND_LAYER)
THEN 108 pk%XDZDIF(ji,jl)=0.5*(pk%XDZG(ji,jl)+pk%XDZG(ji,jl+1))
110 pk%XDZDIF(ji,jl)=0.5*pk%XDZG(ji,jl)
118 iwork(:) = pk%NWG_LAYER(:)
121 idepth = pk%NWG_LAYER(ji)
122 IF (idepth==
nundef) idepth = io%NGROUND_LAYER
129 IF (
SIZE(iwork)>0.AND.maxval(iwork(:),iwork(:)/=
nundef)>io%NLAYER_HORT)
THEN 130 io%NLAYER_HORT=maxval(iwork(:),iwork(:)/=
nundef)
135 iwork(:)=pk%NWG_LAYER(:)
139 IF(pk%XPATCH(ji)>0.0)
THEN 140 idepth = pk%NWG_LAYER(ji)
141 IF(pk%XDROOT(ji)>0.0.AND.pk%XDROOT(ji)/=
xundef)
THEN 142 pk%XRUNOFFD(ji) = pk%XDG(ji,1)
144 IF(pk%XROOTFRAC(ji,jl)<0.90)
THEN 145 pk%XRUNOFFD(ji) = pk%XDG(ji,jl+1)
149 pk%XRUNOFFD(ji) = min(0.6,pk%XDG2(ji))
155 DO jl=1,io%NGROUND_LAYER
157 IF(pk%XPATCH(ji)>0.0)
THEN 158 idepth=pk%NWG_LAYER(ji)
160 zwork(ji ) = zwork(ji) + pk%XDZG(ji,jl)
161 pk%XSOILWGHT(ji,jl) = min(pk%XDZG(ji,jl), &
162 max(0.0,pk%XRUNOFFD(ji)-zwork(ji)+pk%XDZG(ji,jl)))
164 IF(pk%XDG(ji,jl)<pk%XRUNOFFD(ji))
THEN 172 IF (
SIZE(iwork)>0.AND.maxval(iwork(:),iwork(:)/=
nundef)>io%NLAYER_DUN)
THEN 173 io%NLAYER_DUN=maxval(iwork(:),iwork(:)/=
nundef)
subroutine abor1_sfx(YTEXT)
integer, parameter nundef
real, parameter xhort_depth
subroutine dif_layer(KLU, IO, PK, OMEB_3L)