xref: /petsc/doc/changes/221.md (revision 174dc0c8cee294b82b85e4dd3b331b29396264fc)
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