120 U3D,V3D,T3D,QV3D,P3D,dz8w, & !in
121 th3d,pi3d,qc3d, & !in
122 PSFCPA,PBLH,MAVAIL,XLAND,DX, & !in
123 ISFFLX,isftcflx,lsm,lsm_ruc, & !in
124 compute_flux,compute_diag, & !in
125 iz0tlnd,psi_opt, & !in
126 sigmaf,vegtype,shdmax,ivegsrc, & !intent(in)
128 redrag,sfc_z0_type, &
129 itimestep,iter,flag_iter, &
132 tskin_wat, tskin_lnd, tskin_ice, &
133 tsurf_wat, tsurf_lnd, tsurf_ice, &
134 qsfc_wat, qsfc_lnd, qsfc_ice, &
135 snowh_wat, snowh_lnd, snowh_ice, &
136 znt_wat, znt_lnd, znt_ice, &
137 ust_wat, ust_lnd, ust_ice, &
138 cm_wat, cm_lnd, cm_ice, &
139 ch_wat, ch_lnd, ch_ice, &
140 rb_wat, rb_lnd, rb_ice, &
141 stress_wat,stress_lnd,stress_ice, &
142 fm_wat, fm_lnd, fm_ice, &
143 fh_wat, fh_lnd, fh_ice, &
144 fm10_wat, fm10_lnd, fm10_ice, &
145 fh2_wat, fh2_lnd, fh2_ice, &
146 hflx_wat, hflx_lnd, hflx_ice, &
147 qflx_wat, qflx_lnd, qflx_ice, &
148 ch,chs,chs2,cqs2,cpm, &
149 znt,ustm,zol,mol,rmol, &
151 hflx,hfx,qflx,qfx,lh,flhc,flqc, &
155 spp_sfc,pattern_spp_sfc, &
156 ids,ide, jds,jde, kds,kde, &
157 ims,ime, jms,jme, kms,kme, &
158 its,ite, jts,jte, kts,kte, &
258 INTEGER,
INTENT(IN) :: ids,ide, jds,jde, kds,kde, &
259 ims,ime, jms,jme, kms,kme, &
260 its,ite, jts,jte, kts,kte
261 INTEGER,
INTENT(IN) :: itimestep,iter
263 integer,
intent(in) :: ISFFLX, LSM, LSM_RUC
264 INTEGER,
OPTIONAL,
INTENT(IN) :: ISFTCFLX, IZ0TLND
265 INTEGER,
OPTIONAL,
INTENT(IN) :: spp_sfc, psi_opt
266 logical,
intent(in) :: compute_flux,compute_diag
267 integer,
intent(in) :: ivegsrc
268 integer,
intent(in) :: sfc_z0_type
269 logical,
intent(in) :: redrag
270 logical,
intent(in) :: flag_restart
273 integer,
dimension(ims:ime),
intent(in) :: vegtype
274 real(kind_phys),
dimension(ims:ime),
intent(in) :: &
275 & sigmaf,shdmax,z0pert,ztpert
279 REAL(kind_phys),
DIMENSION( ims:ime, kms:kme ) , &
280 INTENT(IN ) :: dz8w, &
289 REAL(kind_phys),
DIMENSION( :,: ),
OPTIONAL, &
290 INTENT(IN) :: pattern_spp_sfc
294 REAL(kind_phys),
DIMENSION( ims:ime ) , &
295 INTENT(IN ) :: MAVAIL, &
301 REAL(kind_phys),
DIMENSION( ims:ime ) , &
302 INTENT(OUT ) :: U10,V10, &
306 REAL(kind_phys),
DIMENSION( ims:ime ) , &
307 INTENT(INOUT) :: HFLX,HFX, &
321 REAL(kind_phys),
DIMENSION( ims:ime ), &
322 INTENT(INOUT) :: LH, &
326 LOGICAL,
DIMENSION( ims:ime ),
INTENT(IN) :: &
327& wet, dry, icy, flag_iter
329 REAL(kind_phys),
DIMENSION( ims:ime ),
INTENT(IN) :: &
330 & tskin_wat, tskin_lnd, tskin_ice, &
331 & tsurf_wat, tsurf_lnd, tsurf_ice, &
332 & snowh_wat, snowh_lnd, snowh_ice
334 REAL(kind_phys),
DIMENSION( ims:ime),
INTENT(INOUT) :: &
335 & ZNT_wat, ZNT_lnd, ZNT_ice, &
336 & UST_wat, UST_lnd, UST_ice, &
337 & cm_wat, cm_lnd, cm_ice, &
338 & ch_wat, ch_lnd, ch_ice, &
339 & rb_wat, rb_lnd, rb_ice, &
340 & stress_wat,stress_lnd,stress_ice, &
341 & fm_wat, fm_lnd, fm_ice, &
342 & fh_wat, fh_lnd, fh_ice, &
343 & fm10_wat, fm10_lnd, fm10_ice, &
344 & fh2_wat, fh2_lnd, fh2_ice, &
345 & HFLX_wat, HFLX_lnd, HFLX_ice, &
346 & QFLX_wat, QFLX_lnd, QFLX_ice, &
347 & qsfc_wat, qsfc_lnd, qsfc_ice
350 character(len=*),
intent(inout) :: errmsg
351 integer,
intent(inout) :: errflg
355 REAL(kind_phys),
DIMENSION( ims:ime ) :: qstar
360 REAL(kind_phys),
DIMENSION( its:ite ) :: U1D,V1D, &
368 REAL(kind_phys),
DIMENSION( its:ite ) :: rstoch1D
370 INTEGER :: I,J,K,itf,ktf
391 IF (debug_code >= 1)
THEN
392 write(*,*)
"======= printing of constants:"
393 write(*,*)
"cp=", cp,
" g=", grav
394 write(*,*)
"Rd=", rd,
" ep1=", ep1
395 write(*,*)
"xlv=", xlv,
" xlf=", xlf
396 write(*,*)
"ep2=", ep2
407 dz8w1d(i) = dz8w(i,kts)
408 dz2w1d(i) = dz8w(i,kts+1)
412 u1d2(i) =u3d(i,kts+1)
413 v1d2(i) =v3d(i,kts+1)
419 rstoch1d(i)=pattern_spp_sfc(i,kts)
426 IF (itimestep==1 .AND. iter==1)
THEN
431 IF (.not. flag_restart)
THEN
433 if (ust_wat(i) .lt. 1e-4 .or. ust_wat(i) .gt. 3.0)
then
434 ust_wat(i)=max(0.04*sqrt(u1d(i)*u1d(i) + v1d(i)*v1d(i)),0.001_kind_phys)
436 if (ust_lnd(i) .lt. 1e-4 .or. ust_lnd(i) .gt. 3.0)
then
437 ust_lnd(i)=max(0.04*sqrt(u1d(i)*u1d(i) + v1d(i)*v1d(i)),0.001_kind_phys)
439 if (ust_ice(i) .lt. 1e-4 .or. ust_ice(i) .gt. 3.0)
then
440 ust_ice(i)=max(0.04*sqrt(u1d(i)*u1d(i) + v1d(i)*v1d(i)),0.001_kind_phys)
448 qsfc(i)=qv3d(i,kts)/(1.+qv3d(i,kts))
451 qsfc(i)=qv3d(i,kts)/(1.+qv3d(i,kts))
463 j,u1d,v1d,t1d,qv1d,p1d,dz8w1d, &
465 psfcpa,pblh,mavail,xland,dx, &
466 isfflx,isftcflx,iz0tlnd,psi_opt, &
467 compute_flux,compute_diag, &
468 sigmaf,vegtype,shdmax,ivegsrc, &
470 redrag,sfc_z0_type, &
471 itimestep,iter,flag_restart,lsm,
lsm_ruc, &
473 tskin_wat, tskin_lnd, tskin_ice, &
474 tsurf_wat, tsurf_lnd, tsurf_ice, &
475 qsfc_wat, qsfc_lnd, qsfc_ice, &
476 snowh_wat, snowh_lnd, snowh_ice, &
477 znt_wat, znt_lnd, znt_ice, &
478 ust_wat, ust_lnd, ust_ice, &
479 cm_wat, cm_lnd, cm_ice, &
480 ch_wat, ch_lnd, ch_ice, &
481 rb_wat, rb_lnd, rb_ice, &
482 stress_wat, stress_lnd, stress_ice, &
483 fm_wat, fm_lnd, fm_ice, &
484 fh_wat, fh_lnd, fh_ice, &
485 fm10_wat, fm10_lnd, fm10_ice, &
486 fh2_wat, fh2_lnd, fh2_ice, &
487 hflx_wat, hflx_lnd, hflx_ice, &
488 qflx_wat, qflx_lnd, qflx_ice, &
489 ch,chs,chs2,cqs2,cpm, &
490 znt,ustm,zol,mol,rmol, &
492 hflx,hfx,qflx,qfx,lh,flhc,flqc, &
493 qgh,qsfc,u10,v10,th2,t2,q2, &
494 gz1oz0,wspd,wstar,qstar, &
496 ids,ide, jds,jde, kds,kde, &
497 ims,ime, jms,jme, kms,kme, &
498 its,ite, jts,jte, kts,kte, &
520 J,U1D,V1D,T1D,QV1D,P1D,dz8w1d,U1D2,V1D2,dz2w1d, &
521 PSFCPA,PBLH,MAVAIL,XLAND,DX, &
522 ISFFLX,isftcflx,iz0tlnd,psi_opt, &
523 compute_flux,compute_diag, &
524 sigmaf,vegtype,shdmax,ivegsrc, & !intent(in)
526 redrag,sfc_z0_type, &
527 itimestep,iter,flag_restart,lsm,
lsm_ruc, &
529 tskin_wat, tskin_lnd, tskin_ice, &
530 tsurf_wat, tsurf_lnd, tsurf_ice, &
531 qsfc_wat, qsfc_lnd, qsfc_ice, &
532 snowh_wat, snowh_lnd, snowh_ice, &
533 znt_wat, znt_lnd, znt_ice, &
534 ust_wat, ust_lnd, ust_ice, &
535 cm_wat, cm_lnd, cm_ice, &
536 ch_wat, ch_lnd, ch_ice, &
537 rb_wat, rb_lnd, rb_ice, &
538 stress_wat, stress_lnd, stress_ice, &
539 psix_wat, psix_lnd, psix_ice, &
540 psit_wat, psit_lnd, psit_ice, &
541 psix10_wat, psix10_lnd, psix10_ice, &
542 psit2_wat, psit2_lnd, psit2_ice, &
543 hflx_wat, hflx_lnd, hflx_ice, &
544 qflx_wat, qflx_lnd, qflx_ice, &
545 ch,chs,chs2,cqs2,cpm, &
546 znt,ustm,zol,mol,rmol, &
548 hflx,hfx,qflx,qfx,lh,flhc,flqc, &
551 gz1oz0,wspd,wstar,qstar, &
553 ids,ide, jds,jde, kds,kde, &
554 ims,ime, jms,jme, kms,kme, &
555 its,ite, jts,jte, kts,kte, &
563 INTEGER,
INTENT(IN) :: ids,ide, jds,jde, kds,kde, &
564 ims,ime, jms,jme, kms,kme, &
565 its,ite, jts,jte, kts,kte, &
566 J, itimestep, iter, lsm, lsm_ruc
567 LOGICAL,
INTENT(IN) :: flag_restart
569 REAL(kind_phys),
PARAMETER :: XKA=2.4e-5
570 REAL(kind_phys),
PARAMETER :: PRT=1.
571 REAL(kind_phys),
PARAMETER :: snowh_thresh = 50.
576 integer,
intent(in) :: ISFFLX
577 integer,
optional,
intent(in) :: ISFTCFLX, IZ0TLND
578 logical,
intent(in) :: compute_flux,compute_diag
579 integer,
intent(in) :: spp_sfc, psi_opt
580 integer,
intent(in) :: ivegsrc
581 integer,
intent(in) :: sfc_z0_type
582 logical,
intent(in) :: redrag
585 integer,
dimension(ims:ime),
intent(in) :: vegtype
586 real(kind_phys),
dimension(ims:ime),
intent(in) :: &
587 & sigmaf,shdmax,z0pert,ztpert
592 REAL(kind_phys),
DIMENSION( ims:ime ), &
593 INTENT(IN) :: MAVAIL, &
599 REAL(kind_phys),
DIMENSION( its:ite ), &
600 INTENT(IN) :: U1D,V1D, &
607 REAL(kind_phys),
DIMENSION( ims:ime ), &
608 INTENT(OUT) :: QFX,HFX, &
610 REAL(kind_phys),
DIMENSION( ims:ime ), &
611 INTENT(INOUT) :: HFLX,QFLX, &
623 REAL(kind_phys),
DIMENSION( ims:ime ), &
624 INTENT(INOUT) :: MOL, &
628 LOGICAL,
DIMENSION( ims:ime ),
INTENT(IN) :: &
629 & wet, dry, icy, flag_iter
631 REAL(kind_phys),
DIMENSION( ims:ime ),
INTENT(in) :: &
632 & tskin_wat, tskin_lnd, tskin_ice, &
633 & tsurf_wat, tsurf_lnd, tsurf_ice, &
634 & snowh_wat, snowh_lnd, snowh_ice
636 REAL(kind_phys),
DIMENSION( ims:ime ),
INTENT(inout) :: &
637 & ZNT_wat, ZNT_lnd, ZNT_ice, &
638 & UST_wat, UST_lnd, UST_ice, &
639 & cm_wat, cm_lnd, cm_ice, &
640 & ch_wat, ch_lnd, ch_ice, &
641 & rb_wat, rb_lnd, rb_ice, &
642 & stress_wat,stress_lnd,stress_ice, &
643 & psix_wat, psix_lnd, psix_ice, &
644 & psit_wat, psit_lnd, psit_ice, &
645 & psix10_wat,psix10_lnd,psix10_ice, &
646 & psit2_wat, psit2_lnd, psit2_ice, &
647 & HFLX_wat, HFLX_lnd, HFLX_ice, &
648 & QFLX_wat, QFLX_lnd, QFLX_ice, &
649 & qsfc_wat, qsfc_lnd, qsfc_ice
651 REAL(kind_phys),
DIMENSION( its:ite ), &
652 & INTENT(IN) :: rstoch1D
655 REAL(kind_phys),
DIMENSION( ims:ime ), &
656 & INTENT(OUT) :: U10, V10, &
662 REAL(kind_phys),
DIMENSION( ims:ime ), &
663 & INTENT(OUT) :: qstar, &
669 character(len=*),
intent(inout) :: errmsg
670 integer,
intent(inout) :: errflg
677 character(len=512) :: device_errmsg
678 integer :: device_errflg
684 character(len=512) :: device_special_errmsg
685 integer :: device_special_errflg
691 REAL(kind_phys),
DIMENSION(its:ite) :: &
708 zratio_lnd, zratio_ice, zratio_wat, &
709 TSK_lnd, TSK_ice, TSK_wat, &
710 THSK_lnd, THSK_ice, THSK_wat, &
711 THVSK_lnd, THVSK_ice, THVSK_wat, &
712 GZ1OZ0_lnd, GZ1OZ0_ice, GZ1OZ0_wat, &
713 GZ1OZt_lnd, GZ1OZt_ice, GZ1OZt_wat, &
714 GZ2OZ0_lnd, GZ2OZ0_ice, GZ2OZ0_wat, &
715 GZ2OZt_lnd, GZ2OZt_ice, GZ2OZt_wat, &
716 GZ10OZ0_lnd, GZ10OZ0_ice, GZ10OZ0_wat, &
717 GZ10OZt_lnd, GZ10OZt_ice, GZ10OZt_wat, &
718 ZNTstoch_lnd, ZNTstoch_ice, ZNTstoch_wat, &
719 ZT_lnd, ZT_ice, ZT_wat, &
720 ZQ_lnd, ZQ_ice, ZQ_wat, &
721 PSIQ_lnd, PSIQ_ice, PSIQ_wat, &
722 PSIQ2_lnd, PSIQ2_ice, PSIQ2_wat, &
723 QSFCMR_lnd, QSFCMR_ice, QSFCMR_wat
725 INTEGER :: N,I,K,L,yesno
727 REAL(kind_phys) :: PL,E1,TABS
728 REAL(kind_phys) :: WSPD_lnd, WSPD_ice, WSPD_wat
729 REAL(kind_phys) :: DTHVDZ,DTHVM,VCONV,ZOL2,ZOL10,ZOLZA,ZOLZ0,ZOLZT
730 REAL(kind_phys) :: DTG,DTTHX,PSIQ,PSIQ2,PSIQ10,PSIT10
731 REAL(kind_phys) :: FLUXC,VSGD
732 REAL(kind_phys) :: restar,VISC,DQG,OLDUST,OLDTST
737 device_errflg = errflg
738 device_errmsg = errmsg
739 device_special_errflg = errflg
740 device_special_errmsg = errmsg
799 psfc(i)=psfcpa(i)/1000.
801 if ( flag_iter(i) )
then
803 IF (itimestep == 1)
THEN
806 tsk_wat(i) = tskin_wat(i)
807 IF (tsk_wat(i) .LT. 273.15)
THEN
809 e1=svp1*exp(4648*(1./273.15 - 1./tsk_wat(i)) - &
810 & 11.64*log(273.15/tsk_wat(i)) + 0.02265*(273.15 - tsk_wat(i)))
813 e1=svp1*exp(svp2*(tsk_wat(i)-svpt0)/(tsk_wat(i)-svp3))
815 qsfc_wat(i)=ep2*e1/(psfc(i)-ep3*e1)
816 qsfcmr_wat(i)=ep2*e1/(psfc(i)-e1)
817 IF(qsfc_wat(i)>1..or.qsfc_wat(i)<0.) print *,
' QSFC_wat(I)',itimestep,i,qsfc_wat(i),tsk_wat(i)
820 tsk_lnd(i) = tskin_lnd(i)
822 qsfcmr_lnd(i)=qsfc_lnd(i)/(1.-qsfc_lnd(i))
824 tabs = 0.5*(tsk_lnd(i) + t1d(i))
825 IF (tabs .LT. 273.15)
THEN
827 e1=svp1*exp(4648*(1./273.15 - 1./tabs) - &
828 & 11.64*log(273.15/tabs) + 0.02265*(273.15 - tabs))
831 e1=svp1*exp(svp2*(tabs-svpt0)/(tabs-svp3))
833 qsfc_lnd(i)=ep2*e1/(psfc(i)-ep3*e1)
834 qsfc_lnd(i)=0.5*(qsfc_lnd(i) + qsfc(i))
835 qsfcmr_lnd(i)=qsfc_lnd(i)/(1.-qsfc_lnd(i))
837 IF(qsfc_lnd(i)>1..or.qsfc_lnd(i)<0.) print *,
' QSFC_lnd(I)',itimestep,i,qsfc_lnd(i),tskin_lnd(i),tsurf_lnd(i),qsfc(i)
840 tsk_ice(i) = tskin_ice(i)
842 qsfcmr_ice(i)=qsfc_ice(i)/(1.-qsfc_ice(i))
844 IF (tsk_ice(i) .LT. 273.15)
THEN
846 e1=svp1*exp(4648*(1./273.15 - 1./tsk_ice(i)) - &
847 & 11.64*log(273.15/tsk_ice(i)) + 0.02265*(273.15 - tsk_ice(i)))
850 e1=svp1*exp(svp2*(tsk_ice(i)-svpt0)/(tsk_ice(i)-svp3))
852 qsfc_ice(i)=ep2*e1/(psfc(i)-ep3*e1)
853 qsfcmr_ice(i)=ep2*e1/(psfc(i)-e1)
855 IF(qsfc_ice(i)>1..or.qsfc_ice(i)<0.) print *,
' QSFC_ice(I)',itimestep,i,qsfc_ice(i),tsk_ice(i)
862 tsk_wat(i) = tskin_wat(i)
863 IF (tsk_wat(i) .LT. 273.15)
THEN
865 e1=svp1*exp(4648*(1./273.15 - 1./tsk_wat(i)) - &
866 & 11.64*log(273.15/tsk_wat(i)) + 0.02265*(273.15 - tsk_wat(i)))
869 e1=svp1*exp(svp2*(tsk_wat(i)-svpt0)/(tsk_wat(i)-svp3))
871 qsfc_wat(i)=ep2*e1/(psfc(i)-ep3*e1)
873 IF (dry(i).and.(qsfc_lnd(i)>1..or.qsfc_lnd(i)<0.))
then
875 tabs = 0.5*(tskin_lnd(i) + t1d(i))
876 IF (tabs .LT. 273.15)
THEN
878 e1=svp1*exp(4648*(1./273.15 - 1./tabs) - &
879 & 11.64*log(273.15/tabs) + 0.02265*(273.15 - tabs))
882 e1=svp1*exp(svp2*(tabs-svpt0)/(tabs-svp3))
884 qsfc_lnd(i)=ep2*e1/(psfc(i)-ep3*e1)
885 qsfc_lnd(i)=0.5*(qsfc_lnd(i) + qsfc(i))
887 IF (icy(i).and.(qsfc_ice(i)>1..or.qsfc_ice(i)<0.))
then
889 IF (tskin_ice(i) .LT. 273.15)
THEN
891 e1=svp1*exp(4648*(1./273.15 - 1./tskin_ice(i)) - &
892 & 11.64*log(273.15/tskin_ice(i)) + 0.02265*(273.15 - tskin_ice(i)))
895 e1=svp1*exp(svp2*(tskin_ice(i)-svpt0)/(tskin_ice(i)-svp3))
897 qsfc_ice(i)=ep2*e1/(psfc(i)-ep3*e1)
900 IF (wet(i)) qsfcmr_wat(i)=qsfc_wat(i)/(1.-qsfc_wat(i))
901 IF (dry(i)) qsfcmr_lnd(i)=qsfc_lnd(i)/(1.-qsfc_lnd(i))
902 IF (icy(i)) qsfcmr_ice(i)=qsfc_ice(i)/(1.-qsfc_ice(i))
912 IF (debug_code >= 1)
THEN
913 write(0,*)
"ITIMESTEP=",itimestep,
" iter=",iter
915 write(0,*)
"=== important input to mynnsfclayer, i:", i
917 write(0,*)
"dry=",dry(i),
" pblh=",pblh(i),
" tsk=", tskin_lnd(i),&
918 " tsurf=", tsurf_lnd(i),
" qsfc=", qsfc_lnd(i),
" znt=", znt_lnd(i),&
919 " ust=", ust_lnd(i),
" snowh=", snowh_lnd(i),
" psfcpa=",psfcpa(i), &
920 " dz=",dz8w1d(i),
" qflx=",qflx(i),
" hflx=",hflx(i),
" hpbl=",pblh(i)
923 write(0,*)
"icy=",icy(i),
" pblh=",pblh(i),
" tsk=", tskin_ice(i),&
924 " tsurf=", tsurf_ice(i),
" qsfc=", qsfc_ice(i),
" znt=", znt_ice(i),&
925 " ust=", ust_ice(i),
" snowh=", snowh_ice(i),
"psfcpa=",psfcpa(i), &
926 " dz=",dz8w1d(i),
" qflx=",qflx(i),
" hflx=",hflx(i),
" hpbl=",pblh(i)
929 write(0,*)
"wet=",wet(i),
" pblh=",pblh(i),
" tsk=", tskin_wat(i),&
930 " tsurf=", tsurf_wat(i),
" qsfc=", qsfc_wat(i),
" znt=", znt_wat(i),&
931 " ust=", ust_wat(i),
" snowh=", snowh_wat(i),
"psfcpa=",psfcpa(i), &
932 " dz=",dz8w1d(i),
" qflx=",qflx(i),
" hflx=",hflx(i),
" hpbl=",pblh(i)
944 psfc(i)=psfcpa(i)/1000.
945 qvsh(i)=qv1d(i)/(1.+qv1d(i))
946 thcon(i)=(100000./psfcpa(i))**rovcp
947 if( flag_iter(i) )
then
950 tsk_lnd(i) = tskin_lnd(i)
953 thsk_lnd(i) = tsk_lnd(i)*thcon(i)
954 thvsk_lnd(i) = thsk_lnd(i)*(1.+ep1*qsfc_lnd(i))
955 if(thvsk_lnd(i) < 160. .or. thvsk_lnd(i) > 390.) &
956 print *,
'THVSK_lnd(I)',itimestep,i,thvsk_lnd(i),thsk_lnd(i),tsurf_lnd(i),tskin_lnd(i),qsfc_lnd(i)
959 tsk_ice(i) = tskin_ice(i)
962 thsk_ice(i) = tsk_ice(i)*thcon(i)
963 thvsk_ice(i) = thsk_ice(i)*(1.+ep1*qsfc_ice(i))
964 if(thvsk_ice(i) < 160. .or. thvsk_ice(i) > 390.) &
965 print *,
'THVSK_ice(I)',itimestep,i,thvsk_ice(i),thsk_ice(i),tsurf_ice(i),tskin_ice(i),qsfc_ice(i)
968 tsk_wat(i) = tskin_wat(i)
971 thsk_wat(i) = tsk_wat(i)*thcon(i)
972 thvsk_wat(i) = thsk_wat(i)*(1.+ep1*qvsh(i))
973 if(thvsk_wat(i) < 160. .or. thvsk_wat(i) > 390.) &
974 print *,
'THVSK_wat(I)',i,thvsk_wat(i),thsk_wat(i),tsurf_wat(i),tskin_wat(i),qsfc_wat(i)
982 th1d(i)=t1d(i)*(100000./p1d(i))**rovcp
983 tc1d(i)=t1d(i)-273.15
989 thv1d(i)=th1d(i)*(1.+ep1*qvsh(i))
990 tv1d(i)=t1d(i)*(1.+ep1*qvsh(i))
995 rho1d(i)=p1d(i)/(rd*tv1d(i))
997 za2(i)=dz8w1d(i) + 0.5*dz2w1d(i)
998 govrth(i)=grav/th1d(i)
1004 qfx(i)=qflx(i)*rho1d(i)
1005 hfx(i)=hflx(i)*rho1d(i)*cp
1012 IF (debug_code ==2)
THEN
1015 write(*,*)
"=== derived quantities in mynn sfc layer, i:", i
1016 write(*,*)
" land, ice, water"
1017 write(*,*)
"dry=",dry(i),
" icy=",icy(i),
" wet=",wet(i)
1018 write(*,*)
"tsk=", tsk_lnd(i),tsk_ice(i),tsk_wat(i)
1019 write(*,*)
"thvsk=", thvsk_lnd(i),thvsk_ice(i),thvsk_wat(i)
1020 write(*,*)
"THV1D=", thv1d(i),
" TV1D=",tv1d(i)
1021 write(*,*)
"RHO1D=", rho1d(i),
" GOVRTH=",govrth(i)
1030 IF (t1d(i) .LT. 273.15)
THEN
1032 e1=svp1*exp(4648.*(1./273.15 - 1./t1d(i)) - &
1033 & 11.64*log(273.15/t1d(i)) + 0.02265*(273.15 - t1d(i)))
1036 e1=svp1*exp(svp2*(t1d(i)-svpt0)/(t1d(i)-svp3))
1040 qgh(i)=ep2*e1/(pl-e1)
1041 cpm(i)=cp*(1.+0.84*qv1d(i))
1048 IF (debug_code == 2)
THEN
1049 write(*,*)
"ITIMESTEP=",itimestep
1052 write(*,*)
"==== q-bombs, i:",i,
" wet"
1053 write(*,*)
"QSFC_wat=", qsfc_wat(i),
" QSFCMR_wat=", qsfcmr_wat(i),
" QGH=",qgh(i)
1056 write(*,*)
"==== q-bombs, i:",i,
" dry"
1057 write(*,*)
"QSFC_lnd=", qsfc_lnd(i),
" QSFCMR_lnd=", qsfcmr_lnd(i),
" QGH=",qgh(i)
1060 write(*,*)
"==== q-bombs, i:",i,
" ice"
1061 write(*,*)
"QSFC_ice=", qsfc_ice(i),
" QSFCMR_ice=", qsfcmr_ice(i),
" QGH=",qgh(i)
1073 if( flag_iter(i) )
then
1078 wspd(i)=sqrt(u1d(i)*u1d(i)+v1d(i)*v1d(i))
1084 dthvdz=(thv1d(i)-thvsk_wat(i))
1093 fluxc = max(hfx(i)/rho1d(i)/cp &
1094 & + ep1*thvsk_wat(i)*qfx(i)/rho1d(i),0._kind_phys)
1096 wstar(i) = vconvc*(grav/tsk_wat(i)*pblh(i)*fluxc)**onethird
1101 vsgd = min( 0.25 * (max(dx(i)/5000.-1.,0._kind_phys))**onethird , 0.5_kind_phys)
1102 wspd_wat=sqrt(wspd(i)*wspd(i)+wstar(i)*wstar(i)+vsgd*vsgd)
1103 wspd_wat=max(wspd_wat,wmin)
1108 rb_wat(i)=govrth(i)*za(i)*dthvdz/(wspd_wat*wspd_wat)
1109 rb_wat(i)=max(rb_wat(i),-2.0_kind_phys)
1110 rb_wat(i)=min(rb_wat(i), 2.0_kind_phys)
1114 dthvdz=(thv1d(i)-thvsk_lnd(i))
1123 fluxc = max(hfx(i)/rho1d(i)/cp &
1124 & + ep1*thvsk_lnd(i)*qfx(i)/rho1d(i),0._kind_phys)
1128 wstar(i) = vconvc*(grav/tsk_lnd(i)*min(1.5*pblh(i),4000._kind_phys)*fluxc)**onethird
1133 vsgd = min( 0.32 * (max(dx(i)/5000.-1.,0._kind_phys))**onethird , 0.5_kind_phys)
1134 wspd_lnd=sqrt(wspd(i)*wspd(i)+wstar(i)*wstar(i)+vsgd*vsgd)
1135 wspd_lnd=max(wspd_lnd,wmin)
1140 rb_lnd(i)=govrth(i)*za(i)*dthvdz/(wspd_lnd*wspd_lnd)
1147 rb_lnd(i)=max(rb_lnd(i),-2.0_kind_phys)
1148 rb_lnd(i)=min(rb_lnd(i), 2.0_kind_phys)
1152 dthvdz=(thv1d(i)-thvsk_ice(i))
1161 fluxc = max(hfx(i)/rho1d(i)/cp &
1162 & + ep1*thvsk_ice(i)*qfx(i)/rho1d(i),0._kind_phys)
1166 wstar(i) = vconvc*(grav/tsk_ice(i)*min(1.5*pblh(i),4000._kind_phys)*fluxc)**onethird
1171 vsgd = min( 0.32 * (max(dx(i)/5000.-1.,0._kind_phys))**onethird , 0.5_kind_phys)
1172 wspd_ice=sqrt(wspd(i)*wspd(i)+wstar(i)*wstar(i)+vsgd*vsgd)
1173 wspd_ice=max(wspd_ice,wmin)
1178 rb_ice(i)=govrth(i)*za(i)*dthvdz/(wspd_ice*wspd_ice)
1179 rb_ice(i)=max(rb_ice(i),-2.0_kind_phys)
1180 rb_ice(i)=min(rb_ice(i), 2.0_kind_phys)
1184 wspd(i) = max(wspd_ice,wspd_wat)
1185 wspd(i) = max(wspd_lnd,wspd(i))
1187 IF (debug_code == 2)
THEN
1188 write(*,*)
"===== After rb calc in mynn sfc layer:"
1189 write(*,*)
"ITIMESTEP=",itimestep
1190 write(*,*)
"WSPD=", wspd(i),
" WSTAR=", wstar(i),
" vsgd=",vsgd
1191 IF (icy(i))
write(*,*)
"rb_ice=", rb_ice(i),
" DTHVDZ=",dthvdz
1192 IF (wet(i))
write(*,*)
"rb_wat=", rb_wat(i),
" DTHVDZ=",dthvdz
1193 IF (dry(i))
write(*,*)
"rb_lnd=", rb_lnd(i),
" DTHVDZ=",dthvdz
1204 1006
format(a,f7.3,a,f9.4,a,f9.5,a,f9.4)
1205 1007
format(a,f2.0,a,f6.2,a,f7.3,a,f7.2)
1243 if( flag_iter(i) )
then
1247 visc=1.326e-5*(1. + 6.542e-3*tc1d(i) + 8.301e-6*tc1d(i)*tc1d(i) &
1248 - 4.84e-9*tc1d(i)*tc1d(i)*tc1d(i))
1254 if (sfc_z0_type >= 0)
then
1258 IF (debug_code == 2)
THEN
1259 write(*,*)
"=============Input to ZNT over water:"
1260 write(*,*)
"u*:",ust_wat(i),
" wspd=",wspd(i),
" visc=",visc,
" za=",za(i)
1263 IF (
PRESENT(isftcflx) )
THEN
1264 IF ( isftcflx .EQ. 0 )
THEN
1265 IF (coare_opt .EQ. 3.0)
THEN
1267 CALL charnock_1955(znt_wat(i),ust_wat(i),wspd(i),visc,za(i))
1272 ELSEIF ( isftcflx .EQ. 1 .OR. isftcflx .EQ. 2 )
THEN
1274 ELSEIF ( isftcflx .EQ. 3 )
THEN
1276 ELSEIF ( isftcflx .EQ. 4 )
THEN
1278 CALL gfs_z0_wat(znt_wat(i),ust_wat(i),wspd(i),za(i),sfc_z0_type,redrag)
1282 IF (coare_opt .EQ. 3.0)
THEN
1284 CALL charnock_1955(znt_wat(i),ust_wat(i),wspd(i),visc,za(i))
1293 if (spp_sfc==1)
then
1294 zntstoch_wat(i) = max(znt_wat(i) + znt_wat(i)*1.0*rstoch1d(i), 1e-6_kind_phys)
1296 zntstoch_wat(i) = znt_wat(i)
1299 IF (debug_code > 1)
THEN
1300 write(*,*)
"==========Output ZNT over water:"
1301 write(*,*)
"ZNT:",zntstoch_wat(i)
1308 restar=max(ust_wat(i)*zntstoch_wat(i)/visc, 0.1_kind_phys)
1313 IF (debug_code > 1)
THEN
1314 write(*,*)
"=============Input to ZT over water:"
1315 write(*,*)
"u*:",ust_wat(i),
" restar=",restar,
" visc=",visc
1318 IF (
PRESENT(isftcflx) )
THEN
1319 IF ( isftcflx .EQ. 0 )
THEN
1320 IF (coare_opt .EQ. 3.0)
THEN
1322 rstoch1d(i),spp_sfc)
1325 rstoch1d(i),spp_sfc)
1327 ELSEIF ( isftcflx .EQ. 1 )
THEN
1328 IF (coare_opt .EQ. 3.0)
THEN
1330 rstoch1d(i),spp_sfc)
1333 rstoch1d(i),spp_sfc)
1335 ELSEIF ( isftcflx .EQ. 2 )
THEN
1336 CALL garratt_1992(zt_wat(i),zq_wat(i),zntstoch_wat(i),restar,2.0_kind_phys)
1337 ELSEIF ( isftcflx .EQ. 3 )
THEN
1338 IF (coare_opt .EQ. 3.0)
THEN
1340 rstoch1d(i),spp_sfc)
1343 rstoch1d(i),spp_sfc)
1345 ELSEIF ( isftcflx .EQ. 4 )
THEN
1347 CALL gfs_zt_wat(zt_wat(i),zntstoch_wat(i),restar,wspd(i),za(i),sfc_z0_type,device_errmsg,device_errflg)
1348 if(errflg/=0)
return
1354 IF (coare_opt .EQ. 3.0)
THEN
1356 rstoch1d(i),spp_sfc)
1359 rstoch1d(i),spp_sfc)
1363 IF (debug_code > 1)
THEN
1364 write(*,*)
"=============Output ZT & ZQ over water:"
1365 write(*,*)
"ZT:",zt_wat(i),
" ZQ:",zq_wat(i)
1368 gz1oz0_wat(i)= log((za(i)+zntstoch_wat(i))/zntstoch_wat(i))
1369 gz1ozt_wat(i)= log((za(i)+zntstoch_wat(i))/zt_wat(i))
1370 gz2oz0_wat(i)= log((2.0+zntstoch_wat(i))/zntstoch_wat(i))
1371 gz2ozt_wat(i)= log((2.0+zntstoch_wat(i))/zt_wat(i))
1372 gz10oz0_wat(i)=log((10.+zntstoch_wat(i))/zntstoch_wat(i))
1373 gz10ozt_wat(i)=log((10.+zntstoch_wat(i))/zt_wat(i))
1374 zratio_wat(i)=zntstoch_wat(i)/zt_wat(i)
1380 if ( iz0tlnd .EQ. 4 )
then
1381 CALL gfs_z0_lnd(znt_lnd(i),shdmax(i),za(i),vegtype(i),ivegsrc,z0pert(i))
1385 if (spp_sfc==1)
then
1386 zntstoch_lnd(i) = max(znt_lnd(i) + znt_lnd(i)*1.0*rstoch1d(i), 1e-6_kind_phys)
1388 zntstoch_lnd(i) = znt_lnd(i)
1391 zntstoch_lnd(i) = min(zntstoch_lnd(i), dz8w1d(i)*0.0666_kind_phys)
1397 restar=max(ust_lnd(i)*zntstoch_lnd(i)/visc, 0.1_kind_phys)
1402 IF (snowh_lnd(i) > 50.)
THEN
1403 CALL andreas_2002(zntstoch_lnd(i),visc,ust_lnd(i),zt_lnd(i),zq_lnd(i))
1405 IF (
PRESENT(iz0tlnd) )
THEN
1406 IF ( iz0tlnd .LE. 1 )
THEN
1408 ust_lnd(i),karman,1.0_kind_phys,iz0tlnd,spp_sfc,rstoch1d(i))
1409 ELSEIF ( iz0tlnd .EQ. 2 )
THEN
1412 device_special_errmsg =
'Logic error: qstar is not set correctly when calling Yang_2008'
1413 device_special_errflg = 1
1418 errmsg = device_special_errmsg
1419 errflg = device_special_errflg
1422 CALL yang_2008(zntstoch_lnd(i),zt_lnd(i),zq_lnd(i),ust_lnd(i),mol(i),&
1423 qstar(i),restar,visc)
1424 ELSEIF ( iz0tlnd .EQ. 3 )
THEN
1426 CALL garratt_1992(zt_lnd(i),zq_lnd(i),zntstoch_lnd(i),restar,1.0_kind_phys)
1427 ELSEIF ( iz0tlnd .EQ. 4 )
THEN
1429 CALL gfs_zt_lnd(zt_lnd(i),zntstoch_lnd(i),sigmaf(i),ztpert(i),ust_lnd(i))
1435 ust_lnd(i),karman,1.0_kind_phys,0,spp_sfc,rstoch1d(i))
1439 IF (zntstoch_lnd(i) < 1e-8 .OR. zt_lnd(i) < 1e-10)
THEN
1440 write(0,*)
"===(land) capture bad input in mynn sfc layer, i=:",i
1441 write(0,*)
" ZNT=", zntstoch_lnd(i),
" ZT=",zt_lnd(i)
1442 write(0,*)
" tsk=", tskin_lnd(i),
" restar=",restar,&
1443 " tsurf=", tsurf_lnd(i),
" qsfc=", qsfc_lnd(i),
" znt=", znt_lnd(i),&
1444 " ust=", ust_lnd(i),
" snowh=", snowh_lnd(i),
"psfcpa=",psfcpa(i), &
1445 " dz=",dz8w1d(i),
" qflx=",qflx_lnd(i),
" hflx=",hflx_lnd(i),
" hpbl=",pblh(i)
1448 gz1oz0_lnd(i)= log((za(i)+zntstoch_lnd(i))/zntstoch_lnd(i))
1449 gz1ozt_lnd(i)= log((za(i)+zntstoch_lnd(i))/zt_lnd(i))
1450 gz2oz0_lnd(i)= log((2.0+zntstoch_lnd(i))/zntstoch_lnd(i))
1451 gz2ozt_lnd(i)= log((2.0+zntstoch_lnd(i))/zt_lnd(i))
1452 gz10oz0_lnd(i)=log((10.+zntstoch_lnd(i))/zntstoch_lnd(i))
1453 gz10ozt_lnd(i)=log((10.+zntstoch_lnd(i))/zt_lnd(i))
1454 zratio_lnd(i)=zntstoch_lnd(i)/zt_lnd(i)
1461 if (spp_sfc==1)
then
1462 zntstoch_ice(i) = max(znt_ice(i) + znt_ice(i)*1.0*rstoch1d(i), 1e-6_kind_phys)
1464 zntstoch_ice(i) = znt_ice(i)
1471 restar=max(ust_ice(i)*zntstoch_ice(i)/visc, 0.1_kind_phys)
1475 CALL andreas_2002(zntstoch_ice(i),visc,ust_ice(i),zt_ice(i),zq_ice(i))
1477 gz1oz0_ice(i)= log((za(i)+zntstoch_ice(i))/zntstoch_ice(i))
1478 gz1ozt_ice(i)= log((za(i)+zntstoch_ice(i))/zt_ice(i))
1479 gz2oz0_ice(i)= log((2.0+zntstoch_ice(i))/zntstoch_ice(i))
1480 gz2ozt_ice(i)= log((2.0+zntstoch_ice(i))/zt_ice(i))
1481 gz10oz0_ice(i)=log((10.+zntstoch_ice(i))/zntstoch_ice(i))
1482 gz10ozt_ice(i)=log((10.+zntstoch_ice(i))/zt_ice(i))
1483 zratio_ice(i)=zntstoch_ice(i)/zt_ice(i)
1490 znt(i)=zntstoch_lnd(i)
1491 ELSEIF (wet(i))
THEN
1492 znt(i)=zntstoch_wat(i)
1493 ELSEIF (icy(i))
THEN
1494 znt(i)=zntstoch_ice(i)
1503 IF (rb_wat(i) .GT. 0.0)
THEN
1505 IF (.not. flag_restart .or. (flag_restart .and. itimestep > 1) )
THEN
1507 CALL li_etal_2010(zol(i),rb_wat(i),za(i)/zntstoch_wat(i),zratio_wat(i))
1509 zol(i)=max(zol(i),0.0_kind_phys)
1510 zol(i)=min(zol(i),20._kind_phys)
1512 IF (debug_code >= 1)
THEN
1513 IF (zntstoch_wat(i) < 1e-8 .OR. zt_wat(i) < 1e-10)
THEN
1514 write(0,*)
"===(wet) capture bad input in mynn sfc layer, i=:",i
1515 write(0,*)
"rb=", rb_wat(i),
" ZNT=", zntstoch_wat(i),
" ZT=",zt_wat(i)
1516 write(0,*)
" tsk=", tskin_wat(i),
" prev z/L=",zol(i),&
1517 " tsurf=", tsurf_wat(i),
" qsfc=", qsfc_wat(i),
" znt=", znt_wat(i),&
1518 " ust=", ust_wat(i),
" snowh=", snowh_wat(i),
"psfcpa=",psfcpa(i), &
1519 " dz=",dz8w1d(i),
" qflx=",qflx(i),
" hflx=",hflx(i),
" hpbl=",pblh(i)
1526 zol(i)=zolrib(rb_wat(i),za(i),zntstoch_wat(i),zt_wat(i),gz1oz0_wat(i),gz1ozt_wat(i),zol(i),psi_opt)
1528 zol(i)=max(zol(i),0.0_kind_phys)
1529 zol(i)=min(zol(i),20._kind_phys)
1531 zolzt = zol(i)*zt_wat(i)/za(i)
1532 zolz0 = zol(i)*zntstoch_wat(i)/za(i)
1533 zolza = zol(i)*(za(i)+zntstoch_wat(i))/za(i)
1534 zol10 = zol(i)*(10.+zntstoch_wat(i))/za(i)
1535 zol2 = zol(i)*(2.+zntstoch_wat(i))/za(i)
1551 rmol(i)= zol(i)/za(i)
1553 ELSEIF(rb_wat(i) .EQ. 0.)
THEN
1567 ELSEIF(rb_wat(i) .LT. 0.)
THEN
1573 IF (.not. flag_restart .or. (flag_restart .and. itimestep > 1) )
THEN
1574 CALL li_etal_2010(zol(i),rb_wat(i),za(i)/zntstoch_wat(i),zratio_wat(i))
1576 zol(i)=max(zol(i),-20.0_kind_phys)
1577 zol(i)=min(zol(i),0.0_kind_phys)
1579 IF (debug_code >= 1)
THEN
1580 IF (zntstoch_wat(i) < 1e-8 .OR. zt_wat(i) < 1e-10)
THEN
1581 write(0,*)
"===(wet) capture bad input in mynn sfc layer, i=:",i
1582 write(0,*)
"rb=", rb_wat(i),
" ZNT=", zntstoch_wat(i),
" ZT=",zt_wat(i)
1583 write(0,*)
" tsk=", tskin_wat(i),
" wstar=",wstar(i),
" prev z/L=",zol(i),&
1584 " tsurf=", tsurf_wat(i),
" qsfc=", qsfc_wat(i),
" znt=", znt_wat(i),&
1585 " ust=", ust_wat(i),
" snowh=", snowh_wat(i),
"psfcpa=",psfcpa(i), &
1586 " dz=",dz8w1d(i),
" qflx=",qflx(i),
" hflx=",hflx(i),
" hpbl=",pblh(i)
1593 zol(i)=zolrib(rb_wat(i),za(i),zntstoch_wat(i),zt_wat(i),gz1oz0_wat(i),gz1ozt_wat(i),zol(i),psi_opt)
1595 zol(i)=max(zol(i),-20.0_kind_phys)
1596 zol(i)=min(zol(i),0.0_kind_phys)
1598 zolzt = zol(i)*zt_wat(i)/za(i)
1599 zolz0 = zol(i)*zntstoch_wat(i)/za(i)
1600 zolza = zol(i)*(za(i)+zntstoch_wat(i))/za(i)
1601 zol10 = zol(i)*(10.+zntstoch_wat(i))/za(i)
1602 zol2 = zol(i)*(2.+zntstoch_wat(i))/za(i)
1619 psih(i)=min(psih(i),0.9*gz1ozt_wat(i))
1620 psim(i)=min(psim(i),0.9*gz1oz0_wat(i))
1621 psih2(i)=min(psih2(i),0.9*gz2ozt_wat(i))
1622 psim10(i)=min(psim10(i),0.9*gz10oz0_wat(i))
1623 psih10(i)=min(psih10(i),0.9*gz10ozt_wat(i))
1625 rmol(i) = zol(i)/za(i)
1630 psix_wat(i) =max(gz1oz0_wat(i)-psim(i) , 1.0_kind_phys)
1631 psix10_wat(i)=max(gz10oz0_wat(i)-psim10(i), 1.0_kind_phys)
1632 psit_wat(i) =max(gz1ozt_wat(i)-psih(i) , 1.0_kind_phys)
1633 psit2_wat(i) =max(gz2ozt_wat(i)-psih2(i) , 1.0_kind_phys)
1634 psiq_wat(i) =max(log((za(i)+zq_wat(i))/zq_wat(i))-psih(i) ,1.0_kind_phys)
1635 psiq2_wat(i) =max(log((2.0+zq_wat(i))/zq_wat(i))-psih2(i) ,1.0_kind_phys)
1640 IF (rb_lnd(i) .GT. 0.0)
THEN
1642 IF (.not. flag_restart .or. (flag_restart .and. itimestep > 1) )
THEN
1644 CALL li_etal_2010(zol(i),rb_lnd(i),za(i)/zntstoch_lnd(i),zratio_lnd(i))
1646 zol(i)=max(zol(i),0.0_kind_phys)
1647 zol(i)=min(zol(i),20._kind_phys)
1649 IF (debug_code >= 1)
THEN
1650 IF (zntstoch_lnd(i) < 1e-8 .OR. zt_lnd(i) < 1e-10)
THEN
1651 write(0,*)
"===(land) capture bad input in mynn sfc layer, i=:",i
1652 write(0,*)
"rb=", rb_lnd(i),
" ZNT=", zntstoch_lnd(i),
" ZT=",zt_lnd(i)
1653 write(0,*)
" tsk=", tskin_lnd(i),
" prev z/L=",zol(i),&
1654 " tsurf=", tsurf_lnd(i),
" qsfc=", qsfc_lnd(i),
" znt=", znt_lnd(i),&
1655 " ust=", ust_lnd(i),
" snowh=", snowh_lnd(i),
"psfcpa=",psfcpa(i), &
1656 " dz=",dz8w1d(i),
" qflx=",qflx(i),
" hflx=",hflx(i),
" hpbl=",pblh(i)
1663 zol(i)=zolrib(rb_lnd(i),za(i),zntstoch_lnd(i),zt_lnd(i),gz1oz0_lnd(i),gz1ozt_lnd(i),zol(i),psi_opt)
1665 zol(i)=max(zol(i),0.0_kind_phys)
1666 zol(i)=min(zol(i),20._kind_phys)
1668 zolzt = zol(i)*zt_lnd(i)/za(i)
1669 zolz0 = zol(i)*zntstoch_lnd(i)/za(i)
1670 zolza = zol(i)*(za(i)+zntstoch_lnd(i))/za(i)
1671 zol10 = zol(i)*(10.+zntstoch_lnd(i))/za(i)
1672 zol2 = zol(i)*(2.+zntstoch_lnd(i))/za(i)
1687 rmol(i)= zol(i)/za(i)
1689 ELSEIF(rb_lnd(i) .EQ. 0.)
THEN
1703 ELSEIF(rb_lnd(i) .LT. 0.)
THEN
1708 IF (.not. flag_restart .or. (flag_restart .and. itimestep > 1) )
THEN
1710 CALL li_etal_2010(zol(i),rb_lnd(i),za(i)/zntstoch_lnd(i),zratio_lnd(i))
1712 zol(i)=max(zol(i),-20.0_kind_phys)
1713 zol(i)=min(zol(i),0.0_kind_phys)
1715 IF (debug_code >= 1)
THEN
1716 IF (zntstoch_lnd(i) < 1e-8 .OR. zt_lnd(i) < 1e-10)
THEN
1717 write(0,*)
"===(land) capture bad input in mynn sfc layer, i=:",i
1718 write(0,*)
"rb=", rb_lnd(i),
" ZNT=", zntstoch_lnd(i),
" ZT=",zt_lnd(i)
1719 write(0,*)
" tsk=", tskin_lnd(i),
" wstar=",wstar(i),
" prev z/L=",zol(i),&
1720 " tsurf=", tsurf_lnd(i),
" qsfc=", qsfc_lnd(i),
" znt=", znt_lnd(i),&
1721 " ust=", ust_lnd(i),
" snowh=", snowh_lnd(i),
"psfcpa=",psfcpa(i), &
1722 " dz=",dz8w1d(i),
" qflx=",qflx(i),
" hflx=",hflx(i),
" hpbl=",pblh(i)
1729 zol(i)=zolrib(rb_lnd(i),za(i),zntstoch_lnd(i),zt_lnd(i),gz1oz0_lnd(i),gz1ozt_lnd(i),zol(i),psi_opt)
1731 zol(i)=max(zol(i),-20.0_kind_phys)
1732 zol(i)=min(zol(i),0.0_kind_phys)
1734 zolzt = zol(i)*zt_lnd(i)/za(i)
1735 zolz0 = zol(i)*zntstoch_lnd(i)/za(i)
1736 zolza = zol(i)*(za(i)+zntstoch_lnd(i))/za(i)
1737 zol10 = zol(i)*(10.+zntstoch_lnd(i))/za(i)
1738 zol2 = zol(i)*(2.+zntstoch_lnd(i))/za(i)
1754 psih(i)=min(psih(i),0.9*gz1ozt_lnd(i))
1755 psim(i)=min(psim(i),0.9*gz1oz0_lnd(i))
1756 psih2(i)=min(psih2(i),0.9*gz2ozt_lnd(i))
1757 psim10(i)=min(psim10(i),0.9*gz10oz0_lnd(i))
1758 psih10(i)=min(psih10(i),0.9*gz10ozt_lnd(i))
1760 rmol(i) = zol(i)/za(i)
1765 psix_lnd(i) =max(gz1oz0_lnd(i)-psim(i), 1.0_kind_phys)
1766 psix10_lnd(i)=max(gz10oz0_lnd(i)-psim10(i), 1.0_kind_phys)
1767 psit_lnd(i) =max(gz1ozt_lnd(i)-psih(i) , 1.0_kind_phys)
1768 psit2_lnd(i) =max(gz2ozt_lnd(i)-psih2(i), 1.0_kind_phys)
1769 psiq_lnd(i) =max(log((za(i)+zq_lnd(i))/zq_lnd(i))-psih(i) ,1.0_kind_phys)
1770 psiq2_lnd(i) =max(log((2.0+zq_lnd(i))/zq_lnd(i))-psih2(i) ,1.0_kind_phys)
1775 IF (rb_ice(i) .GT. 0.0)
THEN
1777 IF (.not. flag_restart .or. (flag_restart .and. itimestep > 1) )
THEN
1779 CALL li_etal_2010(zol(i),rb_ice(i),za(i)/zntstoch_ice(i),zratio_ice(i))
1781 zol(i)=max(zol(i),0.0_kind_phys)
1782 zol(i)=min(zol(i),20._kind_phys)
1784 IF (debug_code >= 1)
THEN
1785 IF (zntstoch_ice(i) < 1e-8 .OR. zt_ice(i) < 1e-10)
THEN
1786 write(0,*)
"===(ice) capture bad input in mynn sfc layer, i=:",i
1787 write(0,*)
"rb=", rb_ice(i),
" ZNT=", zntstoch_ice(i),
" ZT=",zt_ice(i)
1788 write(0,*)
" tsk=", tskin_ice(i),
" prev z/L=",zol(i),&
1789 " tsurf=", tsurf_ice(i),
" qsfc=", qsfc_ice(i),
" znt=", znt_ice(i),&
1790 " ust=", ust_ice(i),
" snowh=", snowh_ice(i),
"psfcpa=",psfcpa(i), &
1791 " dz=",dz8w1d(i),
" qflx=",qflx(i),
" hflx=",hflx(i),
" hpbl=",pblh(i)
1798 zol(i)=zolrib(rb_ice(i),za(i),zntstoch_ice(i),zt_ice(i),gz1oz0_ice(i),gz1ozt_ice(i),zol(i),psi_opt)
1800 zol(i)=max(zol(i),0.0_kind_phys)
1801 zol(i)=min(zol(i),20._kind_phys)
1803 zolzt = zol(i)*zt_ice(i)/za(i)
1804 zolz0 = zol(i)*zntstoch_ice(i)/za(i)
1805 zolza = zol(i)*(za(i)+zntstoch_ice(i))/za(i)
1806 zol10 = zol(i)*(10.+zntstoch_ice(i))/za(i)
1807 zol2 = zol(i)*(2.+zntstoch_ice(i))/za(i)
1822 rmol(i)= zol(i)/za(i)
1824 ELSEIF(rb_ice(i) .EQ. 0.)
THEN
1838 ELSEIF(rb_ice(i) .LT. 0.)
THEN
1843 IF (.not. flag_restart .or. (flag_restart .and. itimestep > 1) )
THEN
1845 CALL li_etal_2010(zol(i),rb_ice(i),za(i)/zntstoch_ice(i),zratio_ice(i))
1847 zol(i)=max(zol(i),-20.0_kind_phys)
1848 zol(i)=min(zol(i),0.0_kind_phys)
1850 IF (debug_code >= 1)
THEN
1851 IF (zntstoch_ice(i) < 1e-8 .OR. zt_ice(i) < 1e-10)
THEN
1852 write(0,*)
"===(ice) capture bad input in mynn sfc layer, i=:",i
1853 write(0,*)
"rb=", rb_ice(i),
" ZNT=", zntstoch_ice(i),
" ZT=",zt_ice(i)
1854 write(0,*)
" tsk=", tskin_ice(i),
" wstar=",wstar(i),
" prev z/L=",zol(i),&
1855 " tsurf=", tsurf_ice(i),
" qsfc=", qsfc_ice(i),
" znt=", znt_ice(i),&
1856 " ust=", ust_ice(i),
" snowh=", snowh_ice(i),
"psfcpa=",psfcpa(i), &
1857 " dz=",dz8w1d(i),
" qflx=",qflx(i),
" hflx=",hflx(i),
" hpbl=",pblh(i)
1864 zol(i)=zolrib(rb_ice(i),za(i),zntstoch_ice(i),zt_ice(i),gz1oz0_ice(i),gz1ozt_ice(i),zol(i),psi_opt)
1866 zol(i)=max(zol(i),-20.0_kind_phys)
1867 zol(i)=min(zol(i),0.0_kind_phys)
1869 zolzt = zol(i)*zt_ice(i)/za(i)
1870 zolz0 = zol(i)*zntstoch_ice(i)/za(i)
1871 zolza = zol(i)*(za(i)+zntstoch_ice(i))/za(i)
1872 zol10 = zol(i)*(10.+zntstoch_ice(i))/za(i)
1873 zol2 = zol(i)*(2.+zntstoch_ice(i))/za(i)
1889 psih(i)=min(psih(i),0.9*gz1ozt_ice(i))
1890 psim(i)=min(psim(i),0.9*gz1oz0_ice(i))
1891 psih2(i)=min(psih2(i),0.9*gz2ozt_ice(i))
1892 psim10(i)=min(psim10(i),0.9*gz10oz0_ice(i))
1893 psih10(i)=min(psih10(i),0.9*gz10ozt_ice(i))
1895 rmol(i) = zol(i)/za(i)
1900 psix_ice(i) =max(gz1oz0_ice(i)-psim(i) , 1.0_kind_phys)
1901 psix10_ice(i)=max(gz10oz0_ice(i)-psim10(i), 1.0_kind_phys)
1902 psit_ice(i) =max(gz1ozt_ice(i)-psih(i) , 1.0_kind_phys)
1903 psit2_ice(i) =max(gz2ozt_ice(i)-psih2(i) , 1.0_kind_phys)
1904 psiq_ice(i) =max(log((za(i)+zq_ice(i))/zq_ice(i))-psih(i) ,1.0_kind_phys)
1905 psiq2_ice(i) =max(log((2.0+zq_ice(i))/zq_ice(i))-psih2(i) ,1.0_kind_phys)
1916 ust_wat(i)=0.5*ust_wat(i)+0.5*karman*wspd(i)/psix_wat(i)
1919 stress_wat(i)=ust_wat(i)**2
1922 wspdi(i)=max(sqrt(u1d(i)*u1d(i)+v1d(i)*v1d(i)), wmin)
1924 ustm(i)=0.5*ustm(i)+0.5*karman*wspdi(i)/psix_wat(i)
1927 if (.not. icy(i)) ust_ice(i)=ust_wat(i)
1933 ust_lnd(i)=0.5*ust_lnd(i)+0.5*karman*wspd(i)/psix_lnd(i)
1942 ust_lnd(i)=max(ust_lnd(i),0.005_kind_phys)
1943 stress_lnd(i)=ust_lnd(i)**2
1953 ust_ice(i)=0.5*ust_ice(i)+0.5*karman*wspd(i)/psix_ice(i)
1956 ust_ice(i)=max(ust_ice(i),0.005_kind_phys)
1957 stress_ice(i)=ust_ice(i)**2
1965 if (.not. wet(i)) ust_wat(i)=ust_ice(i)
1975 dtg=thv1d(i)-thvsk_wat(i)
1977 mol(i)=karman*dtg/psit_wat(i)/prt
1981 dqg=(qvsh(i)-qsfc_wat(i))*1000.
1982 qstar(i)=karman*dqg/psiq_wat(i)/prt
1986 dtg=thv1d(i)-thvsk_lnd(i)
1988 mol(i)=karman*dtg/psit_lnd(i)/prt
1992 dqg=(qvsh(i)-qsfc_lnd(i))*1000.
1993 qstar(i)=karman*dqg/psiq_lnd(i)/prt
1997 dtg=thv1d(i)-thvsk_ice(i)
1999 mol(i)=karman*dtg/psit_ice(i)/prt
2003 dqg=(qvsh(i)-qsfc_ice(i))*1000.
2004 qstar(i)=karman*dqg/psiq_ice(i)/prt
2016 IF (device_special_errflg /= 0)
THEN
2017 errflg = device_special_errflg
2018 errmsg = device_special_errmsg
2030 IF (debug_code == 2)
THEN
2032 IF(wet(i))
write(*,*)
"==== AT END OF MAIN LOOP, i=",i,
"(wet)"
2033 IF(dry(i))
write(*,*)
"==== AT END OF MAIN LOOP, i=",i,
"(land)"
2034 IF(icy(i))
write(*,*)
"==== AT END OF MAIN LOOP, i=",i,
"(ice)"
2035 write(*,*)
"z/L:",zol(i),
" wspd:",wspd(i),
" Tstar:",mol(i)
2036 IF(wet(i))
write(*,*)
"PSIM:",psim(i),
" PSIH:",psih(i),
" W*:",wstar(i),&
2037 " DTHV:",thv1d(i)-thvsk_wat(i)
2038 IF(dry(i))
write(*,*)
"PSIM:",psim(i),
" PSIH:",psih(i),
" W*:",wstar(i),&
2039 " DTHV:",thv1d(i)-thvsk_lnd(i)
2040 IF(icy(i))
write(*,*)
"PSIM:",psim(i),
" PSIH:",psih(i),
" W*:",wstar(i),&
2041 " DTHV:",thv1d(i)-thvsk_ice(i)
2042 write(*,*)
"CPM:",cpm(i),
" RHO1D:",rho1d(i),
" q*:",qstar(i),
" T*:",mol(i)
2043 IF(wet(i))
write(*,*)
"U*:",ust_wat(i),
" Z0:",zntstoch_wat(i),
" Zt:",zt_wat(i)
2044 IF(dry(i))
write(*,*)
"U*:",ust_lnd(i),
" Z0:",zntstoch_lnd(i),
" Zt:",zt_lnd(i)
2045 IF(icy(i))
write(*,*)
"U*:",ust_ice(i),
" Z0:",zntstoch_ice(i),
" Zt:",zt_ice(i)
2046 write(*,*)
"hfx:",hfx(i),
" MAVAIL:",mavail(i),
" QVSH(I):",qvsh(i)
2047 write(*,*)
"============================================="
2074 if( flag_iter(i) )
then
2076 IF (isfflx .LT. 1)
THEN
2104 flqc(i)=rho1d(i)*mavail(i)*ust_lnd(i)*karman/psiq_lnd(i)
2105 flhc(i)=rho1d(i)*cpm(i)*ust_lnd(i)*karman/psit_lnd(i)
2107 IF (compute_flux)
THEN
2111 qfx(i)=flqc(i)*(qsfcmr_lnd(i)-qv1d(i))
2113 qfx(i)=max(qfx(i),-0.02_kind_phys)
2116 qflx_lnd(i)=qfx(i)/rho1d(i)
2123 hfx(i)=rho1d(i)*cpm(i)*karman*wspd(i)/psix_lnd(i)*karman/psit_lnd(i)*(thsk_lnd(i)-th1d(i))
2124 hfx(i)=max(hfx(i),-250._kind_phys)
2126 hflx_lnd(i)=hfx(i)/(rho1d(i)*cpm(i))
2135 chs(i)=ust_lnd(i)*karman/psit_lnd(i)
2138 cqs2(i)=ust_lnd(i)*karman/psiq2_lnd(i)
2139 chs2(i)=ust_lnd(i)*karman/psit2_lnd(i)
2143 ELSEIF (wet(i))
THEN
2149 flqc(i)=rho1d(i)*mavail(i)*ust_wat(i)*karman/psiq_wat(i)
2150 flhc(i)=rho1d(i)*cpm(i)*ust_wat(i)*karman/psit_wat(i)
2152 IF (compute_flux)
THEN
2156 qfx(i)=flqc(i)*(qsfcmr_wat(i)-qv1d(i))
2158 qfx(i)=max(qfx(i),-0.02_kind_phys)
2161 qflx_wat(i)=qfx(i)/rho1d(i)
2168 hfx(i)=rho1d(i)*cpm(i)*karman*wspd(i)/psix_wat(i)*karman/psit_wat(i)*(thsk_wat(i)-th1d(i))
2169 IF (
PRESENT(isftcflx) )
THEN
2170 IF ( isftcflx.NE.0 )
THEN
2172 hfx(i)=hfx(i)+rho1d(i)*ustm(i)*ustm(i)*wspdi(i)
2176 hflx_wat(i)=hfx(i)/(rho1d(i)*cpm(i))
2183 chs(i)=ust_wat(i)*karman/psit_wat(i)
2186 cqs2(i)=ust_wat(i)*karman/psiq2_wat(i)
2187 chs2(i)=ust_wat(i)*karman/psit2_wat(i)
2191 ELSEIF (icy(i))
THEN
2197 flqc(i)=rho1d(i)*mavail(i)*ust_ice(i)*karman/psiq_ice(i)
2198 flhc(i)=rho1d(i)*cpm(i)*ust_ice(i)*karman/psit_ice(i)
2200 IF (compute_flux)
THEN
2204 qfx(i)=flqc(i)*(qsfcmr_ice(i)-qv1d(i))
2206 qfx(i)=max(qfx(i),-0.02_kind_phys)
2209 qflx_ice(i)=qfx(i)/rho1d(i)
2216 hfx(i)=rho1d(i)*cpm(i)*karman*wspd(i)/psix_ice(i)*karman/psit_ice(i)*(thsk_ice(i)-th1d(i))
2217 hfx(i)=max(hfx(i),-250._kind_phys)
2219 hflx_ice(i)=hfx(i)/(rho1d(i)*cpm(i))
2226 chs(i)=ust_ice(i)*karman/psit_ice(i)
2229 cqs2(i)=ust_ice(i)*karman/psiq2_ice(i)
2230 chs2(i)=ust_ice(i)*karman/psit2_ice(i)
2236 IF (debug_code > 1)
THEN
2237 write(*,*)
"QFX=",qfx(i),
"FLQC=",flqc(i)
2238 if(icy(i))
write(*,*)
"ice, MAVAIL:",mavail(i),
" u*=",ust_ice(i),
" psiq=",psiq_ice(i)
2239 if(dry(i))
write(*,*)
"lnd, MAVAIL:",mavail(i),
" u*=",ust_lnd(i),
" psiq=",psiq_lnd(i)
2240 if(wet(i))
write(*,*)
"ocn, MAVAIL:",mavail(i),
" u*=",ust_wat(i),
" psiq=",psiq_wat(i)
2245 ch(i)=flhc(i)/( cpm(i)*rho1d(i) )
2251 ch_wat(i)=(karman/psix_wat(i))*(karman/psit_wat(i))
2252 cm_wat(i)=(karman/psix_wat(i))*(karman/psix_wat(i))
2255 ch_lnd(i)=(karman/psix_lnd(i))*(karman/psit_lnd(i))
2256 cm_lnd(i)=(karman/psix_lnd(i))*(karman/psix_lnd(i))
2259 ch_ice(i)=(karman/psix_ice(i))*(karman/psit_ice(i))
2260 cm_ice(i)=(karman/psix_ice(i))*(karman/psix_ice(i))
2267IF (compute_diag)
then
2281 if( flag_iter(i) )
then
2289 if (za(i) .le. 7.0)
then
2291 if(za2(i) .gt. 7.0 .and. za2(i) .lt. 13.0)
then
2300 u10(i)=u1d(i)*log(10./zntstoch_lnd(i))/log(za(i)/zntstoch_lnd(i))
2301 v10(i)=v1d(i)*log(10./zntstoch_lnd(i))/log(za(i)/zntstoch_lnd(i))
2302 ELSEIF (wet(i))
THEN
2303 u10(i)=u1d(i)*log(10./zntstoch_wat(i))/log(za(i)/zntstoch_wat(i))
2304 v10(i)=v1d(i)*log(10./zntstoch_wat(i))/log(za(i)/zntstoch_wat(i))
2305 ELSEIF (icy(i))
THEN
2306 u10(i)=u1d(i)*log(10./zntstoch_ice(i))/log(za(i)/zntstoch_ice(i))
2307 v10(i)=v1d(i)*log(10./zntstoch_ice(i))/log(za(i)/zntstoch_ice(i))
2310 elseif (za(i) .gt. 7.0 .and. za(i) .lt. 13.0)
then
2316 u10(i)=u1d(i)*log(10./zntstoch_lnd(i))/log(za(i)/zntstoch_lnd(i))
2317 v10(i)=v1d(i)*log(10./zntstoch_lnd(i))/log(za(i)/zntstoch_lnd(i))
2318 ELSEIF (wet(i))
THEN
2319 u10(i)=u1d(i)*log(10./zntstoch_wat(i))/log(za(i)/zntstoch_wat(i))
2320 v10(i)=v1d(i)*log(10./zntstoch_wat(i))/log(za(i)/zntstoch_wat(i))
2321 ELSEIF (icy(i))
THEN
2322 u10(i)=u1d(i)*log(10./zntstoch_ice(i))/log(za(i)/zntstoch_ice(i))
2323 v10(i)=v1d(i)*log(10./zntstoch_ice(i))/log(za(i)/zntstoch_ice(i))
2328 u10(i)=u1d(i)*psix10_lnd(i)/psix_lnd(i)
2329 v10(i)=v1d(i)*psix10_lnd(i)/psix_lnd(i)
2330 ELSEIF (wet(i))
THEN
2331 u10(i)=u1d(i)*psix10_wat(i)/psix_wat(i)
2332 v10(i)=v1d(i)*psix10_wat(i)/psix_wat(i)
2333 ELSEIF (icy(i))
THEN
2334 u10(i)=u1d(i)*psix10_ice(i)/psix_ice(i)
2335 v10(i)=v1d(i)*psix10_ice(i)/psix_ice(i)
2344 dtg=th1d(i)-thsk_lnd(i)
2345 th2(i)=thsk_lnd(i)+dtg*psit2_lnd(i)/psit_lnd(i)
2348 IF ((th1d(i)>thsk_lnd(i) .AND. (th2(i)<thsk_lnd(i) .OR. th2(i)>th1d(i))) .OR. &
2349 (th1d(i)<thsk_lnd(i) .AND. (th2(i)>thsk_lnd(i) .OR. th2(i)<th1d(i))))
THEN
2350 th2(i)=thsk_lnd(i) + 2.*(th1d(i)-thsk_lnd(i))/za(i)
2352 t2(i)=th2(i)*(psfcpa(i)/100000.)**rovcp
2354 q2(i)=qsfc_lnd(i)+(qv1d(i)-qsfc_lnd(i))*psiq2_lnd(i)/psiq_lnd(i)
2355 q2(i)= max(q2(i), min(qsfc_lnd(i), qv1d(i)))
2356 q2(i)= min(q2(i), 1.05*qv1d(i))
2357 ELSEIF (wet(i))
THEN
2358 dtg=th1d(i)-thsk_wat(i)
2359 th2(i)=thsk_wat(i)+dtg*psit2_wat(i)/psit_wat(i)
2362 IF ((th1d(i)>thsk_wat(i) .AND. (th2(i)<thsk_wat(i) .OR. th2(i)>th1d(i))) .OR. &
2363 (th1d(i)<thsk_wat(i) .AND. (th2(i)>thsk_wat(i) .OR. th2(i)<th1d(i))))
THEN
2364 th2(i)=thsk_wat(i) + 2.*(th1d(i)-thsk_wat(i))/za(i)
2366 t2(i)=th2(i)*(psfcpa(i)/100000.)**rovcp
2368 q2(i)=qsfc_wat(i)+(qv1d(i)-qsfc_wat(i))*psiq2_wat(i)/psiq_wat(i)
2369 q2(i)= max(q2(i), min(qsfc_wat(i), qv1d(i)))
2370 q2(i)= min(q2(i), 1.05*qv1d(i))
2371 ELSEIF (icy(i))
THEN
2372 dtg=th1d(i)-thsk_ice(i)
2373 th2(i)=thsk_ice(i)+dtg*psit2_ice(i)/psit_ice(i)
2376 IF ((th1d(i)>thsk_ice(i) .AND. (th2(i)<thsk_ice(i) .OR. th2(i)>th1d(i))) .OR. &
2377 (th1d(i)<thsk_ice(i) .AND. (th2(i)>thsk_ice(i) .OR. th2(i)<th1d(i))))
THEN
2378 th2(i)=thsk_ice(i) + 2.*(th1d(i)-thsk_ice(i))/za(i)
2380 t2(i)=th2(i)*(psfcpa(i)/100000.)**rovcp
2382 q2(i)=qsfc_ice(i)+(qv1d(i)-qsfc_ice(i))*psiq2_ice(i)/psiq_ice(i)
2383 q2(i)= max(q2(i), min(qsfc_ice(i), qv1d(i)))
2384 q2(i)= min(q2(i), 1.05*qv1d(i))
2403IF ( debug_code == 2)
THEN
2406 IF (compute_flux)
THEN
2407 IF (hfx(i) > 1200. .OR. hfx(i) < -700.)
THEN
2408 print*,
"SUSPICIOUS VALUES IN MYNN SFCLAYER",&
2412 IF (lh(i) > 1200. .OR. lh(i) < -700.)
THEN
2413 print*,
"SUSPICIOUS VALUES IN MYNN SFCLAYER",&
2419 IF (ust_wat(i) < 0.0 .OR. ust_wat(i) > 4.0 )
THEN
2420 print*,
"SUSPICIOUS VALUES IN MYNN SFCLAYER",&
2421 i,j,
"UST_wat: ",ust_wat(i)
2426 IF (ust_lnd(i) < 0.0 .OR. ust_lnd(i) > 4.0 )
THEN
2427 print*,
"SUSPICIOUS VALUES IN MYNN SFCLAYER",&
2428 i,j,
"UST_lnd: ",ust_lnd(i)
2433 IF (ust_ice(i) < 0.0 .OR. ust_ice(i) > 4.0 )
THEN
2434 print*,
"SUSPICIOUS VALUES IN MYNN SFCLAYER",&
2435 i,j,
"UST_ice: ",ust_ice(i)
2439 IF (wstar(i)<0.0 .OR. wstar(i) > 6.0)
THEN
2440 print*,
"SUSPICIOUS VALUES IN MYNN SFCLAYER",&
2441 i,j,
"WSTAR: ",wstar(i)
2444 IF (rho1d(i)<0.0 .OR. rho1d(i) > 1.6 )
THEN
2445 print*,
"SUSPICIOUS VALUES IN MYNN SFCLAYER",&
2446 i,j,
"rho: ",rho1d(i)
2450 IF (qsfc_lnd(i)*1000. <0.0 .OR. qsfc_lnd(i)*1000. >40.)
THEN
2451 print*,
"SUSPICIOUS VALUES IN MYNN SFCLAYER",&
2452 i,j,
"QSFC_lnd: ",qsfc_lnd(i)
2456 IF (pblh(i)<0. .OR. pblh(i)>6000.)
THEN
2457 print*,
"SUSPICIOUS VALUES IN MYNN SFCLAYER",&
2458 i,j,
"PBLH: ",pblh(i)
2462 IF (yesno == 1)
THEN
2464 print*,
" OTHER INFO over water:"
2465 print*,
"z/L:",zol(i),
" U*:",ust_wat(i),
" Tstar:",mol(i)
2466 print*,
"PSIM:",psim(i),
" PSIH:",psih(i),
" W*:",wstar(i),&
2467 " DTHV:",thv1d(i)-thvsk_wat(i)
2468 print*,
"CPM:",cpm(i),
" RHO1D:",rho1d(i),
" L:",&
2469 zol(i)/za(i),
" DTH:",th1d(i)-thsk_wat(i)
2470 print*,
" Z0:",zntstoch_wat(i),
" Zt:",zt_wat(i),
" za:",za(i)
2471 print*,
"MAVAIL:",mavail(i),
" QSFC_wat(I):",&
2472 qsfc_wat(i),
" QVSH(I):",qvsh(i)
2473 print*,
"PSIX=",psix_wat(i),
" T1D(i):",t1d(i)
2474 write(*,*)
"============================================="
2477 print*,
" OTHER INFO over land:"
2478 print*,
"z/L:",zol(i),
" U*:",ust_lnd(i),&
2480 print*,
"PSIM:",psim(i),
" PSIH:",psih(i),
" W*:",wstar(i),&
2481 " DTHV:",thv1d(i)-thvsk_lnd(i)
2482 print*,
"CPM:",cpm(i),
" RHO1D:",rho1d(i),
" L:",&
2483 zol(i)/za(i),
" DTH:",th1d(i)-thsk_lnd(i)
2484 print*,
" Z0:",zntstoch_lnd(i),
" Zt:",zt_lnd(i),
" za:",za(i)
2485 print*,
" MAVAIL:",mavail(i),
" QSFC_lnd(I):",&
2486 qsfc_lnd(i),
" QVSH(I):",qvsh(i)
2487 print*,
"PSIX=",psix_lnd(i),
" T1D(i):",t1d(i)
2488 write(*,*)
"============================================="
2491 print*,
" OTHER INFO:"
2492 print*,
"z/L:",zol(i),
" U*:",ust_ice(i),&
2494 print*,
"PSIM:",psim(i),
" PSIH:",psih(i),
" W*:",wstar(i),&
2495 " DTHV:",thv1d(i)-thvsk_ice(i)
2496 print*,
"CPM:",cpm(i),
" RHO1D:",rho1d(i),
" L:",&
2497 zol(i)/za(i),
" DTH:",th1d(i)-thsk_ice(i)
2498 print*,
" Z0:",zntstoch_ice(i),
" Zt:",zt_ice(i),
" za:",za(i)
2499 print*,
" MAVAIL:",mavail(i),
" QSFC_ice(I):",&
2500 qsfc_ice(i),
" QVSH(I):",qvsh(i)
2501 print*,
"PSIX=",psix_ice(i),
" T1D(i):",t1d(i)
2502 write(*,*)
"============================================="
2530IF (device_errflg /= 0)
THEN
2531 errflg = device_errflg
2532 errmsg = device_errmsg