xref: /petsc/doc/changes/314.md (revision b11d9968bc79904c690b122f9399be46447eb113)
1*7f296bb3SBarry Smith# Changes: 3.14
2*7f296bb3SBarry Smith
3*7f296bb3SBarry Smith```{rubric} General:
4*7f296bb3SBarry Smith```
5*7f296bb3SBarry Smith
6*7f296bb3SBarry Smith- Deprecate PetscIgnoreErrorHandler(), use PetscReturnErrorHandler()
7*7f296bb3SBarry Smith- Replace -debugger_nodes with -debugger_ranks
8*7f296bb3SBarry Smith- Change PETSCABORT() to abort instead of MPI_Abort if run under
9*7f296bb3SBarry Smith  -start_in_debugger
10*7f296bb3SBarry Smith- Add PETSC_MPI_THREAD_REQUIRED to control the requested threading
11*7f296bb3SBarry Smith  level for MPI_Init
12*7f296bb3SBarry Smith- Add CUDA-11 support, but with CUDA-11,
13*7f296bb3SBarry Smith  -mat_cusparse_storage_format {ELL, HYB} are not supported anymore.
14*7f296bb3SBarry Smith  Only CSR is supported
15*7f296bb3SBarry Smith- Add CUDA-11 option -mat_cusparse_spmv_alg {MV_ALG_DEFAULT,
16*7f296bb3SBarry Smith  CSRMV_ALG1 (default), CSRMV_ALG2} for users to select cuSPARSE
17*7f296bb3SBarry Smith  SpMV algorithms
18*7f296bb3SBarry Smith- Add CUDA-11 option -mat_cusparse_spmm_alg {ALG_DEFAULT, CSR_ALG1
19*7f296bb3SBarry Smith  (default), CSR_ALG2} for users to select cuSPARSE SpMM algorithms
20*7f296bb3SBarry Smith- Add CUDA-11 option -mat_cusparse_csr2csc_alg {ALG1 (default),
21*7f296bb3SBarry Smith  ALG2} for users to select cuSPARSE CSR to CSC conversion
22*7f296bb3SBarry Smith  algorithms
23*7f296bb3SBarry Smith- Remove option -cuda_initialize, whose functionality is succeeded
24*7f296bb3SBarry Smith  by -cuda_device xxx
25*7f296bb3SBarry Smith- Change -cuda_set_device to -cuda_device, which can now accept
26*7f296bb3SBarry Smith  NONE, PETSC_DEFAULT, PETSC_DECIDE in addition to non-negative
27*7f296bb3SBarry Smith  integers
28*7f296bb3SBarry Smith- Change PetscCUDAInitialize(comm) to PetscCUDAInitialize(comm,dev)
29*7f296bb3SBarry Smith- Add PetscCUDAInitializeCheck() to do lazy CUDA initialization
30*7f296bb3SBarry Smith- Add -hip_device, -hip_view, -hip_synchronize,
31*7f296bb3SBarry Smith  PetscHIPInitialize(comm,dev) and PetscHIPInitializeCheck(). Their
32*7f296bb3SBarry Smith  usage is similar to their CUDA counterpart
33*7f296bb3SBarry Smith- Add PetscOptionsInsertStringYAML() and -options_string_yaml for
34*7f296bb3SBarry Smith  YAML-formatted options on the command line
35*7f296bb3SBarry Smith- Add PETSC_OPTIONS_YAML environment variable for setting options in
36*7f296bb3SBarry Smith  YAML format
37*7f296bb3SBarry Smith- Add PetscDetermineInitialFPTrap(); fix so that when Linux or macOS
38*7f296bb3SBarry Smith  Fortran linker enables catching floating point divide by zero the
39*7f296bb3SBarry Smith  trapping is disabled for LAPACK routines that generate divide by
40*7f296bb3SBarry Smith  zero, for example, the reference implementation of ieeeck()
41*7f296bb3SBarry Smith- Add floating point exception handling support for freebsd and
42*7f296bb3SBarry Smith  Windows
43*7f296bb3SBarry Smith- Consistently set exception handling for divide by zero, invalid,
44*7f296bb3SBarry Smith  underflow, and overflow for all systems when possible
45*7f296bb3SBarry Smith- -options_monitor and -options_monitor_cancel have immediate global
46*7f296bb3SBarry Smith  effect, see PetscInitialize() for details
47*7f296bb3SBarry Smith- Remove PetscOptionsSetFromOptions()
48*7f296bb3SBarry Smith- Remove PetscOptionsMonitorCancel()
49*7f296bb3SBarry Smith- Remove -h and -v options. Use -help and -version instead. The
50*7f296bb3SBarry Smith  short options -h and -v can now be used within user codes
51*7f296bb3SBarry Smith- Import petsc4py sources into PETSc source tree. Continue to use
52*7f296bb3SBarry Smith  --download-petsc4py to build petsc4py
53*7f296bb3SBarry Smith- Add an experimental Kokkos backend for PETSc GPU operations. For
54*7f296bb3SBarry Smith  example, one can use '--download-kokkos --download-kokkos-kernels
55*7f296bb3SBarry Smith  --with-kokkos-cuda-arch=TURING75' to build PETSc with a Kokkos
56*7f296bb3SBarry Smith  CUDA backend, and then use -vec_type kokkos -mat_type aijkokkos.
57*7f296bb3SBarry Smith  With that, vector and matrix operations on GPUs are done through
58*7f296bb3SBarry Smith  Kokkos kernels. Currently, VECKOKKOS supports all vector
59*7f296bb3SBarry Smith  operations, but MATAIJKOKKOS only supports MatMult() and its
60*7f296bb3SBarry Smith  variants. More complete support is coming
61*7f296bb3SBarry Smith
62*7f296bb3SBarry Smith```{rubric} Configure/Build:
63*7f296bb3SBarry Smith```
64*7f296bb3SBarry Smith
65*7f296bb3SBarry Smith- Change --with-matlabengine-lib= to --with-matlab-engine-lib= to
66*7f296bb3SBarry Smith  match --with-matlab-engine, print error message for deprecated
67*7f296bb3SBarry Smith  form
68*7f296bb3SBarry Smith- Change --download-mpich default for optimized build to ch3:nemesis
69*7f296bb3SBarry Smith  and keep ch3:sock for debug build
70*7f296bb3SBarry Smith- On macOS, --with-macos-firewall-rules can be used to automate
71*7f296bb3SBarry Smith  addition of firewall rules during testing to prevent firewall
72*7f296bb3SBarry Smith  popup windows
73*7f296bb3SBarry Smith
74*7f296bb3SBarry Smith```{rubric} IS:
75*7f296bb3SBarry Smith```
76*7f296bb3SBarry Smith
77*7f296bb3SBarry Smith```{rubric} PetscDraw:
78*7f296bb3SBarry Smith```
79*7f296bb3SBarry Smith
80*7f296bb3SBarry Smith```{rubric} VecScatter / PetscSF:
81*7f296bb3SBarry Smith```
82*7f296bb3SBarry Smith
83*7f296bb3SBarry Smith- Add a Kokkos backend to SF. Previously, SF could only handle CUDA
84*7f296bb3SBarry Smith  devices. Now it can handle other devices that Kokkos supports when
85*7f296bb3SBarry Smith  PETSc is configured with Kokkos. The command line option is:
86*7f296bb3SBarry Smith  -sf_backend cuda | kokkos
87*7f296bb3SBarry Smith
88*7f296bb3SBarry Smith```{rubric} PF:
89*7f296bb3SBarry Smith```
90*7f296bb3SBarry Smith
91*7f296bb3SBarry Smith```{rubric} Vec:
92*7f296bb3SBarry Smith```
93*7f296bb3SBarry Smith
94*7f296bb3SBarry Smith- Fix memory leaks when requesting -vec_type
95*7f296bb3SBarry Smith  {standard|cuda|viennacl} when the vector is already of the desired
96*7f296bb3SBarry Smith  type
97*7f296bb3SBarry Smith- Add VecViennaCLGetCL{Context|Queue|Mem} for VECVIENNACL to access
98*7f296bb3SBarry Smith  the CL objects underlying the PETSc Vecs
99*7f296bb3SBarry Smith- Add VecCreate{Seq|MPI}ViennaCLWithArray and
100*7f296bb3SBarry Smith  VecViennaCL{Place|Reset}Array
101*7f296bb3SBarry Smith- Add VecCreate{Seq|MPI}CUDAWithArrays to create VECCUDA sharing the
102*7f296bb3SBarry Smith  CPU and/or GPU memory spaces
103*7f296bb3SBarry Smith- Add VecCreate{Seq|MPI}ViennaCLWithArrays to create VECVIENNACL
104*7f296bb3SBarry Smith  sharing the CPU and/or GPU memory spaces
105*7f296bb3SBarry Smith- Add an experimental vector type VECKOKKOS
106*7f296bb3SBarry Smith- Add VecGetOffloadMask to query a Vec's offload mask
107*7f296bb3SBarry Smith
108*7f296bb3SBarry Smith```{rubric} PetscSection:
109*7f296bb3SBarry Smith```
110*7f296bb3SBarry Smith
111*7f296bb3SBarry Smith- PetscSectionGetClosurePermutation(),
112*7f296bb3SBarry Smith  PetscSectionSetClosurePermutation(), and
113*7f296bb3SBarry Smith  PetscSectionGetClosureInversePermutation() all require a new
114*7f296bb3SBarry Smith  argument depth and the getters require closure size to be
115*7f296bb3SBarry Smith  specified by the caller. This allows multiple closure permutations
116*7f296bb3SBarry Smith  to be specified, e.g., for mixed topology meshes and boundary
117*7f296bb3SBarry Smith  faces and for variable-degree spaces. The previous behavior only
118*7f296bb3SBarry Smith  applied to points at height zero
119*7f296bb3SBarry Smith
120*7f296bb3SBarry Smith```{rubric} PetscPartitioner:
121*7f296bb3SBarry Smith```
122*7f296bb3SBarry Smith
123*7f296bb3SBarry Smith```{rubric} Mat:
124*7f296bb3SBarry Smith```
125*7f296bb3SBarry Smith
126*7f296bb3SBarry Smith- Add MatSetLayouts()
127*7f296bb3SBarry Smith- Add MatSeqAIJSetTotalPreallocation(Mat,PetscInt) for efficient row
128*7f296bb3SBarry Smith  by row setting of a matrix without requiring preallocating for
129*7f296bb3SBarry Smith  each row
130*7f296bb3SBarry Smith- Add full support for MKL sparse matrix-matrix products in
131*7f296bb3SBarry Smith  MATSEQAIJMKL
132*7f296bb3SBarry Smith- Fix few bugs for MATSEQSBAIJ when missing diagonal entries
133*7f296bb3SBarry Smith- Fix few bugs when trying to reuse matrices within MatMat
134*7f296bb3SBarry Smith  operations
135*7f296bb3SBarry Smith- Deprecate MatFreeIntermediateDataStructures() in favor of
136*7f296bb3SBarry Smith  MatProductClear()
137*7f296bb3SBarry Smith- Add MatShellSetMatProductOperation() to allow users specify
138*7f296bb3SBarry Smith  symbolic and numeric phases for MatMat operations with MATSHELL
139*7f296bb3SBarry Smith  matrices
140*7f296bb3SBarry Smith- Add support for distributed dense matrices on GPUs
141*7f296bb3SBarry Smith  (MATMPIDENSECUDA)
142*7f296bb3SBarry Smith- Add few missing get/set/replace array operations for MATDENSE and
143*7f296bb3SBarry Smith  MATDENSECUDA matrices
144*7f296bb3SBarry Smith- Add MatDense{Get|Restore}ColumnVec to access memory of a dense
145*7f296bb3SBarry Smith  matrix as a Vec, together with read-only and write-only variants
146*7f296bb3SBarry Smith- Add MatDense{Get|Restore}SubMatrix to access memory of a
147*7f296bb3SBarry Smith  contiguous subset of columns of a dense matrix as a Mat
148*7f296bb3SBarry Smith- Deprecate MatSeqDenseSetLDA in favor of MatDenseSetLDA
149*7f296bb3SBarry Smith- Add support for A\*B and A^t\*B operations with A = AIJCUSPARSE and
150*7f296bb3SBarry Smith  B = DENSECUDA matrices
151*7f296bb3SBarry Smith- Add basic support for MATPRODUCT_AB (resp. MATPRODUCT_AtB) for any
152*7f296bb3SBarry Smith  matrices with mult (multtranspose) operation defined and B dense
153*7f296bb3SBarry Smith- Add MATSCALAPACK, a new Mat type that wraps a ScaLAPACK matrix
154*7f296bb3SBarry Smith- Add support for MUMPS-5.3.0 distributed right-hand side
155*7f296bb3SBarry Smith- Add support for MatMultHermitianTranspose with SEQAIJCUSPARSE
156*7f296bb3SBarry Smith- Remove default generation of explicit matrix for MatMultTranspose
157*7f296bb3SBarry Smith  operations with SEQAIJCUSPARSE. Users can still require it via
158*7f296bb3SBarry Smith  MatSeqAIJCUSPARSESetGenerateTranspose
159*7f296bb3SBarry Smith- Add MatOrderingType external returns a NULL ordering to allow
160*7f296bb3SBarry Smith  solver types MATSOLVERUMFPACK and MATSOLVERCHOLMOD to use their
161*7f296bb3SBarry Smith  orderings
162*7f296bb3SBarry Smith- Add an experimental matrix type MATAIJKOKKOS
163*7f296bb3SBarry Smith
164*7f296bb3SBarry Smith```{rubric} PC:
165*7f296bb3SBarry Smith```
166*7f296bb3SBarry Smith
167*7f296bb3SBarry Smith- Fix bugs related with reusing PCILU/PCICC/PCLU/PCCHOLESKY
168*7f296bb3SBarry Smith  preconditioners with SEQAIJCUSPARSE matrices
169*7f296bb3SBarry Smith- GAMG uses MAT_SPD to default to CG for the eigen estimate in
170*7f296bb3SBarry Smith  Chebyshev smoothers
171*7f296bb3SBarry Smith- Add PCMatApply() for applying a preconditioner to a block of
172*7f296bb3SBarry Smith  vectors
173*7f296bb3SBarry Smith- Add -pc_factor_mat_ordering_type external to use ordering methods
174*7f296bb3SBarry Smith  of MATSOLVERUMFPACK and MATSOLVERCHOLMOD
175*7f296bb3SBarry Smith- PCSetUp_LU,ILU,Cholesky,ICC() no longer compute an ordering if it
176*7f296bb3SBarry Smith  is not to be used by the factorization (optimization)
177*7f296bb3SBarry Smith
178*7f296bb3SBarry Smith```{rubric} KSP:
179*7f296bb3SBarry Smith```
180*7f296bb3SBarry Smith
181*7f296bb3SBarry Smith- Add KSPGMRESSetBreakdownTolerance() along with option
182*7f296bb3SBarry Smith  -ksp_gmres_breakdown_tolerance to 3.14.3
183*7f296bb3SBarry Smith- Change KSPReasonView() to KSPConvergenceReasonView()
184*7f296bb3SBarry Smith- Change KSPReasonViewFromOptions() to
185*7f296bb3SBarry Smith  KSPConvergedReasonViewFromOptions()
186*7f296bb3SBarry Smith- Add KSPConvergedDefaultSetConvergedMaxits() to declare convergence
187*7f296bb3SBarry Smith  when the maximum number of iterations is reached
188*7f296bb3SBarry Smith- Fix many KSP implementations to actually perform the number of
189*7f296bb3SBarry Smith  iterations requested
190*7f296bb3SBarry Smith- Add KSPMatSolve() for solving iteratively (currently only with
191*7f296bb3SBarry Smith  KSPHPDDM and KSPPREONLY) systems with multiple right-hand sides,
192*7f296bb3SBarry Smith  and KSP{Set|Get}MatSolveBlockSize() to set a block size limit
193*7f296bb3SBarry Smith- Chebyshev uses MAT_SPD to default to CG for the eigen estimate
194*7f296bb3SBarry Smith- Add KSPPIPECG2, a pipelined solver that reduces the number of
195*7f296bb3SBarry Smith  allreduces to one per two iterations and overlaps it with two PCs
196*7f296bb3SBarry Smith  and SPMVs using non-blocking allreduce
197*7f296bb3SBarry Smith
198*7f296bb3SBarry Smith```{rubric} SNES:
199*7f296bb3SBarry Smith```
200*7f296bb3SBarry Smith
201*7f296bb3SBarry Smith- Change SNESReasonView() to SNESConvergedReasonView()
202*7f296bb3SBarry Smith- Change SNESReasonViewFromOptions() to
203*7f296bb3SBarry Smith  SNESConvergedReasonViewFromOptions()
204*7f296bb3SBarry Smith
205*7f296bb3SBarry Smith```{rubric} SNESLineSearch:
206*7f296bb3SBarry Smith```
207*7f296bb3SBarry Smith
208*7f296bb3SBarry Smith```{rubric} TS:
209*7f296bb3SBarry Smith```
210*7f296bb3SBarry Smith
211*7f296bb3SBarry Smith- Fix examples using automatic differentiation. One can use
212*7f296bb3SBarry Smith  '--download-adolc --download-colpack' to install the AD tool
213*7f296bb3SBarry Smith- Improve shift handling in TSComputeXXXJacobian()
214*7f296bb3SBarry Smith- Update TSTrajectory (type memory) to preallocate a checkpoint pool
215*7f296bb3SBarry Smith  to be reused across multiple TS runs
216*7f296bb3SBarry Smith
217*7f296bb3SBarry Smith```{rubric} TAO:
218*7f296bb3SBarry Smith```
219*7f296bb3SBarry Smith
220*7f296bb3SBarry Smith- Add lm regularizer to TAOBRGN. This regularizer turns BRGN into a
221*7f296bb3SBarry Smith  Levenberg-Marquardt algorithm. TAOBRGNGetDamping() vector returns
222*7f296bb3SBarry Smith  the damping vector used by this regularizer
223*7f296bb3SBarry Smith
224*7f296bb3SBarry Smith```{rubric} DM/DA:
225*7f296bb3SBarry Smith```
226*7f296bb3SBarry Smith
227*7f296bb3SBarry Smith- Change DMComputeExactSolution() to also compute the time
228*7f296bb3SBarry Smith  derivative of the exact solution
229*7f296bb3SBarry Smith- Add time derivative of the solution argument to DMAddBoundary(),
230*7f296bb3SBarry Smith  DMGetBoundary(), PetscDSAddBoundary(), PetscDSUpdateBoundary(),
231*7f296bb3SBarry Smith  PetscDSGetBoundary()
232*7f296bb3SBarry Smith
233*7f296bb3SBarry Smith```{rubric} DMPlex:
234*7f296bb3SBarry Smith```
235*7f296bb3SBarry Smith
236*7f296bb3SBarry Smith- Deprecate DMPlexCreateFromCellList\[Parallel\]() in favor of
237*7f296bb3SBarry Smith  DMPlexCreateFromCellList[Parallel]Petsc() which accept PETSc
238*7f296bb3SBarry Smith  datatypes (PetscInt, PetscReal)
239*7f296bb3SBarry Smith- Expose DMPlexBuildFromCellList(),
240*7f296bb3SBarry Smith  DMPlexBuildFromCellListParallel(),
241*7f296bb3SBarry Smith  DMPlexBuildCoordinatesFromCellList(),
242*7f296bb3SBarry Smith  DMPlexBuildCoordinatesFromCellListParallel(). They now accept
243*7f296bb3SBarry Smith  PETSc datatypes
244*7f296bb3SBarry Smith- Add DMPlexMatSetClosureGeneral() for different row and column
245*7f296bb3SBarry Smith  layouts
246*7f296bb3SBarry Smith- DMPlexGet/RestoreClosureIndices() now take argument for ignoring
247*7f296bb3SBarry Smith  the closure permutation and for modifying the input values for
248*7f296bb3SBarry Smith  SetClosure()
249*7f296bb3SBarry Smith- DMPlexComputeInterpolatorNested() now takes a flag allowing nested
250*7f296bb3SBarry Smith  interpolation between different spaces on the same mesh
251*7f296bb3SBarry Smith- Add DMPlexInsertBoundaryValuesEssentialBdField() to insert
252*7f296bb3SBarry Smith  boundary values using a field only supported on the boundary
253*7f296bb3SBarry Smith- Change DMPlexCreateSubpointIS() to DMPlexGetSubpointIS()
254*7f296bb3SBarry Smith- Add PetscDSGet/SetBdJacobianPreconditioner() to assembly a PC for
255*7f296bb3SBarry Smith  the boundary Jacobian
256*7f296bb3SBarry Smith- Add DMSetRegionNumDS() to directly set the DS for a given region
257*7f296bb3SBarry Smith- Add PetscDSGetQuadrature() to get the quadrature shared by all
258*7f296bb3SBarry Smith  fields in the DS
259*7f296bb3SBarry Smith- Add several refinement methods for Plex
260*7f296bb3SBarry Smith- Add DMPlexGet/SetActivePoint() to allow user to see which mesh
261*7f296bb3SBarry Smith  point is being handled by projection
262*7f296bb3SBarry Smith- Add DMPlexComputeOrthogonalQuality() to compute cell-wise
263*7f296bb3SBarry Smith  orthogonality quality mesh statistic
264*7f296bb3SBarry Smith- Change DMPlexSetClosurePermutationTensor() to set tensor
265*7f296bb3SBarry Smith  permutations at every depth, instead of just height 0
266*7f296bb3SBarry Smith- Add DMComputeExactSolution() which uses PetscDS information
267*7f296bb3SBarry Smith- Change DMSNESCheckFromOptions() and DMTSCheckFromOptions() to get
268*7f296bb3SBarry Smith  exact solution from PetscDS
269*7f296bb3SBarry Smith- Change DMPlexSNESGetGeometryFVM() to DMPlexGetGeometryFVM()
270*7f296bb3SBarry Smith- Change DMPlexSNESGetGradientDM() to DMPlexGetGradientDM()
271*7f296bb3SBarry Smith- Change DMPlexCreateSphereMesh() to take a radius
272*7f296bb3SBarry Smith- Add DMPlexCreateBallMesh()
273*7f296bb3SBarry Smith- Change DMSNESCheckDiscretization() to also take the time
274*7f296bb3SBarry Smith- Add argument to DMPlexExtrude() to allow setting normal and add
275*7f296bb3SBarry Smith  options for inputs
276*7f296bb3SBarry Smith- Add DMPlexInsertTimeDerivativeBoundaryValues()
277*7f296bb3SBarry Smith- Add field number argument to DMPlexCreateRigidBody()
278*7f296bb3SBarry Smith
279*7f296bb3SBarry Smith```{rubric} DT:
280*7f296bb3SBarry Smith```
281*7f296bb3SBarry Smith
282*7f296bb3SBarry Smith- Add PetscDTJacobiNorm() for the weighted L2 norm of Jacobi
283*7f296bb3SBarry Smith  polynomials
284*7f296bb3SBarry Smith- Add PetscDTJacobiEvalJet() and PetscDTPKDEvalJet() for evaluating
285*7f296bb3SBarry Smith  the derivatives of orthogonal polynomials on the segment (Jacobi)
286*7f296bb3SBarry Smith  and simplex (PKD)
287*7f296bb3SBarry Smith- Add PetscDTIndexToGradedOrder() and PetscDTGradedOrderToIndex()
288*7f296bb3SBarry Smith  for indexing multivariate monomials and derivatives in a linear
289*7f296bb3SBarry Smith  order
290*7f296bb3SBarry Smith- Add PetscSpaceType "sum" for constructing FE spaces as the sum or
291*7f296bb3SBarry Smith  concatenation of other spaces
292*7f296bb3SBarry Smith- Add PetscDSGet/SetExactSolutionTimeDerivative()
293*7f296bb3SBarry Smith- Add PetscDSSelectDiscretizations()
294*7f296bb3SBarry Smith- Add argument to DM nullspace constructors
295*7f296bb3SBarry Smith
296*7f296bb3SBarry Smith```{rubric} PetscViewer:
297*7f296bb3SBarry Smith```
298*7f296bb3SBarry Smith
299*7f296bb3SBarry Smith- Deprecate the legacy `.vtk` (PETSC_VIEWER_ASCII_VTK) viewer.
300*7f296bb3SBarry Smith  Please use `.vtr` or `.vts` for structured grids (DMDA) and
301*7f296bb3SBarry Smith  `.vtu` for unstructured (DMPlex)
302*7f296bb3SBarry Smith
303*7f296bb3SBarry Smith```{rubric} SYS:
304*7f296bb3SBarry Smith```
305*7f296bb3SBarry Smith
306*7f296bb3SBarry Smith- Add PetscPowInt64 returning a 64bit integer result for cases where
307*7f296bb3SBarry Smith  PetscPowInt result overflows 32bit representations
308*7f296bb3SBarry Smith- Add PetscTimSort\[WithArray\]() for improved performance when
309*7f296bb3SBarry Smith  sorting semi-ordered arrays of any type
310*7f296bb3SBarry Smith- Add PetscIntSortSemiOrdered\[WithArray\](),
311*7f296bb3SBarry Smith  PetscMPIIntSortSemiOrdered\[WithArray\](),
312*7f296bb3SBarry Smith  PetscRealSort\[WithArrayInt\]() which employ
313*7f296bb3SBarry Smith  PetscTimSort\[WithArray\]() as backends respectively to more
314*7f296bb3SBarry Smith  efficiently sort semi-ordered arrays of various Petsc datatypes
315*7f296bb3SBarry Smith- Add PetscMallocTraceSet/Get() to allow tracing of all PetscMalloc
316*7f296bb3SBarry Smith  calls
317*7f296bb3SBarry Smith- Add PetscMallocLogRequestedSizeSet/Get() to allow reporting of the
318*7f296bb3SBarry Smith  original requested size for mallocs, rather than the total size
319*7f296bb3SBarry Smith  with alignment and header
320*7f296bb3SBarry Smith
321*7f296bb3SBarry Smith```{rubric} AO:
322*7f296bb3SBarry Smith```
323*7f296bb3SBarry Smith
324*7f296bb3SBarry Smith```{rubric} Convest:
325*7f296bb3SBarry Smith```
326*7f296bb3SBarry Smith
327*7f296bb3SBarry Smith- Add argument to PetscConvEstUseTS(), so you can use
328*7f296bb3SBarry Smith  -ts_convergence_temporal 0 to check spatial convergence of a TS
329*7f296bb3SBarry Smith  model
330*7f296bb3SBarry Smith
331*7f296bb3SBarry Smith```{rubric} Fortran:
332*7f296bb3SBarry Smith```
333