1# Changes: 2.2.1 2 3```{rubric} General: 4``` 5 6- Introduced 4 new PETSc data types: PetscInt, PetscErrorCode, 7 PetscMPIInt and PetscBLASInt. For 99% of users these are just int 8 or integer\*4 and you do **not** need to change your code. 9- For users with more than roughly 2 billion unknowns you can run 10 configure with --with-64-bit-ints and then PetscInt will represent 11 64 bit integers, long long int in C and integer\*8 in Fortran. But 12 the the other 3 types remain 32 bit (i.e. int in C and integer\*4 13 in Fortran). Now you can index into vectors and matrices with 14 virtually unlimited sizes. 15 16```{rubric} Vec: 17``` 18 19- VecSetStashInitialSize() -> VecStashSetInitialSize() 20- VecConvertMPIToAll() and VecConvertMPIToZero() have been replaced 21 with VecScatterCreateToAll() and VecScatterCreateToZero() 22 23```{rubric} IS: 24``` 25 26- ISSum() now has a throughput argument instead of one in and one 27 output. 28 29```{rubric} Mat: 30``` 31 32- MatSetStashInitialSize() -> MatStashSetInitialSize() 33- added MatFactorInfoInitialize() 34- added MatStashGetInfo() 35- added MatGetVecs() 36- added MatIsSymmetric(), MatIsTranspose() now take a tolerance flag 37 for equality (use 0.0 for identical) 38- added MatMPIAIJSetPreallocationCSR() and 39 MatMPIBAIJSetPreallocationCSR() 40 41```{rubric} PC: 42``` 43 44- ICC now uses Manteuffel shift by default 45- If matrix is symmetric, PC defaults to ICC when possible, if you 46 told with MatSetOption(mat,MAT_SYMMETRIC) 47- PCSetVector() is gone (no longer needed) 48- PCNullSpaceAttach() is gone, use KSPSetNullSpace() 49- MatGetSubmatrices() now preserves symmetric flag of original 50 matrix 51- hypre BoomerAMG (-pc_type hypre -pc_hypre_type boomeramg) now uses 52 one 1 cycle of multigrid as preconditioner (Previously it used 53 either a decrease in residual of 10^-7 or a maximum of 20 54 iterations 55 56```{rubric} KSP: 57``` 58 59- Note that a relative residual tolerance now means that ||r_k|| \< 60 tol\*||b|| 61- Removed KSPSetRhs() and KSPSetSolution(), pass 62- Added KSPSetNullSpace(), KSPGetNullSpace() 63 64```{rubric} DA: 65``` 66 67- Added DAGetGhostedCoordinates() and DAGetCoordinateDA() (see 68 src/dm/da/examples/tutorials/ex3.c) 69- Added DACoor2d and DACoor3d (see 70 src/dm/da/examples/tutorials/ex3.c) 71- DAGetInterpolation() now provides the correct interpolation for 72 nonuniform grids using the coordinate information provided with 73 DASetCoordinates(). (see src/dm/da/examples/tutorials/ex3.c) 74 75```{rubric} config/configure.py: 76``` 77 78- --with-c/f-blas-lapack -> --download-c/f-blas-lapack=yes 79- --with-c/f-blas-lapack-if-needed -> 80 --download-c/f-blas-lapack=ifneeded 81- added --download-mpich=yes,no,ifneeded 82- added --download-mpich-device= 83- added --download-mpich-machines=[machines] 84- added configure including download support for hypre, parmetis 85- added configure support (without download) to Mumps, UMF, 86 Superlu,SuperLU_dist,DSCPACK 87- Made configure much more robust 88 89```{rubric} SNES: 90``` 91 92- Added -snes_converged_reason 93- Added SNESSetRhs(snes,rhs) to allow for solving F(x) = rhs 94 95```{rubric} TS: 96``` 97 98```{rubric} DMMG: 99``` 100 101- Added DMMGSetNullSpace() 102 103```{rubric} SYS: 104``` 105 106```{rubric} Fortran: 107``` 108 109```{rubric} ExternalPackages: 110``` 111