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