xref: /petsc/doc/changes/323.md (revision 7f296bb328fcd4c99f2da7bfe8ba7ed8a4ebceee)
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