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