7 PLAICV,PSNOWRHO,PSNOWSWE,PSNOWHEAT,PSNOWLIQ, &
8 PSNOWTEMP,PSNOWDZ,PSCOND,PHEATCAPS,PEMISNOW,PSIGMA_F,PCHIP, &
9 PTSTEP,PSR,PTA,PVMOD,PSNOWAGE,PPERMSNOWFRAC )
52 USE modd_snow_par
, ONLY : xrhosmax_es, xrhosmin_es, xemissn, xsnowdmin, &
75 REAL,
DIMENSION(:),
INTENT(IN) :: PLAICV
76 REAL,
DIMENSION(:),
INTENT(IN) :: PPS
77 REAL,
DIMENSION(:),
INTENT(IN) :: PSR
78 REAL,
DIMENSION(:),
INTENT(IN) :: PTA
79 REAL,
DIMENSION(:),
INTENT(IN) :: PVMOD
80 REAL,
DIMENSION(:),
INTENT(IN) :: PPERMSNOWFRAC
81 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSNOWHEAT
83 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: PSNOWSWE, PSNOWAGE, PSNOWRHO
85 REAL,
DIMENSION(:),
INTENT(OUT) :: PSIGMA_F, PCHIP
86 REAL,
DIMENSION(:),
INTENT(OUT) :: PEMISNOW
87 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PSNOWDZ, PSCOND, PHEATCAPS, PSNOWTEMP, PSNOWLIQ
92 INTEGER :: JI, JK, JJ, INLVLS, ISIZE_SNOW, INI
93 INTEGER,
DIMENSION(SIZE(PTA)) :: NMASK
94 REAL,
DIMENSION(SIZE(PLAICV,1)) :: ZPSNA
95 REAL,
DIMENSION(SIZE(PTA)) :: ZSNOW, ZSNOWFALL
97 REAL(KIND=JPRB) :: ZHOOK_HANDLE
101 IF (
lhook)
CALL dr_hook(
'PREPS_FOR_MEB_EBUD_RAD',0,zhook_handle)
103 ini =
SIZE(psnowrho,1)
104 inlvls =
SIZE(psnowrho,2)
106 WHERE(psnowrho(:,:)==
xundef)
107 psnowrho(:,:) = xrhosmin_es
110 psnowdz(:,:) = psnowswe(:,:)/psnowrho(:,:)
112 pscond(:,:) = xsnowthrmcond1
118 zsnowfall(:) = psr(:)*ptstep/xrhosmax_es
123 zsnow(ji) = zsnow(ji) + psnowdz(ji,jk)
144 IF (zsnow(jj) >= xsnowdmin .OR. zsnowfall(jj) >= xsnowdmin)
THEN 145 isize_snow = isize_snow + 1
146 nmask(isize_snow) = jj
150 IF (isize_snow>0)
THEN 161 psigma_f(:) = 1.0 - pchip(:)
165 pemisnow(:) = xemissn
167 IF (
lhook)
CALL dr_hook(
'PREPS_FOR_MEB_EBUD_RAD',1,zhook_handle)
178 INTEGER,
INTENT(IN) :: KSIZE1
179 INTEGER,
INTENT(IN) :: KSIZE2
180 INTEGER,
DIMENSION(:),
INTENT(IN) :: KMASK
182 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWSWE
183 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWRHO
184 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWHEAT
185 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWTEMP
186 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWLIQ
187 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWDZ
188 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SCOND
189 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWAGE
190 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWDZN
191 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_HEATCAPS
192 REAL,
DIMENSION(KSIZE1) :: ZP_SNOW
193 REAL,
DIMENSION(KSIZE1) :: ZP_SNOWHMASS
194 REAL,
DIMENSION(KSIZE1) :: ZP_PERMSNOWFRAC
195 REAL,
DIMENSION(KSIZE1) :: ZP_PS
196 REAL,
DIMENSION(KSIZE1) :: ZP_SR
197 REAL,
DIMENSION(KSIZE1) :: ZP_TA
198 REAL,
DIMENSION(KSIZE1) :: ZP_VMOD
200 INTEGER :: JWRK, JJ, JI
201 REAL(KIND=JPRB) :: ZHOOK_HANDLE
205 IF (
lhook)
CALL dr_hook(
'SNOW3L_ISBA:CALL_MODEL',0,zhook_handle)
212 zp_snowswe(jj,jwrk) = psnowswe(ji,jwrk)
213 zp_snowrho(jj,jwrk) = psnowrho(ji,jwrk)
214 zp_snowheat(jj,jwrk) = psnowheat(ji,jwrk)
215 zp_snowage(jj,jwrk) = psnowage(ji,jwrk)
216 zp_snowdz(jj,jwrk) = psnowdz(ji,jwrk)
222 zp_snow(jj) = zsnow(ji)
226 zp_vmod(jj) = pvmod(ji)
227 zp_permsnowfrac(jj) = ppermsnowfrac(ji)
234 zp_snowheat(:,:) = zp_snowheat(:,:)*zp_snowdz(:,:)
237 CALL snow3lfall(ptstep,zp_sr,zp_ta,zp_vmod,zp_snow,zp_snowrho,zp_snowdz, &
238 zp_snowheat,zp_snowhmass,zp_snowage,zp_permsnowfrac)
240 CALL snow3lgrid(zp_snowdzn,zp_snow,psnowdz_old=zp_snowdz)
242 CALL snow3ltransf(zp_snow,zp_snowdz,zp_snowdzn,zp_snowrho,zp_snowheat,zp_snowage)
250 zp_snowtemp(:,:) =
xtt + ( ((zp_snowheat(:,:)/max(1.e-10,zp_snowdz(:,:))) &
251 +
xlmtt*zp_snowrho(:,:))/zp_heatcaps(:,:) )
253 zp_snowliq(:,:) = max(0.0,zp_snowtemp(:,:)-
xtt)*zp_heatcaps(:,:)* &
256 zp_snowtemp(:,:) = min(
xtt,zp_snowtemp(:,:))
260 zp_snowswe(:,:) = zp_snowdz(:,:)*zp_snowrho(:,:)
266 CALL snow3lthrm(zp_snowrho,zp_scond,zp_snowtemp,zp_ps)
275 psnowswe(ji,jwrk) = zp_snowswe(jj,jwrk)
276 psnowrho(ji,jwrk) = zp_snowrho(jj,jwrk)
277 psnowage(ji,jwrk) = zp_snowage(jj,jwrk)
278 psnowdz(ji,jwrk) = zp_snowdz(jj,jwrk)
279 psnowtemp(ji,jwrk) = zp_snowtemp(jj,jwrk)
280 psnowliq(ji,jwrk) = zp_snowliq(jj,jwrk)
281 pscond(ji,jwrk) = zp_scond(jj,jwrk)
282 pheatcaps(ji,jwrk) = zp_heatcaps(jj,jwrk)
subroutine call_snow_routines(KSIZE1, KSIZE2, KMASK)
subroutine preps_for_meb_ebud_rad(PPS, PLAICV, PSNOWRHO, PSNOWSWE, PSNOWHEAT, PSNOWLIQ, PSNOWTEMP, PSNOWDZ, PSCOND, PHEATCAPS, PEMISNOW, PSIGMA_F, PCHIP, PTSTEP, PSR, PTA, PVMOD, PSNOWAGE, PPERMSNOWFRAC)