subroutine gengrid4d_byte_lld_ti_li(idata, Xmin, Ymin, Xmax, Ymax, res)
type (nc4d_byte_lld_ti_li) :: idata
integer(kind=intgr) :: i
integer(kind=intgr), dimension(4) :: dimsizes, ids
character(len=100), dimension(4) :: dimnames, dimunits
real(kind=double) :: Xmin, Ymin, Xmax, Ymax, res
idata%nlons = int(abs(ceiling(Xmax - Xmin)/res))
idata%nlats = int(abs(ceiling(Ymax - Ymin)/res))
allocate(idata%dimunits(idata%ndims))
allocate(idata%dimname(idata%ndims))
allocate(idata%dimid(idata%ndims))
allocate(idata%dimsize(idata%ndims))
allocate(idata%varids(idata%ndims))
allocate(idata%longitudes(idata%nlons))
allocate(idata%latitudes(idata%nlats))
allocate(idata%times(idata%ntimes))
allocate(idata%levels(idata%nlevels))
ids = (/ 4, 3, 2, 1 /)
dimsizes = (/ idata%ntimes, idata%nlevels, idata%nlats, idata%nlons /)
dimnames = (/ idata%timename, idata%levelname, idata%latname, idata%lonname /)
dimunits = (/ idata%timeunits, idata%levelunits, idata%latunits, idata%lonunits /)
do i = 1, idata%ndims
idata%dimsize(i) = dimsizes(i)
idata%dimname(i) = dimnames(i)
idata%dimunits(i) = dimunits(i)
idata%dimid(i) = ids(i)
idata%varids(i) = ids(i) + 10
idata%dims(i) = ids(i)
end do
allocate(idata%ncdata(idata%dimsize(4), idata%dimsize(3), idata%dimsize(2), idata%dimsize(1)))
idata%vartype = nf90_byte
do i = 1, idata%ntimes
idata%times(i) = i
end do
do i = 1, idata%nlevels
idata%levels(i) = i
end do
idata%longitudes(1) = Xmin
do i = 1, idata%nlons - 1
idata%longitudes(i+1) = idata%longitudes(i) + res
end do
idata%latitudes(1) = Ymin
do i = 1, idata%nlats - 1
idata%latitudes(i+1) = idata%latitudes(i) + res
end do
idata%ncdata = idata%FillValue
end subroutine gengrid4d_byte_lld_ti_li