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