==============
Changes: 2.2.1
==============


.. rubric:: General:

-  Introduced 4 new PETSc data types: PetscInt, PetscErrorCode,
   PetscMPIInt and PetscBLASInt. For 99% of users these are just int
   or integer*4 and you do **not** need to change your code.
-  For users with more than roughly 2 billion unknowns you can run
   configure with --with-64-bit-ints and then PetscInt will represent
   64 bit integers, long long int in C and integer*8 in Fortran. But
   the the other 3 types remain 32 bit (i.e. int in C and integer*4
   in Fortran). Now you can index into vectors and matrices with
   virtually unlimited sizes.

.. rubric:: Vec:

-  VecSetStashInitialSize() -> VecStashSetInitialSize()
-  VecConvertMPIToAll() and VecConvertMPIToZero() have been replaced
   with VecScatterCreateToAll() and VecScatterCreateToZero()

.. rubric:: IS:

-  ISSum() now has a throughput argument instead of one in and one
   output.

.. rubric:: Mat:

-  MatSetStashInitialSize() -> MatStashSetInitialSize()
-  added MatFactorInfoInitialize()
-  added MatStashGetInfo()
-  added MatGetVecs()
-  added MatIsSymmetric(), MatIsTranspose() now take a tolerance flag
   for equality (use 0.0 for identical)
-  added MatMPIAIJSetPreallocationCSR() and
   MatMPIBAIJSetPreallocationCSR()

.. rubric:: PC:

-  ICC now uses Manteuffel shift by default
-  If matrix is symmetric, PC defaults to ICC when possible, if you
   told with MatSetOption(mat,MAT_SYMMETRIC)
-  PCSetVector() is gone (no longer needed)
-  PCNullSpaceAttach() is gone, use KSPSetNullSpace()
-  MatGetSubmatrices() now preserves symmetric flag of original
   matrix
-  hypre BoomerAMG (-pc_type hypre -pc_hypre_type boomeramg) now uses
   one 1 cycle of multigrid as preconditioner (Previously it used
   either a decrease in residual of 10^-7 or a maximum of 20
   iterations

.. rubric:: KSP:

-  Note that a relative residual tolerance now means that \||r_k|\| <
   tol*||b|\|
-  Removed KSPSetRhs() and KSPSetSolution(), pass
-  Added KSPSetNullSpace(), KSPGetNullSpace()

.. rubric:: DA:

-  Added DAGetGhostedCoordinates() and DAGetCoordinateDA() (see
   src/dm/da/examples/tutorials/ex3.c)
-  Added DACoor2d and DACoor3d (see
   src/dm/da/examples/tutorials/ex3.c)
-  DAGetInterpolation() now provides the correct interpolation for
   nonuniform grids using the coordinate information provided with
   DASetCoordinates(). (see src/dm/da/examples/tutorials/ex3.c)

.. rubric:: config/configure.py:

-  --with-c/f-blas-lapack -> --download-c/f-blas-lapack=yes
-  --with-c/f-blas-lapack-if-needed ->
   --download-c/f-blas-lapack=ifneeded
-  added --download-mpich=yes,no,ifneeded
-  added --download-mpich-device=
-  added --download-mpich-machines=[machines]
-  added configure including download support for hypre, parmetis
-  added configure support (without download) to Mumps, UMF,
   Superlu,SuperLU_dist,DSCPACK
-  Made configure much more robust

.. rubric:: SNES:

-  Added -snes_converged_reason
-  Added SNESSetRhs(snes,rhs) to allow for solving F(x) = rhs

.. rubric:: TS:

.. rubric:: DMMG:

-  Added DMMGSetNullSpace()

.. rubric:: SYS:

.. rubric:: Fortran:

.. rubric:: ExternalPackages:
