anchor.diff:       integer :: hi = -1
        integer :: nx = -1
        integer :: ng = -1
  +
        real (kind=dp_t) :: xmin, xmax, dx
  +
  +     ! geometry: 0 = Cartesian; 1 = spherical
  +     integer :: geometry = 0
  +
        real (kind=dp_t), pointer :: x(:) => Null()
        real (kind=dp_t), pointer :: xl(:) => Null()
        real (kind=dp_t), pointer :: xr(:) => Null()  
  +
  +     real (kind=dp_t), pointer :: Al(:) => Null()
  +     real (kind=dp_t), pointer :: Ar(:) => Null()
  +
  +     real (kind=dp_t), pointer :: V(:) => Null()
  +
        character (len=32) :: xlboundary
        character (len=32) :: xrboundary
  +
     end type grid_t
   
     ! the datatype for a variable that lives in a zone on the grid 
  
positive.code:   use datatypes_module
  
    implicit none
  
    ! the datatype for the grid coordinate information
    type grid_t 
  
negative.code:        grid%x(i) = 0.5_dp_t*(grid%xl(i) + grid%xr(i))
      enddo
  
      do i = grid%lo-ng, grid%hi+ng
         grid%Al(i) = 4.0_dp_t*pi*grid%xl(i)**2
         grid%Ar(i) = 4.0_dp_t*pi*grid%xr(i)**2
         
         grid%V(i) = (4.0_dp_t*pi/3.0_dp_t)* &
              (grid%xr(i)**2 + grid%xl(i)*grid%xr(i) + grid%xl(i)**2)*grid%dx
  
      enddo
  
    end subroutine build_grid
  
  
  