6 SUBROUTINE snow3l_isba(HISBA, HSNOW_ISBA, HSNOWRES, OMEB, OGLACIER, HIMPLICIT_WIND, &
7 tptime, ptstep, pvegtype, &
8 psnowswe, psnowheat, psnowrho, psnowalb, &
9 psnowgran1, psnowgran2, psnowhist,psnowage, &
10 ptg, pcg, pct, psoilhcapz, psoilcondz, &
11 pps, pta, psw_rad, pqa, pvmod, plw_rad, prr, psr, &
12 prhoa, puref, pexns, pexna, pdircoszw, plvtt, plstt, &
13 pzref, pz0nat, pz0eff, pz0hnat, palb, pd_g, pdzg, &
14 ppew_a_coef, ppew_b_coef, &
15 ppet_a_coef, ppeq_a_coef, ppet_b_coef, ppeq_b_coef, &
16 pthrufal, pgrndflux, pflsn_cor, pgsfcsnow, pevapcor, &
17 pswnetsnow, pswnetsnows, plwnetsnow, &
18 prnsnow, phsnow, pgfluxsnow, phpsnow, ples3l, plel3l, pevap, &
19 psndrift, pustarsnow, ppsn, psrsfc, prrsfc, psnowsfch, &
20 pdelheatn, pdelheatn_sfc, &
21 pemisnow, pcdsnow, pchsnow, psnowtemp, psnowliq, psnowdz, &
22 psnowhmass, pri, pzenith, pdelheatg, pdelheatg_sfc, plat, plon, pqs,&
23 osnowdrift,osnowdrift_sublim,osnow_abs_zenith, &
24 hsnowmetamo, hsnowrad )
80 USE modd_csts, ONLY : xtt, xpi, xday, xlmtt, xlstt
81 USE modd_snow_par, ONLY : xrhosmax_es, xsnowdmin, xrhosmin_es, xemissn
86 nvt_tebd, nvt_trbe, nvt_bone, &
87 nvt_trbd, nvt_tebe, nvt_tene, &
88 nvt_bobd, nvt_bond, nvt_shrb
95 USE yomhook
,ONLY : lhook, dr_hook
96 USE parkind1
,ONLY : jprb
104 REAL,
INTENT(IN) :: ptstep
107 REAL,
DIMENSION(:,:),
INTENT(IN) :: pvegtype
109 CHARACTER(LEN=*),
INTENT(IN) :: hisba
113 CHARACTER(LEN=*),
INTENT(IN) :: hsnow_isba
117 CHARACTER(LEN=*),
INTENT(IN) :: hsnowres
123 LOGICAL,
INTENT(IN) :: omeb
128 LOGICAL,
INTENT(IN) :: oglacier
132 CHARACTER(LEN=*),
INTENT(IN) :: himplicit_wind
139 REAL,
DIMENSION(:,:),
INTENT(IN) :: psoilhcapz, pd_g, pdzg
140 REAL,
DIMENSION(:),
INTENT(IN) :: pcg, pct, psoilcondz
148 REAL,
DIMENSION(:),
INTENT(IN) :: pps, pta, psw_rad, pqa, &
149 pvmod, plw_rad, psr, prr
160 REAL,
DIMENSION(:),
INTENT(IN) :: pzref, puref, pexns, pexna, pdircoszw, prhoa, pz0nat, pz0eff, pz0hnat, palb, &
177 REAL,
DIMENSION(:),
INTENT(IN) :: ppsn
180 REAL,
DIMENSION(:),
INTENT(IN) :: ppew_a_coef, ppew_b_coef, &
181 ppet_a_coef, ppeq_a_coef, ppet_b_coef, &
190 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: ptg
193 REAL,
DIMENSION(:),
INTENT(INOUT) :: psnowalb
198 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: psnowheat, psnowrho, psnowswe
204 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: psnowgran1, psnowgran2, psnowhist
208 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: psnowage
211 REAL,
DIMENSION(:),
INTENT(INOUT) :: prnsnow, phsnow, ples3l, plel3l, &
212 phpsnow, pemisnow, pevap, pgrndflux, pswnetsnow, &
213 plwnetsnow, pswnetsnows, pdelheatg, pdelheatg_sfc
232 REAL,
DIMENSION(:),
INTENT(OUT) :: pgfluxsnow
235 REAL,
DIMENSION(:),
INTENT(INOUT) :: pustarsnow, pcdsnow, pchsnow, pri
241 REAL,
DIMENSION(:),
INTENT(OUT) :: pthrufal, pflsn_cor, pevapcor, psnowhmass, pgsfcsnow
257 REAL,
DIMENSION(:),
INTENT(OUT) :: psndrift
260 REAL,
DIMENSION(:),
INTENT(OUT) :: psrsfc, prrsfc, psnowsfch, pdelheatn, pdelheatn_sfc
264 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: psnowtemp
265 REAL,
DIMENSION(:,:),
INTENT(OUT) :: psnowliq, psnowdz
270 REAL,
DIMENSION(:),
INTENT(OUT) :: pqs
275 REAL,
DIMENSION(:),
INTENT(IN) :: pzenith
276 REAL,
DIMENSION(:),
INTENT(IN) :: plat
277 REAL,
DIMENSION(:),
INTENT(IN) :: plon
279 LOGICAL,
INTENT(IN) :: osnowdrift, osnowdrift_sublim
280 LOGICAL,
INTENT(IN) :: osnow_abs_zenith
281 CHARACTER(3),
INTENT(IN) :: hsnowmetamo, hsnowrad
297 REAL,
PARAMETER :: zcheck_temp = 50.0
305 REAL,
DIMENSION(SIZE(PTA)) :: zrrsnow, zsoilcond, zsnow, zsnowfall, &
306 zsnowablat_delta, zsnowswe_1d, zsnowd, &
307 zsnowh, zsnowh1, zgrndfluxn, zpsn, &
308 zsoilcor, zsnowswe_out, zthrufal, &
333 INTEGER :: isize_snow
334 INTEGER,
DIMENSION(SIZE(PTA)) :: nmask
336 LOGICAL,
DIMENSION(SIZE(PTA)) :: lremove_snow
338 REAL(KIND=JPRB) :: zhook_handle
342 IF (lhook) CALL dr_hook(
'SNOW3L_ISBA',0,zhook_handle)
366 zsnowablat_delta(:) = 0.0
370 inlvls =
SIZE(psnowswe(:,:),2)
371 inlvlg = min(
SIZE(pd_g(:,:),2),
SIZE(ptg(:,:),2))
388 pemisnow(:) = xemissn
399 IF (hsnow_isba==
'3-L' .OR. hisba ==
'DIF' .OR. hsnow_isba ==
'CRO')
THEN
406 zrrsnow(jj) = ppsn(jj)*prr(jj)
407 prrsfc(jj) = prr(jj) - zrrsnow(jj)
408 zsnowfall(jj) = psr(jj)*ptstep/xrhosmax_es
416 zsnowh1(:) = psnowheat(:,1)*psnowswe(:,1)/psnowrho(:,1)
418 DO jwrk=1,
SIZE(psnowswe,2)
419 DO jj=1,
SIZE(psnowswe,1)
420 zsnowswe_1d(jj) = zsnowswe_1d(jj) + psnowswe(jj,jwrk)
421 zsnow(jj) = zsnow(jj) + psnowswe(jj,jwrk)/psnowrho(jj,jwrk)
422 zsnowh(jj) = zsnowh(jj) + psnowheat(jj,jwrk)*psnowswe(jj,jwrk)/psnowrho(jj,jwrk)
426 IF(hisba ==
'DIF')
THEN
427 zsoilcond(:) = psoilcondz(:)
435 zsoilcond(:) = 4.*xpi/( pcg(:)*pcg(:)*xday/(pd_g(:,1)*pct(:)) )
452 IF (zsnow(jj) >= xsnowdmin .OR. zsnowfall(jj) >= xsnowdmin)
THEN
453 isize_snow = isize_snow + 1
454 nmask(isize_snow) = jj
458 IF (isize_snow>0) CALL
call_model(isize_snow,inlvls,inlvlg,nmask)
469 DO jwrk=1,
SIZE(psnowswe,2)
470 DO jj=1,
SIZE(psnowswe,1)
471 zsnowd(jj) = zsnowd(jj) + psnowswe(jj,jwrk)/psnowrho(jj,jwrk)
472 zsnowswe_out(jj) = zsnowswe_out(jj) + psnowswe(jj,jwrk)
476 lremove_snow(:)=(zsnowd(:)<xsnowdmin*1.1)
488 zsnowablat_delta(:) = 0.0
489 zthrufal(:) = pthrufal(:)
491 WHERE(lremove_snow(:))
492 zsnowswe_out(:) = 0.0
493 ples3l(:) = min(ples3l(:), xlstt*(zsnowswe_1d(:)/ptstep + psr(:)))
495 pevap(:) = ples3l(:)/plstt(:)
496 pthrufal(:) = max(0.0, zsnowswe_1d(:)/ptstep + psr(:) - pevap(:)*zpsn(:) + zrrsnow(:))
497 zthrufal(:) = max(0.0, zsnowswe_1d(:)/ptstep + psr(:) - pevap(:) + zrrsnow(:))
499 prrsfc(:) = prrsfc(:)
500 zsnowablat_delta(:) = 1.0
504 pgfluxsnow(:) = prnsnow(:) - phsnow(:) - ples3l(:) - plel3l(:)
505 psnowhmass(:) = -psr(:)*(xlmtt*ptstep)
507 pdelheatn(:) = -zsnowh(:) /ptstep
508 pdelheatn_sfc(:) = -zsnowh1(:)/ptstep
509 psnowsfch(:) = pdelheatn_sfc(:) - (pswnetsnows(:) + plwnetsnow(:) &
510 - phsnow(:) - ples3l(:) - plel3l(:)) + pgsfcsnow(:) &
511 - psnowhmass(:)/ptstep
512 zgrndfluxn(:) = (zsnowh(:)+psnowhmass(:))/ptstep + pgfluxsnow(:)
513 ptg(:,1) = ptg(:,1) + ptstep*pct(:)*zpsn(:)*(zgrndfluxn(:) - pgrndflux(:) - pflsn_cor(:))
514 pdelheatg(:) = pdelheatg(:) + zpsn(:)*(zgrndfluxn(:) - pgrndflux(:) - pflsn_cor(:))
515 pdelheatg_sfc(:) = pdelheatg_sfc(:) + zpsn(:)*(zgrndfluxn(:) - pgrndflux(:) - pflsn_cor(:))
516 pgrndflux(:) = zgrndfluxn(:)
522 DO jj=1,
SIZE(psnowswe,1)
523 psnowswe(jj,jwrk) = (1.0-zsnowablat_delta(jj))*psnowswe(jj,jwrk)
524 psnowheat(jj,jwrk) = (1.0-zsnowablat_delta(jj))*psnowheat(jj,jwrk)
525 psnowrho(jj,jwrk) = (1.0-zsnowablat_delta(jj))*psnowrho(jj,jwrk) + &
526 zsnowablat_delta(jj)*xrhosmin_es
527 psnowtemp(jj,jwrk) = (1.0-zsnowablat_delta(jj))*psnowtemp(jj,jwrk) + &
528 zsnowablat_delta(jj)*xtt
529 psnowliq(jj,jwrk) = (1.0-zsnowablat_delta(jj))*psnowliq(jj,jwrk)
530 psnowdz(jj,jwrk) = (1.0-zsnowablat_delta(jj))*psnowdz(jj,jwrk)
531 psnowage(jj,jwrk) = (1.0-zsnowablat_delta(jj))*psnowage(jj,jwrk)
535 IF (hsnow_isba==
'CRO')
THEN
537 DO jj=1,
SIZE(psnowgran1,1)
538 psnowgran1(jj,jwrk) = (1.0-zsnowablat_delta(jj))*psnowgran1(jj,jwrk)
539 psnowgran2(jj,jwrk) = (1.0-zsnowablat_delta(jj))*psnowgran2(jj,jwrk)
540 psnowhist(jj,jwrk) = (1.0-zsnowablat_delta(jj))*psnowhist(jj,jwrk)
549 zsnow_mass_budget(:) = (zsnowswe_1d(:)-zsnowswe_out(:))/ptstep + psr(:)+zrrsnow(:) &
550 - pevap(:)-zthrufal(:) &
551 + pevapcor(:)+zsoilcor(:)
559 pevapcor(:) = pevapcor(:)*zpsn(:) + zsoilcor(:)
566 DO jj=1,
SIZE(psnowswe,1)
567 IF(psnowswe(jj,jwrk)>0.0.AND.psnowtemp(jj,jwrk)<zcheck_temp)
THEN
568 WRITE(*,*)
'Suspicious low temperature :',psnowtemp(jj,jwrk)
569 WRITE(*,*)
'At point and location :',jj,
'LAT=',plat(jj),
'LON=',plon(jj)
570 WRITE(*,*)
'At snow level / total layer:',jwrk,
'/',inlvls
571 WRITE(*,*)
'SNOW MASS BUDGET (kg/m2/s) :',zsnow_mass_budget(jj)
572 WRITE(*,*)
'SWE BY LAYER (kg/m2) :',psnowswe(jj,1:inlvls)
573 WRITE(*,*)
'DEPTH BY LAYER (m) :',psnowdz(jj,1:inlvls)
574 WRITE(*,*)
'DENSITY BY LAYER (kg/m3) :',psnowrho(jj,1:inlvls)
575 WRITE(*,*)
'TEMPERATURE BY LAYER (K) :',psnowtemp(jj,1:inlvls)
576 CALL
abor1_sfx(
'SNOW3L_ISBA: Suspicious low temperature')
585 IF (lhook) CALL dr_hook(
'SNOW3L_ISBA',1,zhook_handle)
594 INTEGER,
INTENT(IN) :: ksize1
595 INTEGER,
INTENT(IN) :: ksize2
596 INTEGER,
INTENT(IN) :: ksize3
597 INTEGER,
DIMENSION(:),
INTENT(IN) :: kmask
599 REAL,
DIMENSION(KSIZE1,KSIZE2) :: zp_snowswe
600 REAL,
DIMENSION(KSIZE1,KSIZE2) :: zp_snowdz
601 REAL,
DIMENSION(KSIZE1,KSIZE2) :: zp_snowrho
602 REAL,
DIMENSION(KSIZE1,KSIZE2) :: zp_snowheat
603 REAL,
DIMENSION(KSIZE1,KSIZE2) :: zp_snowtemp
604 REAL,
DIMENSION(KSIZE1,KSIZE2) :: zp_snowliq
605 REAL,
DIMENSION(KSIZE1,KSIZE2) :: zp_snowgran1
606 REAL,
DIMENSION(KSIZE1,KSIZE2) :: zp_snowgran2
607 REAL,
DIMENSION(KSIZE1,KSIZE2) :: zp_snowhist
608 REAL,
DIMENSION(KSIZE1,KSIZE2) :: zp_snowage
609 REAL,
DIMENSION(KSIZE1) :: zp_snowalb
610 REAL,
DIMENSION(KSIZE1) :: zp_swnetsnow
611 REAL,
DIMENSION(KSIZE1) :: zp_swnetsnows
612 REAL,
DIMENSION(KSIZE1) :: zp_lwnetsnow
613 REAL,
DIMENSION(KSIZE1) :: zp_ps
614 REAL,
DIMENSION(KSIZE1) :: zp_srsnow
615 REAL,
DIMENSION(KSIZE1) :: zp_rrsnow
616 REAL,
DIMENSION(KSIZE1) :: zp_psn3l
617 REAL,
DIMENSION(KSIZE1) :: zp_ta
618 REAL,
DIMENSION(KSIZE1) :: zp_ct
619 REAL,
DIMENSION(KSIZE1,KSIZE3) :: zp_tg
620 REAL,
DIMENSION(KSIZE1,KSIZE3) :: zp_d_g
621 REAL,
DIMENSION(KSIZE1,KSIZE3) :: zp_dzg
622 REAL,
DIMENSION(KSIZE1,KSIZE3) :: zp_soilhcapz
623 REAL,
DIMENSION(KSIZE1) :: zp_soild
624 REAL,
DIMENSION(KSIZE1) :: zp_delheatg
625 REAL,
DIMENSION(KSIZE1) :: zp_delheatg_sfc
626 REAL,
DIMENSION(KSIZE1) :: zp_sw_rad
627 REAL,
DIMENSION(KSIZE1) :: zp_qa
628 REAL,
DIMENSION(KSIZE1) :: zp_lvtt
629 REAL,
DIMENSION(KSIZE1) :: zp_lstt
630 REAL,
DIMENSION(KSIZE1) :: zp_vmod
631 REAL,
DIMENSION(KSIZE1) :: zp_lw_rad
632 REAL,
DIMENSION(KSIZE1) :: zp_rhoa
633 REAL,
DIMENSION(KSIZE1) :: zp_uref
634 REAL,
DIMENSION(KSIZE1) :: zp_exns
635 REAL,
DIMENSION(KSIZE1) :: zp_exna
636 REAL,
DIMENSION(KSIZE1) :: zp_dircoszw
637 REAL,
DIMENSION(KSIZE1) :: zp_zref
638 REAL,
DIMENSION(KSIZE1) :: zp_z0nat
639 REAL,
DIMENSION(KSIZE1) :: zp_z0hnat
640 REAL,
DIMENSION(KSIZE1) :: zp_z0eff
641 REAL,
DIMENSION(KSIZE1) :: zp_alb
642 REAL,
DIMENSION(KSIZE1) :: zp_soilcond
643 REAL,
DIMENSION(KSIZE1) :: zp_thrufal
644 REAL,
DIMENSION(KSIZE1) :: zp_grndflux
645 REAL,
DIMENSION(KSIZE1) :: zp_flsn_cor
646 REAL,
DIMENSION(KSIZE1) :: zp_gsfcsnow
647 REAL,
DIMENSION(KSIZE1) :: zp_evapcor
648 REAL,
DIMENSION(KSIZE1) :: zp_soilcor
649 REAL,
DIMENSION(KSIZE1) :: zp_gflxcor
650 REAL,
DIMENSION(KSIZE1) :: zp_rnsnow
651 REAL,
DIMENSION(KSIZE1) :: zp_hsnow
652 REAL,
DIMENSION(KSIZE1) :: zp_gfluxsnow
653 REAL,
DIMENSION(KSIZE1) :: zp_delheatn
654 REAL,
DIMENSION(KSIZE1) :: zp_delheatn_sfc
655 REAL,
DIMENSION(KSIZE1) :: zp_snowsfch
656 REAL,
DIMENSION(KSIZE1) :: zp_hpsnow
657 REAL,
DIMENSION(KSIZE1) :: zp_les3l
658 REAL,
DIMENSION(KSIZE1) :: zp_lel3l
659 REAL,
DIMENSION(KSIZE1) :: zp_evap
660 REAL,
DIMENSION(KSIZE1) :: zp_sndrift
661 REAL,
DIMENSION(KSIZE1) :: zp_ri
662 REAL,
DIMENSION(KSIZE1) :: zp_qs
663 REAL,
DIMENSION(KSIZE1) :: zp_emisnow
664 REAL,
DIMENSION(KSIZE1) :: zp_cdsnow
665 REAL,
DIMENSION(KSIZE1) :: zp_ustarsnow
666 REAL,
DIMENSION(KSIZE1) :: zp_chsnow
667 REAL,
DIMENSION(KSIZE1) :: zp_snowhmass
668 REAL,
DIMENSION(KSIZE1) :: zp_vegtype
669 REAL,
DIMENSION(KSIZE1) :: zp_forest
670 REAL,
DIMENSION(KSIZE1) :: zp_pew_a_coef
671 REAL,
DIMENSION(KSIZE1) :: zp_pew_b_coef
672 REAL,
DIMENSION(KSIZE1) :: zp_pet_a_coef
673 REAL,
DIMENSION(KSIZE1) :: zp_pet_b_coef
674 REAL,
DIMENSION(KSIZE1) :: zp_peq_a_coef
675 REAL,
DIMENSION(KSIZE1) :: zp_peq_b_coef
676 REAL,
DIMENSION(KSIZE1) :: zp_zenith
677 REAL,
DIMENSION(KSIZE1) :: zp_lat,zp_lon
678 REAL,
DIMENSION(KSIZE1) :: zp_psn_inv
679 REAL,
DIMENSION(KSIZE1) :: zp_psn
680 REAL,
DIMENSION(KSIZE1) :: zp_psn_gflxcor
681 REAL,
DIMENSION(KSIZE1) :: zp_work
683 REAL,
PARAMETER :: zdepthabs = 0.60
685 INTEGER :: jwrk, jj, ji
686 REAL(KIND=JPRB) :: zhook_handle
688 IF (lhook) CALL dr_hook(
'SNOW3L_ISBA:CALL_MODEL',0,zhook_handle)
692 zp_psn_gflxcor(:) = 0.
701 zp_snowswe(jj,jwrk) = psnowswe(ji,jwrk)
702 zp_snowrho(jj,jwrk) = psnowrho(ji,jwrk)
703 zp_snowheat(jj,jwrk) = psnowheat(ji,jwrk)
704 zp_snowtemp(jj,jwrk) = psnowtemp(ji,jwrk)
705 zp_snowliq(jj,jwrk) = psnowliq(ji,jwrk)
706 zp_snowdz(jj,jwrk) = psnowdz(ji,jwrk)
707 zp_snowage(jj,jwrk) = psnowage(ji,jwrk)
711 IF (hsnow_isba==
'CRO')
THEN
715 zp_snowgran1(jj,jwrk) = psnowgran1(ji,jwrk)
716 zp_snowgran2(jj,jwrk) = psnowgran2(ji,jwrk)
717 zp_snowhist(jj,jwrk) = psnowhist(ji,jwrk)
723 zp_snowgran1(jj,jwrk) = xundef
724 zp_snowgran2(jj,jwrk) = xundef
725 zp_snowhist(jj,jwrk) = xundef
733 zp_tg(jj,jwrk) = ptg(ji,jwrk)
734 zp_d_g(jj,jwrk) = pd_g(ji,jwrk)
735 zp_soilhcapz(jj,jwrk) = psoilhcapz(ji,jwrk)
743 zp_dzg(jj,jwrk) = pdzg(ji,jwrk)
750 zp_snowalb(jj) = psnowalb(ji)
752 zp_srsnow(jj) = psr(ji)
753 zp_rrsnow(jj) = zrrsnow(ji)
754 zp_psn3l(jj) = ppsn(ji)
757 zp_delheatg(jj) = pdelheatg(ji)
758 zp_delheatg_sfc(jj) = pdelheatg_sfc(ji)
759 zp_sw_rad(jj) = psw_rad(ji)
761 zp_vmod(jj) = pvmod(ji)
762 zp_lw_rad(jj) = plw_rad(ji)
763 zp_rhoa(jj) = prhoa(ji)
764 zp_uref(jj) = puref(ji)
765 zp_exns(jj) = pexns(ji)
766 zp_exna(jj) = pexna(ji)
767 zp_lvtt(jj) = plvtt(ji)
768 zp_lstt(jj) = plstt(ji)
769 zp_dircoszw(jj) = pdircoszw(ji)
770 zp_zref(jj) = pzref(ji)
771 zp_z0nat(jj) = pz0nat(ji)
772 zp_z0hnat(jj) = pz0hnat(ji)
773 zp_z0eff(jj) = pz0eff(ji)
774 zp_alb(jj) = palb(ji)
775 zp_soilcond(jj) = zsoilcond(ji)
777 zp_pew_a_coef(jj) = ppew_a_coef(ji)
778 zp_pew_b_coef(jj) = ppew_b_coef(ji)
779 zp_pet_a_coef(jj) = ppet_a_coef(ji)
780 zp_peq_a_coef(jj) = ppeq_a_coef(ji)
781 zp_pet_b_coef(jj) = ppet_b_coef(ji)
782 zp_peq_b_coef(jj) = ppeq_b_coef(ji)
784 zp_lat(jj) = plat(ji)
785 zp_lon(jj) = plon(ji)
786 zp_zenith(jj) = pzenith(ji)
788 zp_grndflux(jj) = pgrndflux(ji)
789 zp_rnsnow(jj) = prnsnow(ji)
790 zp_hsnow(jj) = phsnow(ji)
791 zp_delheatn(jj) = pdelheatn(ji)
792 zp_delheatn_sfc(jj) = pdelheatn_sfc(ji)
793 zp_snowsfch(jj) = psnowsfch(ji)
794 zp_hpsnow(jj) = phpsnow(ji)
795 zp_les3l(jj) = ples3l(ji)
796 zp_lel3l(jj) = plel3l(ji)
797 zp_evap(jj) = pevap(ji)
798 zp_emisnow(jj) = pemisnow(ji)
799 zp_swnetsnow(jj) = pswnetsnow(ji)
800 zp_swnetsnows(jj) = pswnetsnows(ji)
801 zp_lwnetsnow(jj) = plwnetsnow(ji)
806 zp_vegtype(jj) = pvegtype(ji,nvt_snow)
807 zp_forest(jj) = pvegtype(ji,nvt_tebd) + pvegtype(ji,nvt_trbe) + pvegtype(ji,nvt_bone) &
808 + pvegtype(ji,nvt_trbd) + pvegtype(ji,nvt_tebe) + pvegtype(ji,nvt_tene) &
809 + pvegtype(ji,nvt_bobd) + pvegtype(ji,nvt_bond) + pvegtype(ji,nvt_shrb)
815 WHERE(zp_snowswe(:,:)>0.) &
816 zp_snowheat(:,:) = zp_snowheat(:,:) / zp_snowrho(:,:) * zp_snowswe(:,:)
820 zp_psn(:) = zp_psn3l(:)
829 zp_psn(:) = max(1.e-4, zp_psn3l(:))
830 zp_psn_inv(:) = 1.0/zp_psn(:)
832 zp_rnsnow(:) = zp_rnsnow(:) *zp_psn_inv(:)
833 zp_swnetsnow(:) = zp_swnetsnow(:) *zp_psn_inv(:)
834 zp_swnetsnows(:) = zp_swnetsnows(:) *zp_psn_inv(:)
835 zp_lwnetsnow(:) = zp_lwnetsnow(:) *zp_psn_inv(:)
836 zp_hsnow(:) = zp_hsnow(:) *zp_psn_inv(:)
837 zp_gfluxsnow(:) = zp_gfluxsnow(:) *zp_psn_inv(:)
838 zp_gsfcsnow(:) = zp_gsfcsnow(:) *zp_psn_inv(:)
839 zp_snowhmass(:) = zp_snowhmass(:) *zp_psn_inv(:)
840 zp_les3l(:) = zp_les3l(:) *zp_psn_inv(:)
841 zp_lel3l(:) = zp_lel3l(:) *zp_psn_inv(:)
842 zp_grndflux(:) = zp_grndflux(:) *zp_psn_inv(:)
843 zp_evap(:) = zp_evap(:) *zp_psn_inv(:)
844 zp_hpsnow(:) = zp_hpsnow(:) *zp_psn_inv(:)
845 zp_delheatn(:) = zp_delheatn(:) *zp_psn_inv(:)
846 zp_delheatn_sfc(:)= zp_delheatn_sfc(:)*zp_psn_inv(:)
847 zp_snowsfch(:) = zp_snowsfch(:) *zp_psn_inv(:)
849 zp_srsnow(:) = zp_srsnow(:) *zp_psn_inv(:)
850 zp_rrsnow(:) = zp_rrsnow(:) *zp_psn_inv(:)
854 zp_snowswe(ji,jj) = zp_snowswe(ji,jj) *zp_psn_inv(ji)
855 zp_snowheat(ji,jj) = zp_snowheat(ji,jj)*zp_psn_inv(ji)
856 zp_snowdz(ji,jj) = zp_snowdz(ji,jj) *zp_psn_inv(ji)
864 IF (hsnow_isba==
'CRO')
THEN
866 CALL
snowcro(hsnowres, tptime, oglacier, himplicit_wind, &
867 zp_pew_a_coef, zp_pew_b_coef, &
868 zp_pet_a_coef, zp_peq_a_coef, zp_pet_b_coef, zp_peq_b_coef, &
869 zp_snowswe,zp_snowrho, zp_snowheat, zp_snowalb, &
870 zp_snowgran1, zp_snowgran2, zp_snowhist, zp_snowage, ptstep, &
871 zp_ps, zp_srsnow, zp_rrsnow ,zp_psn3l, zp_ta, zp_tg(:,1), &
872 zp_sw_rad, zp_qa, zp_vmod, zp_lw_rad, zp_rhoa, zp_uref, &
873 zp_exns, zp_exna, zp_dircoszw, zp_zref, zp_z0nat, zp_z0eff, &
874 zp_z0hnat, zp_alb, zp_soilcond, zp_d_g(:,1), zp_snowliq, &
875 zp_snowtemp, zp_snowdz, zp_thrufal, zp_grndflux, zp_evapcor, &
876 zp_rnsnow, zp_hsnow, zp_gfluxsnow, zp_hpsnow, zp_les3l, &
877 zp_lel3l, zp_evap, zp_sndrift, zp_ri, &
878 zp_emisnow, zp_cdsnow, zp_ustarsnow, &
879 zp_chsnow, zp_snowhmass, zp_qs, zp_vegtype, zp_zenith, &
880 zp_lat, zp_lon, osnowdrift,osnowdrift_sublim, &
881 osnow_abs_zenith, hsnowmetamo,hsnowrad )
889 CALL
snow3l(hsnowres, tptime, omeb, himplicit_wind, &
890 zp_pew_a_coef, zp_pew_b_coef, &
891 zp_pet_a_coef, zp_peq_a_coef,zp_pet_b_coef, zp_peq_b_coef, &
892 zp_snowswe, zp_snowrho, zp_snowheat, zp_snowalb, &
893 zp_snowgran1, zp_snowgran2, zp_snowhist, zp_snowage, ptstep, &
894 zp_ps, zp_srsnow, zp_rrsnow, zp_psn3l, zp_ta, zp_tg(:,1), &
895 zp_sw_rad, zp_qa, zp_vmod, zp_lw_rad, zp_rhoa, zp_uref, &
896 zp_exns, zp_exna, zp_dircoszw, zp_zref, zp_z0nat, zp_z0eff, &
897 zp_z0hnat, zp_alb, zp_soilcond, zp_d_g(:,1), &
898 zp_lvtt, zp_lstt, zp_snowliq, &
899 zp_snowtemp, zp_snowdz, zp_thrufal, zp_grndflux , &
900 zp_evapcor, zp_soilcor, zp_gflxcor, zp_snowsfch, &
901 zp_delheatn, zp_delheatn_sfc, &
902 zp_swnetsnow, zp_swnetsnows, zp_lwnetsnow, zp_gsfcsnow, &
903 zp_rnsnow, zp_hsnow, zp_gfluxsnow, zp_hpsnow, zp_les3l, &
904 zp_lel3l, zp_evap, zp_sndrift, zp_ri, &
905 zp_emisnow, zp_cdsnow, zp_ustarsnow, &
906 zp_chsnow, zp_snowhmass, zp_qs, zp_vegtype, zp_forest, &
907 zp_zenith, zp_lat, zp_lon, osnowdrift, osnowdrift_sublim )
913 zp_rnsnow(:) = zp_rnsnow(:) /zp_psn_inv(:)
914 zp_swnetsnow(:) = zp_swnetsnow(:) /zp_psn_inv(:)
915 zp_swnetsnows(:) = zp_swnetsnows(:) /zp_psn_inv(:)
916 zp_lwnetsnow(:) = zp_lwnetsnow(:) /zp_psn_inv(:)
917 zp_hsnow(:) = zp_hsnow(:) /zp_psn_inv(:)
918 zp_les3l(:) = zp_les3l(:) /zp_psn_inv(:)
919 zp_lel3l(:) = zp_lel3l(:) /zp_psn_inv(:)
920 zp_grndflux(:) = zp_grndflux(:) /zp_psn_inv(:)
921 zp_evap(:) = zp_evap(:) /zp_psn_inv(:)
922 zp_hpsnow(:) = zp_hpsnow(:) /zp_psn_inv(:)
923 zp_gfluxsnow(:) = zp_gfluxsnow(:) /zp_psn_inv(:)
924 zp_delheatn(:) = zp_delheatn(:) /zp_psn_inv(:)
925 zp_delheatn_sfc(:)= zp_delheatn_sfc(:)/zp_psn_inv(:)
926 zp_snowsfch(:) = zp_snowsfch(:) /zp_psn_inv(:)
927 zp_gsfcsnow(:) = zp_gsfcsnow(:) /zp_psn_inv(:)
929 zp_srsnow(:) = zp_srsnow(:) /zp_psn_inv(:)
930 zp_rrsnow(:) = zp_rrsnow(:) /zp_psn_inv(:)
933 zp_snowswe(ji,jj) = zp_snowswe(ji,jj) /zp_psn_inv(ji)
934 zp_snowheat(ji,jj) = zp_snowheat(ji,jj)/zp_psn_inv(ji)
935 zp_snowdz(ji,jj) = zp_snowdz(ji,jj) /zp_psn_inv(ji)
939 zp_snowhmass(:) = zp_snowhmass(:)/zp_psn_inv(:)
940 zp_thrufal(:) = zp_thrufal(:) /zp_psn_inv(:)
963 zp_soild(:) = zp_dzg(:,1)
966 IF(zp_dzg(ji,jj) <= zdepthabs)
THEN
967 zp_soild(ji) = zp_dzg(ji,jj)
974 zp_psn_gflxcor(:) = zp_psn(:)*zp_gflxcor(:)
975 zp_work(:) = zp_psn_gflxcor(:)*ptstep/zp_soild(:)
977 zp_tg(:,1) = zp_tg(:,1) + zp_work(:)*zp_ct(:)*zp_d_g(:,1)
980 IF(zp_soild(ji) <= zdepthabs)
THEN
981 zp_tg(ji,jj) = zp_tg(ji,jj) + zp_work(ji)/zp_soilhcapz(ji,jj)
986 zp_delheatg(:) = zp_delheatg(:) + zp_psn_gflxcor(:)
987 zp_delheatg_sfc(:) = zp_delheatg_sfc(:) + zp_psn_gflxcor(:)
997 zp_flsn_cor(:) = zp_gflxcor(:)
1005 WHERE(zp_snowswe(:,:)>0.)
1006 zp_snowheat(:,:)=zp_snowheat(:,:)*zp_snowrho(:,:)/zp_snowswe(:,:)
1017 psnowswe(ji,jwrk) = zp_snowswe(jj,jwrk)
1018 psnowrho(ji,jwrk) = zp_snowrho(jj,jwrk)
1019 psnowheat(ji,jwrk) = zp_snowheat(jj,jwrk)
1020 psnowtemp(ji,jwrk) = zp_snowtemp(jj,jwrk)
1021 psnowliq(ji,jwrk) = zp_snowliq(jj,jwrk)
1022 psnowdz(ji,jwrk) = zp_snowdz(jj,jwrk)
1023 psnowage(ji,jwrk) = zp_snowage(jj,jwrk)
1027 IF (hsnow_isba==
'CRO')
THEN
1031 psnowgran1(ji,jwrk) = zp_snowgran1(jj,jwrk)
1032 psnowgran2(ji,jwrk) = zp_snowgran2(jj,jwrk)
1033 psnowhist(ji,jwrk) = zp_snowhist(jj,jwrk)
1041 ptg(ji,jwrk)= zp_tg(jj,jwrk)
1047 pdelheatg(ji) = zp_delheatg(jj)
1048 pdelheatg_sfc(ji) = zp_delheatg_sfc(jj)
1049 psnowalb(ji) = zp_snowalb(jj)
1050 pthrufal(ji) = zp_thrufal(jj)
1051 pevapcor(ji) = zp_evapcor(jj)
1052 zsoilcor(ji) = zp_soilcor(jj)
1055 pcdsnow(ji) = zp_cdsnow(jj)
1056 pustarsnow(ji) = zp_ustarsnow(jj)
1057 pchsnow(ji) = zp_chsnow(jj)
1058 psnowhmass(ji) = zp_snowhmass(jj)
1059 pgrndflux(ji) = zp_grndflux(jj)
1060 pflsn_cor(ji) = zp_flsn_cor(jj)
1061 prnsnow(ji) = zp_rnsnow(jj)
1062 phsnow(ji) = zp_hsnow(jj)
1063 pgfluxsnow(ji) = zp_gfluxsnow(jj)
1064 pdelheatn(ji) = zp_delheatn(jj)
1065 pdelheatn_sfc(ji) = zp_delheatn_sfc(jj)
1066 psnowsfch(ji) = zp_snowsfch(jj)
1067 pgsfcsnow(ji) = zp_gsfcsnow(jj)
1068 phpsnow(ji) = zp_hpsnow(jj)
1069 ples3l(ji) = zp_les3l(jj)
1070 plel3l(ji) = zp_lel3l(jj)
1071 pevap(ji) = zp_evap(jj)
1072 pemisnow(ji) = zp_emisnow(jj)
1073 pswnetsnow(ji) = zp_swnetsnow(jj)
1074 pswnetsnows(ji) = zp_swnetsnows(jj)
1075 plwnetsnow(ji) = zp_lwnetsnow(jj)
1078 IF (lhook) CALL dr_hook(
'SNOW3L_ISBA:CALL_MODEL',1,zhook_handle)
subroutine snowcro(HSNOWRES, TPTIME, OGLACIER, HIMPLICIT_WIND, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PSNOWSWE, PSNOWRHO, PSNOWHEAT, PSNOWALB, PSNOWGRAN1, PSNOWGRAN2, PSNOWHIST, PSNOWAGE, PTSTEP, PPS, PSR, PRR, PPSN3L, PTA, PTG, PSW_RAD, PQA, PVMOD, PLW_RAD, PRHOA, PUREF, PEXNS, PEXNA, PDIRCOSZW, PZREF, PZ0, PZ0EFF, PZ0H, PALB, PSOILCOND, PD_G, PSNOWLIQ, PSNOWTEMP, PSNOWDZ, PTHRUFAL, PGRNDFLUX, PEVAPCOR, PRNSNOW, PHSNOW, PGFLUXSNOW, PHPSNOW, PLES3L, PLEL3L, PEVAP, PSNDRIFT, PRI, PEMISNOW, PCDSNOW, PUSTAR, PCHSNOW, PSNOWHMASS, PQS, PPERMSNOWFRAC, PZENITH, PXLAT, PXLON, OSNOWDRIFT, OSNOWDRIFT_SUBLIM, OSNOW_ABS_ZENITH, HSNOWMETAMO, HSNOWRAD)
subroutine snow3l_isba(HISBA, HSNOW_ISBA, HSNOWRES, OMEB, OGLACIER, HIMPLICIT_WIND, TPTIME, PTSTEP, PVEGTYPE, PSNOWSWE, PSNOWHEAT, PSNOWRHO, PSNOWALB, PSNOWGRAN1, PSNOWGRAN2, PSNOWHIST, PSNOWAGE, PTG, PCG, PCT, PSOILHCAPZ, PSOILCONDZ, PPS, PTA, PSW_RAD, PQA, PVMOD, PLW_RAD, PRR, PSR, PRHOA, PUREF, PEXNS, PEXNA, PDIRCOSZW, PLVTT, PLSTT, PZREF, PZ0NAT, PZ0EFF, PZ0HNAT, 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, PSWNETSNOW, PSWNETSNOWS, PLWNETSNOW, PRNSNOW, PHSNOW, PGFLUXSNOW, PHPSNOW, PLES3L, PLEL3L, PEVAP, PSNDRIFT, PUSTARSNOW, PPSN, PSRSFC, PRRSFC, PSNOWSFCH, PDELHEATN, PDELHEATN_SFC, PEMISNOW, PCDSNOW, PCHSNOW, PSNOWTEMP, PSNOWLIQ, PSNOWDZ, PSNOWHMASS, PRI, PZENITH, PDELHEATG, PDELHEATG_SFC, PLAT, PLON, PQS, OSNOWDRIFT, OSNOWDRIFT_SUBLIM, OSNOW_ABS_ZENITH, HSNOWMETAMO, HSNOWRAD)
subroutine call_model(KSIZE1, KSIZE2, KSIZE3, KMASK)
subroutine abor1_sfx(YTEXT)
subroutine snow3l(HSNOWRES, TPTIME, OMEB, HIMPLICIT_WIND, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PSNOWSWE, PSNOWRHO, PSNOWHEAT, PSNOWALB, PSNOWGRAN1, PSNOWGRAN2, PSNOWHIST, PSNOWAGE, PTSTEP, PPS, PSR, PRR, PPSN3L, PTA, PTG, PSW_RAD, PQA, PVMOD, PLW_RAD, PRHOA, PUREF, PEXNS, PEXNA, PDIRCOSZW, PZREF, PZ0, PZ0EFF, PZ0H, PALB, PSOILCOND, PD_G, PLVTT, PLSTT, PSNOWLIQ, PSNOWTEMP, PSNOWDZ, PTHRUFAL, PGRNDFLUX, PEVAPCOR, PSOILCOR, PGFLXCOR, PSNOWSFCH, PDELHEATN, PDELHEATN_SFC, PSWNETSNOW, PSWNETSNOWS, PLWNETSNOW, PSNOWFLUX, PRNSNOW, PHSNOW, PGFLUXSNOW, PHPSNOW, PLES3L, PLEL3L, PEVAP, PSNDRIFT, PRI, PEMISNOW, PCDSNOW, PUSTAR, PCHSNOW, PSNOWHMASS, PQS, PPERMSNOWFRAC, PFORESTFRAC, PZENITH, PXLAT, PXLON, OSNOWDRIFT, OSNOWDRIFT_SUBLIM)