xref: /petsc/doc/changes/324.md (revision 51619389660697cb6ab811d9eb05c4522bec4803)
1*51619389SSatish Balay# Changes: 3.24
2*51619389SSatish Balay
3*51619389SSatish Balay% STYLE GUIDELINES:
4*51619389SSatish Balay% * Capitalize sentences
5*51619389SSatish Balay% * Use imperative, e.g., Add, Improve, Change, etc.
6*51619389SSatish Balay% * Don't use a period (.) at the end of entries
7*51619389SSatish Balay% * If multiple sentences are needed, use a period or semicolon to divide sentences, but not at the end of the final sentence
8*51619389SSatish Balay
9*51619389SSatish Balay```{rubric} General:
10*51619389SSatish Balay```
11*51619389SSatish Balay
12*51619389SSatish Balay- 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*51619389SSatish Balay- Add `PETSCPYTHONPATH` to the generated `$PETSC_DIR/$PETSC_ARCH/lib/pkgconfig/PETSc.pc` file so it is available to users with
14*51619389SSatish Balay  `PKG_CONFIG_PATH=$PETSC_DIR/$PETSC_ARCH/lib/pkgconfig pkg-config --variable=PETSCPYTHONPATH PETSc.pc`
15*51619389SSatish Balay- Add `EXTRA_OPTIONS_INITIAL` to the test system, which prepends options
16*51619389SSatish Balay
17*51619389SSatish Balay```{rubric} Configure/Build:
18*51619389SSatish Balay```
19*51619389SSatish Balay
20*51619389SSatish Balay- Change `make sphinxhtml` in the `doc` directory to be `make docs`
21*51619389SSatish Balay- Change `make docs` to put all its artifacts in `${PETSC_ARCH}-doc` instead of `doc`
22*51619389SSatish Balay- Add support for `--download-xxx`, `--with-xxx`, and `-with-xxx-dir` for Python packages that install with pip. See `packages.py`
23*51619389SSatish Balay- Change `make alletags` to `make etags`
24*51619389SSatish Balay- 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*51619389SSatish Balay- Add `--with-python-exec-from-env=python` to allow providing the Python to be used by mpi4py and petsc4py without hard-wiring the full path at ./configure time
26*51619389SSatish Balay
27*51619389SSatish Balay```{rubric} Sys:
28*51619389SSatish Balay```
29*51619389SSatish Balay
30*51619389SSatish Balay- Add `PetscOptionsBool3()`
31*51619389SSatish Balay- Add `PETSC_E`
32*51619389SSatish Balay- Deprecate `PetscSSEIsEnabled()`
33*51619389SSatish Balay- Add `PetscBTCopy()`
34*51619389SSatish Balay- Change `PetscBool` to be a C bool. It now has a size of one byte, when previously it had a size of four bytes
35*51619389SSatish Balay- Deprecate `MPIU_BOOL` in favor of `MPI_C_BOOL`. This is now possible since `PetscBool` is now a C bool
36*51619389SSatish Balay- Add `PetscStackView()` to the public API
37*51619389SSatish Balay- Change the default file pointer used in `PetscStackView()` if `NULL` is used to `PETSC_STDERR`
38*51619389SSatish Balay- Add `-petsc_viewer_stdout_format formatname` to allow initializing the format of `PETSC_VIEWER_STDOUT_()`
39*51619389SSatish Balay
40*51619389SSatish Balay```{rubric} Event Logging:
41*51619389SSatish Balay```
42*51619389SSatish Balay
43*51619389SSatish Balay```{rubric} PetscViewer:
44*51619389SSatish Balay```
45*51619389SSatish Balay
46*51619389SSatish Balay- Add `PetscViewerHDF5SetCompress()` and `PetscViewerHDF5GetCompress()`
47*51619389SSatish Balay
48*51619389SSatish Balay```{rubric} PetscDraw:
49*51619389SSatish Balay```
50*51619389SSatish Balay
51*51619389SSatish Balay- Add `PetscDrawLGGetData()`
52*51619389SSatish Balay
53*51619389SSatish Balay```{rubric} AO:
54*51619389SSatish Balay```
55*51619389SSatish Balay
56*51619389SSatish Balay```{rubric} IS:
57*51619389SSatish Balay```
58*51619389SSatish Balay
59*51619389SSatish Balay```{rubric} VecScatter / PetscSF:
60*51619389SSatish Balay```
61*51619389SSatish Balay
62*51619389SSatish Balay- Change `VecSetOperation()` and `VecGetOperation()` so that their final argument must be casted with `PetscErrorCodeFn *` and `PetscErrorCodeFn **`
63*51619389SSatish Balay
64*51619389SSatish Balay```{rubric} PF:
65*51619389SSatish Balay```
66*51619389SSatish Balay
67*51619389SSatish Balay```{rubric} Vec:
68*51619389SSatish Balay```
69*51619389SSatish Balay
70*51619389SSatish Balay```{rubric} PetscSection:
71*51619389SSatish Balay```
72*51619389SSatish Balay
73*51619389SSatish Balay- Add `PetscSectionArrayView()`
74*51619389SSatish Balay
75*51619389SSatish Balay```{rubric} PetscPartitioner:
76*51619389SSatish Balay```
77*51619389SSatish Balay
78*51619389SSatish Balay- Add `PETSCPARTITIONERMULTISTAGE` for improved load balance, edge cut, and performances of large scale unstructured mesh partitioning.
79*51619389SSatish Balay
80*51619389SSatish Balay```{rubric} Mat:
81*51619389SSatish Balay```
82*51619389SSatish Balay
83*51619389SSatish Balay- Add `MatConstantDiagonalGetConstant()`
84*51619389SSatish Balay- Add `MatNullSpaceRemoveFn` type definition
85*51619389SSatish Balay- Add `MatMFFDFn`, `MatMFFDiFn`, `MatMFFDiBaseFn`, and `MatMFFDCheckhFn` type definitions
86*51619389SSatish Balay- Add `MatFDColoringFn` type definition
87*51619389SSatish Balay- Add support for `-mat_mumps_icntl_15 1` with the companion function `MatMumpsSetBlk()`
88*51619389SSatish Balay- Change `MatSetOperation()` and `MatGetOperation()` so that their final argument must be casted with `PetscErrorCodeFn *` and `PetscErrorCodeFn **`
89*51619389SSatish Balay- Change `MatShellSetOperation()` and `MatShellGetOperation()` so that their final argument must be casted with `PetscErrorCodeFn *` and `PetscErrorCodeFn **`
90*51619389SSatish Balay
91*51619389SSatish Balay```{rubric} MatCoarsen:
92*51619389SSatish Balay```
93*51619389SSatish Balay
94*51619389SSatish Balay```{rubric} PC:
95*51619389SSatish Balay```
96*51619389SSatish Balay
97*51619389SSatish Balay- Add `PCMatApplyTranspose()` and `PCShellSetMatApplyTranspose()`
98*51619389SSatish Balay- Remove `PC_ApplyMultiple`
99*51619389SSatish Balay- Add `PCShellPSolveFn`
100*51619389SSatish Balay- Add `PCModifySubMatricesFn`
101*51619389SSatish Balay- Remove `PCSetPreSolve()` and `PCSetPostSolve()`. See `PCSetPostSetUp()`
102*51619389SSatish Balay
103*51619389SSatish Balay```{rubric} KSP:
104*51619389SSatish Balay```
105*51619389SSatish Balay
106*51619389SSatish Balay- Add `MatLMVMGetLastUpdate()`
107*51619389SSatish Balay- Add `MatLMVMMultAlgorithm`, `MatLMVMSetMultAlgorithm()`, and `MatLMVMGetMultAlgorithm()`
108*51619389SSatish Balay- Add `MatLMVMSymBroydenGetPhi()` and `MatLMVMSymBroydenSetPhi()`
109*51619389SSatish Balay- Add `MatLMVMSymBadBroydenGetPsi()` and `MatLMVMSymBadBroydenSetPsi()`
110*51619389SSatish Balay- 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`
111*51619389SSatish Balay- Add `KSPFlexibleSetModifyPC()` to provide a common API for setting the modification function for all flexible `KSP` methods
112*51619389SSatish Balay- Add `KSPFlexibleModifyPCFn` function prototype
113*51619389SSatish Balay- Change the function signature of the `destroy()` argument to `KSPSetConvergenceTest()` to `PetscCtxDestroyFn*`. If you provide custom destroy
114*51619389SSatish Balay  functions to `KSPSetConvergenceTest()` you must change them to expect a `void **` argument and immediately dereference the input
115*51619389SSatish Balay- Add `KSPPSolveFn`
116*51619389SSatish Balay- Change `KSPMonitorResidualDraw()` to `KSPMonitorResidualView()`
117*51619389SSatish Balay- Change `KSPMonitorTrueResidualDraw()` to `KSPMonitorTrueResidualView()`
118*51619389SSatish Balay
119*51619389SSatish Balay```{rubric} SNES:
120*51619389SSatish Balay```
121*51619389SSatish Balay
122*51619389SSatish Balay- Change `SNESTestJacobian()` to report the norms
123*51619389SSatish Balay- Add `SNESNormSchedule` support to `SNESKSPONLY`
124*51619389SSatish Balay
125*51619389SSatish Balay```{rubric} SNESLineSearch:
126*51619389SSatish Balay```
127*51619389SSatish Balay
128*51619389SSatish Balay- Rename option `snes_linesearch_maxstep` to `snes_linesearch_maxlambda` to better coincide with its purpose in the various `SNESLineSearch`es
129*51619389SSatish Balay- Rename `SNESLineSearchL2` to `SNESLineSearchSecant` (and hence its option entry `snes_linesearch_type` form `l2` to `secant`) to better represent the underlying approach
130*51619389SSatish Balay
131*51619389SSatish Balay```{rubric} TS:
132*51619389SSatish Balay```
133*51619389SSatish Balay
134*51619389SSatish Balay- Add `TSSetRunSteps()` and `-ts_run_steps` for better control of restarted jobs
135*51619389SSatish Balay- Add `-ts_monitor_solution_skip_initial` to skip first call to the solution monitor
136*51619389SSatish Balay- Add `-ts_monitor_wall_clock_time` to display the elapsed wall-clock time for every step
137*51619389SSatish Balay- Change `TSDiscGradIsGonzalez()`, `TSDiscGradUseGonzalez()` to `TSDiscGradSetType()`,`TSDiscGradGetType()`
138*51619389SSatish Balay
139*51619389SSatish Balay```{rubric} TAO:
140*51619389SSatish Balay```
141*51619389SSatish Balay
142*51619389SSatish Balay- Add `TaoBRGNSetRegularizationType()`, `TaoBRGNGetRegularizationType()`
143*51619389SSatish Balay- Add `TaoGetInequalityConstraintsRoutine()`, `TaoGetEqualityConstraintsRoutine()`, `TaoGetJacobianInequalityRoutine()` and `TaoGetJacobianEqualityRoutine()`
144*51619389SSatish Balay
145*51619389SSatish Balay```{rubric} PetscRegressor:
146*51619389SSatish Balay```
147*51619389SSatish Balay
148*51619389SSatish Balay- Add new component to support regression and classification machine learning tasks: [](ch_regressor)
149*51619389SSatish Balay- Add `PetscRegressor` type `PETSCREGRESSORLINEAR` for solving linear regression problems with optional regularization
150*51619389SSatish Balay
151*51619389SSatish Balay```{rubric} DM/DA:
152*51619389SSatish Balay```
153*51619389SSatish Balay
154*51619389SSatish Balay- Add `DMHasBound()`, `DM_BC_LOWER_BOUND` and `DM_BC_LOWER_BOUND`
155*51619389SSatish Balay- Add `DMSetCellCoordinateField()`
156*51619389SSatish Balay- Add ``localized`` argument to `DMSetCoordinateDisc()` and `DMCreateAffineCoordinates_Internal()`
157*51619389SSatish Balay- Add `DMCreateGradientMatrix()`
158*51619389SSatish Balay
159*51619389SSatish Balay```{rubric} DMSwarm:
160*51619389SSatish Balay```
161*51619389SSatish Balay
162*51619389SSatish Balay- Add `DMSwarmProjectFields()` and `DMSwarmProjectGradientFields()`
163*51619389SSatish Balay
164*51619389SSatish Balay```{rubric} DMPlex:
165*51619389SSatish Balay```
166*51619389SSatish Balay
167*51619389SSatish Balay- Add `DMPlexGetTransform()`, `DMPlexSetTransform()`, `DMPlexGetSaveTransform()`, and `DMPlexSetSaveTransform()`
168*51619389SSatish Balay- Add `DMPlexGetCoordinateMap()` and `DMPlexSetCoordinateMap()`
169*51619389SSatish Balay- Add `DMPlexTransformCohesiveExtrudeGetUnsplit()`
170*51619389SSatish Balay- Add `DMFieldCreateDefaultFaceQuadrature()`
171*51619389SSatish Balay- Rename `DMPlexComputeResidual_Internal()` to `DMPlexComputeResidualForKey()`
172*51619389SSatish Balay- Rename `DMPlexComputeJacobian_Internal()` to `DMPlexComputeJacobianByKey()`
173*51619389SSatish Balay- Rename `DMPlexComputeJacobian_Action_Internal()` to `DMPlexComputeJacobianActionByKey()`
174*51619389SSatish Balay- Rename `DMPlexComputeResidual_Hybrid_Internal()` to `DMPlexComputeResidualHybridByKey()`
175*51619389SSatish Balay- Rename `DMPlexComputeJacobian_Hybrid_Internal()` to `DMPlexComputeJacobianHybridByKey()`
176*51619389SSatish Balay- Add `DMPlexInsertBounds()`
177*51619389SSatish Balay- Change argument order for `DMPlexComputeBdResidualSingle()` and `DMPlexComputeBdJacobianSingle()` to match domain functions
178*51619389SSatish Balay- Add `DMPlexComputeBdResidualSingleByKey()` and `DMPlexComputeBdJacobianSingleByLabel()`
179*51619389SSatish Balay- Add ``localized`` argument to `DMPlexCreateCoordinateSpace()`
180*51619389SSatish Balay- Remove ``coordFunc`` argument from `DMPlexCreateCoordinateSpace()`
181*51619389SSatish Balay- Change `DMPlexExtrude()` to take a label argument
182*51619389SSatish Balay- Rename `DMPlexVecGetOrientedClosure_Internal()` to `DMPlexVecGetOrientedClosure()`
183*51619389SSatish Balay- Correctly handle `Mat` preallocation for isoperiodic boundary conditions
184*51619389SSatish Balay
185*51619389SSatish Balay```{rubric} FE/FV:
186*51619389SSatish Balay```
187*51619389SSatish Balay
188*51619389SSatish Balay- Add `PetscFEExpandFaceQuadrature()`
189*51619389SSatish Balay- Add `PetscFECreateBrokenElement()`
190*51619389SSatish Balay- Change `PetscFEIntegrateJacobian()` signature to allow rectangular operators
191*51619389SSatish Balay
192*51619389SSatish Balay```{rubric} DMNetwork:
193*51619389SSatish Balay```
194*51619389SSatish Balay
195*51619389SSatish Balay```{rubric} DMStag:
196*51619389SSatish Balay```
197*51619389SSatish Balay
198*51619389SSatish Balay```{rubric} DT:
199*51619389SSatish Balay```
200*51619389SSatish Balay
201*51619389SSatish Balay- Deprecate `PetscSimplePointFunc` in favor of `PetscSimplePointFn *`
202*51619389SSatish Balay- Deprecate `PetscPointFunc` in favor of `PetscPointFn *`
203*51619389SSatish Balay- Deprecate `PetscPointJac` in favor of `PetscPointJacFn *`
204*51619389SSatish Balay- Deprecate `PetscBdPointFunc` in favor of `PetscBdPointFn *`
205*51619389SSatish Balay- Deprecate `PetscBdPointJac` in favor of `PetscBdPointJacFn *`
206*51619389SSatish Balay- Deprecate `PetscRiemannFunc` in favor of `PetscRiemannFn *`
207*51619389SSatish Balay- Deprecate `PetscProbFunc` in favor of `PetscProbFn *`
208*51619389SSatish Balay- Add `PetscDTCreateQuadratureByCell()`
209*51619389SSatish Balay
210*51619389SSatish Balay```{rubric} Fortran:
211*51619389SSatish Balay```
212*51619389SSatish Balay
213*51619389SSatish Balay- Add `PetscObjectNullify()`
214*51619389SSatish Balay- 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
215*51619389SSatish Balay- 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
216*51619389SSatish Balay- Remove the `./configure` option `-with-fortran-type-initialize=0`. Hence, it is now not possible to include PETSc objects in common blocks
217