xref: /petsc/doc/changes/316.md (revision 7f296bb328fcd4c99f2da7bfe8ba7ed8a4ebceee)
1*7f296bb3SBarry Smith# Changes: 3.16
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- Change `MPIU_Allreduce()` to always returns a MPI error code that
13*7f296bb3SBarry Smith  should be checked with `CHKERRMPI(ierr)`
14*7f296bb3SBarry Smith- Add support for A64FX and Cray compilers
15*7f296bb3SBarry Smith- Add support for ESSL 5.2 and later; drop support for ESSL \<=5.1
16*7f296bb3SBarry Smith- Add support for NEC-SX Tsubasa Vector Engine
17*7f296bb3SBarry Smith- Add support for NVIDIA HPC SDK
18*7f296bb3SBarry Smith
19*7f296bb3SBarry Smith```{rubric} Configure/Build:
20*7f296bb3SBarry Smith```
21*7f296bb3SBarry Smith
22*7f296bb3SBarry Smith- Configure requires Python-2.7 or Python-3.4+.
23*7f296bb3SBarry Smith- Remove `--with-kokkos-cuda-arch`. One can use `-with-cuda-gencodearch` to specify the cuda arch for Kokkos. Usually not needed since PETSc auto detects that
24*7f296bb3SBarry Smith- For `--download-hdf5`, disable `--download-hdf5-fortran-bindings` by default
25*7f296bb3SBarry Smith- Add OpenCascade package to PETSc and allow `--download-opencascade`
26*7f296bb3SBarry Smith- Add support for hypre in device mode for both NVIDIA and AMD GPUs
27*7f296bb3SBarry Smith- Extend detection of C++ dialect to C++17. Configure now also takes minimum and maximum required C++ dialect of packages into account when choosing the C++ dialect
28*7f296bb3SBarry Smith
29*7f296bb3SBarry Smith```{rubric} Sys:
30*7f296bb3SBarry Smith```
31*7f296bb3SBarry Smith
32*7f296bb3SBarry Smith- Add `PetscDevice` class to manage discovered GPU devices
33*7f296bb3SBarry Smith- Add `PetscDeviceKind`
34*7f296bb3SBarry Smith- Add `PetscDeviceCreate()`, `PetscDeviceConfigure()`, and `PetscDeviceDestroy()`
35*7f296bb3SBarry Smith- Add `PetscDeviceContext` class to manage asynchronous GPU compute support via a fork-join model
36*7f296bb3SBarry Smith- Add `PetscStreamType` and `PetscDeviceContextJoinMode`
37*7f296bb3SBarry Smith- Add `PetscDeviceContextCreate()`, `PetscDeviceContextDestroy()`, `PetscDeviceContextSetDevice()`, `PetscDeviceContextGetDevice()`,
38*7f296bb3SBarry Smith  `PetscDeviceContextSetStreamType()`, `PetscDeviceContextGetStreamType()`, `PetscDeviceContextSetUp()`, `PetscDeviceContextDuplicate()`,
39*7f296bb3SBarry Smith  `PetscDeviceContextQueryIdle()`, `PetscDeviceContextWaitForContext()`, `PetscDeviceContextFork()`, `PetscDeviceContextJoin()`,
40*7f296bb3SBarry Smith  `PetscDeviceContextSynchronize()`, `PetscDeviceContextGetCurrentContext()`, `PetscDeviceContextSetCurrentContext()`, and
41*7f296bb3SBarry Smith  `PetscDeviceContextSetFromOptions()`
42*7f296bb3SBarry Smith- Deprecate `petsccublas.h` and `petschipblas.h` in favor of `petscdevice.h` and `petscdevicetypes.h`
43*7f296bb3SBarry Smith- Add GPU event timers to capture kernel execution time accurately
44*7f296bb3SBarry Smith- Remove `WaitForCUDA()` and `WaitForHIP()` before `PetscLogGpuTimeEnd()`
45*7f296bb3SBarry Smith- Add MPIU_REAL_INT and MPIU_SCALAR_INT datatypes to be used for reduction operations
46*7f296bb3SBarry Smith- Add MPIU_MAXLOC and MPIU_MINLOC operations
47*7f296bb3SBarry Smith- Add `CHKERRCXX()` to catch C++ exceptions and return a PETSc error code
48*7f296bb3SBarry Smith- Remove `PetscStack` routines from public headers, this class should now be considered private
49*7f296bb3SBarry Smith
50*7f296bb3SBarry Smith```{rubric} PetscViewer:
51*7f296bb3SBarry Smith```
52*7f296bb3SBarry Smith
53*7f296bb3SBarry Smith- `PetscViewerHDF5PushGroup()`: if input path begins with `/`, it is
54*7f296bb3SBarry Smith  taken as absolute, otherwise relative to the current group
55*7f296bb3SBarry Smith- Add `PetscViewerHDF5HasDataset()`
56*7f296bb3SBarry Smith- `PetscViewerHDF5HasAttribute()`,
57*7f296bb3SBarry Smith  `PetscViewerHDF5ReadAttribute()`,
58*7f296bb3SBarry Smith  `PetscViewerHDF5WriteAttribute()`,
59*7f296bb3SBarry Smith  `PetscViewerHDF5HasDataset()` and
60*7f296bb3SBarry Smith  `PetscViewerHDF5HasGroup()`
61*7f296bb3SBarry Smith  support absolute paths (starting with `/`)
62*7f296bb3SBarry Smith  and paths relative to the current pushed group
63*7f296bb3SBarry Smith- Add input argument to `PetscViewerHDF5ReadAttribute()` for default
64*7f296bb3SBarry Smith  value that is used if attribute is not found in the HDF5 file
65*7f296bb3SBarry Smith- Add `PetscViewerHDF5PushTimestepping()`,
66*7f296bb3SBarry Smith  `PetscViewerHDF5PopTimestepping()` and
67*7f296bb3SBarry Smith  `PetscViewerHDF5IsTimestepping()` to control timestepping mode.
68*7f296bb3SBarry Smith- One can call `PetscViewerHDF5IncrementTimestep()`,
69*7f296bb3SBarry Smith  `PetscViewerHDF5SetTimestep()` or `PetscViewerHDF5GetTimestep()` only
70*7f296bb3SBarry Smith  if timestepping mode is active
71*7f296bb3SBarry Smith- Error if timestepped dataset is read/written out of timestepping mode, or
72*7f296bb3SBarry Smith  vice-versa
73*7f296bb3SBarry Smith
74*7f296bb3SBarry Smith```{rubric} PetscDraw:
75*7f296bb3SBarry Smith```
76*7f296bb3SBarry Smith
77*7f296bb3SBarry Smith```{rubric} AO:
78*7f296bb3SBarry Smith```
79*7f296bb3SBarry Smith
80*7f296bb3SBarry Smith```{rubric} IS:
81*7f296bb3SBarry Smith```
82*7f296bb3SBarry Smith
83*7f296bb3SBarry Smith```{rubric} VecScatter / PetscSF:
84*7f296bb3SBarry Smith```
85*7f296bb3SBarry Smith
86*7f296bb3SBarry Smith```{rubric} PF:
87*7f296bb3SBarry Smith```
88*7f296bb3SBarry Smith
89*7f296bb3SBarry Smith```{rubric} Vec:
90*7f296bb3SBarry Smith```
91*7f296bb3SBarry Smith
92*7f296bb3SBarry Smith- Add `VecMean()` to calculate arithmetic mean of elements of a vector
93*7f296bb3SBarry Smith- Add `VecBoundToCPU()` to query information set with `VecBindToCPU()`
94*7f296bb3SBarry Smith
95*7f296bb3SBarry Smith```{rubric} PetscSection:
96*7f296bb3SBarry Smith```
97*7f296bb3SBarry Smith
98*7f296bb3SBarry Smith- Extend `PetscSectionView()` for section saving to HDF5
99*7f296bb3SBarry Smith- Add `PetscSectionLoad()` for section loading from HDF5
100*7f296bb3SBarry Smith
101*7f296bb3SBarry Smith```{rubric} PetscPartitioner:
102*7f296bb3SBarry Smith```
103*7f296bb3SBarry Smith
104*7f296bb3SBarry Smith```{rubric} Mat:
105*7f296bb3SBarry Smith```
106*7f296bb3SBarry Smith
107*7f296bb3SBarry Smith- `MATMPIKAIJ` now tracks the object state of the AIJ matrix describing the blockwise action of the KAIJ matrix and
108*7f296bb3SBarry Smith  automatically rebuilds internal data structures before executing operations with the KAIJ matrix if the state has changed
109*7f296bb3SBarry Smith- Factorization types now provide their preferred ordering (which
110*7f296bb3SBarry Smith  may be `MATORDERINGEXTERNAL`) to prevent PETSc PCFactor from, by
111*7f296bb3SBarry Smith  default, picking an ordering when it is not ideal
112*7f296bb3SBarry Smith- Deprecate `MatFactorGetUseOrdering()`; Use
113*7f296bb3SBarry Smith  `MatFactorGetCanUseOrdering()` instead
114*7f296bb3SBarry Smith- Add `--download-htool` to use hierarchical matrices with the new
115*7f296bb3SBarry Smith  type `MATHTOOL`
116*7f296bb3SBarry Smith- Add `MATCENTERING` special matrix type that implements action of the
117*7f296bb3SBarry Smith  centering matrix
118*7f296bb3SBarry Smith- Remove -mat_mumps_icntl_7 1 option, use -pc_factor_mat_ordering_type \<type> to have PETSc perform the ordering (sequential only)
119*7f296bb3SBarry Smith- Add `MATSOLVERSPQR` - interface to SuiteSparse QR factorization
120*7f296bb3SBarry Smith- Add `MatSeqAIJKron()` - Kronecker product of two `MatSeqAIJ`
121*7f296bb3SBarry Smith- Add `MatNormalGetMat()` to retrieve the underlying `Mat` of a `MATNORMAL`
122*7f296bb3SBarry Smith- Add `MatNormalHermitianGetMat()` to retrieve the underlying `Mat` of a `MATNORMALHERMITIAN`
123*7f296bb3SBarry Smith- Add `VecCreateMPICUDA()` and `VecCreateMPIHIP()` to create MPI device vectors
124*7f296bb3SBarry Smith- Add accessor routines for device index data of `MATSEQAIJCUSPARSE` matrices: `MatSeqAIJCUSPARSEGetIJ()` and `MatSeqAIJCUSPARSERestoreIJ()`
125*7f296bb3SBarry Smith- Add accessor routines for device data of `MATSEQAIJCUSPARSE` matrices: `MatSeqAIJCUSPARSEGetArray()`, `MatSeqAIJCUSPARSERestoreArray()`, `MatSeqAIJCUSPARSEGetArrayRead()`, `MatSeqAIJCUSPARSERestoreArrayRead()`. `MatSeqAIJCUSPARSEGetArrayWrite()`, `MatSeqAIJCUSPARSERestoreArrayWrite()`
126*7f296bb3SBarry Smith- Add support for `MATHYPRE` matrices on NVIDIA and AMD GPUs
127*7f296bb3SBarry Smith- `MatPreallocatorPreallocate` performance [significantly improved](https://gitlab.com/petsc/petsc/-/merge_requests/4273)
128*7f296bb3SBarry Smith- Add `MatGetColumnReductions()` developer routine to calculate reductions over columns of a matrix
129*7f296bb3SBarry Smith- Add `MatGetColumnSums()`, `MatGetColumnSumsRealPart()`, `MatGetColumnSumsImaginaryPart()` to compute sums over matrix columns
130*7f296bb3SBarry Smith- Add `MatGetColumnMeans()`, `MatGetColumnMeansRealPart()`, `MatGetColumnMeansImaginaryPart()` to compute arithmetic means over matrix columns
131*7f296bb3SBarry Smith- Add `MatBoundToCPU()` to query information set with `MatBindToCPU()`
132*7f296bb3SBarry Smith- Rename `MATHARA` in `MATH2OPUS`, supporting distributed memory operations with hierarchical matrices
133*7f296bb3SBarry Smith
134*7f296bb3SBarry Smith```{rubric} PC:
135*7f296bb3SBarry Smith```
136*7f296bb3SBarry Smith
137*7f296bb3SBarry Smith- Add `PCSetPreSolve()`
138*7f296bb3SBarry Smith- Add `PCQR` - interface to SuiteSparse QR factorization for `MatSeqAIJ`,
139*7f296bb3SBarry Smith  `MATNORMAL`, and `MATNORMALHERMITIAN`
140*7f296bb3SBarry Smith- Add support for `MATNORMAL` in `PCASM` and `PCHPDDM`
141*7f296bb3SBarry Smith- Add support for BoomerAMG from `PCHYPRE` to run on NVIDIA and AMD GPUs
142*7f296bb3SBarry Smith- `PCShellGetContext()` now takes `void*` as return argument
143*7f296bb3SBarry Smith- Rename `PCHARA` in `PCH2OPUS`, supporting distributed memory operations with hierarchical matrices
144*7f296bb3SBarry Smith
145*7f296bb3SBarry Smith```{rubric} KSP:
146*7f296bb3SBarry Smith```
147*7f296bb3SBarry Smith
148*7f296bb3SBarry Smith- `KSPGetMonitorContext()` now takes `void*` as return argument
149*7f296bb3SBarry Smith- `KSPGetConvergenceContext()` now takes `void*` as return argument
150*7f296bb3SBarry Smith
151*7f296bb3SBarry Smith```{rubric} SNES:
152*7f296bb3SBarry Smith```
153*7f296bb3SBarry Smith
154*7f296bb3SBarry Smith- Add `SNESSetComputeMFFunction()`
155*7f296bb3SBarry Smith- Add support for `-snes_mf_operator` for use with `SNESSetPicard()`
156*7f296bb3SBarry Smith- `SNESShellGetContext()` now takes `void*` as return argument
157*7f296bb3SBarry Smith
158*7f296bb3SBarry Smith```{rubric} SNESLineSearch:
159*7f296bb3SBarry Smith```
160*7f296bb3SBarry Smith
161*7f296bb3SBarry Smith```{rubric} TS:
162*7f296bb3SBarry Smith```
163*7f296bb3SBarry Smith
164*7f296bb3SBarry Smith- Add `-ts_type irk` - fully implicit Runge-Kutta solvers
165*7f296bb3SBarry Smith- Add `TSTrajectory` interface to the CAMS library for optimal offline checkpointing for multistage time stepping schemes
166*7f296bb3SBarry Smith- Add option `-ts_trajectory_memory_type <revolve | cams | petsc>` to switch checkpointing schedule software
167*7f296bb3SBarry Smith- Add option `-ts_trajectory_max_units_ram` to specify the maximum number of allowed checkpointing units
168*7f296bb3SBarry Smith
169*7f296bb3SBarry Smith```{rubric} TAO:
170*7f296bb3SBarry Smith```
171*7f296bb3SBarry Smith
172*7f296bb3SBarry Smith- `TaoShellGetContext()` now takes `void*` as return argument
173*7f296bb3SBarry Smith
174*7f296bb3SBarry Smith```{rubric} DM/DA:
175*7f296bb3SBarry Smith```
176*7f296bb3SBarry Smith
177*7f296bb3SBarry Smith- Change management of auxiliary data in DM from object composition
178*7f296bb3SBarry Smith  to `DMGetAuxiliaryVec()`/`DMSetAuxiliaryVec()`, `DMCopyAuxiliaryVec()`
179*7f296bb3SBarry Smith- Remove `DMGetNumBoundary()` and `DMGetBoundary()` in favor of DS
180*7f296bb3SBarry Smith  counterparts
181*7f296bb3SBarry Smith- Remove `DMCopyBoundary()`
182*7f296bb3SBarry Smith- Change interface for `DMAddBoundary()`, `PetscDSAddBoundary()`,
183*7f296bb3SBarry Smith  `PetscDSGetBoundary()`, `PetscDSUpdateBoundary()`
184*7f296bb3SBarry Smith- Add `DMDAVecGetArrayDOFWrite()` and `DMDAVecRestoreArrayDOFWrite()`
185*7f296bb3SBarry Smith- `DMShellGetContext()` now takes `void*` as return argument
186*7f296bb3SBarry Smith
187*7f296bb3SBarry Smith```{rubric} DMSwarm:
188*7f296bb3SBarry Smith```
189*7f296bb3SBarry Smith
190*7f296bb3SBarry Smith- Add `DMSwarmGetCellSwarm()` and `DMSwarmRestoreCellSwarm()`
191*7f296bb3SBarry Smith
192*7f296bb3SBarry Smith```{rubric} DMPlex:
193*7f296bb3SBarry Smith```
194*7f296bb3SBarry Smith
195*7f296bb3SBarry Smith- Add a `PETSCVIEWEREXODUSII` viewer type for `DMView()`/`DMLoad()` and
196*7f296bb3SBarry Smith  `VecView()`/`VecLoad()`. Note that not all DMPlex can be saved in exodusII
197*7f296bb3SBarry Smith  format since this file format requires that the numbering of cell
198*7f296bb3SBarry Smith  sets be compact
199*7f296bb3SBarry Smith- Add `PetscViewerExodusIIOpen()` convenience function
200*7f296bb3SBarry Smith- Add `PetscViewerExodusIISetOrder()` to
201*7f296bb3SBarry Smith  generate "2nd order" elements (i.e. tri6, tet10, hex27) when using
202*7f296bb3SBarry Smith  `DMView` with a `PETSCVIEWEREXODUSII` viewer
203*7f296bb3SBarry Smith- Change `DMPlexComputeBdResidualSingle()` and
204*7f296bb3SBarry Smith  `DMPlexComputeBdJacobianSingle()` to take a form key
205*7f296bb3SBarry Smith- Add `DMPlexTopologyLoad()`, `DMPlexCoordinatesLoad()`, and
206*7f296bb3SBarry Smith  `DMPlexLabelsLoad()` for incremental loading of a `DMPlex` object
207*7f296bb3SBarry Smith  from an HDF5 file
208*7f296bb3SBarry Smith- Add `DMPlexTopologyView()`, `DMPlexCoordinatesView()`, and
209*7f296bb3SBarry Smith  `DMPlexLabelsView()` for incremental saving of a `DMPlex` object
210*7f296bb3SBarry Smith  to an HDF5 file
211*7f296bb3SBarry Smith- Add `DMPlexSectionView()` saving a `PetscSection` in
212*7f296bb3SBarry Smith  association with a `DMPlex` mesh
213*7f296bb3SBarry Smith- Add `DMPlexSectionLoad()` loading a `PetscSection` in
214*7f296bb3SBarry Smith  association with a `DMPlex` mesh
215*7f296bb3SBarry Smith- Add `DMPlexGlobalVectorView()` and `DMPlexLocalVectorView()` saving
216*7f296bb3SBarry Smith  global and local vectors in association with a data layout on a `DMPlex` mesh
217*7f296bb3SBarry Smith- Add `DMPlexGlobalVectorLoad()` and `DMPlexLocalVectorLoad()` loading
218*7f296bb3SBarry Smith  global and local vectors in association with a data layout on a `DMPlex` mesh
219*7f296bb3SBarry Smith- Add `DMPlexIsSimplex()` to check the shape of the first cell
220*7f296bb3SBarry Smith- Add `DMPlexShape` to describe prebuilt mesh domains
221*7f296bb3SBarry Smith- Add `DMPlexCreateCoordinateSpace()` to make an FE space for the coordinates
222*7f296bb3SBarry Smith- Add the automatic creation of a Plex from options, see `DMSetFromOptions()`
223*7f296bb3SBarry Smith- The old options for `DMPlexCreateBoxMesh()` NO LONGER WORK. They have been changed to make the interface more uniform
224*7f296bb3SBarry Smith- Replace `DMPlexCreateSquareBoundary()` and `DMPlexCreateCubeBoundary()` with `DMPlexCreateBoxSurfaceMesh()`
225*7f296bb3SBarry Smith- Remove `DMPlexCreateReferenceCellByType()`
226*7f296bb3SBarry Smith- The number of refinements is no longer an argument to `DMPlexCreateHexCylinderMesh()`
227*7f296bb3SBarry Smith- Add `DMSetLabel()`
228*7f296bb3SBarry Smith- Replace `DMPlexComputeJacobianAction()` with `DMSNESComputeJacobianAction()`
229*7f296bb3SBarry Smith- Add `DMSNESCreateJacobianMF()`
230*7f296bb3SBarry Smith- Change `DMPlexComputeBdResidualSingle()` to take `PetscFormKey` instead of explicit label/value/field arguments
231*7f296bb3SBarry Smith- Add `DMPlexInflateToGeomModel()` which pushes refined points out to a geometric boundary
232*7f296bb3SBarry Smith- Separate EGADS and EGADSLite functionality, add `DMPlexCreateEGADSLiteFromFile()`
233*7f296bb3SBarry Smith- Remove `DMPlexReverseCell()` and `DMPlexOrientCell()` in favor of `DMPlexOrientPoint()`
234*7f296bb3SBarry Smith- Remove `DMPlexCompareOrientations()` in favor of `DMPolytopeMatchOrientation()`
235*7f296bb3SBarry Smith- Add `DMPlexGetCompressedClosure()` and `DMPlexRestoreCompressedClosure()`
236*7f296bb3SBarry Smith- Add `DMPlexMetricCreate` as a helper function for creating a (P1) Riemannian metric.
237*7f296bb3SBarry Smith- Add `DMPlexMetricCreateUniform` as a helper function for creating a uniform metric.
238*7f296bb3SBarry Smith- Add `DMPlexMetricCreateIsotropic` as a helper function for creating an isotropic metric.
239*7f296bb3SBarry Smith- Add `DMPlexMetricEnforceSPD` for enforcing that a metric is symmetric positive-definite.
240*7f296bb3SBarry Smith- Add `DMPlexMetricNormalize` to apply L-p metric normalization.
241*7f296bb3SBarry Smith- Add `DMPlexMetricAverage` to average an arbitrary number of metrics.
242*7f296bb3SBarry Smith- Add `DMPlexMetricAverage2` to average two metrics.
243*7f296bb3SBarry Smith- Add `DMPlexMetricAverage3` to average three metrics.
244*7f296bb3SBarry Smith- Add `DMPlexMetricIntersection` to intersect an arbitrary number of metrics.
245*7f296bb3SBarry Smith- Add `DMPlexMetricIntersection2` to intersect two metrics.
246*7f296bb3SBarry Smith- Add `DMPlexMetricIntersection3` to intersect three metrics.
247*7f296bb3SBarry Smith
248*7f296bb3SBarry Smith```{rubric} FE/FV:
249*7f296bb3SBarry Smith```
250*7f296bb3SBarry Smith
251*7f296bb3SBarry Smith- Change `PetscFEIntegrateBdResidual()` and
252*7f296bb3SBarry Smith  `PetscFEIntegrateBdJacobian()` to take both `PetscWeakForm` and form
253*7f296bb3SBarry Smith  key
254*7f296bb3SBarry Smith- Add `PetscFEGeomGetPoint()` and `PetscFEGeomGetCellPoint` to package up geometry handling
255*7f296bb3SBarry Smith
256*7f296bb3SBarry Smith```{rubric} DMNetwork:
257*7f296bb3SBarry Smith```
258*7f296bb3SBarry Smith
259*7f296bb3SBarry Smith- Add `DMNetworkCreateIS()` and `DMNetworkCreateLocalIS()`
260*7f296bb3SBarry Smith- Remove nv from `DMNetworkAddSubnetwork()`
261*7f296bb3SBarry Smith
262*7f296bb3SBarry Smith```{rubric} DMStag:
263*7f296bb3SBarry Smith```
264*7f296bb3SBarry Smith
265*7f296bb3SBarry Smith- Add `DMStagStencilToIndexLocal()`
266*7f296bb3SBarry Smith
267*7f296bb3SBarry Smith```{rubric} DT:
268*7f296bb3SBarry Smith```
269*7f296bb3SBarry Smith
270*7f296bb3SBarry Smith- Add `PetscWeakFormCopy()`, `PetscWeakFormClear()`, `PetscWeakFormRewriteKeys()` and `PetscWeakFormClearIndex()`
271*7f296bb3SBarry Smith- Add `PetscDSDestroyBoundary()` and `PetscDSCopyExactSolutions()`
272*7f296bb3SBarry Smith- `PetscDSGetContext()` now takes `void*` as return argument
273*7f296bb3SBarry Smith- Add `PetscWeakFormReplaceLabel()` to change labels after mesh modification
274*7f296bb3SBarry Smith
275*7f296bb3SBarry Smith```{rubric} Fortran:
276*7f296bb3SBarry Smith```
277*7f296bb3SBarry Smith
278*7f296bb3SBarry Smith- Add support for `PetscInitialize(filename,help,ierr)`,
279*7f296bb3SBarry Smith  `PetscInitialize(ierr)` in addition to current `PetscInitialize(filename,ierr)`
280