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