xref: /petsc/doc/changes/318.md (revision b11d9968bc79904c690b122f9399be46447eb113)
1*7f296bb3SBarry Smith# Changes: 3.18
2*7f296bb3SBarry Smith
3*7f296bb3SBarry SmithChanges you should make for main and version 3.18 so that it is portable to previous versions of PETSc
4*7f296bb3SBarry Smith
5*7f296bb3SBarry Smith- Remove the error handling from uses of `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscObjectOptionsBegin()`, `PetscOptionsHead()`, and `PetscOptionsTail()`
6*7f296bb3SBarry Smith- Remove the error handling from uses of `PetscDrawCollectiveBegin()` and `PetscDrawCollectiveEnd()`
7*7f296bb3SBarry Smith- Remove the error handling from uses of `MatPreallocateInitialize()` and `MatPreallocateFinalize()`
8*7f296bb3SBarry Smith- Replace `MatUpdateMPIAIJWithArrays()` with `MatUpdateMPIAIJWithArray()`
9*7f296bb3SBarry Smith
10*7f296bb3SBarry SmithChanges you can make for main and version 3.18 so that is not portable to previous versions of PETSc. This will remove all deprecation warnings when you build.
11*7f296bb3SBarry SmithIn addition to the changes above
12*7f296bb3SBarry Smith
13*7f296bb3SBarry Smith- Change `PetscOptionsHead()` and `PetscOptionsTail()` to `PetscOptionsHeadBegin()` and `PetscOptionsHeadEnd()`
14*7f296bb3SBarry Smith- Change `MatPreallocateInitialize()` and `MatPreallocateFinalize()` to `MatPreallocateBegin()` and `MatPreallocateEnd()`
15*7f296bb3SBarry Smith- Change uses of `MatGetOption()` with `MAT_SYMMETRIC`, `MAT_STRUCTURALLY_SYMMETRIC`, `MAT_HERMITIAN`, `MAT_SPD` to calls to `MatIsSymmetric()`, `MatIsSymmetricKnown()` etc.
16*7f296bb3SBarry Smith- Whenever you call `MatSetOption()` with one of the above options and it is intended to stay with the matrix through calls to `MatSetValues()` etc add a call
17*7f296bb3SBarry Smith  to `MatSetOption()` with `MAT_SYMMETRY_ETERNAL` etc
18*7f296bb3SBarry Smith
19*7f296bb3SBarry Smith% STYLE GUIDELINES:
20*7f296bb3SBarry Smith% * Capitalize sentences
21*7f296bb3SBarry Smith% * Use imperative, e.g., Add, Improve, Change, etc.
22*7f296bb3SBarry Smith% * Don't use a period (.) at the end of entries
23*7f296bb3SBarry Smith% * If multiple sentences are needed, use a period or semicolon to divide sentences, but not at the end of the final sentence
24*7f296bb3SBarry Smith
25*7f296bb3SBarry Smith```{rubric} General:
26*7f296bb3SBarry Smith```
27*7f296bb3SBarry Smith
28*7f296bb3SBarry Smith- Add native PETSc/HIP backend for AMD GPUs
29*7f296bb3SBarry Smith
30*7f296bb3SBarry Smith- Add `PETSC_ERR_RETURN` to signal when an error handler returns 0 in `PetscError()`
31*7f296bb3SBarry Smith
32*7f296bb3SBarry Smith- Change behavior of `SETERRQ()` when `PetscError()` returns 0 via user-set error handler. In such cases `SETERRQ()` now returns `PETSC_ERR_RETURN` (a nonzero value) instead. Previously the value (0) would be propagated as-is. Note that while returning 0 from error handlers in `PetscError()` is supported, doing so is discouraged
33*7f296bb3SBarry Smith
34*7f296bb3SBarry Smith- Change `PetscOptionsBegin()`, `PetscOptionsEnd()`, and `PetscObjectOptionsBegin()` to not return an error code
35*7f296bb3SBarry Smith
36*7f296bb3SBarry Smith- Change `PetscOptionsHead()`, `PetscOptionsTail()`, to `PetscOptionsHeadBegin()` and `PetscOptionsHeadEnd()` and to not return an error code
37*7f296bb3SBarry Smith
38*7f296bb3SBarry Smith- Enable `MPI_Datatype` type-checking to ensure that the type of the pointer passed to communication routines (e.g. `PetscSFBcastBegin()`) matches the corresponding `MPI_Datatype` argument. Compilers supporting this feature will emit a warning in case of mismatch. These may be disabled by defining `PETSC_SKIP_ATTRIBUTE_MPI_TYPE_TAG` prior to all PETSc header-file inclusions
39*7f296bb3SBarry Smith
40*7f296bb3SBarry Smith- Add `PETSC_ATTRIBUTE_FORMAT()` to enable compile-time `printf()`-style format specifier checking and apply it any PETSc functions taking a format string
41*7f296bb3SBarry Smith
42*7f296bb3SBarry Smith- Deprecate the use of `%D` for printing `PetscInt` in favor of `%" PetscInt_FMT "`. Compilers may now emit warnings when using `%D` as a result of applying `PETSC_ATTRIBUTE_FORMAT`. Users that need to support older versions of PETSc may do one of two things:
43*7f296bb3SBarry Smith
44*7f296bb3SBarry Smith  1. **Recommended** Insert the following code block *after* all PETSc header-file inclusions
45*7f296bb3SBarry Smith
46*7f296bb3SBarry Smith     ```
47*7f296bb3SBarry Smith     #if !defined(PetscInt_FMT)
48*7f296bb3SBarry Smith     #  if defined(PETSC_USE_64BIT_INDICES)
49*7f296bb3SBarry Smith     #    if !defined(PetscInt64_FMT)
50*7f296bb3SBarry Smith     #      if defined(PETSC_HAVE_STDINT_H) && defined(PETSC_HAVE_INTTYPES_H) && defined(PETSC_HAVE_MPI_INT64_T)
51*7f296bb3SBarry Smith     #        include <inttypes.h>
52*7f296bb3SBarry Smith     #        define PetscInt64_FMT PRId64
53*7f296bb3SBarry Smith     #      elif (PETSC_SIZEOF_LONG_LONG == 8)
54*7f296bb3SBarry Smith     #        define PetscInt64_FMT "lld"
55*7f296bb3SBarry Smith     #      elif defined(PETSC_HAVE___INT64)
56*7f296bb3SBarry Smith     #        define PetscInt64_FMT "ld"
57*7f296bb3SBarry Smith     #      else
58*7f296bb3SBarry Smith     #        error "cannot determine PetscInt64 type"
59*7f296bb3SBarry Smith     #      endif
60*7f296bb3SBarry Smith     #    endif
61*7f296bb3SBarry Smith     #    define PetscInt_FMT PetscInt64_FMT
62*7f296bb3SBarry Smith     #  else
63*7f296bb3SBarry Smith     #    define PetscInt_FMT "d"
64*7f296bb3SBarry Smith     #  endif
65*7f296bb3SBarry Smith     #endif
66*7f296bb3SBarry Smith     ```
67*7f296bb3SBarry Smith
68*7f296bb3SBarry Smith     This will ensure that the appropriate format specifiers are defined regardless of PETSc version.
69*7f296bb3SBarry Smith
70*7f296bb3SBarry Smith  2. **Not Recommended** Compilers warnings can be permanently suppressed by defining `PETSC_SKIP_ATTRIBUTE_FORMAT` prior to all PETSc header-file inclusions
71*7f296bb3SBarry Smith
72*7f296bb3SBarry Smith- `chkerrconvert.py` (`${PETSC_DIR}/share/petsc/chkerrconvert.py`) now also handles possible spaces between the semi-colon and `CHKERR` construct when replacing.
73*7f296bb3SBarry Smith
74*7f296bb3SBarry Smith```{rubric} Configure/Build:
75*7f296bb3SBarry Smith```
76*7f296bb3SBarry Smith
77*7f296bb3SBarry Smith- Remove python2 support, python-3.4+ is now required
78*7f296bb3SBarry Smith
79*7f296bb3SBarry Smith```{rubric} Sys:
80*7f296bb3SBarry Smith```
81*7f296bb3SBarry Smith
82*7f296bb3SBarry Smith- Change calling sequence of `PetscObjectProcessOptionsHandler()` to flip the role of the first two arguments
83*7f296bb3SBarry Smith- Change `-log_view` to no longer print out the amount of memory associated with different types of objects. That data was often incorrect
84*7f296bb3SBarry Smith- Change `PetscCall()` from Fortran so that `call PetscFunction(args,ierr);CHKERRQ(ierr);` can be replaced with `PetscCall(PetscFunction(args,ierr))`
85*7f296bb3SBarry Smith- Add `PetscCallA()` from Fortran so that `call PetscFunction(args,ierr);CHKERRA(ierr);` can be replaced with `PetscCallA(PetscFunction(args,ierr))`
86*7f296bb3SBarry Smith- Add `PetscCallMPI()` and `PetscCallMPIA()` that may be used to call MPI functions from Fortran
87*7f296bb3SBarry Smith- Change the `PetscCheck()` and `PetscAssert()` macros to behave like function calls by wrapping in `do { } while (0)`. Previously these macros expanded to `if (...) SETERRQ(...)`, which meant they could be chained with subsequent conditionals
88*7f296bb3SBarry Smith- Change `PetscStackCallStandard()` to `PetscCallExternal()`
89*7f296bb3SBarry Smith- Change `PetscStackCall()` to `PetscStackCallExternalVoid()`
90*7f296bb3SBarry Smith- Change `PetscStackCallXXX()` to `PetscCallXXX()`
91*7f296bb3SBarry Smith- Add `PetscCallBack()` for calling all PETSc callbacks (usually to user code) to replace the use of `PetscStackPush()` and `PetscStackPop`
92*7f296bb3SBarry Smith- Add `PetscTryTypeMethod()` and `PetscUseTypeMethod()` to replace direct calls of the form `(\*obj->ops->op)(obj,...)`
93*7f296bb3SBarry Smith- Add `PetscMemTypeToString()` to convert `PetscMemType` to string
94*7f296bb3SBarry Smith- Add `PetscOffloadMaskToString()` to (shockingly) convert `PetscOffloadMask` to string
95*7f296bb3SBarry Smith- Add `PetscOffloadMaskToMemType()`
96*7f296bb3SBarry Smith- Add `PetscDeviceCopyMode`
97*7f296bb3SBarry Smith- Add `PetscMemoryAccessMode`
98*7f296bb3SBarry Smith- Split off CUDA and HIP specific headers from `petscdevice.h` into `petscdevice_cuda.h` and `petscdevice_hip.h`
99*7f296bb3SBarry Smith- Add `petscdevice_cupm.h`
100*7f296bb3SBarry Smith- Allow `PetscDevice` and `PetscDeviceContext` API to be callable from C via stub macros
101*7f296bb3SBarry Smith- Replace `PETSC_DEVICE_INVALID` with `PETSC_DEVICE_HOST`
102*7f296bb3SBarry Smith- Make `PETSC_DEVICE_DEFAULT()` a function
103*7f296bb3SBarry Smith- Add `PetscDeviceSetDefaultDeviceType()`
104*7f296bb3SBarry Smith- Make `PetscDeviceContext` into a `PetscObject`
105*7f296bb3SBarry Smith- Add `PetscDeviceContextGetDeviceType()` convenience function
106*7f296bb3SBarry Smith- Add `PetscDeviceContextForkWithStreamType()`
107*7f296bb3SBarry Smith- Change `PetscDeviceContextSetFromOptions()` to no longer accept the options prefix (`PetscDeviceContext` now has one as a `PetscObject`)
108*7f296bb3SBarry Smith- Add `PetscDeviceContextView()`
109*7f296bb3SBarry Smith- Add `PetscDeviceContextViewFromOptions()`
110*7f296bb3SBarry Smith- Add `PetscDeviceMalloc()`
111*7f296bb3SBarry Smith- Add `PetscDeviceCalloc()`
112*7f296bb3SBarry Smith- Add `PetscDeviceFree()`
113*7f296bb3SBarry Smith- Add `PetscDeviceMemcpy()`
114*7f296bb3SBarry Smith- Add `PetscDeviceArrayCopy()`
115*7f296bb3SBarry Smith- Add `PetscDeviceMemset()`
116*7f296bb3SBarry Smith- Add `PetscDeviceArrayZero()`
117*7f296bb3SBarry Smith- Deprecate `PetscLogObjectParent()`
118*7f296bb3SBarry Smith- Deprecate `PetscLogObjectMemory()`
119*7f296bb3SBarry Smith- Deprecate `PetscNewLog()`, users should just use `PetscNew()` instead
120*7f296bb3SBarry Smith- Add `PetscHasBuiltin()` to detect whether a particular builtin function is supported by the compiler
121*7f296bb3SBarry Smith- Add `PetscAssume()` to indicate an invariant condition to the compiler
122*7f296bb3SBarry Smith- Add `PetscSortedInt64()`, `PetscSortInt64()` and `PetscSortCount()` for sorting and checking arrays of these types
123*7f296bb3SBarry Smith- Add `PetscHMapObjCreate()` and all associated hash map routines for holding PETSc objects
124*7f296bb3SBarry Smith- Add `PetscObjectDelayedDestroy()`, `PetscGarbageKeySortedIntersect()`, `PetscGarbageCleanup()` and `PetscGarbageView()` for memory cleanup operations in managed languages
125*7f296bb3SBarry Smith- Remove unused preprocessor variables `PETSC_Alignx`, `PETSC_const`, and `PETSC_HAVE_GETARG`
126*7f296bb3SBarry Smith
127*7f296bb3SBarry Smith```{rubric} Event Logging:
128*7f296bb3SBarry Smith```
129*7f296bb3SBarry Smith
130*7f296bb3SBarry SmithAdd NVIDIA NVTX sections to `Default` event logging. This tags code
131*7f296bb3SBarry Smithsections, like stages, with nvtxRangePushA(char name[]) and
132*7f296bb3SBarry SmithnvtxRangePop(), which can be visualized after the run with the NVIDIA Nsight GUI tool. To
133*7f296bb3SBarry Smithgenerate a data file, run code with `nsys profile -f true -o file-name
134*7f296bb3SBarry Smithexec-name`.
135*7f296bb3SBarry Smith
136*7f296bb3SBarry Smith```{rubric} PetscViewer:
137*7f296bb3SBarry Smith```
138*7f296bb3SBarry Smith
139*7f296bb3SBarry Smith- Change `PetscViewerHDF5GetGroup()` to accept optional path relative to the pushed group and always return absolute path (newly allocated)
140*7f296bb3SBarry Smith- Change `PetscViewerHDF5OpenGroup()` to accept optional path relative to the pushed group
141*7f296bb3SBarry Smith- Add `PetscViewerHDF5WriteGroup()`
142*7f296bb3SBarry Smith
143*7f296bb3SBarry Smith```{rubric} PetscDraw:
144*7f296bb3SBarry Smith```
145*7f296bb3SBarry Smith
146*7f296bb3SBarry Smith- Add `PetscDrawSPGetDimension()`
147*7f296bb3SBarry Smith- Change `PetscDrawCollectiveBegin()` and `PetscDrawCollectiveEnd()` to not return an error code. Users can remove the error code checking for
148*7f296bb3SBarry Smith  these functions and it will work correctly for all versions of PETSc
149*7f296bb3SBarry Smith
150*7f296bb3SBarry Smith```{rubric} AO:
151*7f296bb3SBarry Smith```
152*7f296bb3SBarry Smith
153*7f296bb3SBarry Smith```{rubric} IS:
154*7f296bb3SBarry Smith```
155*7f296bb3SBarry Smith
156*7f296bb3SBarry Smith- Add `ISShift()`
157*7f296bb3SBarry Smith
158*7f296bb3SBarry Smith```{rubric} VecScatter / PetscSF:
159*7f296bb3SBarry Smith```
160*7f296bb3SBarry Smith
161*7f296bb3SBarry Smith- Add `PetscSFGetGraphLayout()`
162*7f296bb3SBarry Smith
163*7f296bb3SBarry Smith```{rubric} PF:
164*7f296bb3SBarry Smith```
165*7f296bb3SBarry Smith
166*7f296bb3SBarry Smith```{rubric} Vec:
167*7f296bb3SBarry Smith```
168*7f296bb3SBarry Smith
169*7f296bb3SBarry Smith- Add `VecSetPreallocationCOO()`, `VecSetValuesCOO()` and `VecSetPreallocationCOOLocal()` to support vector assembly with coordinates
170*7f296bb3SBarry Smith- Add `VecStrideSum()` and `VecStrideSumAll()` for summing subvectors of strided vectors
171*7f296bb3SBarry Smith- Add `VecCreateLocalVector()` to be used for calls involving `Vec{Get|Restore}LocalVector()`
172*7f296bb3SBarry Smith
173*7f296bb3SBarry Smith```{rubric} PetscSection:
174*7f296bb3SBarry Smith```
175*7f296bb3SBarry Smith
176*7f296bb3SBarry Smith- Add `PetscSectionCreateSubdomainSection()`
177*7f296bb3SBarry Smith
178*7f296bb3SBarry Smith```{rubric} PetscPartitioner:
179*7f296bb3SBarry Smith```
180*7f296bb3SBarry Smith
181*7f296bb3SBarry Smith```{rubric} Mat:
182*7f296bb3SBarry Smith```
183*7f296bb3SBarry Smith
184*7f296bb3SBarry Smith- Change `MatPreallocateInitialize()` and `MatPreallocateFinalize()` to `MatPreallocateBegin()` and `MatPreallocateEnd()` and to not return an error code
185*7f296bb3SBarry Smith- Change `MatDenseGetSubMatrix()` to be able to retrieve only selected contiguous rows instead of all rows
186*7f296bb3SBarry Smith- Add `MatSetOptionsPrefixFactor()` and `MatAppendOptionsPrefixFactor()` to allow controlling the options prefix used by factors created from this matrix
187*7f296bb3SBarry Smith- Change `MatSetOptionsPrefix()` to no longer affect the options prefix used by factors created from this matrix
188*7f296bb3SBarry Smith- Change matrix factor options called from within `KSP`/`PC` to always inherit the options prefix from the `KSP`/`PC`, not the options prefix in the originating matrix
189*7f296bb3SBarry Smith- Add `MatIsStructurallySymmetricKnown()` and `MatIsSPDKnown()`
190*7f296bb3SBarry Smith- Change `MatGetOption()` to no longer produce results for `MAT_STRUCTURALLY_SYMMETRIC`, `MAT_SYMMETRIC`, `MAT_SPD`, and `MAT_HERMITIAN`
191*7f296bb3SBarry Smith- Add `MatCreateGraph()` to create a scalar matrix for use in graph algorithms
192*7f296bb3SBarry Smith- Add an option -mat_factor_bind_factorization \<host, device> to control where to do matrix factorization. Currently only supported with SEQAIJCUSPARSE matrices.
193*7f296bb3SBarry Smith- Add `MatUpdateMPIAIJWithArray()` and deprecate `MatUpdateMPIAIJWithArrays()`
194*7f296bb3SBarry Smith- Change the coordinate array parameters in `MatSetPreallocationCOO` from const to non-const
195*7f296bb3SBarry Smith- Add enforcement of the previously unenforced rule that `MAT_REUSE_MATRIX` with `MatTranspose()` can only be used after a call to `MatTranspose()` with `MAT_INITIAL_MATRIX`. Add `MatTransposeSetPrecursor()` to allow using `MAT_REUSE_MATRIX` with `MatTranspose()` without the initial call to `MatTranspose()`.
196*7f296bb3SBarry Smith- Add `MatTransposeSymbolic()`
197*7f296bb3SBarry Smith- Add `MatShellSetContextDestroy()` and add internal refrence counting for user defined `MatShell` context data
198*7f296bb3SBarry Smith- Add `MatShellSetContextDestroy()` and add internal reference counting for user defined `MatShell` context data
199*7f296bb3SBarry Smith- Change `MATTRANPOSEMAT` to `MATTRANPOSEVIRTUAL`
200*7f296bb3SBarry Smith- Add `MATHERMITIANTRANSPOSEVIRTUAL`
201*7f296bb3SBarry Smith
202*7f296bb3SBarry Smith```{rubric} MatCoarsen:
203*7f296bb3SBarry Smith```
204*7f296bb3SBarry Smith
205*7f296bb3SBarry Smith- Add `MISK` coarsening type. Distance-k maximal independent set (MIS) C-F coarsening with a greedy, MIS based aggregation algorithm
206*7f296bb3SBarry Smith
207*7f296bb3SBarry Smith```{rubric} PC:
208*7f296bb3SBarry Smith```
209*7f296bb3SBarry Smith
210*7f296bb3SBarry Smith- Add PC type of mpi which can be used in conjunction with -mpi_linear_solver_server to use MPI parallelism to solve a system created on a single MPI rank
211*7f296bb3SBarry Smith- Add `PCHYPREAMSSetInteriorNodes()` to set interior nodes for HYPRE AMS
212*7f296bb3SBarry Smith- Add `PCAMGX`, a PC interface for NVIDIA's AMGx AMG solver
213*7f296bb3SBarry Smith- Remove `PCGAMGSetSymGraph()` and `-pc_gamg_sym_graph`. The user should now indicate symmetry and structural symmetry using `MatSetOption()` and GAMG will symmetrize the graph if a symmetric options is not set
214*7f296bb3SBarry Smith- Change `-pc_gamg_reuse_interpolation` default from false to true.
215*7f296bb3SBarry Smith
216*7f296bb3SBarry Smith```{rubric} KSP:
217*7f296bb3SBarry Smith```
218*7f296bb3SBarry Smith
219*7f296bb3SBarry Smith- Deprecate `KSPHPDDMGetDeflationSpace()` (resp. `KSPHPDDMSetDeflationSpace()`) in favor of `KSPHPDDMGetDeflationMat()` (resp. `KSPHPDDMSetDeflationMat()`)
220*7f296bb3SBarry Smith- Add `KSPNONE` as alias for `KSPPREONLY`
221*7f296bb3SBarry Smith
222*7f296bb3SBarry Smith```{rubric} SNES:
223*7f296bb3SBarry Smith```
224*7f296bb3SBarry Smith
225*7f296bb3SBarry Smith- Add `DMDASNESSetFunctionLocalVec()`, `DMDASNESSetJacobianLocalVec()` and `DMDASNESSetObjectiveLocalVec()`, and associate types `DMDASNESFunctionVec`, `DMDASNESJacobianVec` and `DMDASNESObjectiveVec`,
226*7f296bb3SBarry Smith  which accept Vec parameters instead of void pointers in contrast to versions without the Vec suffix
227*7f296bb3SBarry Smith- Add `SNESLINESEARCHNONE` as alias for `SNESLINESEARCHBASIC`
228*7f296bb3SBarry Smith- Add `DMSNESSetFunctionContextDestroy()` and `DMSNESSetJacobianContextDestroy()` and use `PetscContainter` for user context to facilitate automatic destruction of user set context
229*7f296bb3SBarry Smith
230*7f296bb3SBarry Smith```{rubric} SNESLineSearch:
231*7f296bb3SBarry Smith```
232*7f296bb3SBarry Smith
233*7f296bb3SBarry Smith```{rubric} TS:
234*7f296bb3SBarry Smith```
235*7f296bb3SBarry Smith
236*7f296bb3SBarry Smith- Add `TSSetTimeSpan()`, `TSGetTimeSpan()` and `TSGetTimeSpanSolutions()` to support time span
237*7f296bb3SBarry Smith- Add `DMTSGetIFunctionLocal()`, `DMTSGetIJacobianLocal()`, and `DMTSGetRHSFunctionLocal()`
238*7f296bb3SBarry Smith- Add `DMTSSetIFunctionContextDestroy()`, `DMTSSetIJacobianContextDestroy()`, `DMTSSetRHSFunctionContextDestroy()`, `DMTSSetRHSJacobianContextDestroy()`, `DMTSSetI2FunctionContextDestroy()`, and `DMTSSetI2JacobianContextDestroy()` and use `PetscContainter` for user context to facilitate automatic destruction of user set context
239*7f296bb3SBarry Smith- Make public `SNESVIComputeMeritFunction()` and `SNESVIComputeFunction()`
240*7f296bb3SBarry Smith
241*7f296bb3SBarry Smith```{rubric} TAO:
242*7f296bb3SBarry Smith```
243*7f296bb3SBarry Smith
244*7f296bb3SBarry Smith- Rename the command line option `-tao_nm_lamda` to `-tao_nm_lambda`
245*7f296bb3SBarry Smith
246*7f296bb3SBarry Smith```{rubric} DM/DA:
247*7f296bb3SBarry Smith```
248*7f296bb3SBarry Smith
249*7f296bb3SBarry Smith- Add `DMDAMapMatStencilToGlobal()` to map MatStencils to global indices
250*7f296bb3SBarry Smith- Add `DMGetCellCoordinateDM()`, `DMSetCellCoordinateDM()`, `DMGetCellCoordinateSection()`, `DMSetCellCoordinateSection()`, `DMGetCellCoordinates()`, `DMSetCellCoordinates()`, `DMGetCellCoordinatesLocalSetup()`, `DMGetCellCoordinatesLocal()`, `DMGetCellCoordinatesLocalNoncollective()`, `DMSetCellCoordinatesLocal()`
251*7f296bb3SBarry Smith- Add `DMFieldCreateDSWithDG()` to allow multiple representations of a given field
252*7f296bb3SBarry Smith- Add `DMProjectFieldLabel()`
253*7f296bb3SBarry Smith- Make public `DMSetVI()` and `DMDestroyVI()`
254*7f296bb3SBarry Smith- Change `DMCountNonCyclicReferences()` to `DMCountNonCyclicReferences_Internal()`
255*7f296bb3SBarry Smith- Add `DMCountNonCyclicReferences()` as a more generic wrapper for `DMCountNonCyclicReferences_Internal()`
256*7f296bb3SBarry Smith
257*7f296bb3SBarry Smith```{rubric} DMSwarm:
258*7f296bb3SBarry Smith```
259*7f296bb3SBarry Smith
260*7f296bb3SBarry Smith- Add `DMSwarmGetCoordinateFunction()`, `DMSwarmSetCoordinateFunction()`, `DMSwarmGetVelocityFunction()`, `DMSwarmSetVelocityFunction()` to allow flexible layout of particles
261*7f296bb3SBarry Smith
262*7f296bb3SBarry Smith```{rubric} DMPlex:
263*7f296bb3SBarry Smith```
264*7f296bb3SBarry Smith
265*7f296bb3SBarry Smith- Add `DMLabelPropagateBegin()`, `DMLabelPropagatePush()`, and `DMLabelPropagateEnd()`
266*7f296bb3SBarry Smith- Add `DMPlexPointQueue` and API
267*7f296bb3SBarry Smith- Add label value argument to `DMPlexLabelCohesiveComplete()` and `DMPlexCreateHybridMesh()`
268*7f296bb3SBarry Smith- Change `DMPlexCheckPointSF()` to take optional `PetscSF` parameter
269*7f296bb3SBarry Smith- Add `DMPlexCheck()`
270*7f296bb3SBarry Smith- Add `DMPlexMetricDeterminantCreate()` for creating determinant fields for Riemannian metrics
271*7f296bb3SBarry Smith- Change `DMPlexMetricEnforceSPD()`:
272*7f296bb3SBarry Smith  : - pass determinant Vec, rather than its address
273*7f296bb3SBarry Smith    - pass output metric, rather than its address
274*7f296bb3SBarry Smith- Change `DMPlexMetricNormalize()`:
275*7f296bb3SBarry Smith  : - pass output metric, rather than its address
276*7f296bb3SBarry Smith    - pass determinant Vec, rather than its address
277*7f296bb3SBarry Smith- Change `DMPlexMetricAverage()`, `DMPlexMetricAverage2()` and `DMPlexMetricAverage3()` to pass output metric, rather than its address
278*7f296bb3SBarry Smith- Change `DMPlexMetricIntersection()`, `DMPlexMetricIntersection2()` and `DMPlexMetricIntersection3()` to pass output metric, rather than its address
279*7f296bb3SBarry Smith- Add capability to specify whether the DMPlex should be reordered by default:
280*7f296bb3SBarry Smith  : - add `DMPlexReorderDefaultFlag`
281*7f296bb3SBarry Smith    - add `DMPlexReorderGetDefault()` and `DMPlexReorderSetDefault()` to get and set this flag
282*7f296bb3SBarry Smith- Add `DMPlexCreateOverlapLabelFromLabels()` for more customized overlap
283*7f296bb3SBarry Smith- Add `DMPlexSetOverlap()` to promote an internal interface
284*7f296bb3SBarry Smith- Add `DMGetCellCoordinateDM()`, `DMSetCellCoordinateDM()`, `DMGetCellCoordinateSection()`, `DMSetCellCoordinateSection()`, `DMGetCellCoordinates()`, `DMSetCellCoordinates()`, `DMGetCellCoordinatesLocalSetUp()`, `DMGetCellCoordinatesLocal()`, `DMGetCellCoordinatesLocalNoncollective()`, and `DMSetCellCoordinatesLocal()` to provide an independent discontinuous representation of coordinates
285*7f296bb3SBarry Smith- Change `DMGetPeriodicity()` and `DMSetPeriodicity()` to get rid of the flag and boundary type. Since we have an independent representation, we can tell if periodicity was imposed, and boundary types were never used, so they can be inferred from the given L. We also add Lstart to allow tori that do not start at 0.
286*7f296bb3SBarry Smith- Add `DMPlexGetCellCoordinates()` and `DMPlexRestoreCellCoordinates()` for clean interface for periodicity
287*7f296bb3SBarry Smith- Add `DMPlexDistributionSetName()` and `DMPlexDistributionGetName()` to set/get the name of the specific parallel distribution of the DMPlex
288*7f296bb3SBarry Smith
289*7f296bb3SBarry Smith```{rubric} FE/FV:
290*7f296bb3SBarry Smith```
291*7f296bb3SBarry Smith
292*7f296bb3SBarry Smith- Add `PetscFECreateFromSpaces()` to build similar space from pieces
293*7f296bb3SBarry Smith
294*7f296bb3SBarry Smith```{rubric} DMNetwork:
295*7f296bb3SBarry Smith```
296*7f296bb3SBarry Smith
297*7f296bb3SBarry Smith- Add `DMNetworkFinalizeComponents()` to setup the internal data structures for components on a network. Previously this could only be done by calling DMSetUp
298*7f296bb3SBarry Smith
299*7f296bb3SBarry Smith```{rubric} DMStag:
300*7f296bb3SBarry Smith```
301*7f296bb3SBarry Smith
302*7f296bb3SBarry Smith```{rubric} DT:
303*7f296bb3SBarry Smith```
304*7f296bb3SBarry Smith
305*7f296bb3SBarry Smith- Add probability distributions `PetscPDFGaussian3D()`, `PetscPDFSampleGaussian3D()`, `PetscPDFConstant2D()`, `PetscCDFConstant2D()`, `PetscPDFSampleConstant2D()`, `PetscPDFConstant3D()`, `PetscCDFConstant3D()`, `PetscPDFSampleConstant3D()`
306*7f296bb3SBarry Smith
307*7f296bb3SBarry Smith```{rubric} Fortran:
308*7f296bb3SBarry Smith```
309