6 SUBROUTINE snow3l_isba(IO, G, PK, PEK, DK, DEK, DMK, OMEB, HIMPLICIT_WIND, &
7 TPTIME, PTSTEP, PVEGTYPE, PTG, PCT, PSOILHCAPZ, &
8 PSOILCONDZ, PPS, PTA, PSW_RAD, PQA, PVMOD, PLW_RAD, PRR, &
9 PSR, PRHOA, PUREF, PEXNS, PEXNA, PDIRCOSZW, PZREF, &
10 PALB, PD_G, PDZG, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, &
11 PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PTHRUFAL, &
12 PGRNDFLUX, PFLSN_COR, PGSFCSNOW, PEVAPCOR, PLES3L, PLEL3L,&
13 PEVAP, PSNOWSFCH, PDELHEATN, PDELHEATN_SFC, PRI, PZENITH, &
14 PDELHEATG, PDELHEATG_SFC, PQS )
78 USE modd_snow_par
, ONLY : xrhosmax_es, xsnowdmin, xrhosmin_es, xemissn
82 USE modd_data_cover_par
, ONLY : nvt_snow, &
83 nvt_tebd, nvt_trbe, nvt_bone, &
84 nvt_trbd, nvt_tebe, nvt_tene, &
85 nvt_bobd, nvt_bond, nvt_shrb
107 TYPE(
grid_t),
INTENT(INOUT) :: G
110 TYPE(
diag_t),
INTENT(INOUT) :: DK
114 LOGICAL,
INTENT(IN) :: OMEB
119 CHARACTER(LEN=*),
INTENT(IN) :: HIMPLICIT_WIND
124 REAL,
INTENT(IN) :: PTSTEP
127 REAL,
DIMENSION(:,:),
INTENT(IN) :: PVEGTYPE
130 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: PTG
133 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSOILHCAPZ, PD_G, PDZG
134 REAL,
DIMENSION(:),
INTENT(IN) :: PCT, PSOILCONDZ
142 REAL,
DIMENSION(:),
INTENT(IN) :: PPS, PTA, PSW_RAD, PQA, &
143 PVMOD, PLW_RAD, PSR, PRR
154 REAL,
DIMENSION(:),
INTENT(IN) :: PZREF, PUREF, PEXNS, PEXNA, PDIRCOSZW, PRHOA, PALB
165 REAL,
DIMENSION(:),
INTENT(IN) :: PPEW_A_COEF, PPEW_B_COEF, &
166 PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, &
175 REAL,
DIMENSION(:),
INTENT(INOUT) :: PLES3L, PLEL3L, PEVAP, PGRNDFLUX, PDELHEATG, PDELHEATG_SFC
185 REAL,
DIMENSION(:),
INTENT(INOUT) :: PRI
188 REAL,
DIMENSION(:),
INTENT(OUT) :: PTHRUFAL, PFLSN_COR, PEVAPCOR, PGSFCSNOW
201 REAL,
DIMENSION(:),
INTENT(OUT) :: PSNOWSFCH, PDELHEATN, PDELHEATN_SFC
203 REAL,
DIMENSION(:),
INTENT(OUT) :: PQS
208 REAL,
DIMENSION(:),
INTENT(IN) :: PZENITH
212 REAL,
PARAMETER :: ZCHECK_TEMP = 50.0
220 REAL,
DIMENSION(SIZE(PTA)) :: ZRRSNOW, ZSOILCOND, ZSNOW, ZSNOWFALL, &
221 ZSNOWABLAT_DELTA, ZSNOWSWE_1D, ZSNOWD, &
222 ZSNOWH, ZSNOWH1, ZGRNDFLUXN, ZPSN, &
223 ZSOILCOR, ZSNOWSWE_OUT, ZTHRUFAL, &
224 ZSNOW_MASS_BUDGET, ZWGHT, ZWORK, ZC2
253 INTEGER :: ISIZE_SNOW
254 INTEGER,
DIMENSION(SIZE(PTA)) :: NMASK
256 LOGICAL,
DIMENSION(SIZE(PTA)) :: LREMOVE_SNOW
258 REAL,
DIMENSION(SIZE(PTA)) :: ZSWNET_N, ZSWNET_NS, ZLWNET_N
260 LOGICAL :: GCOMPUTECRODIAG
262 REAL(KIND=JPRB) :: ZHOOK_HANDLE
271 IF (
SIZE(dmk%XSNOWDEND)>0)
THEN 272 dmk%XSNOWDEND (:,:) =
xundef 273 dmk%XSNOWSPHER(:,:) =
xundef 274 dmk%XSNOWSIZE (:,:) =
xundef 275 dmk%XSNOWSSA (:,:) =
xundef 276 dmk%XSNOWRAM (:,:) =
xundef 277 dmk%XSNOWSHEAR(:,:) =
xundef 278 dmk%XSNOWTYPEMEPRA(:,:) =
xundef 281 dek%XSNDRIFT(:) = 0.0
282 dmk%XSNOWHMASS(:) = 0.0
283 dmk%XSRSFC(:) = psr(:)
284 dmk%XRRSFC(:) = prr(:)
301 zsnowablat_delta(:) = 0.0
307 dmk%XSNOWLIQ(:,:) = 0.0
308 dmk%XSNOWDZ(:,:) = 0.0
310 inlvls =
SIZE(pek%TSNOW%WSNOW(:,:),2)
311 inlvlg = min(
SIZE(pd_g(:,:),2),
SIZE(ptg(:,:),2))
323 pek%TSNOW%EMIS(:) = xemissn
326 dmk%XGFLUXSNOW(:) = 0.0
328 dmk%XUSTARSNOW(:) = 0.0
337 IF (pek%TSNOW%SCHEME==
'3-L' .OR. io%CISBA ==
'DIF' .OR. pek%TSNOW%SCHEME ==
'CRO')
THEN 347 zswnet_n(:) = dek%XSWNET_N(:)
348 zswnet_ns(:) = dek%XSWNET_NS(:)
349 zlwnet_n(:) = dek%XLWNET_N(:)
357 zrrsnow(jj) = pek%XPSN(jj)*prr(jj)
358 dmk%XRRSFC(jj) = prr(jj) - zrrsnow(jj)
359 zsnowfall(jj) = psr(jj)*ptstep/xrhosmax_es
367 zsnowh1(:) = pek%TSNOW%HEAT(:,1)*pek%TSNOW%WSNOW(:,1)/pek%TSNOW%RHO(:,1)
369 DO jwrk=1,
SIZE(pek%TSNOW%WSNOW(:,:),2)
370 DO jj=1,
SIZE(pek%TSNOW%WSNOW(:,:),1)
371 zsnowswe_1d(jj) = zsnowswe_1d(jj) + pek%TSNOW%WSNOW(jj,jwrk)
372 zsnow(jj) = zsnow(jj) + pek%TSNOW%WSNOW(jj,jwrk)/pek%TSNOW%RHO(jj,jwrk)
373 zsnowh(jj) = zsnowh(jj) + pek%TSNOW%HEAT (jj,jwrk)*pek%TSNOW%WSNOW(jj,jwrk)/pek%TSNOW%RHO(jj,jwrk)
377 IF(io%CISBA ==
'DIF')
THEN 378 zsoilcond(:) = psoilcondz(:)
386 zsoilcond(:) = 4.*
xpi/( dmk%XCG(:)*dmk%XCG(:)*
xday/(pd_g(:,1)*pct(:)) )
403 IF (zsnow(jj) >= xsnowdmin .OR. zsnowfall(jj) >= xsnowdmin)
THEN 404 isize_snow = isize_snow + 1
405 nmask(isize_snow) = jj
409 IF (isize_snow>0)
CALL call_model(isize_snow,inlvls,inlvlg,nmask)
420 DO jwrk=1,
SIZE(pek%TSNOW%WSNOW(:,:),2)
421 DO jj=1,
SIZE(pek%TSNOW%WSNOW(:,:),1)
422 zsnowd(jj) = zsnowd(jj) + pek%TSNOW%WSNOW(jj,jwrk)/pek%TSNOW%RHO(jj,jwrk)
423 zsnowswe_out(jj) = zsnowswe_out(jj) + pek%TSNOW%WSNOW(jj,jwrk)
427 lremove_snow(:)=(zsnowd(:)<xsnowdmin*1.1)
432 IF(io%CISBA ==
'DIF')
THEN 433 zwght(:) = psoilhcapz(:,2)*pdzg(:,2)/(psoilhcapz(:,1)*pdzg(:,1) + psoilhcapz(:,2)*pdzg(:,2))
434 zc2(:) = 1/(psoilhcapz(:,2)*pdzg(:,2))
436 zwght(:) = (pd_g(:,2)-pd_g(:,1))/pd_g(:,2)
442 zpsn(:) = pek%XPSN(:)
445 zsnowablat_delta(:) = 0.0
446 zthrufal(:) = pthrufal(:)
448 WHERE(lremove_snow(:))
450 zsnowswe_out(:) = 0.0
451 ples3l(:) = min(ples3l(:),
xlstt*(zsnowswe_1d(:)/ptstep + psr(:)))
453 pevap(:) = ples3l(:)/pk%XLSTT(:)
454 pthrufal(:) = max(0.0, zsnowswe_1d(:)/ptstep + psr(:) - pevap(:)*zpsn(:) + zrrsnow(:))
455 zthrufal(:) = max(0.0, zsnowswe_1d(:)/ptstep + psr(:) - pevap(:) + zrrsnow(:))
458 dmk%XRRSFC(:) = dmk%XRRSFC(:)
460 zsnowablat_delta(:) = 1.0
467 dmk%XGFLUXSNOW(:) = dmk%XRNSNOW(:) - dmk%XHSNOW(:) - ples3l(:) - plel3l(:)
468 dmk%XSNOWHMASS(:) = -psr(:)*(
xlmtt*ptstep)
471 pdelheatn(:) = -zsnowh(:) /ptstep
472 pdelheatn_sfc(:) = -zsnowh1(:)/ptstep
473 psnowsfch(:) = pdelheatn_sfc(:) - (zswnet_ns(:) + zlwnet_n(:) &
474 - dmk%XHSNOW(:) - ples3l(:) - plel3l(:)) + pgsfcsnow(:) &
475 - dmk%XSNOWHMASS(:)/ptstep
476 zgrndfluxn(:) = (zsnowh(:)+dmk%XSNOWHMASS(:))/ptstep + dmk%XGFLUXSNOW(:)
477 zwork(:) = ptstep * zpsn(:) * (zgrndfluxn(:) - pgrndflux(:) - pflsn_cor(:))
478 ptg(:,1) = ptg(:,1) + zwork(:)*(1.-zwght(:))*pct(:)
479 ptg(:,2) = ptg(:,2) + zwork(:)* zwght(:) *zc2(:)
480 zwork(:) = zwork(:) / ptstep
481 pdelheatg(:) = pdelheatg(:) + zwork(:)
482 pdelheatg_sfc(:) = pdelheatg_sfc(:) + zwork(:)
483 pgrndflux(:) = zgrndfluxn(:)
490 DO jj=1,
SIZE(pek%TSNOW%WSNOW(:,:),1)
491 pek%TSNOW%WSNOW(jj,jwrk) = (1.0-zsnowablat_delta(jj))*pek%TSNOW%WSNOW(jj,jwrk)
492 pek%TSNOW%HEAT (jj,jwrk) = (1.0-zsnowablat_delta(jj))*pek%TSNOW%HEAT (jj,jwrk)
493 pek%TSNOW%RHO (jj,jwrk) = (1.0-zsnowablat_delta(jj))*pek%TSNOW%RHO (jj,jwrk) + &
494 zsnowablat_delta(jj)*xrhosmin_es
495 pek%TSNOW%AGE(jj,jwrk) = (1.0-zsnowablat_delta(jj))*pek%TSNOW%AGE (jj,jwrk)
496 dmk%XSNOWTEMP(jj,jwrk) = (1.0-zsnowablat_delta(jj))*dmk%XSNOWTEMP(jj,jwrk) + &
497 zsnowablat_delta(jj)*
xtt 498 dmk%XSNOWLIQ (jj,jwrk) = (1.0-zsnowablat_delta(jj))*dmk%XSNOWLIQ(jj,jwrk)
499 dmk%XSNOWDZ (jj,jwrk) = (1.0-zsnowablat_delta(jj))*dmk%XSNOWDZ (jj,jwrk)
503 IF (pek%TSNOW%SCHEME==
'CRO')
THEN 505 DO jj=1,
SIZE(pek%TSNOW%GRAN1(:,:),1)
506 pek%TSNOW%GRAN1(jj,jwrk) = (1.0-zsnowablat_delta(jj))*pek%TSNOW%GRAN1(jj,jwrk)
507 pek%TSNOW%GRAN2(jj,jwrk) = (1.0-zsnowablat_delta(jj))*pek%TSNOW%GRAN2(jj,jwrk)
508 pek%TSNOW%HIST (jj,jwrk) = (1.0-zsnowablat_delta(jj))*pek%TSNOW%HIST (jj,jwrk)
517 zsnow_mass_budget(:) = (zsnowswe_1d(:)-zsnowswe_out(:))/ptstep + psr(:)+zrrsnow(:) &
518 - pevap(:)-zthrufal(:) &
519 + pevapcor(:)+zsoilcor(:)
527 pevapcor(:) = pevapcor(:)*zpsn(:) + zsoilcor(:)
535 DO jj=1,
SIZE(pek%TSNOW%WSNOW,1)
537 IF (pek%TSNOW%WSNOW(jj,jwrk)>0.0)
THEN 539 IF (dmk%XSNOWTEMP(jj,jwrk)<zcheck_temp)
THEN 540 WRITE(*,*)
'Suspicious low temperature :',dmk%XSNOWTEMP(jj,jwrk)
541 WRITE(*,*)
'At point and location :',jj,
'LAT=',g%XLAT(jj),
'LON=',g%XLON(jj)
542 WRITE(*,*)
'At snow level / total layer:',jwrk,
'/',inlvls
543 WRITE(*,*)
'SNOW MASS BUDGET (kg/m2/s) :',zsnow_mass_budget(jj)
544 WRITE(*,*)
'SWE BY LAYER (kg/m2) :',pek%TSNOW%WSNOW (jj,1:inlvls)
545 WRITE(*,*)
'DEKTH BY LAYER (m) :',dmk%XSNOWDZ (jj,1:inlvls)
546 WRITE(*,*)
'DENSITY BY LAYER (kg/m3) :',pek%TSNOW%RHO(jj,1:inlvls)
547 WRITE(*,*)
'TEMPERATURE BY LAYER (K) :',dmk%XSNOWTEMP(jj,1:inlvls)
548 CALL abor1_sfx(
'SNOW3L_ISBA: Suspicious low temperature')
554 dmk%XSNOWDZ(jj,jwrk)=
xundef 558 IF (.NOT.(pek%XPSN(jj)>0.0.AND.jwrk==1)) dmk%XSNOWTEMP(jj,jwrk) =
xundef 559 dmk%XSNOWLIQ (jj,jwrk) =
xundef 560 pek%TSNOW%HEAT(jj,jwrk) =
xundef 561 pek%TSNOW%RHO (jj,jwrk) =
xundef 562 pek%TSNOW%AGE (jj,jwrk) =
xundef 563 IF (pek%TSNOW%SCHEME==
'CRO')
THEN 564 pek%TSNOW%GRAN1(jj,jwrk) =
xundef 565 pek%TSNOW%GRAN2(jj,jwrk) =
xundef 566 pek%TSNOW%HIST (jj,jwrk) =
xundef 573 dek%XSWNET_N(:) = zswnet_n(:)
574 dek%XSWNET_NS(:) = zswnet_ns(:)
575 dek%XLWNET_N(:) = zlwnet_n(:)
587 SUBROUTINE call_model(KSIZE1,KSIZE2,KSIZE3,KMASK)
591 INTEGER,
INTENT(IN) :: KSIZE1
592 INTEGER,
INTENT(IN) :: KSIZE2
593 INTEGER,
INTENT(IN) :: KSIZE3
594 INTEGER,
DIMENSION(:),
INTENT(IN) :: KMASK
596 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWSWE
597 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWDZ
598 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWRHO
599 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWHEAT
600 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWTEMP
601 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWLIQ
602 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWGRAN1
603 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWGRAN2
604 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWHIST
605 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWAGE
606 REAL,
DIMENSION(KSIZE1) :: ZP_SNOWALB
607 REAL,
DIMENSION(KSIZE1) :: ZP_SWNETSNOW
608 REAL,
DIMENSION(KSIZE1) :: ZP_SWNETSNOWS
609 REAL,
DIMENSION(KSIZE1) :: ZP_LWNETSNOW
610 REAL,
DIMENSION(KSIZE1) :: ZP_PS
611 REAL,
DIMENSION(KSIZE1) :: ZP_SRSNOW
612 REAL,
DIMENSION(KSIZE1) :: ZP_RRSNOW
613 REAL,
DIMENSION(KSIZE1) :: ZP_PSN3L
614 REAL,
DIMENSION(KSIZE1) :: ZP_TA
615 REAL,
DIMENSION(KSIZE1) :: ZP_CT
616 REAL,
DIMENSION(KSIZE1,KSIZE3) :: ZP_TG
617 REAL,
DIMENSION(KSIZE1,KSIZE3) :: ZP_D_G
618 REAL,
DIMENSION(KSIZE1,KSIZE3) :: ZP_DZG
619 REAL,
DIMENSION(KSIZE1,KSIZE3) :: ZP_SOILHCAPZ
620 REAL,
DIMENSION(KSIZE1) :: ZP_SOILD
621 REAL,
DIMENSION(KSIZE1) :: ZP_DELHEATG
622 REAL,
DIMENSION(KSIZE1) :: ZP_DELHEATG_SFC
623 REAL,
DIMENSION(KSIZE1) :: ZP_SW_RAD
624 REAL,
DIMENSION(KSIZE1) :: ZP_QA
625 REAL,
DIMENSION(KSIZE1) :: ZP_LVTT
626 REAL,
DIMENSION(KSIZE1) :: ZP_LSTT
627 REAL,
DIMENSION(KSIZE1) :: ZP_VMOD
628 REAL,
DIMENSION(KSIZE1) :: ZP_LW_RAD
629 REAL,
DIMENSION(KSIZE1) :: ZP_RHOA
630 REAL,
DIMENSION(KSIZE1) :: ZP_UREF
631 REAL,
DIMENSION(KSIZE1) :: ZP_EXNS
632 REAL,
DIMENSION(KSIZE1) :: ZP_EXNA
633 REAL,
DIMENSION(KSIZE1) :: ZP_DIRCOSZW
634 REAL,
DIMENSION(KSIZE1) :: ZP_ZREF
635 REAL,
DIMENSION(KSIZE1) :: ZP_Z0NAT
636 REAL,
DIMENSION(KSIZE1) :: ZP_Z0HNAT
637 REAL,
DIMENSION(KSIZE1) :: ZP_Z0EFF
638 REAL,
DIMENSION(KSIZE1) :: ZP_ALB
639 REAL,
DIMENSION(KSIZE1) :: ZP_SOILCOND
640 REAL,
DIMENSION(KSIZE1) :: ZP_THRUFAL
641 REAL,
DIMENSION(KSIZE1) :: ZP_GRNDFLUX
642 REAL,
DIMENSION(KSIZE1) :: ZP_FLSN_COR
643 REAL,
DIMENSION(KSIZE1) :: ZP_GSFCSNOW
644 REAL,
DIMENSION(KSIZE1) :: ZP_EVAPCOR
645 REAL,
DIMENSION(KSIZE1) :: ZP_SOILCOR
646 REAL,
DIMENSION(KSIZE1) :: ZP_GFLXCOR
647 REAL,
DIMENSION(KSIZE1) :: ZP_RNSNOW
648 REAL,
DIMENSION(KSIZE1) :: ZP_HSNOW
649 REAL,
DIMENSION(KSIZE1) :: ZP_GFLUXSNOW
650 REAL,
DIMENSION(KSIZE1) :: ZP_DELHEATN
651 REAL,
DIMENSION(KSIZE1) :: ZP_DELHEATN_SFC
652 REAL,
DIMENSION(KSIZE1) :: ZP_SNOWSFCH
653 REAL,
DIMENSION(KSIZE1) :: ZP_HPSNOW
654 REAL,
DIMENSION(KSIZE1) :: ZP_LES3L
655 REAL,
DIMENSION(KSIZE1) :: ZP_LEL3L
656 REAL,
DIMENSION(KSIZE1) :: ZP_EVAP
657 REAL,
DIMENSION(KSIZE1) :: ZP_SNDRIFT
658 REAL,
DIMENSION(KSIZE1) :: ZP_RI
659 REAL,
DIMENSION(KSIZE1) :: ZP_QS
660 REAL,
DIMENSION(KSIZE1) :: ZP_EMISNOW
661 REAL,
DIMENSION(KSIZE1) :: ZP_CDSNOW
662 REAL,
DIMENSION(KSIZE1) :: ZP_USTARSNOW
663 REAL,
DIMENSION(KSIZE1) :: ZP_CHSNOW
664 REAL,
DIMENSION(KSIZE1) :: ZP_SNOWHMASS
665 REAL,
DIMENSION(KSIZE1) :: ZP_VEGTYPE
666 REAL,
DIMENSION(KSIZE1) :: ZP_FOREST
667 REAL,
DIMENSION(KSIZE1) :: ZP_PEW_A_COEF
668 REAL,
DIMENSION(KSIZE1) :: ZP_PEW_B_COEF
669 REAL,
DIMENSION(KSIZE1) :: ZP_PET_A_COEF
670 REAL,
DIMENSION(KSIZE1) :: ZP_PET_B_COEF
671 REAL,
DIMENSION(KSIZE1) :: ZP_PEQ_A_COEF
672 REAL,
DIMENSION(KSIZE1) :: ZP_PEQ_B_COEF
673 REAL,
DIMENSION(KSIZE1) :: ZP_ZENITH
674 REAL,
DIMENSION(KSIZE1) :: ZP_LAT,ZP_LON
675 REAL,
DIMENSION(KSIZE1) :: ZP_PSN_INV
676 REAL,
DIMENSION(KSIZE1) :: ZP_PSN
677 REAL,
DIMENSION(KSIZE1) :: ZP_PSN_GFLXCOR
678 REAL,
DIMENSION(KSIZE1) :: ZP_WORK
680 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWDEND
681 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWSPHER
682 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWSIZE
683 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWSSA
684 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWTYPEMEPRA
685 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWRAM
686 REAL,
DIMENSION(KSIZE1,KSIZE2) :: ZP_SNOWSHEAR
687 REAL,
DIMENSION(KSIZE1) :: ZP_SNDPT_1DY
688 REAL,
DIMENSION(KSIZE1) :: ZP_SNDPT_3DY
689 REAL,
DIMENSION(KSIZE1) :: ZP_SNDPT_5DY
690 REAL,
DIMENSION(KSIZE1) :: ZP_SNDPT_7DY
691 REAL,
DIMENSION(KSIZE1) :: ZP_SNSWE_1DY
692 REAL,
DIMENSION(KSIZE1) :: ZP_SNSWE_3DY
693 REAL,
DIMENSION(KSIZE1) :: ZP_SNSWE_5DY
694 REAL,
DIMENSION(KSIZE1) :: ZP_SNSWE_7DY
695 REAL,
DIMENSION(KSIZE1) :: ZP_SNRAM_SONDE
696 REAL,
DIMENSION(KSIZE1) :: ZP_SN_WETTHCKN
697 REAL,
DIMENSION(KSIZE1) :: ZP_SN_REFRZNTHCKN
699 REAL,
PARAMETER :: ZDEPTHABS = 0.60
701 INTEGER :: JWRK, JJ, JI
702 REAL(KIND=JPRB) :: ZHOOK_HANDLE
704 IF (
lhook)
CALL dr_hook(
'SNOW3L_ISBA:CALL_MODEL',0,zhook_handle)
708 zp_psn_gflxcor(:) = 0.
717 zp_snowswe(jj,jwrk) = pek%TSNOW%WSNOW (ji,jwrk)
718 zp_snowrho(jj,jwrk) = pek%TSNOW%RHO (ji,jwrk)
719 zp_snowheat(jj,jwrk) = pek%TSNOW%HEAT(ji,jwrk)
720 zp_snowage(jj,jwrk) = pek%TSNOW%AGE (ji,jwrk)
721 zp_snowtemp(jj,jwrk) = dmk%XSNOWTEMP(ji,jwrk)
722 zp_snowliq(jj,jwrk) = dmk%XSNOWLIQ (ji,jwrk)
723 zp_snowdz(jj,jwrk) = dmk%XSNOWDZ (ji,jwrk)
727 IF (pek%TSNOW%SCHEME==
'CRO')
THEN 731 zp_snowgran1(jj,jwrk) = pek%TSNOW%GRAN1 (ji,jwrk)
732 zp_snowgran2(jj,jwrk) = pek%TSNOW%GRAN2 (ji,jwrk)
733 zp_snowhist(jj,jwrk) = pek%TSNOW%HIST (ji,jwrk)
739 zp_snowgran1(jj,jwrk) =
xundef 740 zp_snowgran2(jj,jwrk) =
xundef 741 zp_snowhist(jj,jwrk) =
xundef 749 zp_tg(jj,jwrk) = ptg(ji,jwrk)
750 zp_d_g(jj,jwrk) = pd_g(ji,jwrk)
751 zp_soilhcapz(jj,jwrk) = psoilhcapz(ji,jwrk)
759 zp_dzg(jj,jwrk) = pdzg(ji,jwrk)
766 zp_lvtt(jj) = pk%XLVTT (ji)
767 zp_lstt(jj) = pk%XLSTT (ji)
768 zp_emisnow(jj) = pek%TSNOW%EMIS(ji)
769 zp_snowalb(jj) = pek%TSNOW%ALB (ji)
770 zp_psn3l(jj) = pek%XPSN (ji)
771 zp_z0nat(jj) = dk%XZ0 (ji)
772 zp_z0hnat(jj) = dk%XZ0H (ji)
773 zp_z0eff(jj) = dk%XZ0EFF(ji)
774 zp_rnsnow(jj) = dmk%XRNSNOW (ji)
775 zp_hsnow(jj) = dmk%XHSNOW (ji)
776 zp_hpsnow(jj) = dmk%XHPSNOW (ji)
779 zp_srsnow(jj) = psr(ji)
782 zp_delheatg(jj) = pdelheatg(ji)
783 zp_delheatg_sfc(jj) = pdelheatg_sfc(ji)
784 zp_sw_rad(jj) = psw_rad(ji)
786 zp_vmod(jj) = pvmod(ji)
787 zp_lw_rad(jj) = plw_rad(ji)
788 zp_rhoa(jj) = prhoa(ji)
789 zp_uref(jj) = puref(ji)
790 zp_exns(jj) = pexns(ji)
791 zp_exna(jj) = pexna(ji)
792 zp_dircoszw(jj) = pdircoszw(ji)
793 zp_zref(jj) = pzref(ji)
794 zp_alb(jj) = palb(ji)
796 zp_rrsnow(jj) = zrrsnow(ji)
797 zp_soilcond(jj) = zsoilcond(ji)
800 zp_pew_a_coef(jj) = ppew_a_coef(ji)
801 zp_pew_b_coef(jj) = ppew_b_coef(ji)
802 zp_pet_a_coef(jj) = ppet_a_coef(ji)
803 zp_peq_a_coef(jj) = ppeq_a_coef(ji)
804 zp_pet_b_coef(jj) = ppet_b_coef(ji)
805 zp_peq_b_coef(jj) = ppeq_b_coef(ji)
807 zp_lat(jj) = g%XLAT(ji)
808 zp_lon(jj) = g%XLON(ji)
810 zp_zenith(jj) = pzenith(ji)
812 zp_grndflux(jj) = pgrndflux(ji)
813 zp_delheatn(jj) = pdelheatn(ji)
814 zp_delheatn_sfc(jj) = pdelheatn_sfc(ji)
815 zp_snowsfch(jj) = psnowsfch(ji)
816 zp_les3l(jj) = ples3l(ji)
817 zp_lel3l(jj) = plel3l(ji)
818 zp_evap(jj) = pevap(ji)
820 zp_swnetsnow(jj) = zswnet_n(ji)
821 zp_swnetsnows(jj) = zswnet_ns(ji)
822 zp_lwnetsnow(jj) = zlwnet_n(ji)
827 zp_vegtype(jj) = pvegtype(ji,nvt_snow)
828 zp_forest(jj) = pvegtype(ji,nvt_tebd) + pvegtype(ji,nvt_trbe) + pvegtype(ji,nvt_bone) &
829 + pvegtype(ji,nvt_trbd) + pvegtype(ji,nvt_tebe) + pvegtype(ji,nvt_tene) &
830 + pvegtype(ji,nvt_bobd) + pvegtype(ji,nvt_bond) + pvegtype(ji,nvt_shrb)
836 WHERE(zp_snowswe(:,:)>0.) &
837 zp_snowheat(:,:) = zp_snowheat(:,:) / zp_snowrho(:,:) * zp_snowswe(:,:)
841 zp_psn(:) = zp_psn3l(:)
850 zp_psn(:) = max(1.e-4, zp_psn3l(:))
851 zp_psn_inv(:) = 1.0/zp_psn(:)
853 zp_rnsnow(:) = zp_rnsnow(:) *zp_psn_inv(:)
854 zp_swnetsnow(:) = zp_swnetsnow(:) *zp_psn_inv(:)
855 zp_swnetsnows(:) = zp_swnetsnows(:) *zp_psn_inv(:)
856 zp_lwnetsnow(:) = zp_lwnetsnow(:) *zp_psn_inv(:)
857 zp_hsnow(:) = zp_hsnow(:) *zp_psn_inv(:)
858 zp_gfluxsnow(:) = zp_gfluxsnow(:) *zp_psn_inv(:)
859 zp_gsfcsnow(:) = zp_gsfcsnow(:) *zp_psn_inv(:)
860 zp_snowhmass(:) = zp_snowhmass(:) *zp_psn_inv(:)
861 zp_les3l(:) = zp_les3l(:) *zp_psn_inv(:)
862 zp_lel3l(:) = zp_lel3l(:) *zp_psn_inv(:)
863 zp_grndflux(:) = zp_grndflux(:) *zp_psn_inv(:)
864 zp_evap(:) = zp_evap(:) *zp_psn_inv(:)
865 zp_hpsnow(:) = zp_hpsnow(:) *zp_psn_inv(:)
866 zp_delheatn(:) = zp_delheatn(:) *zp_psn_inv(:)
867 zp_delheatn_sfc(:)= zp_delheatn_sfc(:)*zp_psn_inv(:)
868 zp_snowsfch(:) = zp_snowsfch(:) *zp_psn_inv(:)
870 zp_srsnow(:) = zp_srsnow(:) *zp_psn_inv(:)
871 zp_rrsnow(:) = zp_rrsnow(:) *zp_psn_inv(:)
875 zp_snowswe(ji,jj) = zp_snowswe(ji,jj) *zp_psn_inv(ji)
876 zp_snowheat(ji,jj) = zp_snowheat(ji,jj)*zp_psn_inv(ji)
877 zp_snowdz(ji,jj) = zp_snowdz(ji,jj) *zp_psn_inv(ji)
885 IF (pek%TSNOW%SCHEME==
'CRO')
THEN 886 CALL snowcro(io%CSNOWRES, tptime, io%LGLACIER, himplicit_wind, &
887 zp_pew_a_coef, zp_pew_b_coef, zp_pet_a_coef, zp_peq_a_coef,&
888 zp_pet_b_coef, zp_peq_b_coef, zp_snowswe, zp_snowrho, &
889 zp_snowheat, zp_snowalb, zp_snowgran1, zp_snowgran2, &
890 zp_snowhist, zp_snowage, ptstep, zp_ps, zp_srsnow, &
891 zp_rrsnow, zp_psn3l, zp_ta, zp_tg(:,1), zp_sw_rad, zp_qa, &
892 zp_vmod, zp_lw_rad, zp_rhoa, zp_uref, zp_exns, zp_exna, &
893 zp_dircoszw, zp_zref, zp_z0nat, zp_z0eff, zp_z0hnat, &
894 zp_alb, zp_soilcond, zp_d_g(:,1), zp_snowliq, zp_snowtemp, &
895 zp_snowdz, zp_thrufal, zp_grndflux, zp_evapcor, zp_rnsnow, &
896 zp_hsnow, zp_gfluxsnow, zp_hpsnow, zp_les3l, zp_lel3l, &
897 zp_evap, zp_sndrift, zp_ri,zp_emisnow, zp_cdsnow, &
898 zp_ustarsnow, zp_chsnow, zp_snowhmass, zp_qs, zp_vegtype, &
899 zp_zenith, zp_lat, zp_lon, io%LSNOWDRIFT, &
900 io%LSNOWDRIFT_SUBLIM, io%LSNOW_ABS_ZENITH, io%CSNOWMETAMO, &
909 gcomputecrodiag = (
SIZE(dmk%XSNOWDEND)>0)
911 gcomputecrodiag = (
SIZE(dmk%XSNOWDEND)>0).AND.(mod(tptime%TIME,
xtstep_output)==0.)
915 IF (gcomputecrodiag)
THEN 917 zp_snowdz, zp_snowswe, zp_snowrho, zp_snowgran1, zp_snowgran2, zp_snowage, &
918 zp_snowhist, zp_snowtemp, zp_snowliq, zp_dircoszw, zp_snowdend, zp_snowspher, &
919 zp_snowsize, zp_snowssa, zp_snowtypemepra, zp_snowram, zp_snowshear, &
920 zp_sndpt_1dy, zp_sndpt_3dy, zp_sndpt_5dy, zp_sndpt_7dy, zp_snswe_1dy, &
921 zp_snswe_3dy, zp_snswe_5dy, zp_snswe_7dy, zp_snram_sonde, zp_sn_wetthckn, &
927 CALL snow3l(io%CSNOWRES, tptime, omeb, himplicit_wind, &
928 zp_pew_a_coef, zp_pew_b_coef, &
929 zp_pet_a_coef, zp_peq_a_coef,zp_pet_b_coef, zp_peq_b_coef, &
930 zp_snowswe, zp_snowrho, zp_snowheat, zp_snowalb, &
931 zp_snowgran1, zp_snowgran2, zp_snowhist, zp_snowage, ptstep, &
932 zp_ps, zp_srsnow, zp_rrsnow, zp_psn3l, zp_ta, zp_tg(:,1), &
933 zp_sw_rad, zp_qa, zp_vmod, zp_lw_rad, zp_rhoa, zp_uref, &
934 zp_exns, zp_exna, zp_dircoszw, zp_zref, zp_z0nat, zp_z0eff, &
935 zp_z0hnat, zp_alb, zp_soilcond, zp_d_g(:,1), &
936 zp_lvtt, zp_lstt, zp_snowliq, &
937 zp_snowtemp, zp_snowdz, zp_thrufal, zp_grndflux , &
938 zp_evapcor, zp_soilcor, zp_gflxcor, zp_snowsfch, &
939 zp_delheatn, zp_delheatn_sfc, &
940 zp_swnetsnow, zp_swnetsnows, zp_lwnetsnow, zp_gsfcsnow, &
941 zp_rnsnow, zp_hsnow, zp_gfluxsnow, zp_hpsnow, zp_les3l, &
942 zp_lel3l, zp_evap, zp_sndrift, zp_ri, &
943 zp_emisnow, zp_cdsnow, zp_ustarsnow, &
944 zp_chsnow, zp_snowhmass, zp_qs, zp_vegtype, zp_forest, &
945 zp_zenith, zp_lat, zp_lon, io%LSNOWDRIFT, io%LSNOWDRIFT_SUBLIM )
951 zp_rnsnow(:) = zp_rnsnow(:) /zp_psn_inv(:)
952 zp_swnetsnow(:) = zp_swnetsnow(:) /zp_psn_inv(:)
953 zp_swnetsnows(:) = zp_swnetsnows(:) /zp_psn_inv(:)
954 zp_lwnetsnow(:) = zp_lwnetsnow(:) /zp_psn_inv(:)
955 zp_hsnow(:) = zp_hsnow(:) /zp_psn_inv(:)
956 zp_les3l(:) = zp_les3l(:) /zp_psn_inv(:)
957 zp_lel3l(:) = zp_lel3l(:) /zp_psn_inv(:)
958 zp_grndflux(:) = zp_grndflux(:) /zp_psn_inv(:)
959 zp_evap(:) = zp_evap(:) /zp_psn_inv(:)
960 zp_hpsnow(:) = zp_hpsnow(:) /zp_psn_inv(:)
961 zp_gfluxsnow(:) = zp_gfluxsnow(:) /zp_psn_inv(:)
962 zp_delheatn(:) = zp_delheatn(:) /zp_psn_inv(:)
963 zp_delheatn_sfc(:)= zp_delheatn_sfc(:)/zp_psn_inv(:)
964 zp_snowsfch(:) = zp_snowsfch(:) /zp_psn_inv(:)
965 zp_gsfcsnow(:) = zp_gsfcsnow(:) /zp_psn_inv(:)
967 zp_srsnow(:) = zp_srsnow(:) /zp_psn_inv(:)
968 zp_rrsnow(:) = zp_rrsnow(:) /zp_psn_inv(:)
971 zp_snowswe(ji,jj) = zp_snowswe(ji,jj) /zp_psn_inv(ji)
972 zp_snowheat(ji,jj) = zp_snowheat(ji,jj)/zp_psn_inv(ji)
973 zp_snowdz(ji,jj) = zp_snowdz(ji,jj) /zp_psn_inv(ji)
977 zp_snowhmass(:) = zp_snowhmass(:)/zp_psn_inv(:)
978 zp_thrufal(:) = zp_thrufal(:) /zp_psn_inv(:)
1001 zp_soild(:) = zp_dzg(:,1)
1004 IF(zp_dzg(ji,jj) <= zdepthabs)
THEN 1005 zp_soild(ji) = zp_dzg(ji,jj)
1012 zp_psn_gflxcor(:) = zp_psn(:)*zp_gflxcor(:)
1013 zp_work(:) = zp_psn_gflxcor(:)*ptstep/zp_soild(:)
1015 zp_tg(:,1) = zp_tg(:,1) + zp_work(:)*zp_ct(:)*zp_d_g(:,1)
1018 IF (zp_soild(ji) <= zdepthabs)
THEN 1019 zp_tg(ji,jj) = zp_tg(ji,jj) + zp_work(ji)/zp_soilhcapz(ji,jj)
1024 zp_delheatg(:) = zp_delheatg(:) + zp_psn_gflxcor(:)
1025 zp_delheatg_sfc(:) = zp_delheatg_sfc(:) + zp_psn_gflxcor(:)
1027 zp_flsn_cor(:) = 0.0
1035 zp_flsn_cor(:) = zp_gflxcor(:)
1043 WHERE(zp_snowswe(:,:)>0.)
1044 zp_snowheat(:,:)=zp_snowheat(:,:)*zp_snowrho(:,:)/zp_snowswe(:,:)
1055 pek%TSNOW%WSNOW(ji,jwrk) = zp_snowswe(jj,jwrk)
1056 pek%TSNOW%RHO (ji,jwrk) = zp_snowrho(jj,jwrk)
1057 pek%TSNOW%HEAT (ji,jwrk) = zp_snowheat(jj,jwrk)
1058 pek%TSNOW%AGE (ji,jwrk) = zp_snowage(jj,jwrk)
1059 dmk%XSNOWTEMP(ji,jwrk) = zp_snowtemp(jj,jwrk)
1060 dmk%XSNOWLIQ (ji,jwrk) = zp_snowliq(jj,jwrk)
1061 dmk%XSNOWDZ (ji,jwrk) = zp_snowdz(jj,jwrk)
1065 IF (pek%TSNOW%SCHEME==
'CRO')
THEN 1069 pek%TSNOW%GRAN1(ji,jwrk) = zp_snowgran1(jj,jwrk)
1070 pek%TSNOW%GRAN2(ji,jwrk) = zp_snowgran2(jj,jwrk)
1071 pek%TSNOW%HIST (ji,jwrk) = zp_snowhist(jj,jwrk)
1075 IF (
SIZE(dmk%XSNOWDEND)>0)
THEN 1080 dmk%XSNOWDEND (ji,jwrk) = zp_snowdend(jj,jwrk)
1081 dmk%XSNOWSPHER (ji,jwrk) = zp_snowspher(jj,jwrk)
1082 dmk%XSNOWSIZE (ji,jwrk) = zp_snowsize(jj,jwrk)
1083 dmk%XSNOWSSA (ji,jwrk) = zp_snowssa(jj,jwrk)
1084 dmk%XSNOWTYPEMEPRA(ji,jwrk) = zp_snowtypemepra(jj,jwrk)
1085 dmk%XSNOWRAM (ji,jwrk) = zp_snowram(jj,jwrk)
1086 dmk%XSNOWSHEAR (ji,jwrk) = zp_snowshear(jj,jwrk)
1096 ptg(ji,jwrk)= zp_tg(jj,jwrk)
1102 pek%TSNOW%ALB(ji) = zp_snowalb(jj)
1103 pek%TSNOW%EMIS(ji) = zp_emisnow(jj)
1104 dmk%XCDSNOW (ji) = zp_cdsnow(jj)
1105 dmk%XUSTARSNOW(ji) = zp_ustarsnow(jj)
1106 dmk%XCHSNOW (ji) = zp_chsnow(jj)
1107 dmk%XSNOWHMASS(ji) = zp_snowhmass(jj)
1108 dmk%XRNSNOW (ji) = zp_rnsnow(jj)
1109 dmk%XHSNOW (ji) = zp_hsnow(jj)
1110 dmk%XHPSNOW (ji) = zp_hpsnow(jj)
1111 dmk%XGFLUXSNOW(ji) = zp_gfluxsnow(jj)
1113 pdelheatg(ji) = zp_delheatg(jj)
1114 pdelheatg_sfc(ji) = zp_delheatg_sfc(jj)
1115 pthrufal(ji) = zp_thrufal(jj)
1116 pevapcor(ji) = zp_evapcor(jj)
1119 pgrndflux(ji) = zp_grndflux(jj)
1120 pflsn_cor(ji) = zp_flsn_cor(jj)
1121 pdelheatn(ji) = zp_delheatn(jj)
1122 pdelheatn_sfc(ji) = zp_delheatn_sfc(jj)
1123 psnowsfch(ji) = zp_snowsfch(jj)
1124 pgsfcsnow(ji) = zp_gsfcsnow(jj)
1125 ples3l(ji) = zp_les3l(jj)
1126 plel3l(ji) = zp_lel3l(jj)
1127 pevap(ji) = zp_evap(jj)
1128 zsoilcor(ji) = zp_soilcor(jj)
1130 zswnet_n(ji) = zp_swnetsnow(jj)
1131 zswnet_ns(ji) = zp_swnetsnows(jj)
1132 zlwnet_n(ji) = zp_lwnetsnow(jj)
1135 IF (
SIZE(dmk%XSNOWDEND)>0 )
THEN 1137 dmk%XSNDPT_1DY(:) =
xundef 1138 dmk%XSNDPT_3DY(:) =
xundef 1139 dmk%XSNDPT_5DY(:) =
xundef 1140 dmk%XSNDPT_7DY(:) =
xundef 1141 dmk%XSNSWE_1DY(:) =
xundef 1142 dmk%XSNSWE_3DY(:) =
xundef 1143 dmk%XSNSWE_5DY(:) =
xundef 1144 dmk%XSNSWE_7DY(:) =
xundef 1145 dmk%XSNRAM_SONDE (:) =
xundef 1146 dmk%XSN_WETTHCKN (:) =
xundef 1147 dmk%XSN_REFRZNTHCKN(:) =
xundef 1150 dmk%XSNDPT_1DY(ji) = zp_sndpt_1dy(jj)
1151 dmk%XSNDPT_3DY(ji) = zp_sndpt_3dy(jj)
1152 dmk%XSNDPT_5DY(ji) = zp_sndpt_5dy(jj)
1153 dmk%XSNDPT_7DY(ji) = zp_sndpt_7dy(jj)
1154 dmk%XSNSWE_1DY(ji) = zp_snswe_1dy(jj)
1155 dmk%XSNSWE_3DY(ji) = zp_snswe_3dy(jj)
1156 dmk%XSNSWE_5DY(ji) = zp_snswe_5dy(jj)
1157 dmk%XSNSWE_7DY(ji) = zp_snswe_7dy(jj)
1158 dmk%XSNRAM_SONDE (ji) = zp_snram_sonde(jj)
1159 dmk%XSN_WETTHCKN (ji) = zp_sn_wetthckn(jj)
1160 dmk%XSN_REFRZNTHCKN(ji) = zp_sn_refrznthckn(jj)
1164 IF (
lhook)
CALL dr_hook(
'SNOW3L_ISBA:CALL_MODEL',1,zhook_handle)
subroutine call_model(KSIZE1, KSIZE2, KSIZE3, KMASK)
subroutine snowcro_diag(HSNOWMETAMO, PSNOWDZ, PSNOWSWE, PSNOWRHO, PSNOWGRAN1, PSNOWGRAN2, PSNOWAGE, PSNOWHIST, PSNOWTEMP, PSNOWLIQ, PDIRCOSZW, PSNOWDEND, PSNOWSPHER, PSNOWSIZE, PSNOWSSA, PSNOWTYPEMEPRA, PSNOWRAM, PSNOWSHEAR, PSNOWDEPTH_1DAYS, PSNOWDEPTH_3DAYS, PSNOWDEPTH_5DAYS, PSNOWDEPTH_7DAYS, PSNOWSWE_1DAYS, PSNOWSWE_3DAYS, PSNOWSWE_5DAYS, PSNOWSWE_7DAYS, PSNOWRAM_SONDE, PSNOW_WETTHICKNESS, PSNOW_REFROZENTHICKNESS)
subroutine abor1_sfx(YTEXT)
subroutine snow3l_isba(IO, G, PK, PEK, DK, DEK, DMK, OMEB, HIMPLICIT_WIND, TPTIME, PTSTEP, PVEGTYPE, PTG, PCT, PSOILHCAPZ, PSOILCONDZ, PPS, PTA, PSW_RAD, PQA, PVMOD, PLW_RAD, PRR, PSR, PRHOA, PUREF, PEXNS, PEXNA, PDIRCOSZW, PZREF, PALB, PD_G, PDZG, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PTHRUFAL, PGRNDFLUX, PFLSN_COR, PGSFCSNOW, PEVAPCOR, PLES3L, PLEL3L, PEVAP, PSNOWSFCH, PDELHEATN, PDELHEATN_SFC, PRI, PZENITH, PDELHEATG, PDELHEATG_SFC, PQS)
subroutine snow3l(HSNOWRES, TPTIME, OMEB, HIMPLICIT_WIND,
subroutine snowcro(HSNOWRES, TPTIME, OGLACIER, HIMPLICIT_WIND,