xref: /petsc/doc/changes/dev.md (revision 75b7f5c99e7c25f4db18d09f2a723fd0e66ff7cd)
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 `PetscOptionsBool3()`
30- Add `PETSC_E`
31- Deprecate `PetscSSEIsEnabled()`
32- Add `PetscBTCopy()`
33- Change `PetscBool` to be a C bool. It now has a size of one byte, when previously it had a size of four bytes
34- Deprecate `MPIU_BOOL` in favor of `MPI_C_BOOL`. This is now possible since `PetscBool` is now a C bool
35- Add `PetscStackView()` to the public API
36- Change the default file pointer used in `PetscStackView()` if `NULL` is used to `PETSC_STDERR`
37- Add `-petsc_viewer_stdout_format formatname` to allow initializing the format of `PETSC_VIEWER_STDOUT_()`
38
39```{rubric} Event Logging:
40```
41
42```{rubric} PetscViewer:
43```
44
45- Add `PetscViewerHDF5SetCompress()` and `PetscViewerHDF5GetCompress()`
46
47```{rubric} PetscDraw:
48```
49
50- Add `PetscDrawLGGetData()`
51
52```{rubric} AO:
53```
54
55```{rubric} IS:
56```
57
58```{rubric} VecScatter / PetscSF:
59```
60
61- Change `VecSetOperation()` and `VecGetOperation()` so that their final argument must be casted with `PetscErrorCodeFn *` and `PetscErrorCodeFn **`
62
63```{rubric} PF:
64```
65
66```{rubric} Vec:
67```
68
69```{rubric} PetscSection:
70```
71
72- Add `PetscSectionArrayView()`
73
74```{rubric} PetscPartitioner:
75```
76
77- Add `PETSCPARTITIONERMULTISTAGE` for improved load balance, edge cut, and performances of large scale unstructured mesh partitioning.
78
79```{rubric} Mat:
80```
81
82- Add `MatConstantDiagonalGetConstant()`
83- Add `MatNullSpaceRemoveFn` type definition
84- Add `MatMFFDFn`, `MatMFFDiFn`, `MatMFFDiBaseFn`, and `MatMFFDCheckhFn` type definitions
85- Add `MatFDColoringFn` type definition
86- Add support for `-mat_mumps_icntl_15 1` with the companion function `MatMumpsSetBlk()`
87- Change `MatSetOperation()` and `MatGetOperation()` so that their final argument must be casted with `PetscErrorCodeFn *` and `PetscErrorCodeFn **`
88- Change `MatShellSetOperation()` and `MatShellGetOperation()` so that their final argument must be casted with `PetscErrorCodeFn *` and `PetscErrorCodeFn **`
89
90```{rubric} MatCoarsen:
91```
92
93```{rubric} PC:
94```
95
96- Add `PCMatApplyTranspose()` and `PCShellSetMatApplyTranspose()`
97- Remove `PC_ApplyMultiple`
98- Add `PCShellPSolveFn`
99- Add `PCModifySubMatricesFn`
100- Remove `PCSetPreSolve()` and `PCSetPostSolve()`. See `PCSetPostSetUp()`
101
102```{rubric} KSP:
103```
104
105- Add `MatLMVMGetLastUpdate()`
106- Add `MatLMVMMultAlgorithm`, `MatLMVMSetMultAlgorithm()`, and `MatLMVMGetMultAlgorithm()`
107- Add `MatLMVMSymBroydenGetPhi()` and `MatLMVMSymBroydenSetPhi()`
108- Add `MatLMVMSymBadBroydenGetPsi()` and `MatLMVMSymBadBroydenSetPsi()`
109- 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`
110- Add `KSPFlexibleSetModifyPC()` to provide a common API for setting the modification function for all flexible `KSP` methods
111- Add `KSPFlexibleModifyPCFn` function prototype
112- Change the function signature of the `destroy()` argument to `KSPSetConvergenceTest()` to `PetscCtxDestroyFn*`. If you provide custom destroy
113  functions to `KSPSetConvergenceTest()` you must change them to expect a `void **` argument and immediately dereference the input
114- Add `KSPPSolveFn`
115- Change `KSPMonitorResidualDraw()` to `KSPMonitorResidualView()`
116- Change `KSPMonitorTrueResidualDraw()` to `KSPMonitorTrueResidualView()`
117
118```{rubric} SNES:
119```
120
121- Change `SNESTestJacobian()` to report the norms
122- Add `SNESNormSchedule` support to `SNESKSPONLY`
123
124```{rubric} SNESLineSearch:
125```
126
127- Rename option `snes_linesearch_maxstep` to `snes_linesearch_maxlambda` to better coincide with its purpose in the various `SNESLineSearch`es
128- Rename `SNESLineSearchL2` to `SNESLineSearchSecant` (and hence its option entry `snes_linesearch_type` form `l2` to `secant`) to better represent the underlying approach
129
130```{rubric} TS:
131```
132
133- Add `TSSetRunSteps()` and `-ts_run_steps` for better control of restarted jobs
134- Add `-ts_monitor_solution_skip_initial` to skip first call to the solution monitor
135- Add `-ts_monitor_wall_clock_time` to display the elapsed wall-clock time for every step
136- Change `TSDiscGradIsGonzalez()`, `TSDiscGradUseGonzalez()` to `TSDiscGradSetType()`,`TSDiscGradGetType()`
137
138```{rubric} TAO:
139```
140
141- Add `TaoBRGNSetRegularizationType()`, `TaoBRGNGetRegularizationType()`
142- Add `TaoGetInequalityConstraintsRoutine()`, `TaoGetEqualityConstraintsRoutine()`, `TaoGetJacobianInequalityRoutine()` and `TaoGetJacobianEqualityRoutine()`
143
144```{rubric} PetscRegressor:
145```
146
147- Add new component to support regression and classification machine learning tasks: [](ch_regressor)
148- Add `PetscRegressor` type `PETSCREGRESSORLINEAR` for solving linear regression problems with optional regularization
149
150```{rubric} DM/DA:
151```
152
153- Add `DMHasBound()`, `DM_BC_LOWER_BOUND` and `DM_BC_LOWER_BOUND`
154- Add `DMSetCellCoordinateField()`
155- Add ``localized`` argument to `DMSetCoordinateDisc()` and `DMCreateAffineCoordinates_Internal()`
156- Add `DMCreateGradientMatrix()`
157
158```{rubric} DMSwarm:
159```
160
161- Add `DMSwarmProjectFields()` and `DMSwarmProjectGradientFields()`
162
163```{rubric} DMPlex:
164```
165
166- Add `DMPlexGetTransform()`, `DMPlexSetTransform()`, `DMPlexGetSaveTransform()`, and `DMPlexSetSaveTransform()`
167- Add `DMPlexGetCoordinateMap()` and `DMPlexSetCoordinateMap()`
168- Add `DMPlexTransformCohesiveExtrudeGetUnsplit()`
169- Add `DMFieldCreateDefaultFaceQuadrature()`
170- Rename `DMPlexComputeResidual_Internal()` to `DMPlexComputeResidualForKey()`
171- Rename `DMPlexComputeJacobian_Internal()` to `DMPlexComputeJacobianByKey()`
172- Rename `DMPlexComputeJacobian_Action_Internal()` to `DMPlexComputeJacobianActionByKey()`
173- Rename `DMPlexComputeResidual_Hybrid_Internal()` to `DMPlexComputeResidualHybridByKey()`
174- Rename `DMPlexComputeJacobian_Hybrid_Internal()` to `DMPlexComputeJacobianHybridByKey()`
175- Add `DMPlexInsertBounds()`
176- Change argument order for `DMPlexComputeBdResidualSingle()` and `DMPlexComputeBdJacobianSingle()` to match domain functions
177- Add `DMPlexComputeBdResidualSingleByKey()` and `DMPlexComputeBdJacobianSingleByLabel()`
178- Add ``localized`` argument to `DMPlexCreateCoordinateSpace()`
179- Remove ``coordFunc`` argument from `DMPlexCreateCoordinateSpace()`
180- Change `DMPlexExtrude()` to take a label argument
181- Rename `DMPlexVecGetOrientedClosure_Internal()` to `DMPlexVecGetOrientedClosure()`
182- Correctly handle `Mat` preallocation for isoperiodic boundary conditions
183
184```{rubric} FE/FV:
185```
186
187- Add `PetscFEExpandFaceQuadrature()`
188- Add `PetscFECreateBrokenElement()`
189- Change `PetscFEIntegrateJacobian()` signature to allow rectangular operators
190
191```{rubric} DMNetwork:
192```
193
194```{rubric} DMStag:
195```
196
197```{rubric} DT:
198```
199
200- Deprecate `PetscSimplePointFunc` in favor of `PetscSimplePointFn *`
201- Deprecate `PetscPointFunc` in favor of `PetscPointFn *`
202- Deprecate `PetscPointJac` in favor of `PetscPointJacFn *`
203- Deprecate `PetscBdPointFunc` in favor of `PetscBdPointFn *`
204- Deprecate `PetscBdPointJac` in favor of `PetscBdPointJacFn *`
205- Deprecate `PetscRiemannFunc` in favor of `PetscRiemannFn *`
206- Deprecate `PetscProbFunc` in favor of `PetscProbFn *`
207- Add `PetscDTCreateQuadratureByCell()`
208
209```{rubric} Fortran:
210```
211
212- Add `PetscObjectNullify()`
213- Require Fortran compiler to have `.true.=b00000001` and `.false.=b00000000` for `logical(C_BOOL)`. Thus require the compiler flags `-fpscomp logicals` for Intel and `-Munixlogical` for NVIDIA compilers
214- Change `PetscBool` to be `logical(C_BOOL)` (equivalent to a `logical(kind=1)`). It now has a size of one byte, previously it was a `logical(kind=4)` and had a size of four bytes
215- Remove the `./configure` option `-with-fortran-type-initialize=0`. Hence, it is now not possible to include PETSc objects in common blocks
216