746 & ( im,ix,levs,lsoil,lsm,ntrac,ncld,ntoz,ntcw,ntke, &
747 & ntiw,ntlnc,ntinc, &
748 & nmtvr,nrcm,ko3,lonr,latr,jcap, &
749 & num_p3d,num_p2d,npdf3d,ncnvcld3d, &
750 & kdt,lat,me,pl_coeff,nlons,ncw,flgmin,crtrh,cdmbgwd, &
751 & ccwf,dlqf,ctei_rm,clstp,cgwf,prslrd0,ral_ts,dtp,dtf,fhour, &
752 & solhr,slag,sdec,cdec,sinlat,coslat,pgr,ugrs,vgrs, &
753 & tgrs,qgrs,vvel,prsi,prsl,prslk,prsik,phii,phil, &
754 & rann,prdoz,poz,dpshc,fscav,fswtr,hprime,xlon,xlat, &
755 & h2o_phys,levh2o,h2opl,h2o_pres,h2o_coeff, &
757 & slope,shdmin,shdmax,snoalb,tg3,slmsk,vfrac, &
758 & vtype,stype,uustar,oro,oro_uf,coszen,sfcdsw,sfcnsw, &
759 & sfcnirbmd,sfcnirdfd,sfcvisbmd,sfcvisdfd, &
760 & sfcnirbmu,sfcnirdfu,sfcvisbmu,sfcvisdfu, &
761 & slimskin_cpl,ulwsfcin_cpl, &
762 & dusfcin_cpl,dvsfcin_cpl,dtsfcin_cpl,dqsfcin_cpl, &
763 & sfcdlw,tsflw,sfcemis,sfalb,swh,swhc,hlw,hlwc,hlwd,lsidea, &
764 & ras,pre_rad,ldiag3d,lgocart,lssav,lssav_cpl, &
765 & xkzm_m,xkzm_h,xkzm_s,psautco,prautco,evpco,wminco, &
766 & pdfcld,shcnvcw,sup,redrag,hybedmf,dspheat, &
767 & flipv,old_monin,cnvgwd,shal_cnv, &
768 & imfshalcnv,imfdeepcnv,cal_pre,aero_in, &
769 & mom4ice,mstrat,trans_trac,nstf_name,moist_adj, &
770 & thermodyn_id, sfcpress_id, gen_coord_hybrid,levr,adjtrc,nnp,&
771 & cscnv,nctp,do_shoc,shocaftcnv,ntot3d,ntot2d, &
772 & hice,fice,tisfc,tsea,tprcp,cv,cvb,cvt, &
773 & srflag,snwdph,weasd,sncovr,zorl,canopy, &
774 & ffmm,ffhh,f10m,srunoff,evbsa,evcwa,snohfa, &
775 & transa,sbsnoa,snowca,soilm,tmpmin,tmpmax, &
776 & dusfc,dvsfc,dtsfc,dqsfc,totprcp,gflux, &
777 & dlwsfc,ulwsfc,suntim,runoff,ep,cldwrk, &
778 & dugwd,dvgwd,psmean,cnvprcp,spfhmin,spfhmax,rain,rainc, &
779 & dt3dt,dq3dt,du3dt,dv3dt,dqdt_v,cnvqc_v,acv,acvb,acvt, &
780 & slc,smc,stc,upd_mf,dwn_mf,det_mf,phy_f3d,phy_f2d, &
781 & dusfc_cpl, dvsfc_cpl, dtsfc_cpl, dqsfc_cpl, &
782 & dlwsfc_cpl,dswsfc_cpl,dnirbm_cpl,dnirdf_cpl, &
783 & dvisbm_cpl,dvisdf_cpl,rain_cpl, nlwsfc_cpl,nswsfc_cpl, &
784 & nnirbm_cpl,nnirdf_cpl,nvisbm_cpl,nvisdf_cpl,snow_cpl, &
785 & xt,xs,xu,xv,xz,zm,xtts,xzts,d_conv,ifd,dt_cool,qrain, &
786 & tref, z_c, c_0, c_d, w_0, w_d, &
788 & gt0,gq0,gu0,gv0,t2m,q2m,u10m,v10m, &
789 & zlvl,psurf,hpbl,pwat,t1,q1,u1,v1, &
790 & chh,cmm,dlwsfci,ulwsfci,dswsfci,uswsfci,dusfci,dvsfci, &
791 & dtsfci,dqsfci,gfluxi,epi,smcwlt2,smcref2,wet1,sr, &
794 & dusfci_cpl, dvsfci_cpl, dtsfci_cpl, dqsfci_cpl, &
795 & dlwsfci_cpl, dswsfci_cpl, &
796 & dnirbmi_cpl, dnirdfi_cpl, dvisbmi_cpl, dvisdfi_cpl, &
797 & nlwsfci_cpl, nswsfci_cpl, &
798 & nnirbmi_cpl, nnirdfi_cpl, nvisbmi_cpl, nvisdfi_cpl, &
799 & t2mi_cpl, q2mi_cpl, u10mi_cpl, v10mi_cpl, &
800 & tseai_cpl, psurfi_cpl &
803 use machine
, only : kind_phys
806 &, rhc_max, dxmin, dxinv, pa2mb, rlapse
807 use module_nst_water_prop
, only: get_dtzm_2d
808 use cs_conv
, only : cs_convr
826 integer,
intent(in) :: ix, im, levs, lsoil, lsm, ntrac, &
827 & ncld, ntiw, ntlnc, ntinc, &
828 & ntoz, ntcw, nmtvr, nrcm, ko3, &
829 & lonr, latr, jcap, num_p3d, num_p2d, kdt, &
830 & me, pl_coeff, lat, npdf3d, ncnvcld3d, &
831 & thermodyn_id, sfcpress_id, levr, nnp, nctp,&
832 & ntke, ntot3d, ntot2d, h2o_coeff, levh2o, &
836 integer,
intent(in) :: nlons(im), ncw(2)
837 integer,
intent(in) :: nstf_name(5)
838 integer,
intent(in) :: imfshalcnv, imfdeepcnv
840 logical,
intent(in) :: ras, pre_rad, ldiag3d, flipv, &
841 & old_monin, cnvgwd, aero_in, &
842 & redrag, hybedmf, dspheat, &
843 & lssav, mom4ice, mstrat, &
844 & trans_trac, moist_adj, cal_pre, cscnv, &
845 & shal_cnv, gen_coord_hybrid, lgocart, &
846 & lsidea, lssav_cpl, pdfcld, shcnvcw, &
847 & do_shoc, shocaftcnv, h2o_phys
849 real(kind=kind_phys) :: adjtrc(ntrac)
851 real(kind=kind_phys),
dimension(im),
intent(in) :: &
852 & sinlat, coslat, pgr, dpshc, xlon, xlat, &
853 & slope, shdmin, shdmax, snoalb, tg3, slmsk, vfrac, &
854 & vtype, stype, uustar, oro, coszen, sfcnsw, sfcdsw, &
855 & sfcnirbmu, sfcnirdfu, sfcvisbmu, sfcvisdfu, &
856 & sfcnirbmd, sfcnirdfd, sfcvisbmd, sfcvisdfd, &
857 & slimskin_cpl, dusfcin_cpl, dvsfcin_cpl, &
858 & dtsfcin_cpl, dqsfcin_cpl, ulwsfcin_cpl, &
859 & sfcdlw, tsflw, sfalb, sfcemis, oro_uf
861 real(kind=kind_phys),
dimension(ix,levs),
intent(in) :: &
862 & ugrs, vgrs, tgrs, vvel, prsl, prslk, phil, swh, swhc, hlw, hlwc
865 real(kind=kind_phys),
intent(in) :: hlwd(ix,levs,6)
867 real(kind=kind_phys),
intent(inout) :: qgrs(ix,levs,ntrac)
869 real(kind=kind_phys),
dimension(ix,levs+1),
intent(in) :: &
872 real(kind=kind_phys),
intent(in) :: hprime(ix,nmtvr), &
873 & prdoz(ix,ko3,pl_coeff), rann(ix,nrcm), poz(ko3), &
874 & h2opl(ix,levh2o,h2o_coeff), h2o_pres(levh2o)
876 real(kind=kind_phys),
intent(in) :: dtp, dtf, fhour, solhr, &
877 & slag, sdec, cdec, ctei_rm(2), clstp, &
878 & ccwf(2), crtrh(3), flgmin(2), dlqf(2), cdmbgwd(2), &
879 & xkzm_m, xkzm_h, xkzm_s, psautco(2), prautco(2), &
880 & evpco, wminco(2), cgwf(2), prslrd0, sup, ral_ts
883 real(kind=kind_phys),
dimension(im),
intent(inout) :: &
884 & hice, fice, tisfc, tsea, tprcp, cv, cvb, cvt, &
885 & srflag, snwdph, weasd, sncovr, zorl, canopy, ffmm, ffhh,&
886 & f10m, srunoff, evbsa, evcwa, snohfa, transa, sbsnoa, &
887 & snowca, soilm, tmpmin, tmpmax, dusfc, dvsfc, dtsfc, &
888 & dqsfc, totprcp, gflux, dlwsfc, ulwsfc, suntim, runoff, ep,&
889 & cldwrk, dugwd, dvgwd, psmean, cnvprcp,spfhmin,spfhmax, &
890 & rain, rainc, acv, acvb, acvt
891 real(kind=kind_phys),
dimension(im),
optional,
intent(inout) :: &
892 & dusfc_cpl, dvsfc_cpl, dtsfc_cpl, dqsfc_cpl, &
893 & dlwsfc_cpl,dswsfc_cpl,rain_cpl, snow_cpl, &
894 & dnirbm_cpl,dnirdf_cpl,dvisbm_cpl,dvisdf_cpl, &
895 & nlwsfc_cpl,nswsfc_cpl, &
896 & nnirbm_cpl,nnirdf_cpl,nvisbm_cpl,nvisdf_cpl, &
897 & xt, xs, xu, xv, xz, zm, xtts, xzts, d_conv, ifd, dt_cool, &
898 & Qrain, tref, z_c, c_0, c_d, w_0, w_d
901 real(kind=kind_phys),
dimension(ix,lsoil),
intent(inout) :: &
904 real(kind=kind_phys),
dimension(ix,levs),
intent(inout) :: &
905 & upd_mf, dwn_mf, det_mf, dqdt_v, cnvqc_v
908 real(kind=kind_phys),
intent(inout) :: &
909 & phy_f3d(ix,levs,ntot3d), phy_f2d(ix,ntot2d), &
910 & dt3dt(ix,levs,6), du3dt(ix,levs,4), dv3dt(ix,levs,4), &
911 & dq3dt(ix,levs,5+pl_coeff)
913 real(kind=kind_phys),
intent(inout) :: &
914 & phy_fctd(ix,nctp) &
915 real(kind=kind_phys),
dimension(ntrac-ncld+2) :: fscav, fswtr
918 real(kind=kind_phys),
dimension(im),
intent(out) :: &
919 & t2m, q2m, u10m, v10m, zlvl, psurf, hpbl, &
920 & pwat, t1, q1, u1, v1, chh, cmm, &
921 & dlwsfci, ulwsfci, dswsfci, uswsfci, &
922 & dusfci, dvsfci, dtsfci, dqsfci, &
923 & gfluxi, epi, smcwlt2, smcref2, wet1, sr
925 real(kind=kind_phys),
dimension(im),
optional,
intent(out) :: &
926 & dusfci_cpl,dvsfci_cpl,dtsfci_cpl,dqsfci_cpl, &
927 & dlwsfci_cpl,dswsfci_cpl, &
928 & dnirbmi_cpl,dnirdfi_cpl,dvisbmi_cpl,dvisdfi_cpl, &
929 & nlwsfci_cpl,nswsfci_cpl, &
930 & nnirbmi_cpl,nnirdfi_cpl,nvisbmi_cpl,nvisdfi_cpl, &
931 & t2mi_cpl,q2mi_cpl, &
932 & u10mi_cpl,v10mi_cpl,tseai_cpl,psurfi_cpl, &
935 real(kind=kind_phys),
dimension(ix,levs),
intent(out) :: &
938 real(kind=kind_phys),
dimension(ix,levs,ntrac),
intent(out) :: &
944 real(kind=kind_phys),
dimension(im) :: ccwfac, garea, &
945 & dlength, xncw, cumabs, qmax, cice, zice, tice, &
947 & gflx, rain1, raincs, &
948 & snowmt, cd, cdq, qss, dusfcg, dvsfcg, dusfc1, &
949 & dvsfc1, dtsfc1, dqsfc1, rb, rhscnpy, drain, cld1d, &
950 & evap, hflx, stress, t850, ep1d, gamt, gamq, &
951 & sigmaf, oc, theta, gamma, sigma, &
952 & elvmax, wind, work1, work2, runof, xmu, &
954 & fm10, fh2, tsurf, tx1, tx2, ctei_r, flgmin_l, &
955 & evbs, evcw, trans, sbsno, snowc, frland, &
956 & adjsfcdsw, adjsfcnsw, adjsfcdlw, adjsfculw,gabsbdlw, &
957 & adjnirbmu, adjnirdfu, adjvisbmu, adjvisdfu, &
958 & adjnirbmd, adjnirdfd, adjvisbmd, adjvisdfd, &
959 & xcosz, tseal, snohf, dlqfac, work3, ctei_rml, cldf, &
960 & domr, domzr, domip, doms, psautco_l, prautco_l
962 real(kind=kind_phys),
dimension(im) :: ocalnirbm_cpl, &
963 & ocalnirdf_cpl,ocalvisbm_cpl,ocalvisdf_cpl
971 real(kind=kind_phys),
dimension(ix,levs) :: del, dtdtr
972 real(kind=kind_phys),
dimension(im,levs-1) :: dkt
974 real(kind=kind_phys),
dimension(im,levs) :: rhc, dtdt, &
975 & dudt, dvdt, gwdcu, gwdcv, dtdtc, dmdt, &
977 & qr_col, fc_ice, rainp, ud_mf, dd_mf, dt_mf, prnum
980 real(kind=kind_phys),
dimension(im,lsoil) :: smsoil, stsoil, &
981 & ai, bi, cci, rhsmc, zsoil, slsoil
983 real(kind=kind_phys) :: zsea1,zsea2
984 real(kind=kind_phys),
dimension(im) :: dtzm
986 real(kind=kind_phys) :: rhbbot, rhbtop, rhpbl, frain, f_rain, &
987 & f_ice, qi, qw, qr, wc, tem, tem1, tem2, sume, sumr, sumq, &
988 & dqdt(im,levs,ntrac), oa4(im,4), clx(im,4), albbm, xcosz_loc
989 real(kind=kind_phys),
parameter :: albdf=0.06
996 real(kind=kind_phys),
allocatable :: clw(:,:,:), qpl(:,:),qpi(:,:)
997 &, ncpl(:,:), ncpi(:,:)
999 integer,
dimension(im) :: kbot, ktop, kcnv, soiltyp, vegtype, &
1000 & kpbl, slopetyp, kinver, lmh, levshc, islmsk
1002 integer :: i, nvdiff, kk, ic, k, n, ipr, lv, k1, iter, levshcm, &
1003 & tracers, trc_shft, tottracer, num2, num3 &
1004 &, nshocm, nshoc, ntk, ntln, ntin
1006 logical,
dimension(im) :: flag_iter, flag_guess, invrsn &
1009 real(kind=kind_phys),
dimension(im) :: dtsfc_cice, &
1010 & dqsfc_cice, dusfc_cice, dvsfc_cice, ulwsfc_cice, tisfc_cice, &
1011 & tsea_cice, hice_cice, fice_cice
1013 integer,
dimension(im) :: islmsk_cice
1014 logical,
dimension(im) :: flag_cice
1016 logical :: lprnt, revap
1018 real(kind=kind_phys),
allocatable :: cnvc(:,:),cnvw(:,:)
1019 real(kind=kind_phys) eng0, eng1, dtshoc
1023 real(kind=kind_phys),
parameter :: wcbmax1=2.5, wcbmax2=1.5
1025 real(kind=kind_phys) wcbmax(im)
1027 real(kind=kind_phys) tf, tcr, tcrf
1029 parameter(tf=258.16, tcr=273.16, tcrf=1.0/(tcr-tf))
1032 real(kind=kind_phys),
allocatable,
dimension(:,:) :: qlcn, qicn
1033 &, w_upi,cf_upi, cnv_mfd, cnv_prc3, cnv_dqldt,clcn,
1034 & cnv_fice,cnv_ndrop,cnv_nice
1035 real(kind=kind_phys),
allocatable,
dimension(:) :: cn_prc,cn_snr
1109 if(nint(slmsk(i)) == 1)
then
1121 if (trans_trac)
then
1123 if (ntoz < ntcw)
then
1124 trc_shft = ntcw + ncld - 1
1128 elseif (ntoz > 0)
then
1134 tracers = ntrac - trc_shft
1136 if (ntoz > 0) tottracer = tottracer + 1
1138 if (ntke > 0) ntk = ntke - trc_shft + 3
1146 skip_macro = .false.
1147 allocate ( clw(ix,levs,tottracer+2) )
1149 allocate (qpl(im,levs), qpi(im,levs)
1150 &, ncpl(im,levs), ncpi(im,levs))
1159 if (.not. ras .or. .not. cscnv)
then
1160 allocate ( cnvc(ix,levs), cnvw(ix,levs))
1165 allocate (qlcn(im,levs), qicn(im,levs), w_upi(im,levs)
1166 &, cf_upi(im,levs), cnv_mfd(im,levs),cnv_prc3(im,levs)
1167 &, cnv_dqldt(im,levs), clcn(im,levs), cnv_fice(im,levs)
1168 &, cnv_ndrop(im,levs), cnv_nice(im,levs))
1169 allocate(cn_prc(im), cn_snr(im))
1171 allocate (qlcn(1,1), qicn(1,1), w_upi(1,1)
1172 &, cf_upi(1,1), cnv_mfd(1,1),cnv_prc3(1,1)
1173 &, cnv_dqldt(1,1), clcn(1,1), cnv_fice(1,1)
1174 &, cnv_ndrop(1,1), cnv_nice(1,1))
1185 if (abs(1.0-adjtrc(n)) > 1.0e-7)
then
1188 qgrs(i,k,n) = qgrs(i,k,n) * adjtrc(n)
1195 call get_prs(im,ix,levs,ntrac,tgrs,qgrs, &
1196 & thermodyn_id, sfcpress_id, &
1197 & gen_coord_hybrid, &
1198 & prsi,prsik,prsl,prslk,phii,phil,del)
1220 sigmaf(i) = max( vfrac(i),0.01 )
1222 if (lsm == 0) sigmaf(i) = 0.5 + vfrac(i) * 0.5
1224 islmsk(i) = nint(slmsk(i))
1226 if (islmsk(i) == 2)
then
1232 if (ivegsrc == 1)
then
1234 elseif(ivegsrc == 2)
then
1239 soiltyp(i) = int( stype(i)+0.5 )
1240 vegtype(i) = int( vtype(i)+0.5 )
1241 slopetyp(i) = int( slope(i)+0.5 )
1249 islmsk_cice(i) = nint(slimskin_cpl(i))
1250 flag_cice(i) = (islmsk_cice(i) == 4)
1252 ulwsfc_cice(i) = ulwsfcin_cpl(i)
1253 dusfc_cice(i) = dusfcin_cpl(i)
1254 dvsfc_cice(i) = dvsfcin_cpl(i)
1255 dtsfc_cice(i) = dtsfcin_cpl(i)
1256 dqsfc_cice(i) = dqsfcin_cpl(i)
1257 tisfc_cice(i) = tisfc(i)
1258 tsea_cice(i) = tsea(i)
1259 fice_cice(i) = fice(i)
1260 hice_cice(i) = hice(i)
1263 work1(i) = (log(coslat(i) / (nlons(i)*latr)) - dxmin) * dxinv
1264 work1(i) = max(0.0, min(1.0,work1(i)))
1265 work2(i) = 1.0 - work1(i)
1267 work3(i) = prsik(i,1) / prslk(i,1)
1270 garea(i) = tem1 * tem2
1271 dlength(i) = sqrt( tem1*tem1+tem2*tem2 )
1272 cldf(i) = cgwf(1)*work1(i) + cgwf(2)*work2(i)
1273 wcbmax(i) = wcbmax1*work1(i) + wcbmax2*work2(i)
1285 smsoil(i,k) = smc(i,k)
1286 stsoil(i,k) = stc(i,k)
1287 slsoil(i,k) = slc(i,k)
1329 call dcyc2t3_pre_rad &
1331 & ( solhr,slag,sdec,cdec,sinlat,coslat, &
1332 & xlon,coszen,tsea,tgrs(1,1),tgrs(1,1), &
1333 & sfcdsw,sfcnsw,sfcdlw,swh,hlw, &
1334 & sfcnirbmu,sfcnirdfu,sfcvisbmu,sfcvisdfu, &
1335 & sfcnirbmd,sfcnirdfd,sfcvisbmd,sfcvisdfd, &
1340 & adjsfcdsw,adjsfcnsw,adjsfcdlw,adjsfculw,xmu,xcosz, &
1341 & adjnirbmu,adjnirdfu,adjvisbmu,adjvisdfu, &
1342 & adjnirbmd,adjnirdfd,adjvisbmd,adjvisdfd &
1349 & ( solhr,slag,sdec,cdec,sinlat,coslat, &
1350 & xlon,coszen,tsea,tgrs(1,1),tsflw,sfcemis, &
1351 & sfcdsw,sfcnsw,sfcdlw,swh,swhc,hlw,hlwc, &
1352 & sfcnirbmu,sfcnirdfu,sfcvisbmu,sfcvisdfu, &
1353 & sfcnirbmd,sfcnirdfd,sfcvisbmd,sfcvisdfd, &
1358 & adjsfcdsw,adjsfcnsw,adjsfcdlw,adjsfculw,xmu,xcosz, &
1359 & adjnirbmu,adjnirdfu,adjvisbmu,adjvisdfu, &
1360 & adjnirbmd,adjnirdfd,adjvisbmd,adjvisdfd &
1368 dtdtr(i,k) = dtdtr(i,k) + dtdtc(i,k)*dtf
1402 gabsbdlw(i) = sfcemis(i) * adjsfcdlw(i)
1417 if ( xcosz(i) >= czmin )
then
1418 tem1 = adjsfcdsw(i) / xcosz(i)
1420 if ( tem1 >= 120.0 )
then
1421 suntim(i) = suntim(i) + dtf
1429 dlwsfc(i) = dlwsfc(i) + adjsfcdlw(i)*dtf
1431 if (flag_cice(i)) adjsfculw(i) = ulwsfc_cice(i)
1433 ulwsfc(i) = ulwsfc(i) + adjsfculw(i)*dtf
1434 psmean(i) = psmean(i) + pgr(i)*dtf
1441 dt3dt(i,k,1) = dt3dt(i,k,1) + hlwd(i,k,1)*dtf
1442 dt3dt(i,k,2) = dt3dt(i,k,2) + hlwd(i,k,2)*dtf
1443 dt3dt(i,k,3) = dt3dt(i,k,3) + hlwd(i,k,3)*dtf
1444 dt3dt(i,k,4) = dt3dt(i,k,4) + hlwd(i,k,4)*dtf
1445 dt3dt(i,k,5) = dt3dt(i,k,5) + hlwd(i,k,5)*dtf
1446 dt3dt(i,k,6) = dt3dt(i,k,6) + hlwd(i,k,6)*dtf
1452 dt3dt(i,k,1) = dt3dt(i,k,1) + hlw(i,k)*dtf
1453 dt3dt(i,k,2) = dt3dt(i,k,2) + swh(i,k)*dtf*xmu(i)
1472 if (((imfshalcnv == 0 .and. shal_cnv) .or. old_monin) &
1473 & .and. mstrat)
then
1475 ctei_rml(i) = ctei_rm(1)*work1(i) + ctei_rm(2)*work2(i)
1479 if (prsi(i,1)-prsi(i,k+1) < 0.35*prsi(i,1) &
1480 & .and. (.not. invrsn(i)))
then
1481 tem = (tgrs(i,k+1)-tgrs(i,k)) / (prsl(i,k)-prsl(i,k+1))
1483 if ((tem > 0.00010 .and. tx1(i) < 0.0) .or.
1484 & (tem-abs(tx1(i)) > 0.0 .and. tx2(i) < 0.0))
then
1487 if (qgrs(i,k,1) > qgrs(i,k+1,1))
then
1488 tem1 = tgrs(i,k+1) + hocp*max(qgrs(i,k+1,1),qmin)
1489 tem2 = tgrs(i,k) + hocp*max(qgrs(i,k,1),qmin)
1491 tem1 = tem1 / prslk(i,k+1) - tem2 / prslk(i,k)
1494 ctei_r(i) = (1.0/hocp)*tem1/(qgrs(i,k+1,1)-qgrs(i,k,1)&
1495 & + qgrs(i,k+1,ntcw)-qgrs(i,k,ntcw))
1500 if ( ctei_rml(i) > ctei_r(i) )
then
1532 flag_guess(i) = .false.
1533 flag_iter(i) = .true.
1546 zlvl(i) = phil(i,1) /
con_g
1558 call sfc_diff(im,pgr,ugrs,vgrs,tgrs,qgrs,zlvl, &
1559 & snwdph,tsea,zorl,cd,cdq,rb, &
1560 & prsl(1,1),work3,islmsk, &
1561 & stress,ffmm,ffhh, &
1562 & uustar,wind,phy_f2d(1,num_p2d),fm10,fh2, &
1563 & sigmaf,vegtype,shdmax,ivegsrc, &
1564 & tsurf, flag_iter, redrag)
1573 if (iter == 1 .and. wind(i) < 2.0)
then
1574 flag_guess(i) = .true.
1578 if ( nstf_name(1) > 0 )
then
1581 if ( islmsk(i) == 0 )
then
1582 tem = (oro(i)-oro_uf(i)) * rlapse
1583 tseal(i) = tsea(i) + tem
1584 tsurf(i) = tsurf(i) + tem
1595 & ( im,lsoil,pgr,ugrs,vgrs,tgrs,qgrs,tref,cd,cdq, &
1596 & prsl(1,1),work3,islmsk,xlon,sinlat,stress, &
1597 & sfcemis,gabsbdlw,adjsfcnsw,tprcp,dtf,kdt,solhr,xcosz, &
1598 & phy_f2d(1,num_p2d),flag_iter,flag_guess,nstf_name, &
1601 & tseal,tsurf,xt,xs,xu,xv,xz,zm,xtts,xzts,dt_cool, &
1602 & z_c,c_0,c_d,w_0,w_d,d_conv,ifd,qrain, &
1604 & qss, gflx, cmm, chh, evap, hflx, ep1d)
1611 if ( islmsk(i) == 0 )
then
1612 tsurf(i) = tsurf(i) - (oro(i)-oro_uf(i)) * rlapse
1618 if ( nstf_name(1) > 1 )
then
1619 zsea1 = 0.001*
real(nstf_name(4))
1620 zsea2 = 0.001*
real(nstf_name(5))
1621 call get_dtzm_2d(xt,xz,dt_cool,z_c,slmsk,
1622 & zsea1,zsea2,im,1,dtzm)
1624 if ( islmsk(i) == 0 )
then
1625 tsea(i) = max(271.2,tref(i) + dtzm(i))
1626 & -(oro(i)-oro_uf(i))*rlapse
1640 & ( im,pgr,ugrs,vgrs,tgrs,qgrs,tsea,cd,cdq, &
1641 & prsl(1,1),work3,islmsk,phy_f2d(1,num_p2d),flag_iter, &
1643 & qss,cmm,chh,gflx,evap,hflx,ep1d &
1663 & ( im,lsoil,pgr,ugrs,vgrs,tgrs,qgrs,soiltyp,vegtype,sigmaf, &
1664 & sfcemis,gabsbdlw,adjsfcdsw,adjsfcnsw,dtf,tg3,cd,cdq, &
1665 & prsl(1,1),work3,zlvl,islmsk,phy_f2d(1,num_p2d),slopetyp, &
1666 & shdmin,shdmax,snoalb,sfalb,flag_iter,flag_guess, &
1669 & weasd,snwdph,tsea,tprcp,srflag,smsoil,stsoil,slsoil, &
1670 & canopy,trans,tsurf,zorl, &
1672 & sncovr,qss,gflx,drain,evap,hflx,ep1d,runof, &
1673 & cmm,chh,evbs,evcw,sbsno,snowc,soilm,snohf, &
1674 & smcwlt2,smcref2,wet1 &
1684 & ( im,lsoil,pgr,ugrs,vgrs,tgrs,qgrs,smsoil,soiltyp, &
1685 & sigmaf,vegtype,sfcemis,adjsfcdlw,adjsfcnsw,dtf, &
1686 & tg3,cd,cdq,prsl(1,1),work3,islmsk, &
1688 & phy_f2d(1,num_p2d),flag_iter,flag_guess, &
1690 & weasd,tsea,tprcp,srflag,stsoil,canopy,tsurf, &
1692 & qss,snowmt,gflx,zsoil,rhscnpy,rhsmc, &
1693 & ai,bi,cci,drain,evap,hflx,ep1d,cmm,chh, &
1694 & evbs,evcw,trans,sbsno,snowc,soilm, &
1695 & snohf,smcwlt2,smcref2 &
1707 if (flag_cice(i))
then
1708 islmsk(i) = islmsk_cice(i)
1715 & ( im,lsoil,pgr,ugrs,vgrs,tgrs,qgrs,dtf, &
1716 & sfcemis,gabsbdlw,adjsfcnsw,adjsfcdsw,srflag, &
1717 & cd,cdq,prsl(1,1),work3,islmsk,phy_f2d(1,num_p2d), &
1718 & flag_iter,mom4ice,lsm, lprnt,ipr, &
1721 & zice,cice,tice,weasd,tsea,tprcp,stsoil,ep1d, &
1723 & snwdph,qss,snowmt,gflx,cmm,chh,evap,hflx &
1728 if (flag_cice(i))
then
1729 islmsk(i) = nint(slmsk(i))
1735 & ( im,ugrs,vgrs,tgrs,qgrs,cd,cdq,prsl(1,1),work3, &
1736 & islmsk_cice,phy_f2d(1,num_p2d),flag_iter, &
1737 & dqsfc_cice,dtsfc_cice, &
1739 & qss,cmm,chh,evap,hflx &
1746 flag_iter(i) = .false.
1747 flag_guess(i) = .false.
1749 if(islmsk(i) == 1 .and. iter == 1)
then
1750 if (wind(i) < 2.0) flag_iter(i) = .true.
1751 elseif (islmsk(i) == 0 .and. iter == 1 &
1752 & .and. nstf_name(1) > 0)
then
1753 if (wind(i) < 2.0) flag_iter(i) = .true.
1761 dlwsfci(i) = adjsfcdlw(i)
1762 ulwsfci(i) = adjsfculw(i)
1763 uswsfci(i) = adjsfcdsw(i) - adjsfcnsw(i)
1764 dswsfci(i) = adjsfcdsw(i)
1775 if (weasd(i) > 0.0) sncovr(i) = 1.0
1781 call sfc_diag(im,pgr,ugrs,vgrs,tgrs,qgrs, &
1782 & tsea,qss,f10m,u10m,v10m,t2m,q2m,work3, &
1783 & evap,ffmm,ffhh,fm10,fh2)
1786 phy_f2d(i,num_p2d) = 0.0
1791 dlwsfci_cpl(i) = adjsfcdlw(i)
1792 dswsfci_cpl(i) = adjsfcdsw(i)
1793 dlwsfc_cpl(i) = dlwsfc_cpl(i) + adjsfcdlw(i)*dtf
1794 dswsfc_cpl(i) = dswsfc_cpl(i) + adjsfcdsw(i)*dtf
1795 dnirbmi_cpl(i) = adjnirbmd(i)
1796 dnirdfi_cpl(i) = adjnirdfd(i)
1797 dvisbmi_cpl(i) = adjvisbmd(i)
1798 dvisdfi_cpl(i) = adjvisdfd(i)
1799 dnirbm_cpl(i) = dnirbm_cpl(i) + adjnirbmd(i)*dtf
1800 dnirdf_cpl(i) = dnirdf_cpl(i) + adjnirdfd(i)*dtf
1801 dvisbm_cpl(i) = dvisbm_cpl(i) + adjvisbmd(i)*dtf
1802 dvisdf_cpl(i) = dvisdf_cpl(i) + adjvisdfd(i)*dtf
1803 nlwsfci_cpl(i) = adjsfcdlw(i) - adjsfculw(i)
1804 nlwsfc_cpl(i) = nlwsfc_cpl(i) + nlwsfci_cpl(i)*dtf
1805 t2mi_cpl(i) = t2m(i)
1806 q2mi_cpl(i) = q2m(i)
1807 u10mi_cpl(i) = u10m(i)
1808 v10mi_cpl(i) = v10m(i)
1809 tseai_cpl(i) = tsea(i)
1810 psurfi_cpl(i) = pgr(i)
1817 if (islmsk(i) /= 1)
then
1819 xcosz_loc = max( 0.0, min( 1.0, xcosz(i) ))
1820 ocalnirdf_cpl(i) = 0.06
1821 ocalnirbm_cpl(i) = max(albdf, 0.026/(xcosz_loc**1.7+0.065) &
1822 & + 0.15 * (xcosz_loc-0.1) * (xcosz_loc-0.5) &
1823 & * (xcosz_loc-1.0))
1824 ocalvisdf_cpl(i) = 0.06
1825 ocalvisbm_cpl(i) = ocalnirbm_cpl(i)
1827 nnirbmi_cpl(i) = adjnirbmd(i)-adjnirbmd(i)*ocalnirbm_cpl(i)
1828 nnirdfi_cpl(i) = adjnirdfd(i)-adjnirdfd(i)*ocalnirdf_cpl(i)
1829 nvisbmi_cpl(i) = adjvisbmd(i)-adjvisbmd(i)*ocalvisbm_cpl(i)
1830 nvisdfi_cpl(i) = adjvisdfd(i)-adjvisdfd(i)*ocalvisdf_cpl(i)
1832 nnirbmi_cpl(i) = adjnirbmd(i) - adjnirbmu(i)
1833 nnirdfi_cpl(i) = adjnirdfd(i) - adjnirdfu(i)
1834 nvisbmi_cpl(i) = adjvisbmd(i) - adjvisbmu(i)
1835 nvisdfi_cpl(i) = adjvisdfd(i) - adjvisdfu(i)
1837 nswsfci_cpl(i) = nnirbmi_cpl(i) + nnirdfi_cpl(i) &
1838 & + nvisbmi_cpl(i) + nvisdfi_cpl(i)
1839 nswsfc_cpl(i) = nswsfc_cpl(i) + nswsfci_cpl(i)*dtf
1840 nnirbm_cpl(i) = nnirbm_cpl(i) + nnirbmi_cpl(i)*dtf
1841 nnirdf_cpl(i) = nnirdf_cpl(i) + nnirdfi_cpl(i)*dtf
1842 nvisbm_cpl(i) = nvisbm_cpl(i) + nvisbmi_cpl(i)*dtf
1843 nvisdf_cpl(i) = nvisdf_cpl(i) + nvisdfi_cpl(i)*dtf
1849 gflux(i) = gflux(i) + gflx(i) * dtf
1850 evbsa(i) = evbsa(i) + evbs(i) * dtf
1851 evcwa(i) = evcwa(i) + evcw(i) * dtf
1852 transa(i) = transa(i) + trans(i) * dtf
1853 sbsnoa(i) = sbsnoa(i) + sbsno(i) * dtf
1854 snowca(i) = snowca(i) + snowc(i) * dtf
1855 snohfa(i) = snohfa(i) + snohf(i) * dtf
1856 ep(i) = ep(i) + ep1d(i) * dtf
1858 tmpmax(i) = max(tmpmax(i),t2m(i))
1859 tmpmin(i) = min(tmpmin(i),t2m(i))
1861 spfhmax(i) = max(spfhmax(i),q2m(i))
1862 spfhmin(i) = min(spfhmin(i),q2m(i))
1893 call moninshoc(ix,im,levs,ntrac,ntcw,dvdt,dudt,dtdt,dqdt, &
1894 & ugrs,vgrs,tgrs,qgrs,phy_f3d(1,1,ntot3d-1), &
1896 & prsik(1,1),rb,zorl,u10m,v10m,ffmm,ffhh, &
1897 & tsea,hflx,evap,stress,wind,kpbl, &
1898 & prsi,del,prsl,prslk,phii,phil,dtp, &
1899 & dusfc1,dvsfc1,dtsfc1,dqsfc1,dkt,hpbl, &
1900 & kinver, xkzm_m, xkzm_h, xkzm_s, lprnt, ipr,me)
1905 call moninedmf(ix,im,levs,nvdiff,ntcw,dvdt,dudt,dtdt,dqdt, &
1906 & ugrs,vgrs,tgrs,qgrs,swh,hlw,xmu, &
1907 & prsik(1,1),rb,zorl,u10m,v10m,ffmm,ffhh, &
1908 & tsea,qss,hflx,evap,stress,wind,kpbl, &
1909 & prsi,del,prsl,prslk,phii,phil,dtp,dspheat, &
1910 & dusfc1,dvsfc1,dtsfc1,dqsfc1,hpbl,gamt,gamq,dkt, &
1911 & kinver, xkzm_m, xkzm_h, xkzm_s, lprnt, ipr)
1913 elseif (.not. old_monin)
then
1915 call moninq(ix,im,levs,nvdiff,ntcw,dvdt,dudt,dtdt,dqdt, &
1916 & ugrs,vgrs,tgrs,qgrs,swh,hlw,xmu, &
1917 & prsik(1,1),rb,ffmm,ffhh, &
1918 & tsea,qss,hflx,evap,stress,wind,kpbl, &
1919 & prsi,del,prsl,prslk,phii,phil,dtp,dspheat, &
1920 & dusfc1,dvsfc1,dtsfc1,dqsfc1,hpbl,gamt,gamq,dkt, &
1921 & kinver, xkzm_m, xkzm_h, xkzm_s, lprnt, ipr)
1926 call moninp1(ix,im,levs,nvdiff,dvdt,dudt,dtdt,dqdt, &
1927 & ugrs,vgrs,tgrs,qgrs, &
1928 & prsik(1,1),rb,ffmm,ffhh,tsea,qss,hflx,evap,stress,wind, &
1929 & kpbl,prsi,del,prsl,prslk,phii,phil,dtp, &
1930 & dusfc1,dvsfc1,dtsfc1,dqsfc1,hpbl,gamt,gamq,dkt, &
1931 & kinver, xkzm_m, xkzm_h)
1934 call moninp(ix,im,levs,nvdiff,dvdt,dudt,dtdt,dqdt, &
1935 & ugrs,vgrs,tgrs,qgrs, &
1936 & prsik(1,1),rb,ffmm,ffhh,tsea,qss,hflx,evap,stress,wind, &
1937 & kpbl,prsi,del,prsl,phii,phil,dtp, &
1938 & dusfc1,dvsfc1,dtsfc1,dqsfc1,hpbl,gamt,gamq,dkt, &
1947 if (flag_cice(i))
then
1948 cice(i) = fice_cice(i)
1949 tsea(i) = tsea_cice(i)
1950 dusfc1(i) = dusfc_cice(i)
1951 dvsfc1(i) = dvsfc_cice(i)
1952 dqsfc1(i) = dqsfc_cice(i)
1953 dtsfc1(i) = dtsfc_cice(i)
1970 dusfc_cpl(i) = dusfc_cpl(i) + dusfc1(i)*dtf
1971 dvsfc_cpl(i) = dvsfc_cpl(i) + dvsfc1(i)*dtf
1972 dtsfc_cpl(i) = dtsfc_cpl(i) + dtsfc1(i)*dtf
1973 dqsfc_cpl(i) = dqsfc_cpl(i) + dqsfc1(i)*dtf
1974 dusfci_cpl(i) = dusfc1(i)
1975 dvsfci_cpl(i) = dvsfc1(i)
1976 dtsfci_cpl(i) = dtsfc1(i)
1977 dqsfci_cpl(i) = dqsfc1(i)
1983 dusfc(i) = dusfc(i) + dusfc1(i)*dtf
1984 dvsfc(i) = dvsfc(i) + dvsfc1(i)*dtf
1985 dtsfc(i) = dtsfc(i) + dtsfc1(i)*dtf
1986 dqsfc(i) = dqsfc(i) + dqsfc1(i)*dtf
1987 dusfci(i) = dusfc1(i)
1988 dvsfci(i) = dvsfc1(i)
1989 dtsfci(i) = dtsfc1(i)
1990 dqsfci(i) = dqsfc1(i)
2002 dt3dt(i,k,3) = dt3dt(i,k,3) + dtdt(i,k)*dtf
2008 tem = dtdt(i,k) - (hlw(i,k)+swh(i,k)*xmu(i))
2009 dt3dt(i,k,3) = dt3dt(i,k,3) + tem*dtf
2015 du3dt(i,k,1) = du3dt(i,k,1) + dudt(i,k) * dtf
2016 du3dt(i,k,2) = du3dt(i,k,2) - dudt(i,k) * dtf
2017 dv3dt(i,k,1) = dv3dt(i,k,1) + dvdt(i,k) * dtf
2018 dv3dt(i,k,2) = dv3dt(i,k,2) - dvdt(i,k) * dtf
2031 tem = dqdt(i,k,1) * dtf
2032 dq3dt(i,k,1) = dq3dt(i,k,1) + tem
2039 dq3dt(i,k,5) = dq3dt(i,k,5) + dqdt(i,k,ntoz) * dtf
2051 if (nmtvr == 14)
then
2058 oa4(i,k) = hprime(i,k+2)
2059 clx(i,k) = hprime(i,k+6)
2063 theta(i) = hprime(i,11)
2064 gamma(i) = hprime(i,12)
2065 sigma(i) = hprime(i,13)
2066 elvmax(i) = hprime(i,14)
2069 elseif (nmtvr == 10)
then
2076 oa4(i,k) = hprime(i,k+2)
2077 clx(i,k) = hprime(i,k+6)
2081 elseif (nmtvr == 6)
then
2088 oa4(i,k) = hprime(i,k+2)
2095 oc = 0 ; oa4 = 0 ; clx = 0 ; theta = 0 ; gamma = 0 ; sigma = 0
2101 call gwdps(im, ix, im, levs, dvdt, dudt, dtdt, &
2102 & ugrs, vgrs, tgrs, qgrs, &
2103 & kpbl, prsi, del, prsl, prslk, &
2104 & phii, phil, dtp, &
2105 & kdt, hprime(1,1), oc, oa4, clx, &
2106 & theta,sigma,gamma,elvmax,dusfcg, dvsfcg, &
2114 dugwd(i) = dugwd(i) + dusfcg(i)*dtf
2115 dvgwd(i) = dvgwd(i) + dvsfcg(i)*dtf
2124 du3dt(i,k,2) = du3dt(i,k,2) + dudt(i,k) * dtf
2125 dv3dt(i,k,2) = dv3dt(i,k,2) + dvdt(i,k) * dtf
2126 dt3dt(i,k,2) = dt3dt(i,k,2) + dtdt(i,k) * dtf
2133 if( .not. lsidea .and. ral_ts > 0.0)
then
2137 call rayleigh_damp(im, ix, im, levs, dvdt, dudt, dtdt, ugrs,
2138 & vgrs, dtp,
con_cp, levr, pgr, prsl,
2149 gt0(i,k) = tgrs(i,k) + dtdt(i,k) * dtp
2150 gu0(i,k) = ugrs(i,k) + dudt(i,k) * dtp
2151 gv0(i,k) = vgrs(i,k) + dvdt(i,k) * dtp
2158 gq0(i,k,n) = qgrs(i,k,n) + dqdt(i,k,n) * dtp
2165 call ideaca_up(prsi,gt0,ix,im,levs+1)
2190 if (ntoz > 0 .and. ntrac >= ntoz)
then
2192 if (pl_coeff > 4)
then
2194 call ozphys_2015(ix,im,levs,ko3,dtp,gq0(1,1,ntoz),gq0(1,1,ntoz)&
2195 &, gt0, poz, prsl, prdoz, pl_coeff, del, ldiag3d &
2196 &, dq3dt(1,1,6), me)
2199 call ozphys(ix,im,levs,ko3,dtp,gq0(1,1,ntoz),gq0(1,1,ntoz) &
2200 &, gt0, poz, prsl, prdoz, pl_coeff, del, ldiag3d &
2201 &, dq3dt(1,1,6), me)
2209 call h2ophys(ix,im,levs,levh2o,dtp,gq0(1,1,1),gq0(1,1,1)
2210 &, h2o_pres,prsl,h2opl,h2o_coeff,ldiag3d
2211 &, dq3dt(1,1,1), me)
2246 dtdt(i,k) = gt0(i,k)
2248 dudt(i,k) = gu0(i,k)
2249 dvdt(i,k) = gv0(i,k)
2253 elseif (cnvgwd)
then
2257 dtdt(i,k) = gt0(i,k)
2263 if (ldiag3d .or. lgocart)
then
2266 dqdt(i,k,1) = gq0(i,k,1)
2271 call get_phi(im,ix,levs,ntrac,gt0,gq0, &
2272 & thermodyn_id, sfcpress_id, &
2273 & gen_coord_hybrid, &
2274 & prsi,prsik,prsl,prslk,phii,phil)
2287 if (.not. ras .or. .not. cscnv)
then
2300 if (ras .or. cscnv)
then
2301 if (tottracer > 0)
then
2306 clw(i,k,3) = gq0(i,k,ntoz)
2310 if (tracers > 0)
then
2314 clw(i,k,3+n) = gq0(i,k,n+trc_shft)
2323 clw(i,k,2+n) = gq0(i,k,n+trc_shft)
2344 tem = rhbbot - (rhbbot-rhbtop) * (1.0-prslk(i,k))
2345 tem = rhc_max * work1(i) + tem * work2(i)
2346 rhc(i,k) = max(0.0, min(1.0,tem))
2353 clw(i,k,1) = gq0(i,k,ntiw)
2354 clw(i,k,2) = gq0(i,k,ntcw)
2359 if (num_p3d == 3)
then
2369 f_ice = max(0.0, min(1.0, phy_f3d(i,k,1)))
2370 f_rain = max(0.0, min(1.0, phy_f3d(i,k,2)))
2413 elseif (num_p3d == 4)
then
2416 psautco_l(i) = psautco(1)*work1(i) + psautco(2)*work2(i)
2417 prautco_l(i) = prautco(1)*work1(i) + prautco(2)*work2(i)
2421 clw(i,k,1) = gq0(i,k,ntcw)
2431 psautco_l(i) = psautco(1)*work1(i) + psautco(2)*work2(i)
2432 prautco_l(i) = prautco(1)*work1(i) + prautco(2)*work2(i)
2444 if (do_shoc .and. .not. shocaftcnv)
then
2447 skip_macro = do_shoc
2450 clw(i,k,1) = gq0(i,k,ntiw)
2451 clw(i,k,2) = gq0(i,k,ntcw)
2452 ncpl(i,k) = gq0(i,k,ntlnc)
2453 ncpi(i,k) = gq0(i,k,ntinc)
2456 elseif (num_p3d == 4)
then
2461 tem = gq0(i,k,ntcw) &
2462 & * max(0.0, min(1.0, (tcr-gt0(i,k))*tcrf))
2464 clw(i,k,2) = gq0(i,k,ntcw) - tem
2483 call shoc(ix, im, 1, levs, levs+1, dtp, me, lat, &
2484 & prsl(1,1), phii(1,1), phil(1,1), &
2485 & gu0(1,1),gv0(1,1), vvel(1,1), gt0(1,1), gq0(1,1,1), &
2486 & clw(1,1,1), clw(1,1,2), qpi, qpl,rhc, sup, &
2487 & phy_f3d(1,1,ntot3d-2), clw(1,1,ntk), hflx, evap, &
2488 & prnum, phy_f3d(1,1,ntot3d-1), phy_f3d(1,1,ntot3d), &
2489 & lprnt, ipr, ncpl, ncpi)
2491 if (ntlnc > 0 .and. ntinc > 0 .and. ncld >=2)
then
2494 gq0(i,k,ntlnc) = ncpl(i,k)
2495 gq0(i,k,ntinc) = ncpi(i,k)
2526 if (.not. ras .and. .not. cscnv)
then
2528 if (imfdeepcnv == 1)
then
2529 call sascnvn(im,ix,levs,jcap,dtp,del,prsl,pgr,phil, &
2530 & clw,gq0,gt0,gu0,gv0,cld1d, &
2531 & rain1,kbot,ktop,kcnv,islmsk, &
2532 & vvel,ncld,ud_mf,dd_mf,dt_mf,cnvw,cnvc)
2533 elseif (imfdeepcnv == 2)
then
2534 call mfdeepcnv(im,ix,levs,dtp,del,prsl,pgr,phil, &
2535 & clw,gq0,gt0,gu0,gv0,cld1d, &
2536 & rain1,kbot,ktop,kcnv,islmsk,garea, &
2537 & vvel,ncld,ud_mf,dd_mf,dt_mf,cnvw,cnvc)
2539 elseif (imfdeepcnv == 0)
then
2540 call sascnv(im,ix,levs,jcap,dtp,del,prsl,pgr,phil, &
2541 & clw,gq0,gt0,gu0,gv0,cld1d, &
2542 & rain1,kbot,ktop,kcnv,islmsk, &
2543 & vvel,rann,ncld,ud_mf,dd_mf,dt_mf,cnvw,cnvc)
2554 & ix ,im ,levs , tottracer+3 , &
2555 & gt0 ,gq0 ,rain1 , clw , &
2559 & ud_mf ,dd_mf ,dt_mf , &
2560 & gu0 ,gv0 ,fscav, fswtr, &
2562 & phy_fctd, me, wcbmax )
2565 rain1(i) = rain1(i) * (dtp*0.001)
2570 if (ccwf(1) >= 0.0 .or. ccwf(2) >= 0 )
then
2572 ccwfac(i) = ccwf(1)*work1(i) + ccwf(2)*work2(i)
2573 dlqfac(i) = dlqf(1)*work1(i) + dlqf(2)*work2(i)
2588 call rascnv(im, ix, levs, dtp, dtf, rann &
2589 &, gt0, gq0, gu0, gv0, clw, tottracer, fscav &
2590 &, prsi, prsl, prsik, prslk, phil, phii &
2591 &, kpbl, cd, rain1, kbot, ktop, kcnv &
2592 &, phy_f2d(1,num_p2d), flipv, pa2mb &
2593 &, me, garea, lmh, ccwfac, nrcm, rhc &
2594 &, ud_mf, dd_mf, dt_mf, dlqfac, lprnt, ipr, kdt,revap&
2595 &, qlcn, qicn, w_upi,cf_upi, cnv_mfd, cnv_prc3 &
2596 &, cnv_dqldt,clcn,cnv_fice,cnv_ndrop,cnv_nice,ncld )
2608 upd_mf(i,k) = upd_mf(i,k) + ud_mf(i,k) * frain
2609 dwn_mf(i,k) = dwn_mf(i,k) + dd_mf(i,k) * frain
2610 det_mf(i,k) = det_mf(i,k) + dt_mf(i,k) * frain
2611 cnvqc_v(i,k) = cnvqc_v(i,k) + (clw(i,k,1)+clw(i,k,2)- &
2612 & gq0(i,k,ntcw)) * frain
2619 if (tottracer > 0)
then
2623 gq0(i,k,ntoz) = clw(i,k,3)
2627 if (tracers > 0)
then
2631 gq0(i,k,n+trc_shft) = clw(i,k,3+n)
2640 gq0(i,k,n+trc_shft) = clw(i,k,2+n)
2649 rainc(i) = frain * rain1(i)
2655 cldwrk(i) = cldwrk(i) + cld1d(i) * dtf
2656 cnvprcp(i) = cnvprcp(i) + rainc(i)
2662 dt3dt(i,k,4) = dt3dt(i,k,4) + (gt0(i,k)-dtdt(i,k)) * frain
2663 dq3dt(i,k,2) = dq3dt(i,k,2) + (gq0(i,k,1)-dqdt(i,k,1)) &
2665 du3dt(i,k,3) = du3dt(i,k,3) + (gu0(i,k)-dudt(i,k)) * frain
2666 dv3dt(i,k,3) = dv3dt(i,k,3) + (gv0(i,k)-dvdt(i,k)) * frain
2668 upd_mf(i,k) = upd_mf(i,k) + ud_mf(i,k) * (
con_g*frain)
2669 dwn_mf(i,k) = dwn_mf(i,k) + dd_mf(i,k) * (
con_g*frain)
2670 det_mf(i,k) = det_mf(i,k) + dt_mf(i,k) * (
con_g*frain)
2682 dqdt_v(i,k) = (gq0(i,k,1)-dqdt(i,k,1)) * frain
2683 upd_mf(i,k) = upd_mf(i,k) + ud_mf(i,k) * frain
2684 dwn_mf(i,k) = dwn_mf(i,k) + dd_mf(i,k) * frain
2685 det_mf(i,k) = det_mf(i,k) + dt_mf(i,k) * frain
2686 cnvqc_v(i,k) = cnvqc_v(i,k) + (clw(i,k,1)+clw(i,k,2))
2692 if(npdf3d == 3 .and. num_p3d == 4)
then
2697 phy_f3d(i,k,num2) = cnvw(i,k)
2698 phy_f3d(i,k,num3) = cnvc(i,k)
2701 else if(npdf3d == 0 .and. ncnvcld3d == 1)
then
2705 phy_f3d(i,k,num2) = cnvw(i,k)
2735 if (k >= kbot(i) .and. k <= ktop(i))
then
2738 cumabs(i) = cumabs(i) + (gt0(i,k)-dtdt(i,k)) * del(i,k)
2739 work3(i) = work3(i) + del(i,k)
2744 if (work3(i) > 0.0) cumabs(i) = cumabs(i) / (dtp*work3(i))
2812 call gwdc(im, ix, im, levs, lat, ugrs, vgrs, tgrs, qgrs, &
2813 & prsl, prsi, del, cumabs, ktop, kbot, kcnv,cldf, &
2815 & lprnt, ipr, fhour, gwdcu, gwdcv, dusfcg, dvsfcg)
2843 dugwd(i) = dugwd(i) + dusfcg(i)*dtf
2844 dvgwd(i) = dvgwd(i) + dvsfcg(i)*dtf
2850 du3dt(i,k,4) = du3dt(i,k,4) + gwdcu(i,k) * dtf
2851 dv3dt(i,k,4) = dv3dt(i,k,4) + gwdcv(i,k) * dtf
2863 eng0 = 0.5*(gu0(i,k)*gu0(i,k)+gv0(i,k)*gv0(i,k))
2864 gu0(i,k) = gu0(i,k) + gwdcu(i,k) * dtp
2865 gv0(i,k) = gv0(i,k) + gwdcv(i,k) * dtp
2866 eng1 = 0.5*(gu0(i,k)*gu0(i,k)+gv0(i,k)*gv0(i,k))
2867 gt0(i,k) = gt0(i,k) + (eng0-eng1)/(dtp*
con_cp)
2898 dtdt(i,k) = gt0(i,k)
2903 if (ldiag3d .or. lgocart)
then
2906 dqdt(i,k,1) = gq0(i,k,1)
2914 if (.not. do_shoc)
then
2918 if (imfshalcnv == 1)
then
2920 call shalcnv(im,ix,levs,jcap,dtp,del,prsl,pgr,phil, &
2921 & clw,gq0,gt0,gu0,gv0, &
2922 & rain1,kbot,ktop,kcnv,islmsk, &
2923 & vvel,ncld,hpbl,hflx,evap,ud_mf,dt_mf, &
2926 if (shcnvcw .and. num_p3d == 4 .and. npdf3d == 3 )
then
2929 phy_f3d(i,k,num2) = cnvw(i,k)
2930 phy_f3d(i,k,num3) = cnvc(i,k)
2935 else if(npdf3d == 0 .and. ncnvcld3d == 1)
then
2939 phy_f3d(i,k,num2) = cnvw(i,k)
2944 raincs(i) = frain * rain1(i)
2945 rainc(i) = rainc(i) + raincs(i)
2949 cnvprcp(i) = cnvprcp(i) + raincs(i)
2953 elseif (imfshalcnv == 2)
then
2954 call mfshalcnv(im,ix,levs,dtp,del,prsl,pgr,phil, &
2955 & clw,gq0,gt0,gu0,gv0, &
2956 & rain1,kbot,ktop,kcnv,islmsk,garea, &
2957 & vvel,ncld,hpbl,ud_mf,dt_mf,cnvw,cnvc)
2959 if (shcnvcw .and. num_p3d == 4 .and. npdf3d == 3 )
then
2962 phy_f3d(i,k,num2) = cnvw(i,k)
2963 phy_f3d(i,k,num3) = cnvc(i,k)
2968 else if(npdf3d == 0 .and. ncnvcld3d == 1)
then
2972 phy_f3d(i,k,num2) = cnvw(i,k)
2977 raincs(i) = frain * rain1(i)
2978 rainc(i) = rainc(i) + raincs(i)
2982 cnvprcp(i) = cnvprcp(i) + raincs(i)
2986 elseif (imfshalcnv == 0)
then
2993 if (prsi(i,1)-prsi(i,k) <= dpshc(i)) levshc(i) = k
2998 levshcm = max(levshcm, levshc(i))
3005 call shalcv(im,ix,levshcm,dtp,del,prsi,prsl,prslk,kcnv, &
3006 & gq0,gt0,levshc,phil,kinver,ctei_r,ctei_rml &
3009 call shalcvt3(im,ix,levshcm,dtp,del,prsi,prsl,prslk, &
3022 tem = (gq0(i,k,1)-dqdt(i,k,1)) * frain
3023 dqdt_v(i,k) = dqdt_v(i,k) + tem
3030 dt3dt(i,k,5) = dt3dt(i,k,5) + (gt0(i,k)-dtdt(i,k))
3032 dq3dt(i,k,3) = dq3dt(i,k,3) + (gq0(i,k,1)-dqdt(i,k,1)) &
3034 dtdt(i,k) = gt0(i,k)
3035 dqdt(i,k,1) = gq0(i,k,1)
3043 if (clw(i,k,2) <= -999.0) clw(i,k,2) = 0.0
3054 elseif (shocaftcnv)
then
3056 skip_macro = do_shoc
3061 ncpl(i,k) = gq0(i,k,ntlnc)
3062 ncpi(i,k) = gq0(i,k,ntinc)
3101 call shoc(ix, im, 1, levs, levs+1, dtp, me, lat, &
3102 & prsl(1,1), phii(1,1), phil(1,1), &
3103 & gu0(1,1),gv0(1,1), vvel(1,1), gt0(1,1), gq0(1,1,1), &
3104 & clw(1,1,1), clw(1,1,2), qpi, qpl,rhc, sup, &
3105 & phy_f3d(1,1,ntot3d-2), gq0(1,1,ntke),hflx,evap, &
3106 & prnum, phy_f3d(1,1,ntot3d-1), phy_f3d(1,1,ntot3d), &
3107 & lprnt, ipr, ncpl, ncpi)
3109 if (ntlnc > 0 .and. ntinc > 0 .and. ncld >=2)
then
3112 gq0(i,k,ntlnc) = ncpl(i,k)
3113 gq0(i,k,ntinc) = ncpi(i,k)
3144 gq0(i,k,ntiw) = clw(i,k,1)
3145 gq0(i,k,ntcw) = clw(i,k,2)
3149 elseif (num_p3d == 3)
then
3161 gq0(i,k,ntcw) = qi + qw + qr_col(i,k)
3163 if (qi <= epsq)
then
3166 phy_f3d(i,k,1) = qi/gq0(i,k,ntcw)
3169 if (qr_col(i,k) <= epsq)
then
3172 phy_f3d(i,k,2) = qr_col(i,k) / (qw+qr_col(i,k))
3178 elseif (num_p3d == 4)
then
3182 gq0(i,k,ntcw) = clw(i,k,1) + clw(i,k,2)
3192 clw(i,k,1) = clw(i,k,1) + clw(i,k,2)
3200 call cnvc90(clstp, im, ix, rainc, kbot, ktop, levs, prsi, &
3201 & acv, acvb, acvt, cv, cvb, cvt)
3227 call mstcnv(im,ix,levs,dtp,gt0,gq0,prsl,del,prslk,rain1
3228 &, gq0(1,1,ntcw), rhc, lprnt,ipr)
3236 rainc(i) = rainc(i) + frain * rain1(i)
3240 cnvprcp(i) = cnvprcp(i) + rain1(i) * frain
3257 dt3dt(i,k,4) = dt3dt(i,k,4) + (gt0(i,k)-dtdt(i,k))
3259 dq3dt(i,k,2) = dq3dt(i,k,2) + (gq0(i,k,1)-dqdt(i,k,1))
3269 dtdt(i,k) = gt0(i,k)
3270 dqdt(i,k,1) = gq0(i,k,1)
3298 dqdt_v(i,k) = dqdt_v(i,k) / dtf
3308 call lrgscl(ix,im,levs,dtp,gt0,gq0,prsl,del,prslk,rain1,clw)
3310 elseif (ncld == 1)
then
3312 if (num_p3d == 3)
then
3315 xncw(i) = ncw(1) * work1(i) + ncw(2) * work2(i)
3316 flgmin_l(i) = flgmin(1)* work1(i) + flgmin(2) * work2(i)
3319 if (kdt == 1 .and. abs(xlon(1)) < 0.0001)
then
3320 write(0,*)
' xncw=',xncw(1),
' rhc=',rhc(1,1),
' work1=' &
3321 &, work1(1),
' work2=',work2(1),
' flgmin=',flgmin_l(1) &
3322 &,
' lon=',xlon(1) * 57.29578,
' lat=',lat,
' me=',me
3327 &, prsl, del, rhc, xncw, flgmin_l &
3328 &, gt0, gq0(1,1,1), gq0(1,1,ntcw) &
3329 &, phy_f3d(1,1,1), phy_f3d(1,1,2) &
3330 &, phy_f3d(1,1,3), rain1, sr)
3332 elseif (num_p3d == 4)
then
3334 if (npdf3d /= 3)
then
3344 call precpd_shoc(im, ix, levs, dtp, del, prsl, &
3345 & gq0(1,1,1), gq0(1,1,ntcw), gt0, rain1, sr, &
3346 & rainp, rhc, psautco_l, prautco_l, evpco, &
3347 & wminco, phy_f3d(1,1,ntot3d-2), lprnt, ipr)
3351 call gscond(im, ix, levs, dtp, dtf, prsl, pgr, &
3352 & gq0(1,1,1), gq0(1,1,ntcw), gt0, &
3353 & phy_f3d(1,1,1), phy_f3d(1,1,2), phy_f2d(1,1), &
3354 & phy_f3d(1,1,3), phy_f3d(1,1,4), phy_f2d(1,2), &
3357 call precpd(im, ix, levs, dtp, del, prsl, &
3358 & gq0(1,1,1), gq0(1,1,ntcw), gt0, rain1, sr, &
3359 & rainp, rhc, psautco_l, prautco_l, evpco, &
3360 & wminco, lprnt, ipr)
3371 call gscondp(im, ix, levs, dtp, dtf, prsl, pgr, &
3372 & gq0(1,1,1), gq0(1,1,ntcw), gt0, &
3373 & phy_f3d(1,1,1), phy_f3d(1,1,2), phy_f2d(1,1), &
3374 & phy_f3d(1,1,3), phy_f3d(1,1,4), phy_f2d(1,2), &
3375 & rhc,phy_f3d(1,1,num_p3d+1),sup,lprnt, &
3378 call precpdp(im, ix, levs, dtp, del, prsl, pgr, &
3379 & gq0(1,1,1), gq0(1,1,ntcw), gt0, rain1,sr, &
3380 & rainp, rhc, phy_f3d(1,1,num_p3d+1), &
3381 & psautco_l, prautco_l, evpco, wminco, &
3390 elseif (ncld == 2)
then
3399 clw(i,k,1) = gq0(i,k,ntiw)
3400 clw(i,k,2) = gq0(i,k,ntcw)
3401 phy_f3d(i,k,1) = phy_f3d(i,k,ntot3d-2)
3407 clw(i,k,1) = gq0(i,k,ntiw)
3408 clw(i,k,2) = gq0(i,k,ntcw)
3409 phy_f3d(i,k,1) = min(1.0, phy_f3d(i,k,1)+cnvc(i,k))
3419 call m_micro_driver(im, ix, levs, flipv, dtp,
3420 & prsl, prsi, prslk, prsik,
3421 & vvel, clw(1,1,2), qlcn, clw(1,1,1),qicn,
3422 & hlw, swh, w_upi, cf_upi,
3423 & frland, hpbl, cnv_mfd, cnv_prc3,
3424 & cnv_dqldt, clcn, gu0, gv0,
3425 & dusfc, dvsfc, dusfc1, dvsfc1,
3426 & dusfc1, dvsfc1, cnv_fice,
3427 & cnv_ndrop, cnv_nice, gq0(1,1,1),
3428 & gq0(1,1,ntcw), gq0(1,1,ntiw), gt0,
3429 & rain1, sr, gq0(1,1,ntlnc),
3430 & gq0(1,1,ntinc), phy_f3d(1,1,1), kbot,
3431 & aero_in, skip_macro, cn_prc, cn_snr,
3442 rain(i) = rainc(i) + frain * rain1(i)
3448 call calpreciptype(kdt,nrcm,im,ix,levs,levs+1,rann,
3449 & xlat,xlon,gt0,gq0,prsl,prsi,rain,
3450 & phii,num_p3d,tsea,sr,phy_f3d(1,1,i),
3451 & domr,domzr,domip,doms)
3465 if(doms(i) >0.0 .or. domip(i)>0.0)
then
3475 totprcp(i) = totprcp(i) + rain(i)
3482 dt3dt(i,k,6) = dt3dt(i,k,6) + (gt0(i,k)-dtdt(i,k)) * frain
3483 dq3dt(i,k,4) = dq3dt(i,k,4) + (gq0(i,k,1)-dqdt(i,k,1)) &
3498 if (prsl(i,k) > p850 .and. prsl(i,k+1) <= p850)
then
3499 t850(i) = gt0(i,k) - (prsl(i,k)-p850) &
3500 & / (prsl(i,k)-prsl(i,k+1)) * (gt0(i,k)-gt0(i,k+1))
3509 tprcp(i) = max(0.0, rain(i))
3513 tprcp(i) = max(0.0, rain(i) )
3516 if (t850(i) <= 273.16)
then
3526 if (t850(i) > 273.16)
then
3527 rain_cpl(i) = rain_cpl(i) + rain(i)
3529 snow_cpl(i) = snow_cpl(i) + rain(i)
3541 if (t850(i) <= 273.16 .and. islmsk(i) /= 0)
then
3542 weasd(i) = weasd(i) + 1.e3*rain(i)
3546 call progt2(im,lsoil,rhscnpy,rhsmc,ai,bi,cci,smsoil, &
3547 & islmsk,canopy,tprcp,runof,snowmt, &
3548 & zsoil,soiltyp,sigmaf,dtf,me)
3554 if (islmsk(i) == 1)
then
3555 slsoil(i,k) = smsoil(i,k)
3566 call sfc_diag(im,pgr,gu0,gv0,gt0,gq0, &
3567 & tsea,qss,f10m,u10m,v10m,t2m,q2m,work3, &
3568 & evap,ffmm,ffhh,fm10,fh2)
3572 tmpmax(i) = max(tmpmax(i),t2m(i))
3573 tmpmin(i) = min(tmpmin(i),t2m(i))
3575 spfhmax(i) = max(spfhmax(i),q2m(i))
3576 spfhmin(i) = min(spfhmin(i),q2m(i))
3587 runoff(i) = runoff(i) + (drain(i)+runof(i)) * tem
3588 srunoff(i) = srunoff(i) + runof(i) * tem
3595 if (islmsk(i) == 2)
then
3610 smc(i,k) = smsoil(i,k)
3611 stc(i,k) = stsoil(i,k)
3612 slc(i,k) = slsoil(i,k)
3630 do ic = ntcw, ntcw+ncld-1
3632 work1(i) = work1(i) + gq0(i,k,ic)
3638 pwat(i) = pwat(i) + del(i,k)*(gq0(i,k,1)+work1(i))
3639 rqtk(i) = rqtk(i) + del(i,k)*(gq0(i,k,1)-qgrs(i,k,1))
3644 pwat(i) = pwat(i) * (1.0/
con_g)
3655 deallocate (qpl, qpi, ncpl, ncpi)
3657 if (.not. ras .or. .not. cscnv)
then
3658 deallocate (cnvc, cnvw)
3667 deallocate (qlcn, qicn, w_upi
3668 &, cf_upi, cnv_mfd, cnv_prc3
3669 &, cnv_dqldt, clcn, cnv_fice
3670 &, cnv_ndrop, cnv_nice)
real(kind=kind_phys), parameter con_pi
pi
subroutine sascnvn(im, ix, km, jcap, delt, delp, prslp, psp, phil, ql, q1, t1, u1, v1, cldwrk, rn, kbot, ktop, kcnv, islimsk, dot, ncloud, ud_mf, dd_mf, dt_mf, cnvw, cnvc)
This subroutine contains the entirety of the SAS deep convection scheme.
real(kind=kind_phys), parameter con_g
gravity ( )
subroutine moninedmf(ix, im, km, ntrac, ntcw, dv, du, tau, rtg, u1, v1, t1, q1, swh, hlw, xmu, psk, rbsoil, zorl, u10m, v10m, fm, fh, tsea, qss, heat, evap, stress, spd1, kpbl, prsi, del, prsl, prslk, phii, phil, delt, dspheat, dusfc, dvsfc, dtsfc, dqsfc, hpbl, hgamt, hgamq, dkt, kinver, xkzm_m, xkzm_h, xkzm_s, lprnt, ipr)
This subroutine contains all of logic for the Hybrid EDMF PBL scheme except for the calculation of th...
subroutine gwdps(IM, IX, IY, KM, A, B, C, U1, V1, T1, Q1, KPBL, PRSI, DEL, PRSL, PRSLK, PHII, PHIL, DELTIM, KDT, HPRIME, OC, OA4, CLX4, THETA, SIGMA, GAMMA, ELVMAX, DUSFC, DVSFC, G, CP, RD, RV, IMX, nmtvr, cdmbgwd, me, lprnt, ipr)
subroutine gbphys(im, ix, levs, lsoil, lsm, ntrac, ncld, ntoz, ntcw, ntke, ntiw, ntlnc, ntinc, nmtvr, nrcm, ko3, lonr, latr, jcap, num_p3d, num_p2d, npdf3d, ncnvcld3d, kdt, lat, me, pl_coeff, nlons, ncw, flgmin, crtrh, cdmbgwd, ccwf, dlqf, ctei_rm, clstp, cgwf, prslrd0, ral_ts, dtp, dtf, fhour, solhr, slag, sdec, cdec, sinlat, coslat, pgr, ugrs, vgrs, tgrs, qgrs, vvel, prsi, prsl, prslk, prsik, phii, phil, rann, prdoz, poz, dpshc, fscav, fswtr, hprime, xlon, xlat, h2o_phys, levh2o, h2opl, h2o_pres, h2o_coeff, isot, ivegsrc, slope, shdmin, shdmax, snoalb, tg3, slmsk, vfrac, vtype, stype, uustar, oro, oro_uf, coszen, sfcdsw, sfcnsw, sfcnirbmd, sfcnirdfd, sfcvisbmd, sfcvisdfd, sfcnirbmu, sfcnirdfu, sfcvisbmu, sfcvisdfu, slimskin_cpl, ulwsfcin_cpl, dusfcin_cpl, dvsfcin_cpl, dtsfcin_cpl, dqsfcin_cpl, sfcdlw, tsflw, sfcemis, sfalb, swh, swhc, hlw, hlwc, hlwd, lsidea, ras, pre_rad, ldiag3d, lgocart, lssav, lssav_cpl, xkzm_m, xkzm_h, xkzm_s, psautco, prautco, evpco, wminco, pdfcld, shcnvcw, sup, redrag, hybedmf, dspheat, flipv, old_monin, cnvgwd, shal_cnv, imfshalcnv, imfdeepcnv, cal_pre, aero_in, mom4ice, mstrat, trans_trac, nstf_name, moist_adj, thermodyn_id, sfcpress_id, gen_coord_hybrid, levr, adjtrc, nnp, cscnv, nctp, do_shoc, shocaftcnv, ntot3d, ntot2d, hice, fice, tisfc, tsea, tprcp, cv, cvb, cvt, srflag, snwdph, weasd, sncovr, zorl, canopy, ffmm, ffhh, f10m, srunoff, evbsa, evcwa, snohfa, transa, sbsnoa, snowca, soilm, tmpmin, tmpmax, dusfc, dvsfc, dtsfc, dqsfc, totprcp, gflux, dlwsfc, ulwsfc, suntim, runoff, ep, cldwrk, dugwd, dvgwd, psmean, cnvprcp, spfhmin, spfhmax, rain, rainc, dt3dt, dq3dt, du3dt, dv3dt, dqdt_v, cnvqc_v, acv, acvb, acvt, slc, smc, stc, upd_mf, dwn_mf, det_mf, phy_f3d, phy_f2d, dusfc_cpl, dvsfc_cpl, dtsfc_cpl, dqsfc_cpl, dlwsfc_cpl, dswsfc_cpl, dnirbm_cpl, dnirdf_cpl, dvisbm_cpl, dvisdf_cpl, rain_cpl, nlwsfc_cpl, nswsfc_cpl, nnirbm_cpl, nnirdf_cpl, nvisbm_cpl, nvisdf_cpl, snow_cpl, xt, xs, xu, xv, xz, zm, xtts, xzts, d_conv, ifd, dt_cool, Qrain, tref, z_c, c_0, c_d, w_0, w_d, phy_fctd, gt0, gq0, gu0, gv0, t2m, q2m, u10m, v10m, zlvl, psurf, hpbl, pwat, t1, q1, u1, v1, chh, cmm, dlwsfci, ulwsfci, dswsfci, uswsfci, dusfci, dvsfci, dtsfci, dqsfci, gfluxi, epi, smcwlt2, smcref2, wet1, sr, rqtk, dtdtr, dusfci_cpl, dvsfci_cpl, dtsfci_cpl, dqsfci_cpl, dlwsfci_cpl, dswsfci_cpl, dnirbmi_cpl, dnirdfi_cpl, dvisbmi_cpl, dvisdfi_cpl, nlwsfci_cpl, nswsfci_cpl, nnirbmi_cpl, nnirdfi_cpl, nvisbmi_cpl, nvisdfi_cpl, t2mi_cpl, q2mi_cpl, u10mi_cpl, v10mi_cpl, tseai_cpl, psurfi_cpl )
subroutine precpd(im, ix, km, dt, del, prsl, q, cwm, t, rn, sr , rainp, u00k, psautco, prautco, evpco, wminco , lprnt, jpr)
real(kind=kind_phys), parameter con_rv
gas constant H2O ( )
real(kind=kind_phys), parameter con_hfus
lat heat H2O fusion ( )
subroutine gwdc(im, ix, iy, km, lat, u1, v1, t1, q1, pmid1, pint1, dpmid1, qmax, ktop, kbot, kcnv, cldf, grav, cp, rd, fv, dlength, lprnt, ipr, fhour, utgwc, vtgwc, tauctx, taucty)
subroutine shalcnv(im, ix, km, jcap, delt, delp, prslp, psp, phil, ql, q1, t1, u1, v1, rn, kbot, ktop, kcnv, islimsk, dot, ncloud, hpbl, heat, evap, ud_mf, dt_mf, cnvw, cnvc)
This subroutine contains the entirety of the SAS shallow convection scheme.
real(kind=kind_phys), parameter con_cp
spec heat air at p ( )
real(kind=kind_phys), parameter con_hvap
lat heat H2O cond ( )
subroutine gscond(im, ix, km, dt, dtf, prsl, ps, q, cwm, t , tp, qp, psp, tp1, qp1, psp1, u, lprnt, ipr)
real(kind=kind_phys), parameter con_rd
gas constant air ( )
real(kind=kind_phys), parameter con_rerth
radius of earth (m)