      subroutine intplz (zlog)
*
*  interpolate grid for log(Z/0.02) = zlog, and store in common /evgrid/
*
      implicit real*8 (a-h,l,m,o-z)
      parameter (ndmz=500,ndmg=30,ndt=200,ndz=7)
*
      integer ntgg(ndmg,ndz)
      real*8 zlgg(ndz), mlzg(ndmz), lumzg(ndmz,ndz), tefzg(ndmz,ndz)
      real*8 mlgg(ndmg,ndz), lumgg(ndt,ndmg,ndz), tefgg(ndt,ndmg,ndz)
      real*8 ajgg(ndt,ndmg,ndz)
      common /evzgrd/ zlgg, mlzg, lumzg, tefzg, mlgg, lumgg, tefgg,
     &     ajgg, ntgg, nmzg, nmgg, nz
*
      integer ntg(ndmg)
      real*8 mlz(ndmz), lumz(ndmz), tefz(ndmz)
      real*8 mlg(ndmg), lumg(ndt,ndmg), tefg(ndt,ndmg), ajg(ndt,ndmg)
      common /evgrid/ mlz, lumz, tefz, mlg, lumg, tefg, ajg, ntg, nmz,
     &     nmg
*
      kz = indx(zlog,zlgg,nz)
      dzh = (zlog - zlgg(kz-1))/(zlgg(kz) - zlgg(kz-1))
      dzl = 1.0 - dzh
      do j = 1, ndmg
         ntg(j) = min(ntgg(j,kz), ntgg(j,kz-1))
         mlg(j) = dzh*mlgg(j,kz) + dzl*mlgg(j,kz-1)
         do i = 1, ndt
            lumg(i,j) = dzh*lumgg(i,j,kz) + dzl*lumgg(i,j,kz-1)
            tefg(i,j) = dzh*tefgg(i,j,kz) + dzl*tefgg(i,j,kz-1)
            ajg(i,j) = ajgg(i,j,kz)**dzh * ajgg(i,j,kz-1)**dzl
         end do
      end do
      do i = 1, ndmz
         mlz(i) = mlzg(i)
         lumz(i) = dzh*lumzg(i,kz) + dzl*lumzg(i,kz-1)
         tefz(i) = dzh*tefzg(i,kz) + dzl*tefzg(i,kz-1)
      end do
      nmg = nmgg
      nmz = nmzg
*
      return
      end
