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