xref: /petsc/doc/changes/2029.md (revision bcd4bb4a4158aa96f212e9537e87b40407faf83e)
1# Changes: 2.0.29
2
3## Changes
4
5(See [Features] below)
6
7```{rubric} General:
8```
9
10```{rubric} AO (Application Orderings):
11```
12
13```{rubric} TS (Timestepping Solvers):
14```
15
16```{rubric} SNES (Nonlinear Solvers):
17```
18
19- The second argument to MatSNESMFSetType() is now a MatSNESMFType,
20  rather than a char\*. This should not affect any user code. Current
21  built in choices are MATSNESMF_DEFAULT "default" and MATSNESMF_WP
22  "wp"
23- SNESGetJacobian() now has an additional optional final argument
24  that can return the function pointer
25- SNESGetFunction() now has an additional optional final argument
26  that can return the function pointer
27
28```{rubric} SLES (Linear Solvers):
29```
30
31```{rubric} KSP (Krylov Subspace Methods):
32```
33
34```{rubric} PC (Preconditioners):
35```
36
37- PCILUSetReuseFill() changed to PCILUDTSetReuseFill() and
38  -pc_ilu_reuse_fill changed to -pc_iludt_reuse_fill Note that
39  currently these functions don't work.
40- PCNullSpaceXXX changed to MatNullSpaceXXX except for
41  PCNullSpaceAttach()
42- MGSetLevels() now takes an additional optional final argument that
43  is an array of communicators to use on the SLES on each level
44
45```{rubric} MAT (Matrices):
46```
47
48- Changed MatDiagonalShift(Mat,Vec) to
49  MatDiagonalSet(Mat,Vec,InsertMode);
50- Dropped the second to last argument to MatCreateRowbs()
51- -mat_ordering_type now should be either -pc_ilu_mat_ordering_type,
52  -pc_lu_mat_ordering_type, -pc_icc_mat_ordering_type or
53  -pc_cholesky_mat_ordering_type
54
55```{rubric} DA (Distributed Arrays):
56```
57
58```{rubric} VEC (Vectors):
59```
60
61```{rubric} IS (Index Sets):
62```
63
64- ISEqual() now is collective and returns true only if each
65  processor has the same indices
66- ISGetSize() now returns global parallel size, ISGetLocalSize()
67  returns local size
68
69```{rubric} General:
70```
71
72- All include files like mat.h vec.h sles.h snes.h ts.h etc are now
73  changed to petscmat.h petscvec.h petscsles.h petscsnes.h petscts.h
74
75```{rubric} Draw (Graphics):
76```
77
78```{rubric} Viewers:
79```
80
81```{rubric} System:
82```
83
84- FListDestroy now takes FList * instead of FList
85
86```{rubric} Error Handling:
87```
88
89```{rubric} Event Logging:
90```
91
92- PLogEventBegin(), PLogEventEnd(), PLogFlops(),
93  PLogEventBarrierBegin() and PLogEventBarrierEnd() now return error
94  codes.
95
96```{rubric} Fortran Interface:
97```
98
99## Features
100
101(See [Changes] above)
102
103```{rubric} General:
104```
105
106```{rubric} AO (Application Orderings):
107```
108
109```{rubric} TS (Timestepping Solvers):
110```
111
112```{rubric} SNES (Nonlinear Solvers):
113```
114
115```{rubric} SLES (Linear Solvers):
116```
117
118```{rubric} KSP (Krylov Subspace Methods):
119```
120
121- Minres solver contributed by: Robert Scheichl:
122  <mailto:maprs@maths.bath.ac.uk>
123- SYMMLQ solver contributed by Hong Zhang
124
125```{rubric} PC (Preconditioners):
126```
127
128- ICC(k) and Cholesky() preconditioners are now available for the
129  new SeqSBAIJ matrices.
130- added -pc_ilu_damping and -pc_lu_damping, PCILUSetDamping(),
131  PCLUSetDamping() for handling singular or matrices that generate a
132  zero pivot.
133- Added DAMGCreate() etc to help easily write parallel multigrid
134  codes that use rectangular grids
135- Paulo Goldfeld contributed new PCType of nn, a version of Mandel's
136  balancing Neumann-Neumann preconditioner, see
137  src/contrib/oberman/laplacian_q1 for an example of its use
138
139```{rubric} MAT (Matrices):
140```
141
142- added new matrix types SeqSBAIJ and MPISBAIJ for symmetric
143  matrices. These store only the upper triangular portion of the
144  matrix. We also provide ICC(k) and Cholesky factorization
145  (currently only for block size of 1) for the SeqSBAIJ matrices
146- augmented the SeqAIJ matrices to support -mat_aij_matlab that
147  causes the matrices to use the MATLAB engine for sparse LU, and
148  ILUDT factorization and solves. Which have pivoting and thus are
149  more robust than PETSc's default.
150
151```{rubric} DA (Distributed Arrays):
152```
153
154- added -da_noao for DACreateXXX() makes them more scalable, but
155  cannot use the natural numbering DA routines with this option.
156- Added DAMGCreate() etc to help easily write parallel multigrid
157  codes that use rectangular grids
158
159```{rubric} VEC (Vectors):
160```
161
162```{rubric} IS (Index Sets):
163```
164
165```{rubric} PF:
166```
167
168- added the type PFMATLAB with -pf_type matlab -pf_matlab
169  matlab_commands
170
171```{rubric} Draw (Graphics):
172```
173
174```{rubric} Viewers:
175```
176
177```{rubric} System:
178```
179
180- Add PetscMatlabEngineCreate() which allows calling Matlab
181  functions from PETSc on each processor. Good for graphics or
182  numerical routines that PETSc does not have. for example for the
183  local evaluation of the parallel nonlinear function required for
184  SNES; see src/snes/examples/tutorials/ex5m.c. This functionality
185  is accessed via the commands
186  PetscMatlabEngineCreate(),Put(),Get(),Evaluate() and Destroy() It
187  even imports the MATLAB flop counts correctly. Obviously you need
188  enough MATLAB licenses for each node. Note: MATLAB itself is not
189  directly doing any parallel computing.
190- added PetscSetHelpVersionFunctions() for developers of other
191  libraries that use PETSc.
192- added PetscPoUpSelect(), see src/sys/examples/tests/ex15.c
193- added int PetscShowMemoryUsage(Viewer viewer,char \*message)
194- added PreLoadBegin(), PreLoadStage() and PreLoadEnd() to simplify
195  getting accurate timings by peloading. See
196  src/snes/examples/tutorials/ex10.c
197- added PetscSynchronizedFGets()
198
199```{rubric} Error Handling:
200```
201
202```{rubric} Event Logging:
203```
204
205```{rubric} Fortran Interface:
206```
207