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)