!
!  the common block grddsc contains basic variable descriptions
!  the descriptions define:
!
!  stg*(*,*) -- grid staggering in the i'th coordinate direction
!            stg** -- ** denotes the 2-d or 3-d variable
!            (i,j) -- i denotes the i'th coordinate direction,
!                     and j denotes the variable number
!                     for the particular variable type
!                     xy, xz, yz, or xyz (see grid.h).
!                     staggering is in multiples of grid spacing.
!
!  idm*(*,*) -- storage similar to stg, the dimension of the
!            array for the variable will be n* - idm*(*,*).
!            we use arrays of all the same size, hence there is
!            some wasted space and this defines the true array
!            bounds
!
!  ipk*(*)   -- packing factor for storing grid data, storage
!            similar to stg*.
!
!  ini*(*,*) -- defines how to initialize arrays, (1,*) means
!            initialize, (2,*) is the other vector (see iup below)
!            (3,*) is the fields at dt earlier.
!
!  iup*(*,*) -- information on wether or not to update fields
!            in solution process.  if (1,*) is zero, no update.
!            if 1, update.  if (2,*) is nonzero, this is the
!            other component of this vector field and if it is
!            a negative number that means that this other
!            component is the first component (by righthand rule)
!
!  ibd*(*,*) -- information on wether or not to interpolate inner
!            grid boundary info to this field if necessary.
!            storage as in iup*(*,*)
!  ip*       -- contains pointers into the main storage array a
!            for the various grid fields and constants.
!            initialized in setstr.
!

  REAL :: stgxy(2,nxy2d  + 1),  stgxz(2,nxz2d  + 1),                    &
                    stgyz(2,nyz2d  + 1), stgxyz(3,nxyz3d + 1),          &
                    stgexbc(3,nexbc3d+ 1)

  INTEGER :: idmxy(2,nxy2d  + 1),  idmxz(2,nxz2d  + 1),                 &
                    idmyz(2,nyz2d  + 1), idmxyz(3,nxyz3d + 1),          &
                    idmexbc(3,nexbc3d+ 1),                              &
                    ipkxy(  nxy2d  + 1),  ipkxz(  nxz2d  + 1),          &
                    ipkyz(  nyz2d  + 1), ipkxyz(  nxyz3d + 1),          &
                    ipkexbc(nexbc3d+ 1),                                &
                    inixy(3,nxy2d  + 1),  inixz(3,nxz2d  + 1),          &
                    iniyz(3,nyz2d  + 1), inixyz(3,nxyz3d + 1),          &
                    iniexbc(3,nexbc3d+ 1),                              &
                    iupxy(2,nxy2d  + 1),  iupxz(2,nxz2d  + 1),          &
                    iupyz(2,nyz2d  + 1), iupxyz(2,nxyz3d + 1),          &
                    iupexbc(2,nexbc3d+ 1),                              &
                    ibdxy(3,nxy2d  + 1),  ibdxz(3,nxz2d  + 1),          &
                    ibdyz(3,nyz2d  + 1), ibdxyz(3,nxyz3d + 1),          &
                    ibdexbc(3,nexbc3d+ 1)

  COMMON / grddsc / stgxy,  stgxz, stgyz, stgxyz, stgexbc,              &
                    idmxy,  idmxz, idmyz, idmxyz, idmexbc,              &
                    ipkxy,  ipkxz, ipkyz, ipkxyz, ipkexbc,              &
                    inixy,  inixz, iniyz, inixyz, iniexbc,              &
                    iupxy,  iupxz, iupyz, iupxyz, iupexbc,              &
                    ibdxy,  ibdxz, ibdyz, ibdxyz, ibdexbc
!
!
!
!  this common area contains the pointers into storage for the
!  the grids
!
  INTEGER :: ipint(         30), ipreal(      30),  ips1d(         30), &
             ipx(           30), ipy(         30),  ipz(           30), &
             ipxy(nxy2d+1,  30), ipxz(nxz2d+1,30),  ipyz(nyz2d+1,  30), &
             ipxyz(nxyz3d+1,30), ipexbc(nexbc3d+1,30)

  COMMON / pntstr / ipint,ipreal,ips1d,                                 &
                    ipx,ipy,ipz,ipxy,ipxz,ipyz,ipxyz,ipexbc
!
!  next is a logical for a non-run storage check, (not used presently)
!
  LOGICAL :: checks
  COMMON /checkcm/ checks