Changes: 2.2.1#
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. 
Vec:
- VecSetStashInitialSize() -> VecStashSetInitialSize() 
- VecConvertMPIToAll() and VecConvertMPIToZero() have been replaced with VecScatterCreateToAll() and VecScatterCreateToZero() 
IS:
- ISSum() now has a throughput argument instead of one in and one output. 
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() 
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 
KSP:
- Note that a relative residual tolerance now means that ||r_k|| < tol*||b|| 
- Removed KSPSetRhs() and KSPSetSolution(), pass 
- Added KSPSetNullSpace(), KSPGetNullSpace() 
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) 
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 
SNES:
- Added -snes_converged_reason 
- Added SNESSetRhs(snes,rhs) to allow for solving F(x) = rhs 
TS:
DMMG:
- Added DMMGSetNullSpace() 
SYS:
Fortran:
ExternalPackages: