anchor.diff:    call HYPRE_ParCSRPCGSetMaxIter(hypre_solver, maxits, ierr)
     call HYPRE_ParCSRPCGSetTol(hypre_solver, eps, ierr)
     ! other options not explained by user manual but present in examples
  -  ! call HYPRE_ParCSRPCGSetTwoNorm(hypre_solver, 1, ierr)
  -  ! call HYPRE_ParCSRPCGSetPrintLevel(hypre_solver, 2, ierr)
  -  ! call HYPRE_ParCSRPCGSetLogging(hypre_solver, 1, ierr)
  +  call HYPRE_ParCSRPCGSetTwoNorm(hypre_solver, 1, ierr)
  +  call HYPRE_ParCSRPCGSetPrintLevel(hypre_solver, 2, ierr)
  +  call HYPRE_ParCSRPCGSetLogging(hypre_solver, 1, ierr)
   
     ! use an algebraic multigrid preconditioner
     call HYPRE_BoomerAMGCreate(precond, ierr)
  
positive.code:   !
    ! ------------------------- negative 2 time step --------------------------
    ! Code to work out dhdtveryold, dudtveryold and dvdtveryold
  
    call state_derivative(dhdtveryold, dudtveryold, dvdtveryold, &
        h, u, v, depth, &
  
negative.code:     spongeHTimeScale, spongeUTimeScale, spongeVTimeScale, &
      spongeH, spongeU, spongeV, &
      nx, ny, layers, RedGrav, DumpWind, &
      MPI_COMM_WORLD, myid, num_procs, ilower, iupper, &
      hypre_grid)
    implicit none
  
  