xref: /petsc/doc/changes/2024.md (revision b11d9968bc79904c690b122f9399be46447eb113)
1*7f296bb3SBarry Smith# Changes: 2.0.24
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- Changed PETSC_ARCH on Microsoft Windows platforms from nt to win32, and from
11*7f296bb3SBarry Smith  nt_gnu to win32_gnu.
12*7f296bb3SBarry Smith- Moved all the compiler/optimization information for each
13*7f296bb3SBarry Smith  PETSC_ARCH from the various `base.g`, `base.O_c++` etc. files
14*7f296bb3SBarry Smith  all into the single file `base_variables`. Now configuration for
15*7f296bb3SBarry Smith  your system should require only editing the files
16*7f296bb3SBarry Smith  \$\{PETSC_ARCH}/base and \$\{PETSC_ARCH}/`base.site`
17*7f296bb3SBarry Smith- The PETSC_ARCH `rs6000` is now intended for IBM rs6000
18*7f296bb3SBarry Smith  workstations running MPICH or LAM, while `rs6000_sp` is for IBM
19*7f296bb3SBarry Smith  SPs.
20*7f296bb3SBarry Smith- Removed the gvec directory from the distribution. If you are using
21*7f296bb3SBarry Smith  this please let us and know and we can provide it or provide
22*7f296bb3SBarry Smith  alternative code to do what you need.
23*7f296bb3SBarry Smith- Routines with the suffix "`withcoloring`" have been changed to
24*7f296bb3SBarry Smith  the suffix "`color`" to get around the 31 character limit in
25*7f296bb3SBarry Smith  names.
26*7f296bb3SBarry Smith- The source code directory structure has changed slightly: pc and
27*7f296bb3SBarry Smith  ksp are now subdirectories of sles, and ao and da are
28*7f296bb3SBarry Smith  subdirectories of a new directory called dm (data management).
29*7f296bb3SBarry Smith- The PETSc libraries are now: -lpetscts -lpetscsnes -lpetscsles
30*7f296bb3SBarry Smith  -lpetscdm -lpetscmat -lpetscvec -lpetsc. Each library is now only
31*7f296bb3SBarry Smith  dependent on libraries to the right of it in the list above. For
32*7f296bb3SBarry Smith  example, if you are only using the linear solvers, you only need
33*7f296bb3SBarry Smith  to list "-lpetscsles -lpetscdm -lpetscmat -lpetscvec -lpetsc" and
34*7f296bb3SBarry Smith  if you are only using the vectors you only need to list
35*7f296bb3SBarry Smith  "-lpetscvec -lpetsc".
36*7f296bb3SBarry Smith- For users who previously could not use the PETSc makefiles because
37*7f296bb3SBarry Smith  the PETSc rules for making .o files conflicted with the user's
38*7f296bb3SBarry Smith  rules, we have introduce a new file that may be included by the
39*7f296bb3SBarry Smith  user, `${PETSC_DIR}/bmake/${PETSC_ARCH}/base_variables`, which
40*7f296bb3SBarry Smith  defines all the useful PETSc makefile variables, but not the
41*7f296bb3SBarry Smith  rules. This should make it easier for people who previously had
42*7f296bb3SBarry Smith  trouble using the PETSc makefiles. We highly recommend using the
43*7f296bb3SBarry Smith  PETSc makefiles when possible because they are immediately
44*7f296bb3SBarry Smith  portable across all systems that support PETSc.
45*7f296bb3SBarry Smith
46*7f296bb3SBarry Smith```{rubric} AO (Application Orderings):
47*7f296bb3SBarry Smith```
48*7f296bb3SBarry Smith
49*7f296bb3SBarry Smith```{rubric} TS (Timestepping Solvers):
50*7f296bb3SBarry Smith```
51*7f296bb3SBarry Smith
52*7f296bb3SBarry Smith- Removed `TSSetRHSJacobianDefault`() - you can now call
53*7f296bb3SBarry Smith  `TSSetRHSJacobian`(... `TSDefaultJacobianColor`,....)
54*7f296bb3SBarry Smith  directly from Fortran
55*7f296bb3SBarry Smith- Changed `TSDefaultJacobianSlow()` to `TSDefaultJacobian()`
56*7f296bb3SBarry Smith
57*7f296bb3SBarry Smith```{rubric} SNES (Nonlinear Solvers):
58*7f296bb3SBarry Smith```
59*7f296bb3SBarry Smith
60*7f296bb3SBarry Smith- S`NESSetConvergenceHistory()` takes an additional argument;
61*7f296bb3SBarry Smith  see the manual page for details.
62*7f296bb3SBarry Smith
63*7f296bb3SBarry Smith- Changed the interface for matrix-free methods in SNES so that is
64*7f296bb3SBarry Smith  more flexible, in particular:
65*7f296bb3SBarry Smith
66*7f296bb3SBarry Smith  - Changed`SNESDefaultMatrixFreeMatCreate()` to
67*7f296bb3SBarry Smith    `MatSNESFDMFCreate()`.
68*7f296bb3SBarry Smith
69*7f296bb3SBarry Smith  - Added routines
70*7f296bb3SBarry Smith
71*7f296bb3SBarry Smith    - MatSNESFDMFSetHHistory(Mat,Scalar \*,int);
72*7f296bb3SBarry Smith    - MatSNESFDMFResetHHistory(Mat,Scalar \*,int);
73*7f296bb3SBarry Smith    - MatSNESFDMFSetParameters(Mat,double,double);
74*7f296bb3SBarry Smith    - MatSNESFDMFGetH(Mat,Scalar \*);
75*7f296bb3SBarry Smith    - MatSNESFDMFKSPMonitor(KSP,int,double,void \*); and the
76*7f296bb3SBarry Smith      corresponding option `-snes_mf_ksp_monitor`
77*7f296bb3SBarry Smith
78*7f296bb3SBarry Smith  - Added support for an alternative way to compute the
79*7f296bb3SBarry Smith    differencing parameter in matrix-free methods using the
80*7f296bb3SBarry Smith    Walker-Pernice srategy, accessible via the option
81*7f296bb3SBarry Smith    `-snes_mf_type` wp
82*7f296bb3SBarry Smith
83*7f296bb3SBarry Smith- Changed the calling sequence of `SNESSetLineSearch()` so that it
84*7f296bb3SBarry Smith  accepts an optional user-defined context variable. Likewise,
85*7f296bb3SBarry Smith  changed the calling sequences of the various line search routines,
86*7f296bb3SBarry Smith  e.g.,
87*7f296bb3SBarry Smith  `SNESCubicLineSearch(),           SNESQuadraticLineSearch()`,
88*7f296bb3SBarry Smith  etc.
89*7f296bb3SBarry Smith
90*7f296bb3SBarry Smith```{rubric} SLES (Linear Solvers):
91*7f296bb3SBarry Smith```
92*7f296bb3SBarry Smith
93*7f296bb3SBarry Smith- See PC and KSP
94*7f296bb3SBarry Smith
95*7f296bb3SBarry Smith```{rubric} KSP (Krylov Subspace Methods):
96*7f296bb3SBarry Smith```
97*7f296bb3SBarry Smith
98*7f296bb3SBarry Smith- Changed the calling sequence of
99*7f296bb3SBarry Smith  `KSPComputeEigenvalues(KSP,int,double*,double*,int             *neig);`
100*7f296bb3SBarry Smith  to return as the final value the number of eigenvalues computed;
101*7f296bb3SBarry Smith  see the manual page for more details.
102*7f296bb3SBarry Smith- Changed GMRES to use the Gram-Schmidt method with one optional
103*7f296bb3SBarry Smith  step of iterative refinement as the default orthogonalization
104*7f296bb3SBarry Smith  procedure, instead of the modified Gram-Schmidt method. This
105*7f296bb3SBarry Smith  change was urged by Rich Lehoucq. It could cause very minor
106*7f296bb3SBarry Smith  differences in convergence rates for codes run before and after
107*7f296bb3SBarry Smith  this change.
108*7f296bb3SBarry Smith- The option `-ksp_bsmonitor` is not longer needed; use
109*7f296bb3SBarry Smith  -`ksp_truemonitor` for the same affect.
110*7f296bb3SBarry Smith- Added an additional argument to `KSPSetResidualHistory()`; see
111*7f296bb3SBarry Smith  the manual page for details. This change was suggested by Maria
112*7f296bb3SBarry Smith  Murillo.
113*7f296bb3SBarry Smith
114*7f296bb3SBarry Smith```{rubric} PC (Preconditioners):
115*7f296bb3SBarry Smith```
116*7f296bb3SBarry Smith
117*7f296bb3SBarry Smith- Removed support for block Gauss-Seidel from the distribution;
118*7f296bb3SBarry Smith  `-pc_type bgs` is no longer supported.
119*7f296bb3SBarry Smith- The Eisenstat preconditioner (SSOR variant) now uses diagonal
120*7f296bb3SBarry Smith  scaling by default, and the options
121*7f296bb3SBarry Smith  `PCEisenstatUseDiagonalScaling()` and
122*7f296bb3SBarry Smith  `-pc_eisenstat_diagonal_scaling` have been replaced with
123*7f296bb3SBarry Smith  `PCEisenstatNoDiagonalScaling()` and
124*7f296bb3SBarry Smith  `-pc_eisenstat_no_diagonal_scaling`
125*7f296bb3SBarry Smith
126*7f296bb3SBarry Smith```{rubric} MAT (Matrices):
127*7f296bb3SBarry Smith```
128*7f296bb3SBarry Smith
129*7f296bb3SBarry Smith- Replaced`MatGetSubMatrixCall`() with `MatReuse().`
130*7f296bb3SBarry Smith- Changed the calling sequence of `MatILUFactor()` and
131*7f296bb3SBarry Smith  `MatILUFactorSymbolic()` to increase flexibility of adding new
132*7f296bb3SBarry Smith  ILU options.
133*7f296bb3SBarry Smith- Added an additional argument to `MatCopy()`;
134*7f296bb3SBarry Smith  `SAME_NONZERO_PATTERN` or `DIFFERENT_NONZERO_PATTERN.`
135*7f296bb3SBarry Smith- Added an additional argument to `MatDuplicate()`,
136*7f296bb3SBarry Smith  `MAT_COPY_VALUES` or `MAT_DO_NOT_COPY_VALUES.`
137*7f296bb3SBarry Smith- Changed the flag `MAT_NEW_NONZERO_LOCATION_ERROR` to
138*7f296bb3SBarry Smith  `MAT_NEW_NONZERO_LOCATION_ERR`; also changed
139*7f296bb3SBarry Smith  `MAT_NEW_ALLOCATION_ERROR` to `MAT_NEW_ALLOCATION_ERR`
140*7f296bb3SBarry Smith- Changed `MatOrder`xxx to `MatOrdering`xxx; changed
141*7f296bb3SBarry Smith  `MatOrderingType` to char\* from enum
142*7f296bb3SBarry Smith- Changed `Mat`xxx`Reordering`xxx to
143*7f296bb3SBarry Smith  `Mat`xxx`Ordering`xxx changed command line option
144*7f296bb3SBarry Smith  `-mat_order` to -`mat_ordering_type;` changed
145*7f296bb3SBarry Smith  `MatColoringType`to char\* from enum
146*7f296bb3SBarry Smith- Changed `Partitioning`xxx to `MatPartitioning`xxx
147*7f296bb3SBarry Smith
148*7f296bb3SBarry Smith```{rubric} DA (Distributed Arrays):
149*7f296bb3SBarry Smith```
150*7f296bb3SBarry Smith
151*7f296bb3SBarry Smith- `DAGetInfo()` has a new final argument, the stencil type. See
152*7f296bb3SBarry Smith  the manual change your current code to work, you only need add an
153*7f296bb3SBarry Smith  extra `PETSC_NULL` as a final argument.
154*7f296bb3SBarry Smith
155*7f296bb3SBarry Smith```{rubric} VEC (Vectors):
156*7f296bb3SBarry Smith```
157*7f296bb3SBarry Smith
158*7f296bb3SBarry Smith- After a call to `VecCreate()` you MUST either call
159*7f296bb3SBarry Smith  `VecSetType()` or `VecSetFromOptions()` on the vector before
160*7f296bb3SBarry Smith  using it for any purpose. The `VecCreate`xxx() routines (e.g.,
161*7f296bb3SBarry Smith  `VecCreateSeq(), VecCreateMPI()`) do not need to have calls to
162*7f296bb3SBarry Smith  VecSetType() or VecSetFromOptions() after them.
163*7f296bb3SBarry Smith- All `VecGetArray()` calls MUST now be matched with a
164*7f296bb3SBarry Smith  `VecRestoreArray()` call; previous PETSc versions did not force
165*7f296bb3SBarry Smith  compliance with this rule.
166*7f296bb3SBarry Smith- The command line names for changing the vector type in
167*7f296bb3SBarry Smith  `VecCreate(`) are now `-vec_type mpi` or `-vec_type shared`
168*7f296bb3SBarry Smith  rather than `-vec_mpi` or `-vec_shared`
169*7f296bb3SBarry Smith- Changed the `VecType` variable type from an enum type to a
170*7f296bb3SBarry Smith  string.
171*7f296bb3SBarry Smith- Changed the calling sequence for `VecGetType()`; see the manual
172*7f296bb3SBarry Smith  page for details.
173*7f296bb3SBarry Smith- Changed `VecGhostGetLocalRepresentation()` and
174*7f296bb3SBarry Smith  `VecGhostRestoreLocalRepresentation()`, to
175*7f296bb3SBarry Smith  `VecGhostGetLocalForm()` and `VecGhostRestoreLocalForm()`,
176*7f296bb3SBarry Smith  respectively; the previous names had too many characters for some
177*7f296bb3SBarry Smith  machines.
178*7f296bb3SBarry Smith
179*7f296bb3SBarry Smith```{rubric} IS (Index Sets):
180*7f296bb3SBarry Smith```
181*7f296bb3SBarry Smith
182*7f296bb3SBarry Smith```{rubric} Draw (Graphics):
183*7f296bb3SBarry Smith```
184*7f296bb3SBarry Smith
185*7f296bb3SBarry Smith- Replaced`VIEWER_DRAWX_`.... with `VIEWER_DRAW_`....
186*7f296bb3SBarry Smith- The arguments of `ViewerDrawGetDraw`() have been changed; see
187*7f296bb3SBarry Smith  the manual page for details.
188*7f296bb3SBarry Smith- `DrawTensorContour()` has changed; its final argument is now an
189*7f296bb3SBarry Smith  array can now use `VecView()` to create the contour plot.
190*7f296bb3SBarry Smith
191*7f296bb3SBarry Smith```{rubric} Viewers:
192*7f296bb3SBarry Smith```
193*7f296bb3SBarry Smith
194*7f296bb3SBarry Smith- Changed the names associated with the MATLAB viewer to Socket
195*7f296bb3SBarry Smith  viewer; this reflects our plan to support additional graphics
196*7f296bb3SBarry Smith  engines with PETSc.
197*7f296bb3SBarry Smith- Changed `ViewerFileOpenASCII()` to `ViewerASCIIOpen().`
198*7f296bb3SBarry Smith- Changed `ViewerDrawOpenX(`) to `ViewerDrawOpen().`
199*7f296bb3SBarry Smith- Changed `ViewerFileOpenBinary()` to `ViewerBinaryOpen().`
200*7f296bb3SBarry Smith- Changed `ViewerType` from an enum to a char \*.
201*7f296bb3SBarry Smith
202*7f296bb3SBarry Smith```{rubric} System:
203*7f296bb3SBarry Smith```
204*7f296bb3SBarry Smith
205*7f296bb3SBarry Smith- Changed the calling sequence of
206*7f296bb3SBarry Smith  `PetscGetHomeDirectory(char dir[],int maxlen)`.
207*7f296bb3SBarry Smith- Changed the calling sequence of
208*7f296bb3SBarry Smith  `PetscFixFilename(const char filein[],char fileout[]).`
209*7f296bb3SBarry Smith- Changed the calling sequence of `PetscGetDate().`
210*7f296bb3SBarry Smith
211*7f296bb3SBarry Smith```{rubric} Error Handling:
212*7f296bb3SBarry Smith```
213*7f296bb3SBarry Smith
214*7f296bb3SBarry Smith```{rubric} Event Logging:
215*7f296bb3SBarry Smith```
216*7f296bb3SBarry Smith
217*7f296bb3SBarry Smith```{rubric} Fortran Interface:
218*7f296bb3SBarry Smith```
219*7f296bb3SBarry Smith
220*7f296bb3SBarry Smith## Features
221*7f296bb3SBarry Smith
222*7f296bb3SBarry Smith(See [Changes] above)
223*7f296bb3SBarry Smith
224*7f296bb3SBarry Smith```{rubric} General:
225*7f296bb3SBarry Smith```
226*7f296bb3SBarry Smith
227*7f296bb3SBarry Smith- Add the routine `OptionsGetAll().`
228*7f296bb3SBarry Smith- Added support for Sun Solaris running on Intel processors;
229*7f296bb3SBarry Smith  PETSC_ARCH solaris_x86.
230*7f296bb3SBarry Smith- Added option -`optionsleft_off` so BOPT=g version of code will
231*7f296bb3SBarry Smith  not print warnings about unused options.
232*7f296bb3SBarry Smith- The environment variable PETSC_ARCH is now required to use the NT
233*7f296bb3SBarry Smith  distribution.
234*7f296bb3SBarry Smith- Added the routine `OptionsGetLogical().`
235*7f296bb3SBarry Smith- We now include PETSC_ARCH of solaris_gnu, rs6000_gnu for those
236*7f296bb3SBarry Smith  systems when using the gnu compilers.
237*7f296bb3SBarry Smith- Thanks to the generosity of the FreeBSD organization, we are now
238*7f296bb3SBarry Smith  supporting freebsd again.
239*7f296bb3SBarry Smith- Added optional filename to `-log_info` \<filename> option. PETSc
240*7f296bb3SBarry Smith  will open a separate file, called filename.rank for each processor
241*7f296bb3SBarry Smith  and print the output there.
242*7f296bb3SBarry Smith- Added `PetscTypeCompare()`; see the manual page.
243*7f296bb3SBarry Smith
244*7f296bb3SBarry Smith```{rubric} AO (Application Orderings):
245*7f296bb3SBarry Smith```
246*7f296bb3SBarry Smith
247*7f296bb3SBarry Smith- `AOPetscToApplicationIS()` and `AOApplicationToPetscIS()`,
248*7f296bb3SBarry Smith  when passed a stride index set, now handle them correctly.
249*7f296bb3SBarry Smith
250*7f296bb3SBarry Smith```{rubric} TS (Timestepping Solvers):
251*7f296bb3SBarry Smith```
252*7f296bb3SBarry Smith
253*7f296bb3SBarry Smith- Added `TSSetTypeFromOptions().`
254*7f296bb3SBarry Smith
255*7f296bb3SBarry Smith```{rubric} SNES (Nonlinear Solvers):
256*7f296bb3SBarry Smith```
257*7f296bb3SBarry Smith
258*7f296bb3SBarry Smith- Added `-snes_vecmonitor` and `SNESMonitorVec()` to allow
259*7f296bb3SBarry Smith  graphically monitoring the solution.
260*7f296bb3SBarry Smith- Added `SNESSetTypeFromOptions().`
261*7f296bb3SBarry Smith- Added the routine `SNESSetLineSearchCheck()`, which sets a
262*7f296bb3SBarry Smith  routine to check the validity of new iterates computed by line
263*7f296bb3SBarry Smith  search routines; see the manual page for details.
264*7f296bb3SBarry Smith
265*7f296bb3SBarry Smith```{rubric} SLES (Linear Solvers):
266*7f296bb3SBarry Smith```
267*7f296bb3SBarry Smith
268*7f296bb3SBarry Smith- See PC and KSP
269*7f296bb3SBarry Smith- Added `SLESSetTypesFromOptions().`
270*7f296bb3SBarry Smith
271*7f296bb3SBarry Smith```{rubric} KSP (Krylov Subspace Methods):
272*7f296bb3SBarry Smith```
273*7f296bb3SBarry Smith
274*7f296bb3SBarry Smith- Added the function `KSPSetAvoidNorms()` and corresponding option
275*7f296bb3SBarry Smith  `-ksp_avoid_norms`. For the methods CG, Richardson, Bi-CG-stab,
276*7f296bb3SBarry Smith  CR, and CGS, this eliminates the computation of the residual norm
277*7f296bb3SBarry Smith  at each iteration (which is an expensive, collective operation).
278*7f296bb3SBarry Smith  Then the convergence criterion depends only on the maximum number
279*7f296bb3SBarry Smith  of iterations the users sets with `KSPSetTolerances().` This is
280*7f296bb3SBarry Smith  useful when using the Krylov method as a smoother with a fixed
281*7f296bb3SBarry Smith  number of iterations (say, e.g., 3 iterations).
282*7f296bb3SBarry Smith- Added the KSP type of `KSPBICG` (contributed by Victor Eijkhout)
283*7f296bb3SBarry Smith  and added support to some of the preconditioners to apply the
284*7f296bb3SBarry Smith  preconditioner transpose (required by KSPBICG).
285*7f296bb3SBarry Smith- Added `-ksp_vecmonitor` and `KSPMonitorVec()` to allow
286*7f296bb3SBarry Smith  graphically monitoring the solution's convergence.
287*7f296bb3SBarry Smith- Added `KSPSetTypeFromOptions().`
288*7f296bb3SBarry Smith
289*7f296bb3SBarry Smith```{rubric} PC (Preconditioners):
290*7f296bb3SBarry Smith```
291*7f296bb3SBarry Smith
292*7f296bb3SBarry Smith- Added `PCLUSetReuseReordering()` and `PCLUSetReuseFill()` so
293*7f296bb3SBarry Smith  that SLES can reuse the reordering and fill information for a new
294*7f296bb3SBarry Smith  factorization of a matrix with slightly different nonzero
295*7f296bb3SBarry Smith  structure than the previous factorization. The corresponding
296*7f296bb3SBarry Smith  command line options are -`pc_lu_reuse_reordering` and
297*7f296bb3SBarry Smith  `-pc_lu_reuse_fill`. These two options only have an effect when
298*7f296bb3SBarry Smith  the `SLESSetOperators()` option of `DIFFERENT_NONZERO_PATTERN`
299*7f296bb3SBarry Smith  is used; otherwise the ordering and fill information is always
300*7f296bb3SBarry Smith  reused.
301*7f296bb3SBarry Smith- Added `PCGetVector()`, not expected to be used by application
302*7f296bb3SBarry Smith  programmers.
303*7f296bb3SBarry Smith- Added the option `-pc_ilu_diagonal_fill` and the corresponding
304*7f296bb3SBarry Smith  routine `PCILUSetAllowDiagonalFill()`; see the manual page for
305*7f296bb3SBarry Smith  details; helps ILU(k) on matrices with missing diagonal entries.
306*7f296bb3SBarry Smith  Suggested by David Hysom.
307*7f296bb3SBarry Smith- Added `PCSetTypeFromOptions().`
308*7f296bb3SBarry Smith
309*7f296bb3SBarry Smith```{rubric} MAT (Matrices):
310*7f296bb3SBarry Smith```
311*7f296bb3SBarry Smith
312*7f296bb3SBarry Smith- Added `MatSeqAIJSetColumnIndices()` and
313*7f296bb3SBarry Smith  `MatSeqBAIJSetColumnIndices()`.
314*7f296bb3SBarry Smith- If the option `MAT_IGNORE_OFF_PROC_ENTRIES` is used, then the
315*7f296bb3SBarry Smith  routines `MatAssemblyBegin()` and `MatAssemblyEnd()` will not
316*7f296bb3SBarry Smith  cause any parallel communication or synchronization.
317*7f296bb3SBarry Smith- If the option `MAT_NEW_NONZERO_LOCATIONS` is used, one less
318*7f296bb3SBarry Smith  collective call will be made in the `MatAssemblyEnd()` routines
319*7f296bb3SBarry Smith  for MPIAIJ and MPIBAIJ.
320*7f296bb3SBarry Smith- Fixed bugs in `MatReorderForNonzeroDiagonal()` and made it more
321*7f296bb3SBarry Smith  robust.
322*7f296bb3SBarry Smith- Fixed bugs in factorization for AIJ matrices with variable size
323*7f296bb3SBarry Smith  inodes.
324*7f296bb3SBarry Smith- Indices that are negative passed into `MatSetValues...()` are
325*7f296bb3SBarry Smith  now ignored (rather than generating an error). This allows easily
326*7f296bb3SBarry Smith  keeping homogeneous Dirichlet boundary nodes out of the vectors
327*7f296bb3SBarry Smith  and matrices for unstructured grid problems; just indicate those
328*7f296bb3SBarry Smith  node numbers with negative numbers.
329*7f296bb3SBarry Smith- Added additional optimized code for BAIJ matrices with block sizes
330*7f296bb3SBarry Smith  2, 3, 5, 6, and 7.
331*7f296bb3SBarry Smith- Improved the performance of `MatSetValues()` and
332*7f296bb3SBarry Smith  `MatAssemblyXXX()` for parallel matrices a great deal.
333*7f296bb3SBarry Smith- Added the option `-matstash_initial_size` \<stashsize> and
334*7f296bb3SBarry Smith  `-matstash_block_initial_size` \<stashsize> and the routine
335*7f296bb3SBarry Smith  `MatSetStashInitialSize()` to allow further optimization of
336*7f296bb3SBarry Smith  off-processor`MatSetValues().`
337*7f296bb3SBarry Smith
338*7f296bb3SBarry Smith```{rubric} DA (Distributed Arrays):
339*7f296bb3SBarry Smith```
340*7f296bb3SBarry Smith
341*7f296bb3SBarry Smith- Added graphics support to DA vectors in 1d and 2d, with contour
342*7f296bb3SBarry Smith  plotters for 2d.
343*7f296bb3SBarry Smith
344*7f296bb3SBarry Smith```{rubric} VEC (Vectors):
345*7f296bb3SBarry Smith```
346*7f296bb3SBarry Smith
347*7f296bb3SBarry Smith- Extended `VecCreate()` by allowing registration of new vector
348*7f296bb3SBarry Smith  types with `VecRegister()` see the manual page for details.
349*7f296bb3SBarry Smith- Indices that are negative passed into `VecSetValues...()` are
350*7f296bb3SBarry Smith  now ignored (rather than generating an error). This allows easily
351*7f296bb3SBarry Smith  keeping homogeneous Dirichlet boundary nodes out of the vectors
352*7f296bb3SBarry Smith  and matrices for unstructured grid problems; just indicate those
353*7f296bb3SBarry Smith  node numbers with negative numbers.
354*7f296bb3SBarry Smith- Added `VecDotBegin()`, `VecDotEnd()`, `VecNormBegin()`,
355*7f296bb3SBarry Smith  `VecNormEnd()`, which reduce communication overhead in parallel;
356*7f296bb3SBarry Smith  see the manual pages for details (suggested by Victor Eijkhout).
357*7f296bb3SBarry Smith- If the option `VEC_IGNORE_OFF_PROC_ENTRIES` is used, the
358*7f296bb3SBarry Smith  `VecAssemblyBegin()` and `VecAssemblyEnd()` routines will not
359*7f296bb3SBarry Smith  cause any parallel communication or synchronization (previously
360*7f296bb3SBarry Smith  `VecAssemblyBegin()` still used a barrier).
361*7f296bb3SBarry Smith- Added `VIEWER_FORMAT_ASCII_INDEX` which causes the index for
362*7f296bb3SBarry Smith  each vector entry to be printed with the vector values.
363*7f296bb3SBarry Smith- Added three new vector scatter options; `-vecscatter_merge` and
364*7f296bb3SBarry Smith  `-vecscatter_ssend` and `-vecscatter_sendfirst`; these may
365*7f296bb3SBarry Smith  improve performance a great deal when using MPICH for MPI on
366*7f296bb3SBarry Smith  ethernet or fast ethernet.
367*7f296bb3SBarry Smith- Added `VecStrideNorm(), VecStrideScatter()`, and
368*7f296bb3SBarry Smith  `VecStrideGather().`
369*7f296bb3SBarry Smith- Improved the performance of `VecSetValues()` and
370*7f296bb3SBarry Smith  `VecAssemblyXXX()` for parallel vectors.
371*7f296bb3SBarry Smith- Added the option `-vecstash_initial_size` \<stashsize> and
372*7f296bb3SBarry Smith  `-vecstash_block_initial_size` \<stashsize> and the routine
373*7f296bb3SBarry Smith  `VecSetStashInitialSize()` to allow further optimization of
374*7f296bb3SBarry Smith  off-processor `VecSetValues()`.
375*7f296bb3SBarry Smith
376*7f296bb3SBarry Smith```{rubric} IS (Index Sets):
377*7f296bb3SBarry Smith```
378*7f296bb3SBarry Smith
379*7f296bb3SBarry Smith- Added `ISStrideToGeneral()`, which converts a stride type index
380*7f296bb3SBarry Smith  set to a general type.
381*7f296bb3SBarry Smith
382*7f296bb3SBarry Smith```{rubric} Draw (Graphics):
383*7f296bb3SBarry Smith```
384*7f296bb3SBarry Smith
385*7f296bb3SBarry Smith```{rubric} Viewers:
386*7f296bb3SBarry Smith```
387*7f296bb3SBarry Smith
388*7f296bb3SBarry Smith- Added `ViewerASCIIPushTab()`, `ViewerASCIIPopTab()` and
389*7f296bb3SBarry Smith  `ViewerASCIIPrintf()`. These allow multi-level display of solver
390*7f296bb3SBarry Smith  information (tabing the text further for each inner solver).
391*7f296bb3SBarry Smith  Thanks to Victor Eijkhout and Matt Knepley for pushing this.
392*7f296bb3SBarry Smith
393*7f296bb3SBarry Smith```{rubric} System:
394*7f296bb3SBarry Smith```
395*7f296bb3SBarry Smith
396*7f296bb3SBarry Smith```{rubric} Error Handling:
397*7f296bb3SBarry Smith```
398*7f296bb3SBarry Smith
399*7f296bb3SBarry Smith```{rubric} Event Logging:
400*7f296bb3SBarry Smith```
401*7f296bb3SBarry Smith
402*7f296bb3SBarry Smith```{rubric} Fortran Interface:
403*7f296bb3SBarry Smith```
404*7f296bb3SBarry Smith
405*7f296bb3SBarry Smith- Added Fortran 90 interface support for HP Convex and
406*7f296bb3SBarry Smith  Solaris.machine.
407