7 OVOLUMETRIC_SNOWLIQ, PTSTEP, OAGRIP, PTIME, KSIZE )
54 USE modi_comput_cold_layers_thick
67 TYPE(
agri_t),
INTENT(INOUT) :: AGK
70 LOGICAL,
INTENT(IN) :: OSURF_MISC_BUDGET
71 LOGICAL,
INTENT(IN) :: OVOLUMETRIC_SNOWLIQ
72 REAL,
INTENT(IN) :: PTSTEP
73 LOGICAL,
INTENT(IN) :: OAGRIP
74 REAL,
INTENT(IN) :: PTIME
75 INTEGER,
INTENT(IN) :: KSIZE
80 REAL,
DIMENSION(SIZE(PEK%XPSN)) :: ZSNOWTEMP
81 REAL,
DIMENSION(SIZE(PEK%TSNOW%WSNOW,1),SIZE(PEK%TSNOW%WSNOW,2)) :: ZWORK
82 REAL,
DIMENSION(SIZE(PEK%TSNOW%WSNOW,1),SIZE(PEK%TSNOW%WSNOW,2)) :: ZWORKTEMP
84 REAL,
DIMENSION(KSIZE) :: ZALT, ZFLT
88 REAL(KIND=JPRB) :: ZHOOK_HANDLE
92 IF (
lhook)
CALL dr_hook(
'DIAG_MISC_ISBA_N',0,zhook_handle)
94 IF (osurf_misc_budget)
THEN 98 DO jl=1,
SIZE(pek%XWG,2)
99 DO ji=1,
SIZE(pek%XWG,1)
100 IF(pek%XWG (ji,jl)/=
xundef)
THEN 101 dmk%XSWI (ji,jl) = (pek%XWG (ji,jl) - kk%XWWILT(ji,jl)) / (kk%XWFC(ji,jl) - kk%XWWILT(ji,jl))
102 dmk%XTSWI(ji,jl) = (pek%XWG (ji,jl) - kk%XWWILT(ji,jl)) / (kk%XWFC(ji,jl) - kk%XWWILT(ji,jl))
104 IF(pek%XWGI (ji,jl)/=
xundef)
THEN 105 dmk%XTSWI(ji,jl) = dmk%XTSWI(ji,jl) + pek%XWGI(ji,jl) / (kk%XWFC(ji,jl) - kk%XWWILT(ji,jl))
110 DO jl = 1,
SIZE(pek%TSNOW%WSNOW,2)
111 DO ji = 1,
SIZE(pek%TSNOW%WSNOW,1)
112 zwork(ji,jl) = pek%TSNOW%WSNOW(ji,jl) / pek%TSNOW%RHO(ji,jl)
120 IF (pek%TSNOW%SCHEME/=
'EBA')
THEN 121 zworktemp(:,:) = dmk%XSNOWTEMP(:,:)
123 zworktemp(:,1) = min(pek%XTG(:,1),
xtt)
126 DO jl = 1,
SIZE(pek%TSNOW%WSNOW,2)
127 DO ji = 1,
SIZE(pek%TSNOW%WSNOW,1)
128 dmk%XTWSNOW(ji) = dmk%XTWSNOW(ji) + pek%TSNOW%WSNOW(ji,jl)
129 dmk%XTDSNOW(ji) = dmk%XTDSNOW(ji) + zwork(ji,jl)
130 zsnowtemp(ji) = zsnowtemp(ji) + zworktemp(ji,jl) * zwork(ji,jl)
134 WHERE(dmk%XTDSNOW(:)>0.0)
135 zsnowtemp(:)=zsnowtemp(:)/dmk%XTDSNOW(:)
140 dmk%XPSNG (:) = pek%XPSNG(:)
141 dmk%XPSNV (:) = pek%XPSNV(:)
142 dmk%XPSN (:) = pek%XPSN (:)
143 dmk%XFF (:) = kk%XFF (:)
144 dmk%XFFG (:) = kk%XFFG (:)
145 dmk%XFFV (:) = kk%XFFV (:)
146 dmk%XFSAT (:) = kk%XFSAT (:)
147 dmk%XTTSNOW(:) = zsnowtemp(:)
149 IF ( (pek%TSNOW%SCHEME==
'3-L' .OR. pek%TSNOW%SCHEME==
'CRO') .AND. ovolumetric_snowliq )
THEN 151 WHERE (dmk%XSNOWLIQ(:,:)/=
xundef) &
152 dmk%XSNOWLIQ(:,:) = dmk%XSNOWLIQ(:,:) *
xrholw / dmk%XSNOWDZ(:,:)
158 IF (io%CPHOTO/=
'NON'.AND.io%LTR_ML)
THEN 161 gmask = ( ptime - ptstep < 0. ) .AND. ( ptime >= 0. )
165 IF (pek%XMUS(ji).NE.0.)
THEN 166 dmk%XDFAPARC (ji) = pek%XFAPARC (ji) / pek%XMUS(ji)
167 dmk%XDFAPIRC (ji) = pek%XFAPIRC (ji) / pek%XMUS(ji)
168 dmk%XDLAI_EFFC (ji) = pek%XLAI_EFFC (ji) / pek%XMUS(ji)
175 pek%XLAI_EFFC(ji) = 0.
182 IF(io%CISBA==
'DIF')
THEN 187 dmk%XALT(ji) = zalt(ji)
188 dmk%XFLT(ji) = zflt(ji)
197 dmk%XSEUIL (ji) = agk%XTHRESHOLDSPT (ji)
201 IF (
lhook)
CALL dr_hook(
'DIAG_MISC_ISBA_N',1,zhook_handle)
subroutine diag_misc_isba_n(DMK, KK, PK, PEK, AGK, IO, OSURF_MISC_BUDGET, OVOLUMETRIC_SNOWLIQ, PTSTEP, OAGRIP, PTIME, KSIZE)
subroutine comput_cold_layers_thick(PDG, PTG, PALT, PFLT)