xref: /petsc/doc/changes/230.md (revision b11d9968bc79904c690b122f9399be46447eb113)
1# Changes: 2.3.0
2
3```{rubric} General:
4```
5
6- The equivalent of building BOPT=g, BOPT=O versions for
7  PETSC_ARCH=linux-gnu is now: config/configure.py [options]
8  -PETSC_ARCH=linux-gnu config/configure.py [options]
9  --with-debugging=0 -PETSC_ARCH=linux-gnu-opt
10- Python bindings added to PETSc. To use, configure with:
11  --with-python=1 ---with-shared=1 To build, use: 'make python'
12  after building PETSc libraries. Example in
13  src/snes/examples/tutorials/ex1.py
14- Options database keys -trmalloc[\_xxx] are changed to -malloc[\_xxx]
15- -get_resident_set_size and -trinfo are changed to -memory_info
16- PetscTrValid() -> PetscMallocValidate(), PetscTrDebug() ->
17  PetscMallocDebug()
18- -trdebug -> -malloc_debug
19- PetscGetResidentSetSize() -> PetscMemoryGetCurrentUsage(), added
20  PetscMemoryGetMaximumUsage() and PetscMemorySetGetMaximumUsage()
21- PetscTrSpace() -> PetscMallocGetCurrentUsage() and
22  PetscMallocGetMaximumUsage()
23- added PetscOptionsEnum() and PetscOptionsGetEnum()
24- added PetscBag object for managing user created structs including
25  initializing them and serializing them.
26- removed PetscSetCommWorld(). Now you can directly assign to
27  PETSC_COMM_WORLD before PetscInitialize().
28
29```{rubric} Vec:
30```
31
32- Faster generation of VecScatter for many processes when indices
33  are mostly sorted
34
35- Changed BLAS-type interfaces to PETSc-style:
36
37  - VecShift
38  - VecScale
39  - VecSet
40  - VecSetRandom
41  - VecAXPY
42  - VecAXPBY
43  - VecAYPX
44  - VecMAXPY
45  - VecWAXPY
46
47- Changed order of arguments in pointwise routines:
48
49  - VecPointwiseMult
50  - VecPointwiseMax
51  - VecPointwiseMin
52  - VecPointwiseMaxAbs
53  - VecPointwiseDivide
54
55```{rubric} Mat:
56```
57
58- Changed MatConvert to require a reuse parameter to denote inplace
59  conversion
60
61- Added Cholesky and ICC support to SeqBAIJ
62
63- Added the argument MatFactorInfo to MatLUFactorNumeric() and
64  MatCholeskyFactorNumeric()
65
66- Faster MatSetValues()
67
68- Faster parallel-matrix vector products
69
70- Changed MatCreate() to take only a communicator
71
72- Added MatSetSize() to specify matrix sizes
73
74- Changed BLAS-type interfaces to PETSc-style:
75
76  - MatAXPY
77  - MatAYPX
78  - MatScale
79  - MatShift
80
81- Change MatZeroRows() and MatZeroRowsLocal() to use arrays, and
82  added IS versions
83
84```{rubric} PC:
85```
86
87- Added PCILUReorderForNonzeroDiagonal() and
88  PCLUReorderForNonzeroDiagonal()
89- Replace PCLUSetDamping(), PCILUSetDamping(),
90  PCCholeskySetDamping() and PCICCSetDamping() by
91  PCFactorSetShiftNonzero(). Change the option database keys
92  -pc_lu_damping, -pc_ilu_damping, -pc_cholesky_damping and
93  -pc_icc_damping to -pc_factor_shift_nonzero
94- Replace PCLUSetShift(), PCILUSetShift(), PCCholeskySetShift() and
95  PCICCSetShift() by PCFactorSetShiftPd(). Change the option
96  database keys -pc_lu_shift, -pc_ilu_shift, -pc_cholesky_shift and
97  -pc_icc_shift to -pc_factor_shfit_positive_definite
98- PCMG: will automatically using the outer pmat operator to define
99  the finest level operator if not user supplied
100- PCMG: added MGUseGalerkin(), -pc_mg_galerkin option to have
101  coarser grid matrices computed from the finest grid matrix
102- PCMG: now does referencing counting on set vectors and
103  restriction/interpolation matrices so user need not keep reference
104  to free later
105- PCMG: if user does not provide restriction the interpolation is
106  used and vis versa
107- PCMG: if user does not provide Vecs for each level, will
108  automatically provide them
109- All routines that began with MG now begin with PCMG
110- Added PCShellSet/GetContext() and removed the context passed into
111  PCSetApply() and PCSetApplyRichardson()
112
113```{rubric} KSP:
114```
115
116- -ksp_cg_Hermitian and -ksp_cg_symmetric have been changed to
117  -ksp_cg_type Hermitian or symmetric
118- Changed options for -ksp_gmres_cgs_refinement_type from never or
119  ifneeded or always to REFINE_NEVER or REFINE_IFNEEDED or
120  REFINE_ALWAYS
121
122```{rubric} config/configure.py:
123```
124
125```{rubric} SNES:
126```
127
128- Changed the name and calling sequence for SNESSetLineSearchCheck()
129  to SNESLineSearchSetPostCheck() and added a
130  SNESLineSearchSetPreCheck()
131
132- Changed the names of all SNESxxxxLineSearchyyyy() to
133  SNESLineSearchxxxxyyyy() per PETSc naming standard.
134
135- Now allow a constant vector to be specified in SNESSolve()
136
137- Removed the Vec argument from SNESSetUp()
138
139- Corrected the order of function and context arguments in:
140
141  - SNESGetFunction()
142  - SNESGetJacobian()
143
144```{rubric} TS:
145```
146
147```{rubric} DA:
148```
149
150- Added DAVecGet/RestoreArrayDOF() allowing indexing in the
151  dimension of degrees of freedom at each point on the lattice.
152- Faster DAGlobalToLocal() etc for dof > 1.
153
154```{rubric} DMMG:
155```
156
157- Consolidated DMMG functionality into the new header file
158  "petscdmmg.h".
159
160```{rubric} SYS:
161```
162
163- PetscSetCommWorld() removed. [one can directly do PETSC_COMM_WORLD
164  = comm - before PetscInitialize()]
165
166```{rubric} Fortran:
167```
168
169```{rubric} ExternalPackages:
170```
171
172- ML support added.
173