1*7f296bb3SBarry Smith# Changes: 3.23 2*7f296bb3SBarry Smith 3*7f296bb3SBarry Smith% STYLE GUIDELINES: 4*7f296bb3SBarry Smith% * Capitalize sentences 5*7f296bb3SBarry Smith% * Use imperative, e.g., Add, Improve, Change, etc. 6*7f296bb3SBarry Smith% * Don't use a period (.) at the end of entries 7*7f296bb3SBarry Smith% * If multiple sentences are needed, use a period or semicolon to divide sentences, but not at the end of the final sentence 8*7f296bb3SBarry Smith 9*7f296bb3SBarry Smith```{rubric} General: 10*7f296bb3SBarry Smith``` 11*7f296bb3SBarry Smith 12*7f296bb3SBarry Smith- Add `PetscCtxDestroyFn` as the prototype for all context destroy functions. It is `PetscErrorCode ()(void **)`. Previously some context destructor 13*7f296bb3SBarry Smith setters took `PetscErrorCode ()(void *)`. But these would not work directly with PETSc objects as contexts and having two different 14*7f296bb3SBarry Smith context destructor models added unneeded complexity to the library. This change is not backward compatible 15*7f296bb3SBarry Smith- Deprecate `PetscContainerSetUserDestroy()` with `PetscContainerSetCtxDestroy()`, updating will require a small change in calling code 16*7f296bb3SBarry Smith- Deprecate `PetscContainerCtxDestroyDefault` with `PetscCtxDestroyDefault()` 17*7f296bb3SBarry Smith- Add `PetscIntViewNumColumns()`, `PetscScalarViewNumColumns()`, and `PetscRealViewNumColumns()` 18*7f296bb3SBarry Smith- Change `PetscGetKokkosExecutionSpace()` to return the `Kokkos::DefaultExecutionSpace` object instead of a reference to it 19*7f296bb3SBarry Smith 20*7f296bb3SBarry Smith```{rubric} Configure/Build: 21*7f296bb3SBarry Smith``` 22*7f296bb3SBarry Smith 23*7f296bb3SBarry Smith- Update `--download-pastix` to use CMake build, with additional dependency on LAPACKE and CBLAS, can use for ex. MKL with `--with-blaslapack-dir=${MKLROOT}`, or Netlib LAPACK with `--download-netlib-lapack --with-netlib-lapack-c-bindings` 24*7f296bb3SBarry Smith- Add option `--with-library-name-suffix=<suffix>` 25*7f296bb3SBarry Smith 26*7f296bb3SBarry Smith```{rubric} Sys: 27*7f296bb3SBarry Smith``` 28*7f296bb3SBarry Smith 29*7f296bb3SBarry Smith- Add `PetscCIntCast()` 30*7f296bb3SBarry Smith- Add `PetscObjectHasFunction()` to query for the presence of a composed method 31*7f296bb3SBarry Smith- Add `PetscSortedCheckDupsCount()` and `PetscFindCount()` 32*7f296bb3SBarry Smith 33*7f296bb3SBarry Smith```{rubric} Event Logging: 34*7f296bb3SBarry Smith``` 35*7f296bb3SBarry Smith 36*7f296bb3SBarry Smith```{rubric} PetscViewer: 37*7f296bb3SBarry Smith``` 38*7f296bb3SBarry Smith 39*7f296bb3SBarry Smith```{rubric} PetscDraw: 40*7f296bb3SBarry Smith``` 41*7f296bb3SBarry Smith 42*7f296bb3SBarry Smith- Add `PetscDrawHGAddWeightedValue()` 43*7f296bb3SBarry Smith 44*7f296bb3SBarry Smith```{rubric} AO: 45*7f296bb3SBarry Smith``` 46*7f296bb3SBarry Smith 47*7f296bb3SBarry Smith```{rubric} IS: 48*7f296bb3SBarry Smith``` 49*7f296bb3SBarry Smith 50*7f296bb3SBarry Smith- Add `ISGetCompressOutput()` and `ISSetCompressOutput()` 51*7f296bb3SBarry Smith 52*7f296bb3SBarry Smith```{rubric} VecScatter / PetscSF: 53*7f296bb3SBarry Smith``` 54*7f296bb3SBarry Smith 55*7f296bb3SBarry Smith```{rubric} PF: 56*7f296bb3SBarry Smith``` 57*7f296bb3SBarry Smith 58*7f296bb3SBarry Smith```{rubric} Vec: 59*7f296bb3SBarry Smith``` 60*7f296bb3SBarry Smith 61*7f296bb3SBarry Smith- Add `PetscKDTree`, an implementation of K-d trees for efficient nearest-neighbor point searches. Includes `PetscKDTreeCreate()`, `PetscKDTreeDestroy()`, `PetscKDTreeView()`, and then `PetscKDTreeQueryPointsNearestNeighbor()` for actually doing the nearest-neighbor query 62*7f296bb3SBarry Smith- Add `VecKokkosPlaceArray()` and `VecKokkosResetArray()` 63*7f296bb3SBarry Smith 64*7f296bb3SBarry Smith```{rubric} PetscSection: 65*7f296bb3SBarry Smith``` 66*7f296bb3SBarry Smith 67*7f296bb3SBarry Smith```{rubric} PetscPartitioner: 68*7f296bb3SBarry Smith``` 69*7f296bb3SBarry Smith 70*7f296bb3SBarry Smith```{rubric} Mat: 71*7f296bb3SBarry Smith``` 72*7f296bb3SBarry Smith 73*7f296bb3SBarry Smith- Add `MatCopyHashToXAIJ()` which allows assembling an XAIJ matrix in hash table form into another XAIJ matrix 74*7f296bb3SBarry Smith- Add `MatResetHash()` which allows resetting an XAIJ matrix to use a hash table 75*7f296bb3SBarry Smith- Add `MatCreateSeqAIJKokkosWithKokkosViews()` which allows creation of a `MATSEQAIJKOKKOS` matrix with AIJ data in Kokkos views 76*7f296bb3SBarry Smith- Change `MatCreateMPIAIJWithSeqAIJ()` so that B can be passed in with local indices and compactification skipped 77*7f296bb3SBarry Smith- Change option `-mat_factor_bind_factorization <host | device>` to `-pc_factor_mat_factor_on_host <bool>` for `MATAIJ` device matrices 78*7f296bb3SBarry Smith- Add option `-pc_factor_mat_solve_on_host <bool>` for `MATSEQAIJKOKKOS` matrices 79*7f296bb3SBarry Smith 80*7f296bb3SBarry Smith```{rubric} MatCoarsen: 81*7f296bb3SBarry Smith``` 82*7f296bb3SBarry Smith 83*7f296bb3SBarry Smith```{rubric} PC: 84*7f296bb3SBarry Smith``` 85*7f296bb3SBarry Smith 86*7f296bb3SBarry Smith- Add `PCHYPREGetCFMarkers()` to extract Coarse/Fine splittings created by BoomerAMG from `PCHYPRE`, similar to `PCGetInterpolations()` and `PCGetCoarseOperators()` 87*7f296bb3SBarry Smith 88*7f296bb3SBarry Smith```{rubric} KSP: 89*7f296bb3SBarry Smith``` 90*7f296bb3SBarry Smith 91*7f296bb3SBarry Smith```{rubric} SNES: 92*7f296bb3SBarry Smith``` 93*7f296bb3SBarry Smith 94*7f296bb3SBarry Smith- Add `DMPlexSetSNESVariableBounds()` 95*7f296bb3SBarry Smith 96*7f296bb3SBarry Smith```{rubric} SNESLineSearch: 97*7f296bb3SBarry Smith``` 98*7f296bb3SBarry Smith 99*7f296bb3SBarry Smith- Add `SNESLINESEARCHBISECTION` as new SNES line search type, performing a bisection line search on the directional derivative 100*7f296bb3SBarry Smith- Add `SNESLineSearchVIDirDerivFn` to compute directional derivative taking into account VI bounds, and update `SNESLineSearchGetVIFunctions()` and `SNESLineSearchSetVIFunctions()` accordingly 101*7f296bb3SBarry Smith 102*7f296bb3SBarry Smith```{rubric} TS: 103*7f296bb3SBarry Smith``` 104*7f296bb3SBarry Smith 105*7f296bb3SBarry Smith- Add `TSSetEvaluationTimes()`, `TSGetEvaluationTimes()`, and `TSGetEvaluationSolutions()` for evaluating solutions a given list of times. Also activatable via `-ts_eval_times` 106*7f296bb3SBarry Smith- Deprecate `TSGetTimeSpan()` --> `TSGetEvaluationTimes()` and `TSGetTimeSpanSolutions()` --> `TSGetEvaluationSolutions()` 107*7f296bb3SBarry Smith 108*7f296bb3SBarry Smith```{rubric} TAO: 109*7f296bb3SBarry Smith``` 110*7f296bb3SBarry Smith 111*7f296bb3SBarry Smith```{rubric} DM/DA: 112*7f296bb3SBarry Smith``` 113*7f296bb3SBarry Smith 114*7f296bb3SBarry Smith- Deprecate `DMGetSection()` and `DMSetSection()` for existing `DMGetLocalSection()` and `DMSetLocalSection()` 115*7f296bb3SBarry Smith- Replace the Fortran array `DMDALocalInfo` with a derived type whose entries match the C struct 116*7f296bb3SBarry Smith- Change the Fortran `DMDAGetNeighbors()` to return a `PetscMPIInt, pointer :: n(:)` and add a Fortran `DMDARestoreNeighbors()` 117*7f296bb3SBarry Smith- Change the Fortran `DMDAGetOwnershipRanges()` to return `PetscInt, pointer :: n(:)` and add a Fortran `DMDARestoreOwnershipRanges()` 118*7f296bb3SBarry Smith 119*7f296bb3SBarry Smith```{rubric} DMSwarm: 120*7f296bb3SBarry Smith``` 121*7f296bb3SBarry Smith 122*7f296bb3SBarry Smith- Add `DMSwarmSortRestorePointsPerCell()` 123*7f296bb3SBarry Smith- Change `DMSwarmVectorGetField()` and add `DMSwarmVectorDefineFields()` to handle multiple fields 124*7f296bb3SBarry Smith- Add `DMSwarmComputeMoments()` 125*7f296bb3SBarry Smith- Add `DMSwarmCellDMCreate()`, `DMSwarmCellDMDestroy()`, `DMSwarmCellDMView()`, `DMSwarmCellDMGetDM()`, `DMSwarmCellDMGetFields()`, `DMSwarmCellDMGetCoordinateFields()`, `DMSwarmCellDMGetCellID()`, `DMSwarmCellDMGetSort()`, `DMSwarmCellDMSetSort()`, and `DMSwarmCellDMGetBlockSize()` 126*7f296bb3SBarry Smith- Add `DMSwarmAddCellDM()`, `DMSwarmSetCellDMActive()`, and `DMSwarmGetCellDMActive()` 127*7f296bb3SBarry Smith- Add `DMSwarmCreateGlobalVectorFromFields()`, `DMSwarmDestroyGlobalVectorFromFields()`, `DMSwarmCreateLocalVectorFromFields()`, and `DMSwarmDestroyLocalVectorFromFields()` 128*7f296bb3SBarry Smith- Add `DMSwarmSortDestroy()` 129*7f296bb3SBarry Smith- Add `DMSwarmRemapType`, `DMSwarmRemap()`, and `DMSwarmDuplicate()` 130*7f296bb3SBarry Smith- Add `DMSwarmGetType()` 131*7f296bb3SBarry Smith- Add `DMSwarmGetCellDMByName()` and `DMSwarmGetCellDMNames()` 132*7f296bb3SBarry Smith 133*7f296bb3SBarry Smith```{rubric} DMPlex: 134*7f296bb3SBarry Smith``` 135*7f296bb3SBarry Smith 136*7f296bb3SBarry Smith- Add `DMPlexTransformGetMatchStrata()` and `DMPlexTransformSetMatchStrata()` 137*7f296bb3SBarry Smith- Deprecate `DMPlexSetGlobalToNaturalSF()` and `DMPlexGetGlobalToNaturalSF()` for existing `DMSetNaturalSF()` and `DMGetNaturalSF()` 138*7f296bb3SBarry Smith- Add `-dm_plex_box_label_bd` to setup isoperiodicity when using `-dm_plex_box_label_bd` 139*7f296bb3SBarry Smith- Change `PetscViewerCGNSGetSolutionTime()` to no longer error if "TimeValues" array isn't found in CGNS file 140*7f296bb3SBarry Smith- Add `PetscViewerCGNSGetSolutionIteration()` 141*7f296bb3SBarry Smith- Add `DMPlexGetInterpolatePreferTensor()` and `DMPlexSetInterpolatePreferTensor()` 142*7f296bb3SBarry Smith- Add `PetscCallEGADS()` 143*7f296bb3SBarry Smith- Add `DMPlexTransformGetTransformTypes()` and `DMPlexTransformSetTransformTypes()` 144*7f296bb3SBarry Smith- Several `DMPLEX` functions including `DMPlexVecGetClosure()` now requiring a dummy argument for the length of the returned array, for example `PETSC_NULL_INTEGER` that was previously missing not in the Fortran API. 145*7f296bb3SBarry Smith 146*7f296bb3SBarry Smith```{rubric} FE/FV: 147*7f296bb3SBarry Smith``` 148*7f296bb3SBarry Smith 149*7f296bb3SBarry Smith- Add `PetscFEGeomMode` 150*7f296bb3SBarry Smith- Change `PetscFEGeomCreate()`, `DMFieldCreateFEGeom()`, and `DMSNESGetFEGeom()` to take `PetscFEGeomMode` 151*7f296bb3SBarry Smith 152*7f296bb3SBarry Smith```{rubric} DMNetwork: 153*7f296bb3SBarry Smith``` 154*7f296bb3SBarry Smith 155*7f296bb3SBarry Smith```{rubric} DMStag: 156*7f296bb3SBarry Smith``` 157*7f296bb3SBarry Smith 158*7f296bb3SBarry Smith```{rubric} DT: 159*7f296bb3SBarry Smith``` 160*7f296bb3SBarry Smith 161*7f296bb3SBarry Smith- Add `PetscDSGetLowerBound()`, `PetscDSSetLowerBound()`, `PetscDSGetUpperBound()`, `PetscDSSetUpperBound()`, `PetscDSCopyBounds()` 162*7f296bb3SBarry Smith- Add `PetscProbComputeKSStatisticWeighted()` and `PetscProbComputeKSStatisticMagnitude()` 163*7f296bb3SBarry Smith 164*7f296bb3SBarry Smith```{rubric} Fortran: 165*7f296bb3SBarry Smith``` 166*7f296bb3SBarry Smith 167*7f296bb3SBarry Smith- Deprecate all Fortran function names with the suffix F90 with the equivalent function name without the suffix F90. Functions such as `VecGetArray()` 168*7f296bb3SBarry Smith now take a Fortran pointer as arguments and hence behave like the deprecated `VecGetArrayF90()` 169*7f296bb3SBarry Smith- Add `PETSC_NULL_ENUM_XXX` to be used instead of `PETSC_NULL_INTEGER` when a pointer to an XXX `enum` is expected in a PETSc function call 170*7f296bb3SBarry Smith- Add `PETSC_NULL_INTEGER_ARRAY`, `PETSC_NULL_SCALAR_ARRAY`, and `PETSC_NULL_REAL_ARRAY` for use instead of 171*7f296bb3SBarry Smith `PETSC_NULL_INTEGER`, `PETSC_NULL_SCALAR`, and `PETSC_NULL_REAL` when an input array is expected in a PETSc function call but not 172*7f296bb3SBarry Smith provided by the user 173*7f296bb3SBarry Smith- Add `PETSC_NULL_INTEGER_POINTER` for arguments that return as arrays, for example, `PetscInt, pointer :: idx(:)` but not needed by the user. 174*7f296bb3SBarry Smith- Add automatically generated interface definitions for most PETSc functions to detect illegal usage at compile time 175*7f296bb3SBarry Smith- Add `PetscObjectIsNull()` for users to check if a PETSc object is `NULL`. All PETSc objects are now null when they are declared 176*7f296bb3SBarry Smith- Change the PETSc Fortran API so that non-array values, `v`, passed to PETSc routines expecting arrays must be cast with `[v]` in the calling sequence. For example, with `VecSetValues()` 177*7f296bb3SBarry Smith- Use of `case(e)` where `e` is any PETSc enum variable or value must be changed to `PetscEnumCase(e)` or `case(e%v)` 178*7f296bb3SBarry Smith- `MatInfo` and similar are now derived data types instead of arrays, use e.g. `matinfo%nz_allocated` to access their components 179