xref: /petsc/doc/changes/dev.md (revision 9f196a0264fbaf0568fead3a30c861c7ae4cf663)
1# Changes: Development
2
3% STYLE GUIDELINES:
4% * Capitalize sentences
5% * Use imperative, e.g., Add, Improve, Change, etc.
6% * Don't use a period (.) at the end of entries
7% * If multiple sentences are needed, use a period or semicolon to divide sentences, but not at the end of the final sentence
8
9```{rubric} General:
10```
11
12- Add `PETSCPYTHONPATH` to the generated `$PETSC_DIR/$PETSC_ARCH/lib/petsc/conf/petscvariables` file so it is available to users through the makefile system
13- Add `PETSCPYTHONPATH` to the generated `$PETSC_DIR/$PETSC_ARCH/lib/pkgconfig/PETSc.pc` file so it is available to users with
14  `PKG_CONFIG_PATH=$PETSC_DIR/$PETSC_ARCH/lib/pkgconfig pkg-config --variable=PETSCPYTHONPATH PETSc.pc`
15- Add `EXTRA_OPTIONS_INITIAL` to the test system, which prepends options
16
17```{rubric} Configure/Build:
18```
19
20- Change `make sphinxhtml` in the `doc` directory to be `make docs`
21- Change `make docs` to put all its artifacts in `${PETSC_ARCH}-doc` instead of `doc`
22- Add support for `--download-xxx`, `--with-xxx`, and `-with-xxx-dir` for Python packages that install with pip. See `packages.py`
23- Change `make alletags` to `make etags`
24- Deactivate Fortran bindings of SuperLU_DIST and ExodusII by default, but they can still be built with the configure options `--with-superlu_dist-fortran-bindings` and `--with-exodusii-fortran-bindings`, respectively
25
26```{rubric} Sys:
27```
28
29- Add `PETSC_E`
30
31- Deprecate `PetscSSEIsEnabled()`
32- Add `PetscBTCopy()`
33
34```{rubric} Event Logging:
35```
36
37```{rubric} PetscViewer:
38```
39
40- Add `PetscViewerHDF5SetCompress()` and `PetscViewerHDF5GetCompress()`
41
42```{rubric} PetscDraw:
43```
44
45- Add `PetscDrawLGGetData()`
46
47```{rubric} AO:
48```
49
50```{rubric} IS:
51```
52
53```{rubric} VecScatter / PetscSF:
54```
55
56```{rubric} PF:
57```
58
59```{rubric} Vec:
60```
61
62```{rubric} PetscSection:
63```
64
65```{rubric} PetscPartitioner:
66```
67
68```{rubric} Mat:
69```
70
71- Add `MatConstantDiagonalGetConstant()`
72- Add `MatNullSpaceRemoveFn` type definition
73- Add `MatMFFDFn`, `MatMFFDiFn`, `MatMFFDiBaseFn`, and `MatMFFDCheckhFn` type definitions
74- Add `MatFDColoringFn` type definition
75- Add support for `-mat_mumps_icntl_15 1` with the companion function `MatMumpsSetBlk()`
76
77```{rubric} MatCoarsen:
78```
79
80```{rubric} PC:
81```
82
83- Add `PCMatApplyTranspose()` and `PCShellSetMatApplyTranspose()`
84- Remove `PC_ApplyMultiple`
85- Add `PCShellPSolveFn`
86- Add `PCModifySubMatricesFn`
87
88```{rubric} KSP:
89```
90
91- Add `MatLMVMGetLastUpdate()`
92- Add `MatLMVMMultAlgorithm`, `MatLMVMSetMultAlgorithm()`, and `MatLMVMGetMultAlgorithm()`
93- Add `MatLMVMSymBroydenGetPhi()` and `MatLMVMSymBroydenSetPhi()`
94- Add `MatLMVMSymBadBroydenGetPsi()` and `MatLMVMSymBadBroydenSetPsi()`
95- Deprecate `KSP_CONVERGED_RTOL_NORMAL` in favor of `KSP_CONVERGED_RTOL_NORMAL_EQUATIONS` and `KSP_CONVERGED_ATOL_NORMAL` in favor of `KSP_CONVERGED_ATOL_NORMAL_EQUATIONS`
96- Add `KSPFlexibleSetModifyPC()` to provide a common API for setting the modification function for all flexible `KSP` methods
97- Add `KSPFlexibleModifyPCFn` function prototype
98- Change the function signature of the `destroy()` argument to `KSPSetConvergenceTest()` to `PetscCtxDestroyFn*`. If you provide custom destroy
99  functions to `KSPSetConvergenceTest()` you must change them to expect a `void **` argument and immediately dereference the input
100- Add `KSPPSolveFn`
101- Change `KSPMonitorResidualDraw()` to `KSPMonitorResidualView()`
102- Change `KSPMonitorTrueResidualDraw()` to `KSPMonitorTrueResidualView()`
103
104```{rubric} SNES:
105```
106
107- Change `SNESTestJacobian()` to report the norms
108- Add `SNESNormSchedule` support to `SNESKSPONLY`
109
110```{rubric} SNESLineSearch:
111```
112
113- Rename option `snes_linesearch_maxstep` to `snes_linesearch_maxlambda` to better coincide with its purpose in the various `SNESLineSearch`es
114- Rename `SNESLineSearchL2` to `SNESLineSearchSecant` (and hence its option entry `snes_linesearch_type` form `l2` to `secant`) to better represent the underlying approach
115
116```{rubric} TS:
117```
118
119- Add `TSSetRunSteps()` and `-ts_run_steps` for better control of restarted jobs
120- Add `-ts_monitor_solution_skip_initial` to skip first call to the solution monitor
121- Add `-ts_monitor_wall_clock_time` to display the elapsed wall-clock time for every step
122- Change `TSDiscGradIsGonzalez()`, `TSDiscGradUseGonzalez()` to `TSDiscGradSetType()`,`TSDiscGradGetType()`
123
124```{rubric} TAO:
125```
126
127- Add `TaoBRGNSetRegularizationType()`, `TaoBRGNGetRegularizationType()`
128
129```{rubric} PetscRegressor:
130```
131
132- Add new component to support regression and classification machine learning tasks: [](ch_regressor)
133- Add `PetscRegressor` type `PETSCREGRESSORLINEAR` for solving linear regression problems with optional regularization
134
135```{rubric} DM/DA:
136```
137
138- Add `DMHasBound()`, `DM_BC_LOWER_BOUND` and `DM_BC_LOWER_BOUND`
139- Add `DMSetCellCoordinateField()`
140- Add ``localized`` argument to `DMSetCoordinateDisc()` and `DMCreateAffineCoordinates_Internal()`
141- Add `DMCreateGradientMatrix()`
142
143```{rubric} DMSwarm:
144```
145
146- Add `DMSwarmProjectFields()` and `DMSwarmProjectGradientFields()`
147
148```{rubric} DMPlex:
149```
150
151- Add `DMPlexGetTransform()`, `DMPlexSetTransform()`, `DMPlexGetSaveTransform()`, and `DMPlexSetSaveTransform()`
152- Add `DMPlexGetCoordinateMap()` and `DMPlexSetCoordinateMap()`
153- Add `DMPlexTransformCohesiveExtrudeGetUnsplit()`
154- Add `DMFieldCreateDefaultFaceQuadrature()`
155- Rename `DMPlexComputeResidual_Internal()` to `DMPlexComputeResidualForKey()`
156- Rename `DMPlexComputeJacobian_Internal()` to `DMPlexComputeJacobianByKey()`
157- Rename `DMPlexComputeJacobian_Action_Internal()` to `DMPlexComputeJacobianActionByKey()`
158- Rename `DMPlexComputeResidual_Hybrid_Internal()` to `DMPlexComputeResidualHybridByKey()`
159- Rename `DMPlexComputeJacobian_Hybrid_Internal()` to `DMPlexComputeJacobianHybridByKey()`
160- Add `DMPlexInsertBounds()`
161- Change argument order for `DMPlexComputeBdResidualSingle()` and `DMPlexComputeBdJacobianSingle()` to match domain functions
162- Add `DMPlexComputeBdResidualSingleByKey()` and `DMPlexComputeBdJacobianSingleByLabel()`
163- Add ``localized`` argument to `DMPlexCreateCoordinateSpace()`
164- Remove ``coordFunc`` argument from `DMPlexCreateCoordinateSpace()`
165- Change `DMPlexExtrude()` to take a label argument
166- Rename `DMPlexVecGetOrientedClosure_Internal()` to `DMPlexVecGetOrientedClosure()`
167
168```{rubric} FE/FV:
169```
170
171- Add `PetscFEExpandFaceQuadrature()`
172- Add `PetscFECreateBrokenElement()`
173- Change `PetscFEIntegrateJacobian()` signature to allow rectangular operators
174
175```{rubric} DMNetwork:
176```
177
178```{rubric} DMStag:
179```
180
181```{rubric} DT:
182```
183
184- Deprecate `PetscSimplePointFunc` in favor of `PetscSimplePointFn *`
185- Deprecate `PetscPointFunc` in favor of `PetscPointFn *`
186- Deprecate `PetscPointJac` in favor of `PetscPointJacFn *`
187- Deprecate `PetscBdPointFunc` in favor of `PetscBdPointFn *`
188- Deprecate `PetscBdPointJac` in favor of `PetscBdPointJacFn *`
189- Deprecate `PetscRiemannFunc` in favor of `PetscRiemannFn *`
190- Deprecate `PetscProbFunc` in favor of `PetscProbFn *`
191- Add `PetscDTCreateQuadratureByCell()`
192
193```{rubric} Fortran:
194```
195
196- Add `PetscObjectNullify()`
197