<p><b>fanglin.yang@noaa.gov</b> 2012-05-10 00:06:21 -0600 (Thu, 10 May 2012)</p><p>9may2012 night update<br>
</p><hr noshade><pre><font color="gray">Modified: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile.ibm
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile.ibm        2012-05-10 01:07:10 UTC (rev 1885)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile.ibm        2012-05-10 06:06:21 UTC (rev 1886)
@@ -103,6 +103,7 @@
         radiation_clouds.o     \
         radiation_surface.o    \
          gloopr.o              \
+         gloopb.o              \
         grrad.o                 
 
 #
@@ -180,10 +181,10 @@
 #spect_write.o
 
 
-OBJS_CC= cmp.comm.o  
+OBJS_CC= cmp.comm.o  \
+        atm.comm.o  
 #mpi_more.o  \
 #cmp.comm.o  \
-#atm.comm.o  \
 #tiles.o
 
 SRC        = $(OBJS0:.o=.f) $(OBJ_MOD:.o=.f) $(OBJS:.o=.f) $(OBJS_RAD:.o=.f) $(OBJS_PHY:.o=.f) $(OBJS_IO:.o=.f) $(OBJS_CC:.o=.f)

Modified: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile.jet
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile.jet        2012-05-10 01:07:10 UTC (rev 1885)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/Makefile.jet        2012-05-10 06:06:21 UTC (rev 1886)
@@ -108,6 +108,7 @@
         radiation_clouds.o     \
         radiation_surface.o    \
         grrad.o                \
+        gloopb.o                \
         gloopr.o
 
 #
@@ -181,10 +182,9 @@
 #        spect_write.o
 
 
-OBJS_CC= \
-        cmp.comm.o  
+OBJS_CC=  cmp.comm.o  \
+         atm.comm.o  
 #        mpi_more.o  \
-#        atm.comm.o  \
 #        tiles.o
 
 SRC        = $(OBJS0:.o=.f) $(OBJ_MOD:.o=.f) $(OBJS:.o=.f) $(OBJS_RAD:.o=.f) $(OBJS_PHY:.o=.f) $(OBJS_IO:.o=.f) $(OBJS_CC:.o=.f)

Modified: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/dotstep.f
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/dotstep.f        2012-05-10 01:07:10 UTC (rev 1885)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/dotstep.f        2012-05-10 06:06:21 UTC (rev 1886)
@@ -58,17 +58,17 @@
        real(kind=kind_phys) :: sfc_mpas(nsfc_mpas,ncell_mpas)
        real(kind=kind_phys) :: air_mpas(nair_mpas,ncell_mpas,levs_mpas)
 
-! --prsi  : model interface level pressure in centibar
-! --prsl  : model integer layer pressure in centibar
-! --gu    : model layer zonal wind m/s   
-! --gv    : model layer meridional wind m/s   
-! --vvel  : model layer vertical velocity in centibar/sec
-! --gt    : model layer temperature in K
-! --gr    : model layer specific humidity in gm/gm
-! --gtrace: model layer tracer (ozne and cloud water) mass mixing ratio
-       real (kind=kind_phys), allocatable :: prsi(:,:,:), prsl(:,:,:),
-     &amp;                     gu(:,:,:),gv(:,:,:),vvel(:,:,:),
-     &amp;                     gt(:,:,:),gr(:,:,:), gtrace(:,:,:,:)
+! --mp_pi : model interface level pressure in centibar
+! --mp_pl : model integer layer pressure in centibar
+! --mp_u  : model layer zonal wind m/s   
+! --mp_v  : model layer meridional wind m/s   
+! --mp_w  : model layer vertical velocity in centibar/sec
+! --mp_t  : model layer temperature in K
+! --mp_q  : model layer specific humidity in gm/gm
+! --mp_tr : model layer tracer (ozne and cloud water) mass mixing ratio
+       real (kind=kind_phys), allocatable :: mp_pi(:,:,:), mp_pl(:,:,:),
+     &amp;                     mp_u(:,:,:),mp_v(:,:,:),mp_w(:,:,:),
+     &amp;                     mp_t(:,:,:),mp_q(:,:,:), mp_tr(:,:,:,:)
 !-----mpas related fileds--------
 
 !****************************************************************************
@@ -96,19 +96,19 @@
           coslat_r2(i,j)=cos(xlat_mpas(i))  !xlat_mpas in radian
          enddo
          enddo
-
-        allocate ( prsi(lonr,levp1,lats_node_r) )
-        allocate ( prsl(lonr,levs,lats_node_r) )   
-        allocate ( gu(lonr,levs,lats_node_r) )
-        allocate ( gv(lonr,levs,lats_node_r) )
-        allocate ( gt(lonr,levs,lats_node_r) )
-        allocate ( vvel(lonr,levs,lats_node_r) )
-        allocate ( gr(lonr,levs,lats_node_r) )
-        allocate ( gtrace(lonr,levs,ntrac-1,lats_node_r) )                                 
-
        ifirst=0
       endif
 
+        allocate ( mp_pi(lonr,levp1,lats_node_r) )
+        allocate ( mp_pl(lonr,levs,lats_node_r) )   
+        allocate ( mp_u(lonr,levs,lats_node_r) )
+        allocate ( mp_v(lonr,levs,lats_node_r) )
+        allocate ( mp_t(lonr,levs,lats_node_r) )
+        allocate ( mp_w(lonr,levs,lats_node_r) )
+        allocate ( mp_q(lonr,levs,lats_node_r) )
+        allocate ( mp_tr(lonr,levs,ntrac-1,lats_node_r) )                                 
+
+
       kdt=kdt_mpas                     
       fhour=fhour_mpas
       phour=fhour_mpas
@@ -181,7 +181,7 @@
      &amp;        sfc_fld%cv, sfc_fld%cvt, sfc_fld%cvb, sfc_fld%FICE, 
      &amp;        sfc_fld%tisfc, sfc_fld%sncovr, sfc_fld%snoalb,
      &amp;        hprime,phy_f3d,
-     &amp;        prsi,prsl,gt,gr,gtrace,vvel,
+     &amp;        mp_pi,mp_pl,mp_t,mp_q,mp_w,mp_tr,
 !--in and out
      &amp;        fluxr,
 !--output
@@ -201,7 +201,9 @@
      &amp;         sfc_fld, flx_fld, nst_fld, sfalb,
      &amp;         swh,hlw,hprime,slag,sdec,cdec,
      &amp;         ozplin,jindx1,jindx2,ddy,
-     &amp;         phy_f3d, phy_f2d) 
+     &amp;         phy_f3d, phy_f2d, 
+     &amp;         mp_pi,mp_pl,mp_t,mp_q,mp_u,
+     &amp;         mp_v,mp_w,mp_tr)
           endif 
 
 !
@@ -217,5 +219,8 @@
       ENDIF
 !
 
+      deallocate (mp_pi,mp_pl,mp_t,mp_u,mp_v,mp_w)
+      deallocate (mp_q,mp_tr)                          
+
       RETURN
       END

Modified: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/gloopb.f
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/gloopb.f        2012-05-10 01:07:10 UTC (rev 1885)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/gloopb.f        2012-05-10 06:06:21 UTC (rev 1886)
@@ -6,7 +6,9 @@
      &amp;     sfc_fld, flx_fld, nst_fld, sfalb,
      &amp;     swh,hlw,hprime,slag,sdec,cdec,
      &amp;     ozplin,jindx1,jindx2,ddy,
-     &amp;     phy_f3d, phy_f2d)
+     &amp;     phy_f3d, phy_f2d,
+     &amp;     mp_pi,mp_pl,mp_t,mp_q,mp_u,
+     &amp;     mp_v,mp_w,mp_tr)
 !!
 #include &quot;f_hpm.h&quot;
 !!
@@ -23,11 +25,10 @@
       use gg_def              , only : coslat_r,rcs2_r,sinlat_r,wgt_r
       use date_def            , only : fhour,idate
       use namelist_def        , only : crtrh,fhswr,flgmin,
-     &amp;                                 gen_coord_hybrid,gg_tracers,
+     &amp;                                 gen_coord_hybrid,ras,
      &amp;                                 hybrid,ldiag3d,lscca,lsfwd,
      &amp;                                 lsm,lssav,lsswr,ncw,ngptc,
      &amp;                                 old_monin,pre_rad,random_clds,
-     &amp;                                 ras,shuff_lats_r,
      &amp;                                 sashal,ctei_rm,mom4ice,newsas,
      &amp;                                 ccwf,cnvgwd,lggfs3d,trans_trac,
      &amp;                                 mstrat,cal_pre,nst_fcst,
@@ -35,40 +36,78 @@
      &amp;                                 bkgd_vdif_m, bkgd_vdif_h,
      &amp;                                 bkgd_vdif_s,shal_cnv,
      &amp;                                 psautco, prautco, evpco, wminco
-      use coordinate_def      , only : vertcoord_id           
       use module_ras          , only : ras_init
       use physcons            , only :  grav =&gt; con_g,
-     &amp;                                 rerth =&gt; con_rerth,   ! hmhj
-     &amp;                                    fv =&gt; con_fvirt,   ! mjr
-     &amp;                                 rvrdm1 =&gt; con_FVirt,
-     &amp;                                    rd =&gt; con_rd
+     &amp;                                 rerth =&gt; con_rerth,   
+     &amp;                                    fv =&gt; con_fvirt, 
+     &amp;                                rvrdm1 =&gt; con_FVirt,
+     &amp;                                    rd =&gt; con_rd,
+     &amp;                                    con_rocp     
       use ozne_def            , only : latsozp,levozp,
      &amp;                                 pl_coeff,pl_pres,timeoz
+      use gfsmisc_def,          only : sinlat_r2, coslat_r2
 
       use Sfc_Flx_ESMFMod
       use Nst_Var_ESMFMod
       use mersenne_twister
       use d3d_def
       use tracer_const
-!
-      include 'mpif.h'
+
+!-&gt; Coupling insertion
+      USE SURFACE_cc
+!&lt;- Coupling insertion
+
+!-------------------------------------------------------
+!-------------------------------------------------------
       implicit none
+      include 'mpif.h'
 !
+!---input and output variables
       TYPE(Sfc_Var_Data)        :: sfc_fld
       TYPE(Flx_Var_Data)        :: flx_fld
       TYPE(Nst_Var_Data)        :: nst_fld
-!
-      real(kind=kind_phys), PARAMETER :: RLAPSE=0.65E-2
-      real(kind=kind_evod), parameter :: cons_0=0.0,   cons_24=24.0
-     &amp;,                                  cons_99=99.0, cons_1p0d9=1.0E9
 
+      integer              global_lats_r(latr)
+      integer              lonsperlar(latr)
+      real (kind=kind_rad) slag,sdec,cdec,phour
+      real (kind=kind_rad) xlon(lonr,lats_node_r)
+      real (kind=kind_rad) xlat(lonr,lats_node_r)
+      real (kind=kind_rad) coszdg(lonr,lats_node_r),
+     &amp;                     hprime(lonr,nmtvr,lats_node_r),
+!    &amp;                     fluxr(lonr,nfxr,lats_node_r),
+     &amp;                     sfalb(lonr,lats_node_r)
+      real (kind=kind_rad) swh(lonr,levs,lats_node_r)
+      real (kind=kind_rad) hlw(lonr,levs,lats_node_r)
+!!
+      real  (kind=kind_phys)
+     &amp;     phy_f3d(lonr,levs,num_p3d,lats_node_r),
+     &amp;     phy_f2d(lonr,num_p2d,lats_node_r), fscav(ntrac-ncld-1)
 
-!$$$      integer n1rac, n2rac,nlons_v(ngptc)
-!$$$      parameter (n1rac=ntrac-ntshft-1, n2rac=n1rac+1)
+! --mp_pi : model interface level pressure in centibar
+! --mp_pl : model integer layer pressure in centibar
+! --mp_u  : model layer zonal wind in m/s                   
+! --mp_v  : model layer meridional wind in m/s                   
+! --mp_w  : model layer vertical velocity in centibar/sec
+! --mp_t  : model layer temperature in K
+! --mp_q  : model layer specific humidity in gm/gm
+! --mp_tr : model layer tracer (ozne and cloud water) mass mixing ratio
+      real (kind=kind_phys) ::
+     &amp;   mp_pi(lonr,levs+1,lats_node_r) ,
+     &amp;   mp_pl(lonr,levs,lats_node_r) ,
+     &amp;   mp_t(lonr,levs,lats_node_r) ,
+     &amp;   mp_q(lonr,levs,lats_node_r) ,
+     &amp;   mp_u(lonr,levs,lats_node_r) ,
+     &amp;   mp_v(lonr,levs,lats_node_r) ,
+     &amp;   mp_w(lonr,levs,lats_node_r) ,
+     &amp;   mp_tr(lonr,levs,ntrac-1,lats_node_r)
+
+      real(kind=kind_evod) gq_save(lonr,lats_dim_r)
+
+
+!----local variables
+      real(kind=kind_evod), parameter :: cons_24=24.0
+     &amp;,                                  cons_99=99.0, cons_1p0d9=1.0E9
 !
-!     integer id,njeff,istrt,lon,kdt
-      integer id,njeff,      lon,kdt
-!!
       real(kind=kind_phys)    prsl(ngptc,levs)
       real(kind=kind_phys)   prslk(ngptc,levs),dpshc(ngptc)
       real(kind=kind_phys)    prsi(ngptc,levs+1),phii(ngptc,levs+1)
@@ -76,14 +115,11 @@
 !!
       real (kind=kind_phys) gu(ngptc,levs),  gv1(ngptc,levs)
       real (kind=kind_phys) ugrd(ngptc,levs),vgrd(ngptc,levs)
-      real (kind=kind_phys) gphi(ngptc),     glam(ngptc)
       real (kind=kind_phys) gq(ngptc),       gt(ngptc,levs), pgr(ngptc)
       real (kind=kind_phys) gr(ngptc,levs,ntrac)
       real (kind=kind_phys) gd(ngptc,levs)
       real (kind=kind_phys) adt(ngptc,levs), adr(ngptc,levs,ntrac)
       real (kind=kind_phys) adu(ngptc,levs), adv(ngptc,levs)
-      real (kind=kind_phys) gtv(ngptc,levs)                              ! hmhj
-      real (kind=kind_phys) gtvx(ngptc,levs), gtvy(ngptc,levs)           ! hmhj
       real (kind=kind_phys) sumq(ngptc,levs), xcp(ngptc,levs)
 !
       real (kind=kind_phys) dt3dt_v(ngptc,levs,6),
@@ -93,35 +129,17 @@
      &amp;,                     upd_mf_v(ngptc,levs), dwn_mf_v(ngptc,levs)
      &amp;,                     det_mf_v(ngptc,levs)
      &amp;,                     dkh_v(ngptc,LEVS),    rnp_v(ngptc,levs)
-!!
-      real(kind=kind_evod) gq_save(lonr,lats_dim_r)
-!!
-      real (kind=kind_rad) slag,sdec,cdec,phour
-      real (kind=kind_rad) xlon(lonr,lats_node_r)
-      real (kind=kind_rad) xlat(lonr,lats_node_r)
-      real (kind=kind_rad) coszdg(lonr,lats_node_r),
-     &amp;                     hprime(lonr,nmtvr,lats_node_r),
-!    &amp;                     fluxr(lonr,nfxr,lats_node_r),
-     &amp;                     sfalb(lonr,lats_node_r)
-      real (kind=kind_rad) swh(lonr,levs,lats_node_r)
-      real (kind=kind_rad) hlw(lonr,levs,lats_node_r)
-!!
-      real  (kind=kind_phys)
-     &amp;     phy_f3d(lonr,levs,num_p3d,lats_node_r),
-     &amp;     phy_f2d(lonr,num_p2d,lats_node_r), fscav(ntrac-ncld-1)
 !
-!
       real (kind=kind_phys) exp,dtphys,dtp,dtf,sumed(2)
       real (kind=kind_evod) tstep
       real (kind=kind_phys) pdryini,sigshc,rk
 !!
-      integer              global_lats_r(latr)
-      integer                 lonsperlar(latr)
+      integer id,njeff,lon,kdt
       integer dimg
-cc
+   
       integer              i,ierr,iter,j,k,kap,kar,kat,kau,kav,ksq,jj,kk
       integer              kst,kdtphi,kdtlam                            ! hmhj
-      integer              l,lan,lan0,lat,lmax,locl,ii,lonrbm
+      integer              l,lan,lat,lmax,locl,ii,lonrbm
 !     integer              lon_dim,lons_lat,n,node
       integer                      lons_lat,n,node
       integer nsphys
@@ -130,23 +148,11 @@
      &amp;                     pwatp,ptotg(latr),sumwa,sumto,
      &amp;                     ptotj(lats_node_r),pcorr,pdryg,
      &amp;                     solhr,clstp
-cc
-      integer              ipt_ls                                       ! hmhj
-      real(kind=kind_evod) reall                                        ! hmhj

-       real(kind=kind_evod) typical_pgr
-c
-cc
-      integer              indlsev,jbasev,n0
-      integer              indlsod,jbasod
-cc
-      include 'function2'
-cc
       real(kind=kind_evod) cons0,cons2     !constant
-cc
+   
       logical lsout
       logical, parameter :: flipv = .true.
-cc
+   
 ! for nasa/nrl ozone production and distruction rates:(input through fixio)
       real ozplin(latsozp,levozp,pl_coeff,timeoz)
       integer jindx1(lats_node_r),jindx2(lats_node_r)!for ozone interpolaton
@@ -157,8 +163,6 @@
       real(kind=kind_phys), allocatable :: acv(:,:),acvb(:,:),acvt(:,:)
       save acv,acvb,acvt
 !!
-!     integer, parameter :: maxran=5000
-!     integer, parameter :: maxran=3000
       integer, parameter :: maxran=6000, maxsub=6, maxrs=maxran/maxsub
       type (random_stat) :: stat(maxrs)
       real (kind=kind_phys), allocatable, save :: rannum_tank(:,:,:)
@@ -170,7 +174,6 @@
       logical first,ladj
       parameter (ladj=.true.)
       data first/.true./
-!     save    krsize, first, nrnd,seed0
       save    first, seed0
 !!
       integer nlons_v(ngptc)
@@ -184,11 +187,10 @@
      &amp;,                    rannum_v(ngptc,nrcm)
       real(kind=kind_phys) sinlat_v(ngptc),coslat_v(ngptc)
      &amp;,                    ozplout_v(ngptc,levozp,pl_coeff)
-      real (kind=kind_rad) rqtk(ngptc), rcs2_lan, rcs_lan
-!     real (kind=kind_rad) rcs_v(ngptc), rqtk(ngptc), rcs2_lan
+      real (kind=kind_rad) rqtk(ngptc)
+!     real (kind=kind_rad) rcs_v(ngptc), rqtk(ngptc)
 !
 !--------------------------------------------------------------------
-!     print *,' in gloopb vertcoord_id =',vertcoord_id
 
 !     real(kind=kind_evod) sinlat_v(lonr),coslat_v(lonr),rcs2_v(lonr)
 !     real(kind=kind_phys) dpshc(lonr)
@@ -196,7 +198,6 @@
       parameter (qmin=1.0e-10)
       integer              ksd,ksplam,kspphi
       integer              ksu,ksv,ksz,item,jtem,ktem,ltem,mtem
-
 !
 !  ---  for debug test use
       real (kind=kind_phys) :: temlon, temlat, alon, alat
@@ -204,7 +205,6 @@
       logical :: lprnt
 !
 !
-!
 !----------------------
       if (first) then
 !----------------------
@@ -322,89 +322,61 @@
       pwatg = 0.
       ptotg = 0.
 
-
       do lan=1,lats_node_r
         lat = global_lats_r(ipt_lats_node_r-1+lan)
         lons_lat = lonsperlar(lat)
         pwatp    = 0.
-        rcs2_lan = rcs2_r(min(lat,latr-lat+1))
-        rcs_lan  = sqrt(rcs2_lan)
 
 !$omp parallel do  schedule(dynamic,1) private(lon)
 !$omp+private(sumq,xcp,hprime_v,swh_v,hlw_v,stc_v,smc_v,slc_v)
 !$omp+private(nlons_v,sinlat_v,coslat_v,ozplout_v,rannum_v)
 !$omp+private(prslk,prsl,prsik,prsi,phil,phii,dpshc,work1,tem)
-!$omp+private(gu,gv1,gd,gq,gphi,glam,gt,gtv,gr,vvel,gtvx,gtvy)
+!$omp+private(gu,gv1,gd,gq,gt,gtv,gr,vvel)
 !$omp+private(adt,adr,adu,adv,pgr,ugrd,vgrd,rqtk)
-!!$omp+private(adt,adr,adu,adv,pgr,rcs_v,ugrd,vgrd,rqtk)
 !$omp+private(phy_f3dv,phy_f2dv)
 !$omp+private(dt3dt_v,dq3dt_v,du3dt_v,dv3dt_v,upd_mf_v,dwn_mf_v)
 !$omp+private(det_mf_v,dkh_v,rnp_v)
 !$omp+private(njeff,item,jtem,ktem,i,j,k,n,kss)
-!!!$omp+private(temlon,temlat,lprnt,ipt)
+
         do lon=1,lons_lat,ngptc
 !!
           njeff = min(ngptc,lons_lat-lon+1)
 !!
 !     lprnt = .false.
-!
 
--------------------------------
-!---from MPAS
-          do k = 1, LEVS
-            do j = 1, njeff
-             jtem = lon-1+j
-             gu (j,k)  = 
-             gv1(j,k)  = 
-             gd (j,k)  =
-             gt (j,k) = gtv(j,k) / (1.0 + fv*max(gr(j,k,1),qmin))
-            enddo
+        do k=1,levs+1
+         do j=1,njeff
+            jtem = lon-1+j
+            prsi(j,k)  = mp_pi(jtem,k,lan) *1000.0     !from cb to Pa
+            prsik(j,k) = (1.e0-5*prsi(j,k))**con_rocp
+         enddo
+        enddo
+        do k=1,levs
+         do j=1,njeff
+          jtem = lon-1+j
+          vvel(j,k)  = mp_w(jtem,k,lan)  *1000.0       !from cb/s to pa/s
+          prsl(j,k)  = mp_pl(jtem,k,lan) *1000.0       !from cb to pa
+          prslk(j,k) = (1.0e-5*prsl(j,k))**con_rocp
+          ugrd(j,k)  = mp_u(jtem,k,lan)
+          vgrd(j,k)  = mp_v(jtem,k,lan)
+          gt(j,k)    = mp_t(jtem,k,lan)
+          gr(j,k,1)  = mp_q(jtem,k,lan)
+          do n=1,ntrac-1
+            gr(j,k,n+1) = mp_tr(jtem,k,n,lan)
           enddo
-!
-          do i=1,njeff
-            item = lon+i-1
-            gq(i)   = for_gr_r_2(item,ksq,lan)
-            gphi(i) = for_gr_r_2(item,kspphi,lan)
-            glam(i) = for_gr_r_2(item,ksplam,lan)
-          enddo
-!  Tracers
-          do n=1,ntrac
-            do k=1,levs
-              item = KSR-1+k+(n-1)*levs
-              do j=1,njeff
-                gr(j,k,n) = for_gr_r_2(lon-1+j,item,lan)
-              enddo
-            enddo
-          enddo
--------------------------------
+         enddo
+        enddo
 
-!
-!
-          do i=1,njeff
-            phil(i,levs) = 0.0 ! forces calculation of geopotential in gbphys
-            pgr(i)       = gq(i) * 1000.0  ! Convert from kPa to Pa for physics
-            prsi(i,1)    = pgr(i)
+         do i=1,njeff
+            phil(i,levs) = 0.0     ! forces calculation of geopotential in gbphys
+            pgr(i)       = prsi(i,1)    
             dpshc(i)     = 0.3  * prsi(i,1)
-!
             nlons_v(i)   = lons_lat
-            sinlat_v(i)  = sinlat_r(lat)
-            coslat_v(i)  = coslat_r(lat)
-!           rcs_v(i)     = sqrt(rcs2_lan)
-!           rcs_v(i)     = sqrt(rcs2_r(min(lat,latr-lat+1)))
+            sinlat_v(i)  = sinlat_r2(lon,lat)
+            coslat_v(i)  = coslat_r2(lon,lat)
           enddo
-          do k=1,levs
-            do i=1,njeff
-              ugrd(i,k)   = gu(i,k)     * rcs_lan
-              vgrd(i,k)   = gv1(i,k)    * rcs_lan
-!             ugrd(i,k)   = gu(i,k)     * rcs_v(i)
-!             vgrd(i,k)   = gv1(i,k)    * rcs_v(i)
-              prsl(i,k)   = prsl(i,k)   * 1000.0
-              prsi(i,k+1) = prsi(i,k+1) * 1000.0
-              vvel(i,k)   = vvel(i,k)   * 1000.0  ! Convert from Cb/s to Pa/s
-            enddo
-          enddo
 
-!??????????????????
+!
           if (gen_coord_hybrid .and. thermodyn_id == 3) then
             do i=1,ngptc
               prslk(i,1) = 0.0 ! forces calculation of geopotential in gbphys
@@ -610,11 +582,33 @@
      &amp;      nst_fld%c_0 (lon,lan),       nst_fld%c_d(lon,lan),          &amp;
      &amp;      nst_fld%w_0 (lon,lan),       nst_fld%w_d(lon,lan),          &amp;
      &amp;      rqtk                                                        &amp;! rqtkD
-!    &amp;      bak_gr_r_2(lon,kap,lan),                                    &amp;! rqtkD
      &amp;      )
 !!
 !!
             prsi  = prsi * 0.001                 ! Convert from Pa to kPa
+
+!---prepare output
+        do k=1,levs+1
+         do j=1,njeff
+            jtem = lon-1+j
+            mp_pi(jtem,k,lan)=0.001*prsi(j,k)     !convert from pa to cb
+         enddo
+        enddo
+        do k=1,levs
+         do j=1,njeff
+          jtem = lon-1+j
+          mp_w(jtem,k,lan)  = 0.001*vvel(j,k)         !from pa/s to cb/s
+          mp_pl(jtem,k,lan) = 0.001*prsl(j,k)        !convert from pa to cb
+          mp_u(jtem,k,lan)  = ugrd(j,k)          
+          mp_v(jtem,k,lan)  = vgrd(j,k)         
+          mp_t(jtem,k,lan)  = gt(j,k)         
+          mp_q(jtem,k,lan)  = gr(j,k,1)               !specific humidity         
+          do n=1,ntrac-1
+            mp_tr(jtem,k,n,lan) = gr(j,k,n+1) 
+          enddo
+         enddo
+        enddo
+
             do k=1,lsoil
               do i=1,njeff
                 item = lon + i - 1
@@ -684,43 +678,19 @@
 !---------------------------
 !
 !
-        ptotj(lan) = 0.
-        do j=1,lons_lat
-          ptotj(lan) = ptotj(lan) + gq_save(j,lan)
-          pwatp      = pwatp + flx_fld%pwat(j,lan)
+!       ptotj(lan) = 0.
+!       do j=1,lons_lat
+!         ptotj(lan) = ptotj(lan) + gq_save(j,lan)
+!         pwatp      = pwatp + flx_fld%pwat(j,lan)
 !     print *,' kdt=',kdt,' pwatp=',pwatp,' pwat=',flx_fld%pwat(j,lan)
 !    &amp;,' j=',j
-        enddo
-        pwatj(lan) = pwatp*grav/(2.*lonsperlar(lat)*1.e3)
-        ptotj(lan) = ptotj(lan)/(2.*lonsperlar(lat))
+!       enddo
+!       pwatj(lan) = pwatp*grav/(2.*lonsperlar(lat)*1.e3)
+!       ptotj(lan) = ptotj(lan)/(2.*lonsperlar(lat))
 
 !---------------------------
       enddo   ! lan loop
 !---------------------------
-!!
-!
-!!?????????????????????????????????????????????????
-      call excha(lats_nodes_r,global_lats_r,ptotj,pwatj,ptotg,pwatg)
-      sumwa = 0.
-      sumto = 0.
-      do lat=1,latr
-         sumto = sumto + wgt_r(min(lat,latr-lat+1))*ptotg(lat)
-         sumwa = sumwa + wgt_r(min(lat,latr-lat+1))*pwatg(lat)
-!     print *,' kdt=',kdt,' lat=',lat,' sumwa=',sumwa,' sumto=',sumto,
-!    &amp;' ptotg=',ptotg(lat),' pwatg=',pwatg(lat)
-      enddo
-cjfe
-cjfe  write(70+me,*) sumto,sumwa,kdt
-      pdryg = sumto - sumwa
-!!
-      if(pdryini == 0.) pdryini = pdryg
 
-      if( gen_coord_hybrid ) then                               ! hmhj
-        pcorr = (pdryini-pdryg)         * sqrt(2.)              ! hmhj
-      else                                                      ! hmhj
-        pcorr = (pdryini-pdryg) / sumto * sqrt(2.)
-      endif                                                     ! hmhj
-!!?????????????????????????????????????????????????
-
       return
       end

Modified: branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/gloopr.f
===================================================================
--- branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/gloopr.f        2012-05-10 01:07:10 UTC (rev 1885)
+++ branches/atmos_physics_gfs/src/core_atmos_physics_gfs/physics_gfs/gloopr.f        2012-05-10 06:06:21 UTC (rev 1886)
@@ -9,7 +9,7 @@
      &amp;  alvsf, alnsf, alvwf, alnwf, facsf, facwf,   
      &amp;  cv, cvt, cvb, fice, tisfc, sncovr, snoalb,
      &amp;  hprime,phy_f3d,
-     &amp;  prsi,prsl,gt,gr,gr1,vvel,
+     &amp;  mp_pi,mp_pl,mp_t,mp_q,mp_w,mp_tr,
 !--in and out
      &amp;  fluxr,
 !--output
@@ -57,16 +57,19 @@
      &amp;                    hprime(lonr,nmtvr,lats_node_r), phour,        &amp;
      &amp;                    phy_f3d(lonr,levs,num_p3d,lats_node_r)
 
-! --prsi  : model level pressure in centipar    
-! --prsl  : model layer mean pressure in centibar   
-! --gt    : model layer mean temperature in k
-! --gr    : layer specific humidity in gm/gm
-! --gr1   : layer tracer (ozne and cloud water) mass mixing ratio
-! --vvel  : layer mean vertical velocity in centibar/sec     
+! --mp_pi : model interface level pressure in centibar
+! --mp_pl : model integer layer pressure in centibar
+! --mp_w  : model layer vertical velocity in centibar/sec
+! --mp_t  : model layer temperature in K
+! --mp_q  : model layer specific humidity in gm/gm
+! --mp_tr : model layer tracer (ozne and cloud water) mass mixing ratio
       real (kind=kind_phys), intent(in) ::                            
-     &amp;   prsi(lonr,levp1,lats_node_r),prsl(lonr,levs,lats_node_r),      &amp;
-     &amp;   gt(lonr,levs,lats_node_r),gr(lonr,levs,lats_node_r),           &amp;
-     &amp;   gr1(lonr,levs,ntrac-1,lats_node_r),vvel(lonr,levs,lats_node_r)
+     &amp;   mp_pi(lonr,levp1,lats_node_r) ,
+     &amp;   mp_pl(lonr,levs,lats_node_r) ,
+     &amp;   mp_t(lonr,levs,lats_node_r) ,
+     &amp;   mp_w(lonr,levs,lats_node_r) ,
+     &amp;   mp_q(lonr,levs,lats_node_r) ,
+     &amp;   mp_tr(lonr,levs,ntrac-1,lats_node_r) 
 
 !
 !  --- ...  input and output:
@@ -88,7 +91,17 @@
 !!   &amp;                 htrlwb(NGPTC,LEVS,NBDLW,NBLCK,LATS_NODE_R)
 
 !  --- ...  locals:
-      real(kind=kind_phys) :: prslk(lonr,levs,lats_node_r)  
+! --prsi  : model level pressure in centipar    
+! --prsl  : model layer mean pressure in centibar   
+! --gt    : model layer mean temperature in k
+! --gr    : layer specific humidity in gm/gm
+! --gr1   : layer tracer (ozne and cloud water) mass mixing ratio
+! --vvel  : layer mean vertical velocity in centibar/sec     
+      real (kind=kind_phys) ::  prsi(NGPTC,levp1),prsl(NGPTC,levs),     &amp;
+     &amp;                          prslk(NGPTC,levs),gt(NGPTC,levs),       &amp;
+     &amp;                          gr(NGPTC,levs),vvel(NGPTC,levs),        &amp;
+     &amp;                          gr1(NGPTC,levs,ntrac-1)
+
       real(kind=kind_phys) :: hlw_v(NGPTC,LEVS), swh_v(NGPTC,LEVS)
 
       real (kind=kind_phys) :: si_loc(LEVR+1)
@@ -268,7 +281,7 @@
 !
 !--a reference sigma for radiation initilization, k from surfce to top
          do k = 1, levr+1
-           si_loc(k) = prsi(1,k,1)/prsi(1,1,1)
+           si_loc(k) = mp_pi(1,k,1)/mp_pi(1,1,1)
          enddo
 
 !  --- determin prognostic/diagnostic cloud scheme
@@ -354,19 +367,12 @@
         lat = global_lats_r(ipt_lats_node_r-1+j)
         lons_lat = lonsperlar(lan)
 
-!  ---  vertical structure variable prslk 
-!       and minimum water vapor mixing ratio 
-        do k=1,levr 
-        do i=1,lons_lat
-          prslk(i,k,lan) = (0.01*prsl(i,k,lan))**con_rocp
-!!        gr(i,k,lan) = max(qmin,gr(i,k,lan))
-        enddo
-        enddo
 
 !!
 !$omp parallel do schedule(dynamic,1) private(lon,i,j,k)
+!$omp+private(vvel,gt,gr,gr1)
 !$omp+private(cldcov_v,fluxr_v,f_ice,f_rain,r_rime)
-!$omp+private(flgmin_v,hlw_v,swh_v)
+!$omp+private(prslk,prsl,prsik,prsi,flgmin_v,hlw_v,swh_v)
 !$omp+private(njeff,n,item,jtem,ks,work1,work2)
 !$omp+private(icsdsw,icsdlw)
 !$omp+private(lprnt,ipt)
@@ -377,6 +383,26 @@
         lprnt = .false.
         ipt=lon   !diagnostic printout point
 !
+        do k=1,levr+1  
+         do j=1,njeff
+            jtem = lon-1+j
+            prsi(j,k)=mp_pi(jtem,k,lan) 
+         enddo
+        enddo
+        do k=1,levr 
+         do j=1,njeff
+          jtem = lon-1+j
+          prsl(j,k)=mp_pl(jtem,k,lan) 
+          gt(j,k)=mp_t(jtem,k,lan) 
+          gr(j,k)=mp_q(jtem,k,lan) 
+          vvel(j,k)=mp_w(jtem,k,lan) 
+          prslk(j,k) = (0.01*prsl(j,k))**con_rocp
+          do n=1,ntrac-1
+            gr1(j,k,n)=mp_tr(jtem,k,n,lan)
+          enddo
+         enddo
+        enddo
+
         do k=1,nfxr
            do j=1,njeff
              fluxr_v(j,k) = fluxr(lon+j-1,k,lan)
@@ -419,9 +445,7 @@
 !
           call grrad                                                    &amp;
 !  ---  inputs:
-     &amp;     ( prsi(lon,1,lan),prsl(lon,1,lan),prslk(lon,1,lan),          &amp;
-     &amp;       gt(lon,1,lan),gr(lon,1,lan),gr1(lon,1,lan,1),              &amp;
-     &amp;       vvel(lon,1,lan),slmsk(lon,lan),                            &amp;
+     &amp;     ( prsi,prsl,prslk,gt,gr,gr1,vvel,slmsk(lon,lan),             &amp;
      &amp;       xlon(lon,lan),xlat(lon,lan),tsea(lon,lan),                 &amp;
      &amp;       sheleg(lon,lan),sncovr(lon,lan),snoalb(lon,lan),           &amp;
      &amp;       zorl(lon,lan),hprime(lon,1,lan),                           &amp;

</font>
</pre>