subroutine gch2press(njeff,nsize_ar,pgr,thgr,prsl,dprs)
!
! hmhj : this is modified hybrid by finite difference from henry juang
!        thgr can be t or h
! 2011 02 20 : henry jaung, add options for NDSL
!
 
      use gfs_dyn_machine , only : kind_grid
 
      use gfs_dyn_resol_def
      use namelist_dynamics_def
      use gfs_dyn_vert_def
      use gfs_dyn_coordinate_def
      use gfs_dyn_physcons, cp => con_cp , rd => con_rd, rk => con_rocp
      implicit none

      real(kind=kind_grid), parameter :: PT01=0.01, rkappa = cp / rd
      real(kind=kind_grid) prsl(nsize_ar,levs)
      real(kind=kind_grid) dprs(nsize_ar,levs)
      real(kind=kind_grid) pgr(nsize_ar)
      real(kind=kind_grid) thgr(nsize_ar,levs)

      real(kind=kind_grid) ppi(njeff,levs+1)
      real(kind=kind_grid) tki(njeff,levs+1)
      real(kind=kind_grid) tkrt0
 
      logical adjusted
      integer njeff,nsize_ar
      integer i,k
      real dpp,dpfact,pl,ph,pp
      integer kl,kh,kk,kl1,kh1
 
!     print *,' enter  gch2press '

      tki = 0.0
      do k=2,levs
        do i=1,njeff
          tkrt0 = (thgr(i,k-1)+thgr(i,k))/(thref(k-1)+thref(k))
          tki (i,k)=ck5(k)*tkrt0**rkappa
        enddo
      enddo
      do k=1,levp1
        do i=1,njeff
          ppi(i,k)  = ak5(k)+bk5(k)*pgr(i)+tki(i,k)
        enddo
      enddo
!
      do k=1,levs
        do i=1,njeff
          prsl(i,k) = (ppi(i,k)+ppi(i,k+1))*0.5
          dprs(i,k) = (ppi(i,k)-ppi(i,k+1))
        enddo
      enddo

!     print *,' leave gch2press. '

      return
      end