File: 317.rst.txt

package info (click to toggle)
petsc 3.22.5%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 516,740 kB
  • sloc: ansic: 814,333; cpp: 50,948; python: 37,416; f90: 17,187; javascript: 3,493; makefile: 3,198; sh: 1,502; xml: 619; objc: 445; java: 13; csh: 1
file content (307 lines) | stat: -rw-r--r-- 24,946 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
=============
Changes: 3.17
=============

..
   STYLE GUIDELINES:
   * Capitalize sentences
   * Use imperative, e.g., Add, Improve, Change, etc.
   * Don't use a period (.) at the end of entries
   * If multiple sentences are needed, use a period or semicolon to divide sentences, but not at the end of the final sentence
   * Use full function names, for ease of searching and so that man pages links are generated

.. rubric:: General:

- PETSc now requires a C99 compliant C compiler in all cases. Previously C99 was only required when building PETSc, but this now extends to public interfaces and header-files
- PETSc now requires a C++11 compliant C++ compiler. Note this requirement is only enforced if C++ is used; it is acceptable to have a compiler that does not support C++11 if you only ever build C source
- PETSc now requires at least Microsoft Visual Studio 2015 when using the Microsoft Visual C/C++ Compiler
-  Change ``MPIU_Allreduce()`` to always returns a PETSc error code that should be checked with ``CHKERRQ(ierr)`` or ``PetscCall()``

.. rubric:: Configure/Build:

- Change minimum value of ``--with-cxx-dialect`` argument from "03" to "11"
- C++ dialect will now also be inferred from compiler flags, although users will be warned that they should let PETSc auto-detect the flag when setting the dialect this way
- Change C++ dialect flag option to be consistent with compiler flags;  ``--with-cxx-dialect=gnu++14`` means you want ``-std=gnu++14``, no more, no less
- Fix for requesting no C++ dialect flag via ``--with-cxx-dialect=0``. Previously ``configure`` would bail out immediately without running the tests and therefore wouldn't set any of the capability defines. ``configure`` now runs all tests, just doesn't add the flag in the end
- Fix a number of corner-cases when handling C++ dialect detection
- Remove deprecated ``PETSC_VERSION_PATCH`` so as to not have confusion with patch releases where the subminor version changes
- Change ``PETSC_HAVE_MKL`` to ``PETSC_HAVE_MKL_LIBS``
- Add ``PETSC_HAVE_MKL_INCLUDES``
- Enable HYPRE GPU for 64bit indices build (using HYPRE's mixed-int configuration)
- Reuse PETSc-installed hwloc when installing Open MPI

.. rubric:: Sys:

- Add ``MPI_Comm_get_name()`` and ``MPI_Comm_set_name()`` to MPIUNI
- Remove ``petsccublas.h`` and ``petschipblas.h``
- Remove ``-petsc_use_default_null_stream`` and ``-[cuda|hip]_synchronize`` options
- Remove ``PetscCUDASynchronize`` and ``PetscHIPSynchronize``. Their operation is now managed by ``PetscDeviceContext`` via its ``PetscStreamType`` attribute
- Remove ``PetscCUDAInitialize()``, ``PetscCUDAInitializeCheck()``, ``PetscHIPInitialize()``, and ``PetscHIPInitializeCheck()``. Their function is now handled by ``PetscDeviceInitialize()`` and ``PetscDeviceInitialized()``
- Remove ``PetscCUBLASInitializeHandle()``, ``PetscCUSOLVERDnInitializeHandle()``, ``PetscHIPBLASInitializeHandle()``, and ``PetscHIPSOLVERInitializeHandle()``. Their function is now handled implicitly by ``PetscDeviceContext``
- Remove ``petsc_gputimer_begin`` and ``petsc_gputimer_begin``
- Add ``-device_enable``, ``-device_select`` and ``-device_view`` startup-options to control coarse-grained device initialization strategy
- Replace ``-[cuda|hip]_device`` with split options ``-device_enable_[cuda|hip]`` and ``-device_select_[cuda|hip]`` to enable fine-grained control of device selection and initialization strategy
- Replace ``-[cuda|hip]_view`` with ``-device_view_[cuda|hip]``
- Add ``PetscDeviceInitType`` to enumerate PETSc device initialization strategies
- Add ``PetscDeviceInitialize()`` to eagerly initialize a ``PetscDeviceType``, and ``PetscDeviceInitialized()`` to query the corresponding initialization state
- Change ``PetscDeviceCreate()`` to also accept a ``PetscInt devid``, to create a ``PetscDevice`` for a specific device
- Add ``PetscDeviceView()``
- Move ``PetscInt64_FMT`` and ``MPIU_INT64`` definitions to ``petscsystypes.h``
- Add ``PetscBLASInt_FMT``, ``PETSC_MPI_COMM_FMT``, and ``PETSC_MPI_WIN_FMT`` format specifiers
- Add ``petscmacros.h`` header to house common PETSc preprocessor macros
- Add ``PetscUnreachable()`` to indicate unreachable code section to compiler
- Add ``PetscHasAttribute()`` macro to query for existence of an ``__attribute__`` specifier
- Add ``PetscCommGetComm()`` and ``PetscCommRestoreComm()`` to allow reuse of MPI communicator with external packages, as some MPI implementations have  broken ``MPI_Comm_free()``
- Add ``PetscExpand()``, ``PetscConcat()``, ``PetscCompl()``, and ``PetscExpandToNothing()``
- Add ``PETSC_CONSTEXPR_14``, ``PETSC_NULLPTR``, and ``PETSC_NODISCARD``
- Add ``PetscSizeT`` as a language-agnostic equivalent of ``size_t`` from ``<stddef.h>``
- Add ``PetscCount`` as a signed datatype for counts, equivalent to ``ptrdiff_t`` from ``<stddef.h>``.
- Add ``PetscCountCast``, ``PetscSortIntWithCountArray()``, and ``PetscSortIntWithIntCountArrayPair()``
- Deprecate ``SETERRQ1()`` - ``SETERRQ9()`` in favor of ``SETERRQ()`` which is now variadic
- Deprecate ``PetscInfo1()`` - ``PetscInfo9()`` in favor of ``PetscInfo()`` which is now variadic
- Deprecate ``PETSC_INLINE``, ``inline`` is a standard keyword since C99 and C++11
- Deprecate ``PETSC_STATIC_INLINE``, as both ``static`` and ``inline`` are standard keywords since C99 and C++11
- Remove ``PETSC_C_RESTRICT``, ``restrict`` is a standard keyword since C99
- Change ``SETERRMPI()`` to be variadic
- Change ``SETERRABORT()`` to be variadic
- Add ``PetscCheck()`` and ``PetscAssert()`` for checking a boolean condition is true. The former is always enabled, while the latter is enabled only in debug builds.
- ``PetscDevice`` initialization for CUDA and HIP will now respect ``CUDA_VISIBILE_DEVICES`` and ``HIP_VISIBLE_DEVICES`` environment variables respectively
- Add ``PETSC_ATTRIBUTE_COLD`` to inform compilers that a function is unlikely to be called
- Add ``PetscCall()``, ``PetscCallVoid()``, ``PetscCallMPI()``, ``PetscCallAbort()``, ``PetscCallContinue()``, ``PetscCallThrow()``, and ``PetscCallCXX()``. These supersede ``CHKERRQ()``, ``CHKERRV()``, ``CHKERRMPI()``, ``CHKERRABORT()``, ``CHKERRCONTINUE()``, ``CHKERRXX()``, and ``CHKERRCXX()`` respectively
- Add ``PetscCallCUDA()``, ``PetscCallCUBLAS()``, ``PetscCallCUSPARSE()``, ``PetscCallCUSOLVER()``, ``PetscCallCUFFT()``, and ``PetscCallCURAND()``. These supersede ``CHKERRCUDA()``, ``CHKERRCUBLAS()``, ``CHKERRCUSPARSE()``, ``CHKERRCUSOLVER()``, ``CHKERRCUFFT()``, and ``CHKERRCURAND()`` respectively
- Add ``PetscCallHIP()``, ``PetscCallHIPBLAS()``, and ``PetscCallHIPSOLVER()``. These supersede ``CHKERRHIP()``, ``CHKERRHIPBLAS()``, and ``CHKERRHIPSOLVER()`` respectively
- Add ``PetscCallCEED()`` which supersedes ``CHKERRQ_CEED()``
- Soft-deprecate ``CHKERR`` variants listed above in C/C++ sources. New code should prefer the ``PetscCall`` variants though no compiler diagnostics will be emitted if the old versions are used. One may use ``${PETSC_DIR}/share/petsc/chkerrconvert.py`` to perform the conversions automatically, though users should note that this script is considered "beta" software. It was used to facilitate the ``CHKERR`` changes during development and is being exposed to users in order to smooth the transition -- while every reasonable effort was made to ensure correctness, we provide no guarantee of it.

.. rubric:: PetscViewer:

- Add  ``PetscViewerHDF5SetDefaultTimestepping()`` and ``PetscViewerHDF5SetDefaultTimestepping()`` to deal with HDF5 files missing the timestepping attribute

.. rubric:: PetscDraw:

- Add ``PetscDrawSPAddPointColorized()`` to change scatter point color based on third input value

.. rubric:: AO:

.. rubric:: IS:

- ``ISLocalToGlobalMappingCreateSF()``: allow passing ``start = PETSC_DECIDE``
- Add ``ISGeneralSetIndicesFromMask()``
- Add ``ISSetLayout()``
- Add ``PetscSectionSymDistribute()``
- Add ``ISLocalToGlobalMappingGetType()``

.. rubric:: VecScatter / PetscSF:

- Add MPI-4.0 large count support. With an MPI-4.0 compliant MPI implementation and 64-bit indices, one can now pass over 2 billion elements in a single message in either VecScatter or PetscSF
- Add ``PetscSFFetchAndOpWithMemTypeBegin()``, which is similar to ``PetscSFFetchAndOpBegin()``, but with explicit memory types
- Change ``PetscSFSetGraph()`` and ``PetscSFSetGraphLayout()`` to sort leaves, remove ``const`` from ``ilocal`` and ``iremote`` arguments
- Add ``PetscSFConcatenate()``

.. rubric:: PF:

.. rubric:: Vec:

- Change ``VecTaggerComputeBoxes()`` and ``VecTaggerComputeIS()`` to return a boolean whose value is true if the list was created
- Add ``-vec_bind_below`` option for specifying size threshold below which GPU is not used for ``Vec`` operations
- Add ``VecSetBindingPropagates()``
- Add ``VecGetBindingPropagates()``
- For CUDA and ViennaCL and HIP GPU vectors, ``VecCreate()`` no longer allocates the array on CPU eagerly, it is only allocated if it is needed
- ``VecGetArrayAndMemType()`` and ``VecGetArrayReadAndMemType()`` now always return a device pointer (copying the data to the device if needed) for the standard CUDA, HIP, and CUDA/HIP Kokkos vectors. Previously, they did so only when the device had the latest data
- Add ``VecGetArrayWriteAndMemType()`` and  ``VecRestoreArrayWriteAndMemType()``, which are similar to the ``VecGetArrayReadAndMemType()`` family, but only write to the vector on device

.. rubric:: PetscPartitioner:

.. rubric:: Mat:

- Add ``-mat_bind_below`` option for specifying size threshold below which GPU is not used for ``Mat`` operations
- Add ``MatSetBindingPropagates()``
- Add ``MatGetBindingPropagates()``
- Add ``MatSeqAIJGetArrayWrite()`` and ``MatSeqAIJRestoreArrayWrite()`` to get write-access to the value array of ``MatSeqAIJ`` on CPU
- Add ``MatCUSPARSESetUseCPUSolve()`` Use CPU solve with cuSparse for LU factorization that are on the CPU.
- Change ``MatCreateIS()`` behavior when NULL is passed for the mappings. Now a NULL map implies matching local and global spaces
- Add support of ``MatSetValuesCOO()`` and ``MatSetPreallocationCOO()`` for matrix type AIJKOKKOS. Additionally, for AIJKOKKOS, they support negative indices and remote entries
- Add ``MatMultHermitianTransposeEqual()`` and ``MatMultHermitianTransposeAddEqual()``
- Add ``MatSetPreallocationCOOLocal()`` to set preallocation for matrices using a coordinate format of the entries with local indices
- Change ``MatStructures`` enumeration to avoid spaces and match capitalization of other enumerations
- Change size argument of ``MatSetPreallocationCOO()`` to ``PetscCount``
- Add ``MATORDERINGMETISND`` use METIS for nested dissection ordering of ``MatSeqAIJ``, with options ``nseps``, ``niter``, ``ufactor`` and ``pfactor`` under the common prefix ``-mat_ordering_metisnd_``
- Change options ``-matproduct_<product_type>_via`` to ``-mat_product_algorithm``
- Add ``-mat_superlu_dist_3d`` and ``-mat_superlu_dist_d <n>`` to support using SuperLU_DIST's version 7.2 3d decomposition algorithms
- ``MATIS`` now supports negative and repeated indices in the local-to-global map and the COO assembly routines. This allows for better integration with libceed
- Add ``MatISGetLocalToGlobalMapping()`` to retrieve the logical map for assembled subdomain problem

.. rubric:: PC:

- Add MG option ``-pc_mg_galerkin_mat_product_algorithm [cusparse|hypre]`` and ``PCMGGalerkinSetMatProductAlgorithm()`` to use cuSparse or hypre's SpGEMM for Galerkin products in hypre
- Add PC type ``PCBJKOKKOS`` a new, experimental batch Kokkos solver ``-pc_type bjkokkos -pc_bjkokkos_ksp_type [tfqmr|bicg] -pc_bjkokkos_pc_type jacobi -ksp_type preonly``
- Add -pc_svd_monitor ::all option to print all the singular values instead of a maximum of ten

.. rubric:: PCMG:

- Add ``PCMGGetGridComplexity()`` to get operator and grid complexity of MG hierarchy
- Change ``PCGAMG`` default to use ``PCJACOBI`` smoothing instead of `PCSOR`. This also allows the default configuration to use GPUs effectively, and to deliver equivalent convergence. For the old default, use ``-mg_levels_pc_type sor``.
- Change ``PCGAMG`` eigenvalue estimation to use ``KSPCG`` when ``MAT_SPD`` has been set (see ``MatSetOption()``) and ``KSPCR`` when ``MAT_SYMMETRIC`` or ``MAT_HERMITIAN`` has been set. These are usually somewhat more accurate and reliable than the previous default of ``KSPGMRES``, and in tune with ``KSPCHEBYSHEV``. Note that Chebyshev will generally not be a suitable smoother for indefinite matrices.
- Change ``PCGAMG`` to use ``PCGAMGSetUseSAEstEig()`` by default when the smoother uses Jacobi preconditioning.

.. rubric:: KSP:

- Outer most ``KSPSolve()`` will error if ``KSP_DIVERGED_ITS`` and ``KSPSetErrorIfNotConverged()`` is used
- Add ``KSPQMRCGS`` to support qmrcgstab with right preconditioning
- Add ``KSPGuessSetTolerance()``
- Add a new model option to ``KSPGuessFischerSetModel()``

.. rubric:: SNES:

- Add ``SNESNewtonTRDCGetRhoFlag()``, ``SNESNewtonTRDCSetPreCheck()``, ``SNESNewtonTRDCGetPreCheck()``, ``SNESNewtonTRDCSetPostCheck()``, ``SNESNewtonTRDCGetPostCheck()``

.. rubric:: SNESLineSearch:

.. rubric:: TS:

- Add ``TSSundialsSetUseDense()`` and options database option ``-ts_sundials_use_dense`` to use a dense linear solver (serial only) within CVODE, instead of the default iterative solve
- Change timestepper type ``TSDISCGRAD`` to include additional conservation terms based on formulation from [Gonzalez 1996] for Hamiltonian systems:
  - Add ``TSDiscGradIsGonzalez()`` to check flag for whether to use additional conservative terms in discrete gradient formulation
  - Add ``TSDiscGradUseGonzalez()`` to set discrete gradient formulation with or without additional conservative terms.  Without flag, the discrete gradients timestepper is just backwards euler
- Add ``TSRemoveTrajectory`` to destroy and remove the internal TSTrajectory object from TS
- Change ``TSMonitorSPSwarmSolution()`` to have correct axes labels and bounds

.. rubric:: Tao:

- Add ``TaoGetGradient()``, ``TaoGetObjectiveAndGradient()`` and ``TaoGetHessian()``
- Deprecate ``TaoSetInitialVector()`` in favor of ``TaoSetSolution()``
- Deprecate ``TaoGetSolutionVector()`` in favor of ``TaoGetSolution()``
- Deprecate ``TaoGetGradientVector()`` in favor of ``TaoGetGradient()``
- Deprecate ``TaoSetObjectiveRoutine()`` in favor of ``TaoSetObjective()``
- Deprecate ``TaoSetGradientRoutine()`` in favor of ``TaoSetGradient()``
- Deprecate ``TaoSetObjectiveAndGradientRoutine()`` in favor of ``TaoSetObjectiveAndGradient()``
- Deprecate ``TaoSetHessianRoutine()`` in favor of ``TaoSetHessian()``
- Change ``TaoGetObjective()``. Use ``TaoGetSolutionStatus(tao,NULL,&fct,NULL,NULL,NULL,NULL)`` instead

.. rubric:: DM/DA:

- Add ``DMLabelGetNonEmptyStratumValuesIS()``, similar to ``DMLabelGetValueIS()`` but counts only nonempty strata
- Add ``DMLabelCompare()`` for ``DMLabel`` comparison
- Add ``DMCompareLabels()`` comparing ``DMLabel``\s of two ``DM``\s
- ``DMCopyLabels()`` now takes DMCopyLabelsMode argument determining duplicity handling
- Add ``-dm_bind_below`` option for specifying size threshold below which GPU is not used for ``Vec`` and ``Mat`` objects associated with a DM
- Add ``DMCreateMassMatrixLumped()`` to support explicit timestepping, also add ``DMTSCreateRHSMassMatrix()``, ``DMTSCreateRHSMassMatrixLumped()``, and ``DMTSDestroyRHSMassMatrix()``
- Promote ``DMGetFirstLabelEntry()`` to public API and rename
- Add bias vector argument to ``DMGetDefaultConstraints()`` and ``DMSetDefaultConstraints()``.  Passing ``bias=NULL`` recovers prior behavior.
- Change ``DMGetAuxiliaryVec()``, ``DMSetAuxiliaryVec()``, and ``DMGetAuxiliaryLabels()`` to take an equation part number

.. rubric:: DMSwarm:

- Add ``DMSwarmGetNumSpecies()`` and ``DMSwarmSetNumSpecies()`` to support PIC
- Add ``DMSwarmComputeLocalSize()``, ``DMSwarmComputeLocalSizeFromOptions()``, ``DMSwarmInitializeCoordinates()``, ``DMSwarmInitializeVelocities()``, ``DMSwarmInitializeVelocitiesFromOptions()`` to assist initialization of PIC methods

.. rubric:: DMPlex:

- Add ``DMExtrude()`` which now the default extrusion
- Change ``DMPlexExtrude()`` to use DMPlexTransform underneath
- Add ``DMPlexTransformExtrudeSetNormalFunction()`` to allow computed normals
- Add ``DMGetNaturalSF()`` and ``DMSetNaturalSF()``
- Change ``-dm_plex_csr_via_mat`` to ``-dm_plex_csr_alg`` which takes a DMPlexCSRAlgorithm name
- Add public API for metric-based mesh adaptation:
    - Move ``DMPlexMetricCtx`` from public to private and give it to ``DMPlex``
    - Add ``DMPlexMetricSetFromOptions()`` to assign values to ``DMPlexMetricCtx``
    - Add ``DMPlexMetricSetIsotropic()`` for declaring whether a metric is isotropic
    - Add ``DMPlexMetricIsIsotropic()`` for determining whether a metric is isotropic
    - Add ``DMPlexMetricSetUniform()`` for declaring whether a metric is uniform
    - Add ``DMPlexMetricIsUniform()`` for determining whether a metric is uniform
    - Add ``DMPlexMetricSetRestrictAnisotropyFirst()`` for declaring whether anisotropy should be restricted before normalization
    - Add ``DMPlexMetricRestrictAnisotropyFirst()`` for determining whether anisotropy should be restricted before normalization
    - Add ``DMPlexMetricSetMinimumMagnitude()`` for specifying the minimum tolerated metric magnitude
    - Add ``DMPlexMetricGetMinimumMagnitude()`` for retrieving the minimum tolerated metric magnitude
    - Add ``DMPlexMetricSetMaximumMagnitude()`` for specifying the maximum tolerated metric magnitude
    - Add ``DMPlexMetricGetMaximumMagnitude()`` for retrieving the maximum tolerated metric magnitude
    - Add ``DMPlexMetricSetMaximumAnisotropy()`` for specifying the maximum tolerated metric anisostropy
    - Add ``DMPlexMetricGetMaximumAnisotropy()`` for retrieving the maximum tolerated metric anisotropy
    - Add ``DMPlexMetricSetTargetComplexity()`` for specifying the target metric complexity
    - Add ``DMPlexMetricGetTargetComplexity()`` for retrieving the target metric complexity
    - Add ``DMPlexMetricSetNormalizationOrder()`` for specifying the order of L-p normalization
    - Add ``DMPlexMetricGetNormalizationOrder()`` for retrieving the order of L-p normalization
    - Change ``DMPlexMetricCtx`` so that it is only instantiated when one of the above routines are called
    - Change ``DMPlexMetricEnforceSPD()`` to have more arguments:
        - control whether anisotropy is restricted
        - output the modified metric, rather than modifying the input
        - output the determinant
    - Change ``DMPlexMetricNormalize()`` to have another argument, for controlling whether anisotropy is restricted
- Change ``DMAdaptor`` so that its ``-adaptor_refinement_h_min/h_max/a_max/p`` command line arguments become ``-dm_plex_metric_h_min/h_max/a_max/p``
- Add 2D and 3D mesh adaptation interface to Mmg and 3D mesh adaptation interface to ParMmg. Mmg/ParMmg specific changes:
    - Change ``DMPlexBuildFromCellListParallel()`` to have another argument, for the connectivity
    - Change ``DMPlexCreateFromCellListParallelPetsc()`` to have another argument, for the connectivity
    - Add ``DMPlexMetricSetVerbosity()`` for setting the verbosity of the metric-based mesh adaptation package
    - Add ``DMPlexMetricGetVerbosity()`` for getting the verbosity of the metric-based mesh adaptation package
    - Add ``DMPlexMetricSetNoInsertion()`` to turn off node insertion and deletion for (Par)Mmg
    - Add ``DMPlexMetricNoInsertion()`` to determine whether node insertion and deletion are turned off for (Par)Mmg
    - Add ``DMPlexMetricSetNoSwapping()`` to turn off facet swapping for (Par)Mmg
    - Add ``DMPlexMetricNoSwapping()`` to determine whether facet swapping is turned off for (Par)Mmg
    - Add ``DMPlexMetricSetNoMovement()`` to turn off node movement for (Par)Mmg
    - Add ``DMPlexMetricNoMovement()`` to determine whether node movement is turned off for (Par)Mmg
    - Add ``DMPlexMetricSetNoSurf()`` to turn off surface modification for (Par)Mmg
    - Add ``DMPlexMetricNoSurf()`` to determine whether surface modification is turned off for (Par)Mmg
    - Add ``DMPlexMetricSetGradationFactor()`` to set the metric gradation factor
    - Add ``DMPlexMetricGetGradationFactor()`` to get the metric gradation factor
    - Add ``DMPlexMetricSetHausdorffNumber()`` to set the metric Hausdorff number
    - Add ``DMPlexMetricGetHausdorffNumber()`` to get the metric Hausdorff number
    - Add ``DMPlexMetricSetNumIterations()`` to set the number of ParMmg adaptation iterations
    - Add ``DMPlexMetricGetNumIterations()`` to get the number of ParMmg adaptation iterations
- Change ``DMPlexCoordinatesLoad()`` to take a ``PetscSF`` as argument
- Change ``DMPlexLabelsLoad()`` to take the ``PetscSF`` argument and load in parallel
- Change ``DMPlexCreateFromFile()`` to take the mesh name as argument
- Change ``DMAdaptMetric`` so that it takes an additional argument for cell tags
- Change ``DMTransformAdaptLabel`` so that it takes an additional argument for cell tags
- Change ``DMGenerateRegister`` so that it registers routines that take an additional argument for cell tags
- Change ``DMPlexFindVertices()`` to take ``Vec`` and ``IS`` arguments instead of arrays
- Add ``DMPlexTSComputeRHSFunctionFEM()`` to support explicit timestepping
- Newly created ``DMPlex`` will be distributed by default; this previously required ``-dm_distribute`` or explicit calls to ``DMPlexDistribute()``
- Add ``DMPlexDistributeGetDefault()`` and ``DMPlexDistributeSetDefault()`` to determine and set the default for ``DMPlex`` distribution
- Add meshing of the Schwarz-P and Gyroid triply periodic minimal surface (see ``DMPlexCreateTPSMesh()``). These meshes can be automatically generated using ``-dm_plex_shape schwarz_p`` or ``-dm_plex_shape gyroid``, with optional levels of refinement and extrusion to 3D solids with prescribed thickness.
- Add ``DMCreateFEDefault()`` as a convenience method for creating the right element on a mesh
- Add ``DMPlexCreateReferenceCell()``
- Remove deprecated ``DMPlexCreateFromCellList()`` and ``DMPlexCreateFromCellListParallel()``
- Add ``DMSetMatrixPreallocateSkip()`` to save initialization time when ``MatSetPreallocationCOO()`` will be used.
- Improve loading performance related to coordinate projection in common cases.
- Add ``DMPlexGetOrdering1D()`` for 1D Plex problems
- Add ``DMPlexComputeClementInterpolant()`` averaging operator

.. rubric:: DMPlexLandau:

- Add ``DMPlexLandauCreateVelocitySpace()`` Create DMComposite of DMPlex for Landau collision operator
- Add ``DMPlexLandauDestroyVelocitySpace()`` Destroy DMComposite of DMPlex for Landau collision operator
- Add ``DMPlexLandauIFunction()`` Landau collision operator
- Add ``DMPlexLandauIJacobian()`` Landau collision operator

.. rubric:: FE/FV:

- Deprecate ``PetscSpacePolynomialGetSymmetric()`` and ``PetscSpacePolynomialSetSymmetric()``: symmetric polynomials were never supported and support is no longer planned
- Remove ``PetscSpacePolynomialType`` enum and associated array of strings ``PetscSpacePolynomialTypes``: other polynomial spaces are now handled by other implementations of ``PetscSpace``
- Add ``PETSCSPACEPTRIMMED`` that implements trimmed polynomial spaces (also known as the spaces in Nedelec face / edge elements of the first kind)
- Replace ``PetscDSGet/SetHybrid()`` with ``PetscDSGet/SetCohesive()``
- Add ``PetscDSIsCohesive()``, ``PetscDSGetNumCohesive()``, and ``PetscDSGetFieldOffsetCohesive()``
- Add argument to ``PetscFEIntegrateHybridJacobian()`` to indicate the face for the integration
- Add ``PetscFECreateByCell()`` and ``PetscFECreateLagrangeByCell()`` to create FE spaces on specific cell types
- Replace ``PetscDualSpaceCreateReferenceCell()`` with ``DMPlexCreateReferenceCell()``
- Add ``PetscDualSpaceEqual()`` and ``PetscQuadratureEqual()``

.. rubric:: DMNetwork:

- ``DMNetworkAddComponent()`` now requires a valid component key for each call
- Add ``DMNetworkSharedVertexGetInfo()``

.. rubric:: DMStag:

.. rubric:: DT:

- Add ``PetscDTPTrimmedEvalJet()`` to evaluate a stable basis for trimmed polynomials, and ``PetscDTPTrimmedSize()`` for the size of that space
- Add ``PetscDSGetRHSResidual()`` and ``PetscDSSetRHSResidual()`` to support explicit timestepping
- Add ``PetscDTTensorQuadratureCreate()`` to combine different quadratures, such as on a prism
- Add ``PetscProbComputeKSStatistic()`` to apply the Kolmogorov-Smirnov test
- Add probability distributions ``PetscPDFMaxwellBoltzmann1D()``, ``PetscCDFMaxwellBoltzmann1D()``, ``PetscPDFMaxwellBoltzmann2D()``, ``PetscCDFMaxwellBoltzmann2D()``, ``PetscPDFMaxwellBoltzmann3D()``, ``PetscCDFMaxwellBoltzmann3D()``, ``PetscPDFGaussian1D()``, ``PetscCDFGaussian1D()``, ``PetscPDFSampleGaussian1D()``, ``PetscPDFGaussian2D()``, ``PetscPDFSampleGaussian2D()``, ``PetscPDFConstant1D()``, ``PetscCDFConstant1D()``

.. rubric:: Fortran:

.. rubric:: Logging:

- Add ``PetscLogIsActive()`` to determine if logging is in progress or not