7 pc4ref, pc3, pcondsat, pksat_ice )
55 USE yomhook
,ONLY : lhook, dr_hook
56 USE parkind1
,ONLY : jprb
62 CHARACTER(LEN=*) :: hisba
67 REAL,
DIMENSION(:),
INTENT(IN) :: pf
70 REAL,
DIMENSION(:),
INTENT(INOUT) :: pc2ref,pc1sat
74 REAL,
DIMENSION(:,:),
INTENT(INOUT):: pcondsat
77 REAL,
DIMENSION(:,:),
INTENT(IN) :: pd_g
80 REAL,
DIMENSION(:),
INTENT(IN) :: pd_ice
84 REAL,
DIMENSION(:,:),
INTENT(INOUT):: pc3
87 REAL,
DIMENSION(:),
INTENT(INOUT) :: pc4ref
91 REAL,
DIMENSION(:),
INTENT(OUT) :: pksat_ice
97 REAL,
DIMENSION(SIZE(PF)) :: zd_g_tot, zc_depth, zksat_noexp, zc_depth_ratio
105 REAL(KIND=JPRB) :: zhook_handle
109 IF (lhook) CALL dr_hook(
'EXP_DECAY_SOIL_FR',0,zhook_handle)
111 zd_g_tot(:) = pd_g(:,2)
112 IF(hisba==
'3-L')zd_g_tot(:) = pd_g(:,3)
114 zksat_noexp(:) = pcondsat(:,2)
116 zc_depth_ratio(:) = 1.
119 IF (
ALLOCATED(xc_depth_ratio)) zc_depth_ratio(:) = xc_depth_ratio(:)
122 WHERE(zd_g_tot(:)/=xundef)
126 zc_depth(:) = pd_g(:,2)*zc_depth_ratio(:)
131 pcondsat(:,1) = pcondsat(:,1)*exp(pf(:)*zc_depth(:))
135 pcondsat(:,2) = zksat_noexp(:)*( exp(pf(:)*zc_depth)-exp(pf(:)*(zc_depth(:)-pd_g(:,2))) ) &
140 pksat_ice(:) = zksat_noexp(:)*( exp(pf(:)*zc_depth)-exp(pf(:)*(zc_depth(:)-pd_ice(:))) ) &
145 pc1sat(:) = pc1sat(:)*sqrt( exp(-pf(:)*zc_depth(:)) )
149 pc2ref(:)=pc2ref(:)+( pcondsat(:,2)-zksat_noexp(:) ) * xday/pd_g(:,2)
153 pc3(:,1)=pc3(:,1)*( exp(pf(:)*zc_depth(:))-exp(pf(:)*(zc_depth(:)-pd_g(:,2))) ) / (pf(:)*pd_g(:,2))
159 WHERE(pd_g(:,2)< zd_g_tot(:).AND.pd_g(:,2)/=xundef)
163 pc3(:,2)=pc3(:,2)*( exp(pf(:)*(zc_depth(:)-pd_g(:,2)))-exp(pf(:)*(zc_depth(:)-zd_g_tot(:))) ) &
164 / (pf(:)*(zd_g_tot(:)-pd_g(:,2)))
168 pc4ref(:)=pc4ref(:)*( exp(pf(:)*(zc_depth(:)-pd_g(:,2)/x2))-exp(pf(:)*(zc_depth(:)&
169 -((pd_g(:,2)+zd_g_tot(:))/2.))) ) * x2/(pf(:)*zd_g_tot(:))
175 IF (lhook) CALL dr_hook(
'EXP_DECAY_SOIL_FR',1,zhook_handle)
subroutine exp_decay_soil_fr(HISBA, PF, PC1SAT, PC2REF, PD_G, PD_ICE, PC4REF, PC3, PCONDSAT, PKSAT_ICE)