anchor.diff:  
     call HYPRE_StructVectorAssemble(hypre_x, ierr)
   
  -  ! do i = 1, nx !0, num_procs-1
  -  !   do j = 1, ny
  -  !   temp(1) = i
  -  !   temp(2) = j
  -  !   ! call HYPRE_StructVectorSetBoxValues(hypre_b, & 
  -  !   !   ilower(i,:), iupper(i,:), values, ierr)
  -
  -  !   call HYPRE_StructVectorSetValues(hypre_b, & 
  -  !     temp, etastar(i,j), ierr)
  -  ! end do
  -  ! end do
  -
  -
  -  ! do i = 1, nx !0, num_procs-1
  -  !   do j = 1, ny
  -  !   temp(1) = i
  -  !   temp(2) = j
  -  !   ! call HYPRE_StructVectorSetBoxValues(hypre_b, & 
  -  !   !   ilower(i,:), iupper(i,:), values, ierr)
  -
  -  !   call HYPRE_StructVectorSetValues(hypre_x, & 
  -  !     temp, etastar(i,j), ierr)
  -  ! end do
  -  ! end do
  -  
  -
  -  ! set initial values for vector x
  -  ! we're using the recently calculated etastar 
  -  ! as a first guess
  -  ! if (myid .eq. 0) then
  -  ! do i = 1, nx ! loop over every grid point
  -  !   do j = 1, ny
  -  ! ! the 2D array is being laid out like
  -  ! ! [x1y1, x1y2, x1y3, x2y1, x2y2, x2y3, x3y1, x3y2, x3y3]
  -  !   values( ((i-1)*ny + j) )    = etastar(i,j)
  -  !   end do
  -  ! end do
  -  ! end if
  -
  -  ! do i = 0, num_procs-1
  -  !   call HYPRE_StructVectorSetValues(hypre_x, & 
  -  !     ilower(i,:), iupper(i,:), values, ierr)
  -  ! end do
  -  ! temp = 0d0
  -  ! do i = 0, num_procs-1
  -  !    call HYPRE_StructVectorSetBoxValues(hypre_x, & 
  -  !      ilower(i,:), iupper(i,:), temp, ierr)
  -  ! end do
  -
  -  ! do i = 1, nx !0, num_procs-1
  -  !   do j = 1, ny
  -  !   temp(1) = i
  -  !   temp(2) = j
  -
  -  !   call HYPRE_StructVectorSetValues(hypre_x, & 
  -  !     temp, etastar(i,j), ierr)
  -  ! end do
  -  ! end do
  -
  -  ! call HYPRE_StructVectorAssemble(hypre_x, ierr)
  -
  -  ! now create the solver and solve the equation.
  +    ! now create the solver and solve the equation.
     ! Choose the solver
     call HYPRE_StructPCGCreate(MPI_COMM_WORLD, hypre_solver, ierr)
  -
   
     ! Set some parameters
     call HYPRE_StructPCGSetMaxIter(hypre_solver, maxits, ierr)
  
positive.code:           g_vec, nx, ny, layers, n, &
            MPI_COMM_WORLD, myid, num_procs, ilower, iupper, &
            hypre_grid, hypre_A, ierr)
            ! , &
            ! MPI_COMM_WORLD, num_procs, ilower, iupper, &
            ! hypre_grid, hypre_A, hypre_b, hypre_x)
  
      end if
  
  
negative.code: 
    call HYPRE_StructVectorAssemble(hypre_b, ierr)
  
    ! now create the x vector
    call HYPRE_StructVectorCreate(MPI_COMM_WORLD, hypre_grid, hypre_x, ierr)
    call HYPRE_StructVectorInitialize(hypre_x, ierr)
  
  