xref: /petsc/doc/changes/319.md (revision b11d9968bc79904c690b122f9399be46447eb113)
1*7f296bb3SBarry Smith# Changes: 3.19
2*7f296bb3SBarry Smith
3*7f296bb3SBarry Smith% STYLE GUIDELINES:
4*7f296bb3SBarry Smith% * Capitalize sentences
5*7f296bb3SBarry Smith% * Use imperative, e.g., Add, Improve, Change, etc.
6*7f296bb3SBarry Smith% * Don't use a period (.) at the end of entries
7*7f296bb3SBarry Smith% * If multiple sentences are needed, use a period or semicolon to divide sentences, but not at the end of the final sentence
8*7f296bb3SBarry Smith
9*7f296bb3SBarry Smith```{rubric} General:
10*7f296bb3SBarry Smith```
11*7f296bb3SBarry Smith
12*7f296bb3SBarry Smith- Add perfstubs package, see {ref}`Users Manual: Profiling: Using TAU <sec_using_tau>` for more information on usage
13*7f296bb3SBarry Smith
14*7f296bb3SBarry Smith```{rubric} Configure/Build:
15*7f296bb3SBarry Smith```
16*7f296bb3SBarry Smith
17*7f296bb3SBarry Smith- Remove unused preprocessor variables `PETSC_HAVE_VPRINTF_CHAR`, `PETSC_HAVE_VFPRINTF_CHAR`, `PETSC_STAT_MACROS_BROKEN`, `PETSC_HAVE_FORTRAN_GETARG`, `PETSC_uid_t`, `PETSC_gid_t`, `PETSC_HAVE_PTHREAD_BARRIER_T`, `PETSC_HAVE_SCHED_CPU_SET_T`, `PETSC_HAVE_SYS_SYSCTL_H`, `PETSC_HAVE_SYS_SYSINFO_H`, `PETSC_HAVE_SYSINFO_3ARG`, `PETSC_SIZEOF_SHORT`, and `PETSC_SIZEOF_ENUM`
18*7f296bb3SBarry Smith- Deprecate `--with-gcov` configure option in favor of `--with-coverage`
19*7f296bb3SBarry Smith- Add `--with-coverage-exec` configure option to specify the coverage-collection tool to be used e.g. `gcov` or `/path/to/llvm-cov-15`
20*7f296bb3SBarry Smith- Add `--with-strict-petscerrorcode` configure option to enable compile-time checking for correct usage of `PetscErrorCode`, see below
21*7f296bb3SBarry Smith- Add support for C++20
22*7f296bb3SBarry Smith- Add support for CUDA-12
23*7f296bb3SBarry Smith- Improved C++ dialect handling for non-conformal cases. In general `configure` will fail faster and with a more informative error message when the C++ compiler does not comply with restraints
24*7f296bb3SBarry Smith
25*7f296bb3SBarry Smith```{rubric} Sys:
26*7f296bb3SBarry Smith```
27*7f296bb3SBarry Smith
28*7f296bb3SBarry Smith- Change `PetscOptionsMonitorDefault()` to also take in the option source, and `PetscOptionsMonitorSet()` to take the new monitor function
29*7f296bb3SBarry Smith
30*7f296bb3SBarry Smith- Deprecate `PetscTable` and related functions. Previous users of `PetscTable` are encouraged to use the more performant `PetscHMapI` instead, though they should note that this requires additional steps and limitations:
31*7f296bb3SBarry Smith
32*7f296bb3SBarry Smith  1. `#include <petscctable.h>` must be swapped for `#include <petsc/private/hashmapi.h>`. This of course requires that you have access to the private PETSc headers.
33*7f296bb3SBarry Smith
34*7f296bb3SBarry Smith  2. While most of the old `PetscTable` routines have direct analogues in `PetscHMapI`, `PetscAddCount()` does not. All uses of this routine should be replaced with the following snippet:
35*7f296bb3SBarry Smith
36*7f296bb3SBarry Smith     ```
37*7f296bb3SBarry Smith     // PetscHMapI hash_table;
38*7f296bb3SBarry Smith     // PetscInt   key;
39*7f296bb3SBarry Smith
40*7f296bb3SBarry Smith     PetscHashIter it;
41*7f296bb3SBarry Smith     PetscBool     missing;
42*7f296bb3SBarry Smith
43*7f296bb3SBarry Smith     PetscCall(PetscHMapIPut(hash_table, key, &it, &missing));
44*7f296bb3SBarry Smith     if (missing) {
45*7f296bb3SBarry Smith       PetscInt size;
46*7f296bb3SBarry Smith
47*7f296bb3SBarry Smith       PetscCall(PetscHMapIGetSize(hash_table, &size));
48*7f296bb3SBarry Smith       PetscCall(PetscHMapIIterSet(hash_table, it, size));
49*7f296bb3SBarry Smith     }
50*7f296bb3SBarry Smith     ```
51*7f296bb3SBarry Smith
52*7f296bb3SBarry Smith  Furthermore, users should note that `PetscHMapI` is based on -- and directly `#include` s -- `${PETSC_DIR}/include/petsc/private/khash/khash.h`. This file contains external source code that is licensed under the MIT license, which is separate from the PETSc license.
53*7f296bb3SBarry Smith
54*7f296bb3SBarry Smith- Remove undocumented `PETSC_MPI_WIN_FMT` and `PETSC_MPI_COMM_FMT`. Users should cast both `MPI_Comm` and `MPI_Win` to `PETSC_INTPTR_T` and use the `PETSC_INTPTR_T_FMT` format specifier instead:
55*7f296bb3SBarry Smith
56*7f296bb3SBarry Smith   ```
57*7f296bb3SBarry Smith   MPI_Comm comm;
58*7f296bb3SBarry Smith   MPI_Win  win;
59*7f296bb3SBarry Smith
60*7f296bb3SBarry Smith   // old
61*7f296bb3SBarry Smith   PetscCall(PetscPrintf(..., "MPI Comm %" PETSC_MPI_COMM_FMT, comm));
62*7f296bb3SBarry Smith   PetscCall(PetscPrintf(..., "MPI Window %" PETSC_MPI_WIN_FMT, win));
63*7f296bb3SBarry Smith
64*7f296bb3SBarry Smith   // new
65*7f296bb3SBarry Smith   PetscCall(PetscPrintf(..., "MPI Comm %" PETSC_INTPTR_T_FMT, (PETSC_INTPTR_T)comm));
66*7f296bb3SBarry Smith   PetscCall(PetscPrintf(..., "MPI Window %" PETSC_INTPTR_T_FMT, (PETSC_INTPTR_T)win));
67*7f296bb3SBarry Smith   ```
68*7f296bb3SBarry Smith
69*7f296bb3SBarry Smith- Deprecate `PETSC_NULL` in favor of `PETSC_NULLPTR` as it does the right thing in both C and C++
70*7f296bb3SBarry Smith
71*7f296bb3SBarry Smith- Significantly improve lookup and deletion performance of `PetscFunctionList`. This also improves performance of `PetscObjectComposeFunction()` and `PetscObjectQueryFunction()`.
72*7f296bb3SBarry Smith
73*7f296bb3SBarry Smith- Optionally define `PetscErrorCode` as an `enum`, and tag it as `PETSC_NODISCARD`. This feature may be enabled by configuring PETSc with `--with-strict-petscerrorcode` configure option. This feature allows catching the following logical errors at compile-time:
74*7f296bb3SBarry Smith
75*7f296bb3SBarry Smith  1. Not properly checking the return-code of PETSc calls via `PetscCall()`. PETSc is left in an inconsistent state when errors are detected and cannot generally recover from them, so is not supported.
76*7f296bb3SBarry Smith  2. Using the wrong `PetscCall()` variant, for example using `PetscCall()` on MPI functions (instead of `PetscCallMPI()`).
77*7f296bb3SBarry Smith  3. Returning `PetscErrorCode` from `main()` instead of `int`.
78*7f296bb3SBarry Smith
79*7f296bb3SBarry Smith  Users should note that this comes with the following additional changes:
80*7f296bb3SBarry Smith
81*7f296bb3SBarry Smith  1. Add `PETSC_SUCCESS` to indicate success, always guaranteed to equal `0`.
82*7f296bb3SBarry Smith
83*7f296bb3SBarry Smith  2. `PetscFunctionReturn(0)` should be changed to `PetscFunctionReturn(PETSC_SUCCESS)`. While the original `0`-form will continue to work in C, it is required for C++.
84*7f296bb3SBarry Smith
85*7f296bb3SBarry Smith  3. Any user-defined macros using boolean short-circuiting to chain multiple calls in the same line, which logically return a `PetscErrorCode`, should now explicitly cast the "result" of the macro with `PetscErrorCode`:
86*7f296bb3SBarry Smith
87*7f296bb3SBarry Smith     ```
88*7f296bb3SBarry Smith     // Both foo() and bar() defined as returning PetscErrorCode
89*7f296bb3SBarry Smith     extern PetscErrorCode foo(int);
90*7f296bb3SBarry Smith     extern PetscErrorCode bar(int);
91*7f296bb3SBarry Smith
92*7f296bb3SBarry Smith     // The following macros logically "return" a PetscErrorCode, i.e. can
93*7f296bb3SBarry Smith     // be used:
94*7f296bb3SBarry Smith     //
95*7f296bb3SBarry Smith     // PetscCall(MY_USER_MACRO(a, b));
96*7f296bb3SBarry Smith     //
97*7f296bb3SBarry Smith     // but use boolean short-circuiting to chain the calls together. bar()
98*7f296bb3SBarry Smith     // only executes if foo() returns PETSC_SUCCESS
99*7f296bb3SBarry Smith
100*7f296bb3SBarry Smith     // old
101*7f296bb3SBarry Smith     #define MY_USER_MACRO(a, b) (foo(a) || bar(b))
102*7f296bb3SBarry Smith
103*7f296bb3SBarry Smith     // new
104*7f296bb3SBarry Smith     #define MY_BETTER_USER_MACRO(a, b) ((PetscErrorCode)(foo(a) || bar(b)))
105*7f296bb3SBarry Smith     ```
106*7f296bb3SBarry Smith
107*7f296bb3SBarry Smith  While currently opt-in, this feature **will be enabled by default in a future release**. Users are highly encourage to enable it and fix any discrepancies before that point. Note that `PETSC_SUCCESS` is defined whether or not the feature is enabled, so users may incrementally update.
108*7f296bb3SBarry Smith
109*7f296bb3SBarry Smith- Add `PetscFFlush()`
110*7f296bb3SBarry Smith
111*7f296bb3SBarry Smith- Soft-deprecate `PetscStrcpy()` and `PetscStrcat()`. No diagnostics will be emitted if these routines are used, but users are highly encouraged to switch to the more secure (and possibly performant) `PetscStrncpy()` and `PetscStrlcat()`
112*7f296bb3SBarry Smith
113*7f296bb3SBarry Smith- Add `PETSC_REAL_MIN` for smallest normalized floating point number
114*7f296bb3SBarry Smith
115*7f296bb3SBarry Smith- Add `PETSC_ATTRIBUTE_MAY_ALIAS` to inform compilers that a type is not subjected to type-based alias analysis
116*7f296bb3SBarry Smith
117*7f296bb3SBarry Smith```{rubric} Event Logging:
118*7f296bb3SBarry Smith```
119*7f296bb3SBarry Smith
120*7f296bb3SBarry Smith```{rubric} PetscViewer:
121*7f296bb3SBarry Smith```
122*7f296bb3SBarry Smith
123*7f296bb3SBarry Smith- The VTK viewers (`.vts`, `.vtr`, and `.vtu`) now use `header_type="UInt64"` to enable writing large binary appended blocks
124*7f296bb3SBarry Smith
125*7f296bb3SBarry Smith```{rubric} PetscDraw:
126*7f296bb3SBarry Smith```
127*7f296bb3SBarry Smith
128*7f296bb3SBarry Smith- Add `PetscDrawSetVisible()` to set if the drawing surface (the 'window') is visible on its display
129*7f296bb3SBarry Smith
130*7f296bb3SBarry Smith```{rubric} AO:
131*7f296bb3SBarry Smith```
132*7f296bb3SBarry Smith
133*7f296bb3SBarry Smith```{rubric} IS:
134*7f296bb3SBarry Smith```
135*7f296bb3SBarry Smith
136*7f296bb3SBarry Smith- Change `ISDuplicate()` to preserve the block size of the input in the output
137*7f296bb3SBarry Smith- Deprecate `ISCompressIndicesSorted()`
138*7f296bb3SBarry Smith
139*7f296bb3SBarry Smith```{rubric} VecScatter / PetscSF:
140*7f296bb3SBarry Smith```
141*7f296bb3SBarry Smith
142*7f296bb3SBarry Smith- Add experimental support in PetscSF for MPICH MPIX_Stream (with MPICH-4.2.0 and higher). One can enable it via `-sf_use_stream_aware_mpi`
143*7f296bb3SBarry Smith- Add an alias option `-sf_use_gpu_aware_mpi` to `-use_gpu_aware_mpi`
144*7f296bb3SBarry Smith- Remove `SCATTER_LOCAL` from the enum type since it is not a public value
145*7f296bb3SBarry Smith- Change `PetscSFConcatenate()` to accept `PetscSFConcatenateRootMode` parameter; add option to concatenate root spaces globally
146*7f296bb3SBarry Smith- Add `PetscSFSetGraphFromCoordinates()` to construct a graph from fuzzy matching of coordinates; such as occurs for projections between different dimensions or for overlapping meshes
147*7f296bb3SBarry Smith
148*7f296bb3SBarry Smith```{rubric} PF:
149*7f296bb3SBarry Smith```
150*7f296bb3SBarry Smith
151*7f296bb3SBarry Smith```{rubric} Vec:
152*7f296bb3SBarry Smith```
153*7f296bb3SBarry Smith
154*7f296bb3SBarry Smith- Document `VecOperation`
155*7f296bb3SBarry Smith- Add `VECOP_SET`
156*7f296bb3SBarry Smith- Significantly improve performance of `VecMDot()`, `VecMAXPY()` and `VecDotNorm2()` for CUDA and HIP vector types. These routines should be between 2x and 4x faster.
157*7f296bb3SBarry Smith- Enforce the rule that `VecAssemblyBegin()` and `VecAssemblyEnd()` must be called on even sequential vectors after calls to `VecSetValues()`. This also applies to assignment of vector entries in petsc4py
158*7f296bb3SBarry Smith
159*7f296bb3SBarry Smith```{rubric} PetscSection:
160*7f296bb3SBarry Smith```
161*7f296bb3SBarry Smith
162*7f296bb3SBarry Smith```{rubric} PetscPartitioner:
163*7f296bb3SBarry Smith```
164*7f296bb3SBarry Smith
165*7f296bb3SBarry Smith```{rubric} Mat:
166*7f296bb3SBarry Smith```
167*7f296bb3SBarry Smith
168*7f296bb3SBarry Smith- `MatSetValues()` and friends will now provide reasonable performance when no preallocation information is provided
169*7f296bb3SBarry Smith- Add `MatEliminateZeros()`
170*7f296bb3SBarry Smith- Improve efficiency of `MatConvert()` from `MATNORMAL` to `MATHYPRE`
171*7f296bb3SBarry Smith- Add `MatDenseGetArrayAndMemType()`, `MatDenseRestoreArrayAndMemType()`, `MatDenseGetArrayReadAndMemType()`, `MatDenseRestoreArrayReadAndMemType()`, `MatDenseGetArrayWriteAndMemType()` and `MatDenseRestoreArrayWriteAndMemType()` to return the array and memory type of a dense matrix
172*7f296bb3SBarry Smith- Deprecate all MatPreallocate\* routines. These are no longer needed since non-preallocated matrices will now be as fast as using them
173*7f296bb3SBarry Smith- Significantly improve performance of `MatScale()` and `MatAXPY()` for `MATDENSECUDA` and `MATDENSEHIP` in the case where the leading dimension is greater than the number of columns/rows. This situation arises when using e.g. sub-matrices. These routines should be between 3x and 4x faster
174*7f296bb3SBarry Smith
175*7f296bb3SBarry Smith```{rubric} MatCoarsen:
176*7f296bb3SBarry Smith```
177*7f296bb3SBarry Smith
178*7f296bb3SBarry Smith```{rubric} PC:
179*7f296bb3SBarry Smith```
180*7f296bb3SBarry Smith
181*7f296bb3SBarry Smith- Add `PCHPDDMSetSTShareSubKSP()`
182*7f296bb3SBarry Smith
183*7f296bb3SBarry Smith```{rubric} KSP:
184*7f296bb3SBarry Smith```
185*7f296bb3SBarry Smith
186*7f296bb3SBarry Smith- Add `KSPMonitorDynamicToleranceCreate()` and `KSPMonitorDynamicToleranceSetCoefficient()`
187*7f296bb3SBarry Smith- Change `-sub_ksp_dynamic_tolerance_param` to `-sub_ksp_dynamic_tolerance`
188*7f296bb3SBarry Smith- Add support for `MATAIJCUSPARSE` and `VECCUDA` to `KSPHPDDM`
189*7f296bb3SBarry Smith- Deprecate `KSP_CONVERGED_CG_NEG_CURVE` in favor of `KSP_CONVERGED_NEG_CURVE`
190*7f296bb3SBarry Smith- Deprecate `KSP_CONVERGED_CG_CONSTRAINED` in favor of `KSP_CONVERGED_STEP_LENGTH`
191*7f296bb3SBarry Smith- Add fourth kind Chebyshev polynomials; see `KSPChebyshevKind` and `KSPChebyshevSetKind()`
192*7f296bb3SBarry Smith- Add `KSPSetConvergedNegativeCurvature()` to declare convergence if negative curvature is detected by the Krylov solver
193*7f296bb3SBarry Smith- Add MINRES-QLP, available via `KSPMINRESSetUseQLP()` or the command line `-ksp_minres_qlp`
194*7f296bb3SBarry Smith- Replace old MINRES implementation
195*7f296bb3SBarry Smith- Add `KSPMatSolveTranspose()`
196*7f296bb3SBarry Smith
197*7f296bb3SBarry Smith```{rubric} SNES:
198*7f296bb3SBarry Smith```
199*7f296bb3SBarry Smith
200*7f296bb3SBarry Smith- Add `SNESPruneJacobianColor()` to improve the MFFD coloring
201*7f296bb3SBarry Smith- Add `SNESVIGetVariableBounds()` to access variable bounds of a `SNESVI`
202*7f296bb3SBarry Smith
203*7f296bb3SBarry Smith```{rubric} SNESLineSearch:
204*7f296bb3SBarry Smith```
205*7f296bb3SBarry Smith
206*7f296bb3SBarry Smith```{rubric} TS:
207*7f296bb3SBarry Smith```
208*7f296bb3SBarry Smith
209*7f296bb3SBarry Smith- Add `TSPruneIJacobianColor()` to improve the MFFD coloring
210*7f296bb3SBarry Smith- Add argument to `TSMonitorSPCtxCreate()` to enable multispecies plots
211*7f296bb3SBarry Smith- Add `TSMonitorHGCtxCreate()`, `TSMonitorHGCtxDestroy()`, `TSMonitorHGSwarmSolution()` to support histogram plots of particle swarms
212*7f296bb3SBarry Smith- Add support for first-order adjoint calculation for `TSARKIMEX`
213*7f296bb3SBarry Smith
214*7f296bb3SBarry Smith```{rubric} TAO:
215*7f296bb3SBarry Smith```
216*7f296bb3SBarry Smith
217*7f296bb3SBarry Smith```{rubric} DM/DA:
218*7f296bb3SBarry Smith```
219*7f296bb3SBarry Smith
220*7f296bb3SBarry Smith- Add `DMLabelGetType()`, `DMLabelSetType()`, `DMLabelSetUp()`, `DMLabelRegister()`, `DMLabelRegisterAll()`, `DMLabelRegisterDestroy()`
221*7f296bb3SBarry Smith- Add `DMLabelEphemeralGetLabel()`, `DMLabelEphemeralSetLabel()`, `DMLabelEphemeralGetTransform()`, `DMLabelEphemeralSetTransform()`
222*7f296bb3SBarry Smith- Now `DMGetCellDS()`, `DMGetRegionDS()`, `DMSetRegionDS()`, `DMGetRegionNumDS()`, `DMSetRegionNumDS()` can also set and return an input DS
223*7f296bb3SBarry Smith
224*7f296bb3SBarry Smith```{rubric} DMSwarm:
225*7f296bb3SBarry Smith```
226*7f296bb3SBarry Smith
227*7f296bb3SBarry Smith- Add `DMSwarmGetMigrateType()` and `DMSwarmSetMigrateType()`
228*7f296bb3SBarry Smith
229*7f296bb3SBarry Smith```{rubric} DMPlex:
230*7f296bb3SBarry Smith```
231*7f296bb3SBarry Smith
232*7f296bb3SBarry Smith- Add `DMPlexGetOrientedCone()` and `DMPlexRestoreOrientedCone()` to return both cone and orientation together
233*7f296bb3SBarry Smith- Add `DMPlexTransformGetChart()`, `DMPlexTransformGetCellType()`, `DMPlexTransformGetDepth()`, `DMPlexTransformGetDepthStratum()`, `DMPlexTransformGetConeSize()` to enable ephemeral meshes
234*7f296bb3SBarry Smith- Remove `DMPlexAddConeSize()`
235*7f296bb3SBarry Smith- Add `DMPlexCreateEphemeral()`
236*7f296bb3SBarry Smith- Both `DMView()` and `DMLoad()` now support parallel I/O with a new HDF5 format (see the manual for details)
237*7f296bb3SBarry Smith- Remove `DMPlexComputeGeometryFEM()` since it was broken
238*7f296bb3SBarry Smith- Change `DMPlexMarkBoundaryFaces()` to avoid marking faces on the parallel boundary. To get the prior behavior, you can temporarily remove the `PointSF` from the `DM`
239*7f296bb3SBarry Smith- Add `-dm_localize_height` to localize edges and faces
240*7f296bb3SBarry Smith- Add `DMPlexCreateHypercubicMesh()` to create hypercubic meshes needed for QCD
241*7f296bb3SBarry Smith- Add `-dm_plex_shape zbox` option to `DMSetFromOptions()` to generated born-parallel meshes in Z-ordering (a space-filling curve). This may be used as-is with `-petscpartitioner_type simple` or redistributed using `-petscpartitioner_type parmetis` (or `ptscotch`, etc.), which is more scalable than creating a serial mesh to partition and distribute.
242*7f296bb3SBarry Smith- Add `DMPlexSetIsoperiodicFaceSF()` to wrap a non-periodic mesh into periodic while preserving the local point representation for both donor and image sheet. This is supported with `zbox` above, and allows single-element periodicity.
243*7f296bb3SBarry Smith- Now `DMPlexGetCompressedClosure()` also takes the point orientation
244*7f296bb3SBarry Smith- Add `DMPlexReorderCohesiveSupports()`
245*7f296bb3SBarry Smith
246*7f296bb3SBarry Smith```{rubric} FE/FV:
247*7f296bb3SBarry Smith```
248*7f296bb3SBarry Smith
249*7f296bb3SBarry Smith- Add `DMPlexGetLocalOffsetsSupport()` for interaction with libCEED for FV
250*7f296bb3SBarry Smith- Now `PetscFEIntegrateHybridResidual()` and `PetscFEIntegrateHybridJacobian()` also take the input DS
251*7f296bb3SBarry Smith
252*7f296bb3SBarry Smith```{rubric} DMNetwork:
253*7f296bb3SBarry Smith```
254*7f296bb3SBarry Smith
255*7f296bb3SBarry Smith- Add DMNetworkGetNumVertices to retrieve the local and global number of vertices in DMNetwork
256*7f296bb3SBarry Smith- Add DMNetworkGetNumEdges to retrieve the local and global number of edges in DMNetwork
257*7f296bb3SBarry Smith- Add the ability to use `DMView()` on a DMNetwork with a PetscViewer with format `PETSC_VIEWER_ASCII_CSV`
258*7f296bb3SBarry Smith- Add the ability to use `-dmnetwork_view draw` and `-dmnetwork_view_distributed draw` to visualize a DMNetwork with an associated coordinate DM. This currently requires the configured Python environment to have `matplotlib` and `pandas` installed
259*7f296bb3SBarry Smith
260*7f296bb3SBarry Smith```{rubric} DMStag:
261*7f296bb3SBarry Smith```
262*7f296bb3SBarry Smith
263*7f296bb3SBarry Smith```{rubric} DT:
264*7f296bb3SBarry Smith```
265*7f296bb3SBarry Smith
266*7f296bb3SBarry Smith- Add `PetscDTCreateDefaultQuadrature()`
267*7f296bb3SBarry Smith- Add `PetscQuadratureComputePermutations()` to compute the quadrature permutation corresponding to a k-cell orientation and `PetscDSPermuteQuadPoint()`
268*7f296bb3SBarry Smith- Add `PetscQuadratureGetCellType()` and `PetscQuadratureSetCellType()`
269*7f296bb3SBarry Smith- Add `PetscDSCopy()`
270*7f296bb3SBarry Smith
271*7f296bb3SBarry Smith```{rubric} Fortran:
272*7f296bb3SBarry Smith```
273*7f296bb3SBarry Smith
274*7f296bb3SBarry Smith- Add `MatMPIAIJGetSeqAIJF90()`, `MatMPIAIJRestoreSeqAIJF90()`
275*7f296bb3SBarry Smith- Deprecate `ISGetIndices()` in favor of `ISGetIndicesF90()`
276*7f296bb3SBarry Smith- Deprecate `ISRestoreIndices()` in favor of `ISRestoreIndicesF90()`
277*7f296bb3SBarry Smith- Deprecate `ISLocalToGlobalMappingGetIndices()` in favor of `ISLocalToGlobalMappingGetIndicesF90()`
278*7f296bb3SBarry Smith- Deprecate `ISLocalToGlobalMappingRestoreIndices()` in favor of `ISLocalToGlobalMappingRestoreIndicesF90()`
279*7f296bb3SBarry Smith- Deprecate `VecGetArray()` in favor of `VecGetArrayF90()`
280*7f296bb3SBarry Smith- Deprecate `VecRestoreArray()` in favor of `VecRestoreArrayF90()`
281*7f296bb3SBarry Smith- Deprecate `VecGetArrayRead()` in favor of `VecGetArrayReadF90()`
282*7f296bb3SBarry Smith- Deprecate `VecRestoreArrayRead()` in favor of `VecRestoreArrayReadF90()`
283*7f296bb3SBarry Smith- Deprecate `VecDuplicateVecs()` in favor of `VecDuplicateVecsF90()`
284*7f296bb3SBarry Smith- Deprecate `VecDestroyVecs()` in favor of `VecDestroyVecsF90()`
285*7f296bb3SBarry Smith- Deprecate `DMDAVecGetArray()` in favor of `DMDAVecGetArrayF90()`
286*7f296bb3SBarry Smith- Deprecate `DMDAVecRestoreArray()` in favor of `DMDAVecRestoreArrayF90()`
287*7f296bb3SBarry Smith- Deprecate `DMDAVecGetArrayRead()` in favor of `DMDAVecGetArrayReadF90()`
288*7f296bb3SBarry Smith- Deprecate `DMDAVecRestoreArrayRead()` in favor of `DMDAVecRestoreArrayReadF90()`
289*7f296bb3SBarry Smith- Deprecate `DMDAVecGetArrayWrite()` in favor of `DMDAVecGetArrayWriteF90()`
290*7f296bb3SBarry Smith- Deprecate `DMDAVecRestoreArrayWrite()` in favor of `DMDAVecRestoreArrayWriteF90()`
291*7f296bb3SBarry Smith- Deprecate `MatGetRowIJ()` in favor of `MatGetRowIJF90()`
292*7f296bb3SBarry Smith- Deprecate `MatRestoreRowIJ()` in favor of `MatRestoreRowIJF90()`
293*7f296bb3SBarry Smith- Deprecate `MatSeqAIJGetArray()` in favor of `MatSeqAIJGetArrayF90()`
294*7f296bb3SBarry Smith- Deprecate `MatSeqAIJRestoreArray()` in favor of `MatSeqAIJRestoreArrayF90()`
295*7f296bb3SBarry Smith- Deprecate `MatMPIAIJGetSeqAIJ()` in favor of `MatMPIAIJGetSeqAIJF90()`
296*7f296bb3SBarry Smith- Deprecate `MatDenseGetArray()` in favor of `MatDenseGetArrayF90()`
297*7f296bb3SBarry Smith- Deprecate `MatDenseRestoreArray()` in favor of `MatDenseRestoreArrayF90()`
298