1*7f296bb3SBarry Smith# Changes: 3.22 2*7f296bb3SBarry Smith 3*7f296bb3SBarry Smith% STYLE GUIDELINES: 4*7f296bb3SBarry Smith% * Capitalize sentences 5*7f296bb3SBarry Smith% * Use imperative, e.g., Add, Improve, Change, etc. 6*7f296bb3SBarry Smith% * Don't use a period (.) at the end of entries 7*7f296bb3SBarry Smith% * If multiple sentences are needed, use a period or semicolon to divide sentences, but not at the end of the final sentence 8*7f296bb3SBarry Smith 9*7f296bb3SBarry Smith```{rubric} General: 10*7f296bb3SBarry Smith``` 11*7f296bb3SBarry Smith 12*7f296bb3SBarry Smith- Add `-mpiuni-allow-multiprocess-launch` to allow mpiexec to launch multiple indendent MPI-Uni jobs. Previously a sanity check 13*7f296bb3SBarry Smith error message was always produced 14*7f296bb3SBarry Smith 15*7f296bb3SBarry Smith```{rubric} Configure/Build: 16*7f296bb3SBarry Smith``` 17*7f296bb3SBarry Smith 18*7f296bb3SBarry Smith- Add `--with-openmp-kernels` 19*7f296bb3SBarry Smith- Update to work with python-3.13 20*7f296bb3SBarry Smith- Change `MPIU_Allreduce()` to always returns an MPI error code that should be checked with `PetscCallMPI()` 21*7f296bb3SBarry Smith- Add `PetscCallReturnMPI()`, `PetscCallMPIReturnMPI()`, and `PetscCheckReturnMPI()` to check for in PETSc provided MPI callbacks 22*7f296bb3SBarry Smith 23*7f296bb3SBarry Smith```{rubric} Sys: 24*7f296bb3SBarry Smith``` 25*7f296bb3SBarry Smith 26*7f296bb3SBarry Smith- Add `PetscPragmaUseOMPKernels` 27*7f296bb3SBarry Smith- Deprecate `PetscOptionsRestoreViewer()` in favor of `PetscViewerDestroy()` 28*7f296bb3SBarry Smith- Deprecate `PetscOptionsGetViewer()` and `PetscOptionsGetViewers()` in favor of `PetscOptionsCreateViewer()` and `PetscOptionsCreateViewers()` 29*7f296bb3SBarry Smith- Deprecate `PetscOptionsPushGetViewerOff()`, `PetscOptionsPopGetViewerOff()`, and `PetscOptionsGetViewerOff()` in favor of 30*7f296bb3SBarry Smith `PetscOptionsPushCreateViewerOff()`, `PetscOptionsPopCreateViewerOff()`, and `PetscOptionsGetCreateViewerOff()` 31*7f296bb3SBarry Smith- Add `PetscObjectContainerCompose()` and `PetscObjectContainerQuery()` 32*7f296bb3SBarry Smith- Add `size_t` argument to `PetscMPIErrorString()` 33*7f296bb3SBarry Smith- Add `PetscCallExternalAbort()` for calling external library functions from functions not returning `PetscErrorCode` 34*7f296bb3SBarry Smith- Add `PetscRandomSetOptionsPrefix()` 35*7f296bb3SBarry Smith- Add `PetscOptionsGetBool3()` to get a ternary logical value from a command line option 36*7f296bb3SBarry Smith 37*7f296bb3SBarry Smith```{rubric} Event Logging: 38*7f296bb3SBarry Smith``` 39*7f296bb3SBarry Smith 40*7f296bb3SBarry Smith```{rubric} PetscViewer: 41*7f296bb3SBarry Smith``` 42*7f296bb3SBarry Smith 43*7f296bb3SBarry Smith- Add `PetscViewerASCIIStdoutSetFileUnit()` 44*7f296bb3SBarry Smith- Add `PetscShmgetAllocateArrayScalar()`, `PetscShmgetDeallocateArrayScalar()`, `PetscShmgetAllocateArrayInt()`, and `PetscShmgetDeallocateArrayInt()` for Fortran 45*7f296bb3SBarry Smith 46*7f296bb3SBarry Smith```{rubric} PetscDraw: 47*7f296bb3SBarry Smith``` 48*7f296bb3SBarry Smith 49*7f296bb3SBarry Smith```{rubric} AO: 50*7f296bb3SBarry Smith``` 51*7f296bb3SBarry Smith 52*7f296bb3SBarry Smith```{rubric} IS: 53*7f296bb3SBarry Smith``` 54*7f296bb3SBarry Smith 55*7f296bb3SBarry Smith```{rubric} VecScatter / PetscSF: 56*7f296bb3SBarry Smith``` 57*7f296bb3SBarry Smith 58*7f296bb3SBarry Smith- Add `PetscSFRegisterPersistent()` and `PetscSFDeregisterPersistent()` for safe optimization of persistent communication 59*7f296bb3SBarry Smith 60*7f296bb3SBarry Smith```{rubric} PF: 61*7f296bb3SBarry Smith``` 62*7f296bb3SBarry Smith 63*7f296bb3SBarry Smith```{rubric} Vec: 64*7f296bb3SBarry Smith``` 65*7f296bb3SBarry Smith 66*7f296bb3SBarry Smith- The `IS` passed to `VecISAXPY()` and `VecISCopy()`. `VecISSet()` and `VecISShift()` must have the same communicator of the vectors used 67*7f296bb3SBarry Smith- Make `VecLock` API active in optimized mode 68*7f296bb3SBarry Smith- `VecNestSetSubVec()` and `VecNestSetSubVecs()` now take references to input vectors rather than creating duplicates 69*7f296bb3SBarry Smith- Deprecate `VecSetInf()` with `VecFlag()` 70*7f296bb3SBarry Smith 71*7f296bb3SBarry Smith```{rubric} PetscSection: 72*7f296bb3SBarry Smith``` 73*7f296bb3SBarry Smith 74*7f296bb3SBarry Smith```{rubric} PetscPartitioner: 75*7f296bb3SBarry Smith``` 76*7f296bb3SBarry Smith 77*7f296bb3SBarry Smith```{rubric} Mat: 78*7f296bb3SBarry Smith``` 79*7f296bb3SBarry Smith 80*7f296bb3SBarry Smith- Change `MatProductSetFill()` to support `PETSC_DETERMINE` and `PETSC_CURRENT`. `MatMatMult()` and its friends and relations now accept 81*7f296bb3SBarry Smith `PETSC_DETERMINE` and `PETSC_CURRENT` in the `fill` argument. `PETSC_DEFAULT` is deprecated for those functions 82*7f296bb3SBarry Smith- Change the default `MatType` of the output `Mat` of `MatSchurComplementComputeExplicitOperator()` to be `MATDENSE`. It may be changed from the command line, e.g., `-fieldsplit_1_explicit_operator_mat_type aij` 83*7f296bb3SBarry Smith- Add `MATOP_GET_BLOCK_DIAGONAL` and `MATOP_GET_VBLOCK_DIAGONAL` to set methods returning the diagonal point blocks of a matrix 84*7f296bb3SBarry Smith 85*7f296bb3SBarry Smith```{rubric} MatCoarsen: 86*7f296bb3SBarry Smith``` 87*7f296bb3SBarry Smith 88*7f296bb3SBarry Smith```{rubric} PC: 89*7f296bb3SBarry Smith``` 90*7f296bb3SBarry Smith 91*7f296bb3SBarry Smith- Add support in `PCFieldSplitSetFields()` including with `-pc_fieldsplit_%d_fields fields` for `MATNEST`, making it possible to 92*7f296bb3SBarry Smith utilize multiple levels of `PCFIELDSPLIT` with `MATNEST` from the command line 93*7f296bb3SBarry Smith- Add `PCCompositeSpecialSetAlphaMat()` API to use a matrix other than the identity in 94*7f296bb3SBarry Smith preconditioners based on an alternating direction iteration, e.g., setting $M$ for 95*7f296bb3SBarry Smith $P = (A + alpha M) M^{-1} (alpha M + B)$ 96*7f296bb3SBarry Smith- Reuse the result of $T = A_{00}^-1 A_{01}$ in `PCApply_FieldSplit_Schur` with `-pc_fieldsplit_schur_fact_type full` 97*7f296bb3SBarry Smith- Change the option database keys for coarsening for `PCGAMG` to use the prefix `-pc_gamg_`, for example `-pc_gamg_mat_coarsen_type` 98*7f296bb3SBarry Smith- Add `PCGAMGSetGraphSymmetrize()` and `-pc_gamg_graph_symmetrize` to control symmetrization when coarsening the graph 99*7f296bb3SBarry Smith- Add `-pc_hypre_type ilu` with `-pc_hypre_ilu_type`, `-pc_hypre_ilu_iterative_setup_type`, `-pc_hypre_ilu_iterative_setup_maxiter`, 100*7f296bb3SBarry Smith `-pc_hypre_ilu_iterative_setup_tolerance`, `-pc_hypre_ilu_print_level`, `-pc_hypre_ilu_logging`, `-pc_hypre_ilu_level`, 101*7f296bb3SBarry Smith `-pc_hypre_ilu_max_nnz_per_row`, `-pc_hypre_ilu_tol`, `-pc_hypre_ilu_maxiter`, `-pc_hypre_ilu_drop_threshold`, 102*7f296bb3SBarry Smith `-pc_hypre_ilu_tri_solve`, `-pc_hypre_ilu_lower_jacobi_iters`, `-pc_hypre_ilu_upper_jacobi_iters`, and `-pc_hypre_ilu_local_reordering` 103*7f296bb3SBarry Smith- Improve `-pc_type boomeramg` with `-pc_hypre_boomeramg_smooth_num_sweeps`, `-pc_hypre_boomeramg_ilu_type`, `-pc_hypre_boomeramg_ilu_iterative_setup_type`, 104*7f296bb3SBarry Smith `-pc_hypre_boomeramg_ilu_iterative_setup_option`, `-pc_hypre_boomeramg_ilu_iterative_setup_maxiter`, `-pc_hypre_boomeramg_ilu_iterative_setup_tolerance`, 105*7f296bb3SBarry Smith `-pc_hypre_boomeramg_ilu_print_level`, `-pc_hypre_boomeramg_ilu_logging`, `-pc_hypre_boomeramg_ilu_level`, `-pc_hypre_boomeramg_ilu_max_nnz_per_row`, 106*7f296bb3SBarry Smith `-pc_hypre_boomeramg_ilu_maxiter`, `-pc_hypre_boomeramg_ilu_drop_tol`, `-pc_hypre_boomeramg_ilu_tri_solve`, `-pc_hypre_boomeramg_ilu_lower_jacobi_iters`, 107*7f296bb3SBarry Smith `-pc_hypre_boomeramg_ilu_upper_jacobi_iters`, and `-pc_hypre_boomeramg_ilu_local_reordering` 108*7f296bb3SBarry Smith 109*7f296bb3SBarry Smith```{rubric} KSP: 110*7f296bb3SBarry Smith``` 111*7f296bb3SBarry Smith 112*7f296bb3SBarry Smith- Add support for `PETSC_DETERMINE` as an argument to `KSPSetTolerances()` to set the parameter back to its initial value when the object's type was set 113*7f296bb3SBarry Smith- Deprecate `PETSC_DEFAULT` in favor of `PETSC_CURRENT` for `KSPSetTolerances()` 114*7f296bb3SBarry Smith 115*7f296bb3SBarry Smith```{rubric} SNES: 116*7f296bb3SBarry Smith``` 117*7f296bb3SBarry Smith 118*7f296bb3SBarry Smith- Add support for `PETSC_DETERMINE` as an argument to `SNESSetTolerances()` to set the parameter back to its initial value when the object's type was set 119*7f296bb3SBarry Smith- Deprecate `PETSC_DEFAULT` in favor of `PETSC_CURRENT` for `SNESSetTolerances()` 120*7f296bb3SBarry Smith- Add `DMAdaptorMonitor()`, `DMAdaptorMonitorSet()`, `DMAdaptorMonitorCancel()`, and `DMAdaptorMonitorSetFromOptions()` 121*7f296bb3SBarry Smith- Add `DMAdaptorMonitorSize()`, `DMAdaptorMonitorError()`, `DMAdaptorMonitorErrorDraw()`, `DMAdaptorMonitorErrorDrawLGCreate()`, and `DMAdaptorMonitorErrorDrawLG()` 122*7f296bb3SBarry Smith- Add `DMAdaptorMonitorRegister()`, `DMAdaptorMonitorRegisterAll()`, and `DMAdaptorMonitorRegisterDestroy()` 123*7f296bb3SBarry Smith- Add `DMAdaptorGetCriterion()` and `DMAdaptorSetCriterion()` 124*7f296bb3SBarry Smith- Add `DMAdaptorSetOptionsPrefix()` 125*7f296bb3SBarry Smith- Add Newton's method with arc length continuation: `SNESNEWTONAL` with `SNESNewtonALSetFunction()`, `SNESNewtonALGetFunction()`, `SNESNewtonALComputeFunction()`, `SNESNewtonALGetLoadParameter()`, and `SNESNewtonALSetCorrectionType()` 126*7f296bb3SBarry Smith- Add `SNESNewtonTRSetTolerances()` and `SNESNewtonTRSetUpdateParameters()` to programmatically set trust region parameters 127*7f296bb3SBarry Smith- Deprecate `SNESSetTrustRegionTolerance()` in favor of `SNESNewtonTRSetTolerances()` 128*7f296bb3SBarry Smith- Add `SNESResetCounters()` to reset counters for linear iterations and function evaluations 129*7f296bb3SBarry Smith 130*7f296bb3SBarry Smith```{rubric} SNESLineSearch: 131*7f296bb3SBarry Smith``` 132*7f296bb3SBarry Smith 133*7f296bb3SBarry Smith```{rubric} TS: 134*7f296bb3SBarry Smith``` 135*7f296bb3SBarry Smith 136*7f296bb3SBarry Smith- Add Rosenbrock-W methods from {cite}`rang2015improved` with $B_{PR}$ stability: `TSROSWR34PRW`, `TSROSWR3PRL2`, `TSROSWRODASPR`, and `TSROSWRODASPR2` 137*7f296bb3SBarry Smith- Add support for `PETSC_DETERMINE` as an argument to `TSSetTolerances()` to set the parameter back to its initial value when the object's type was set 138*7f296bb3SBarry Smith- Deprecate `PETSC_DEFAULT` in favor of `PETSC_CURRENT` for `TSSetTolerances()` 139*7f296bb3SBarry Smith- Add support for `PETSC_DETERMINE` as an argument to `TSSetMaxSteps()` and `TSSetMaxTime()` 140*7f296bb3SBarry Smith- Deprecate `PETSC_DEFAULT` in favor of `PETSC_CURRENT` for `TSAdaptSetSafety()` 141*7f296bb3SBarry Smith- Deprecate `PETSC_DEFAULT` in favor of `PETSC_CURRENT` for `TSAdaptSetClip()` 142*7f296bb3SBarry Smith- Deprecate `PETSC_DEFAULT` in favor of `PETSC_CURRENT` for `TSAdaptSetStepLimits()` 143*7f296bb3SBarry Smith- Add `TSGetStepResize()` 144*7f296bb3SBarry Smith- Add `-ts_monitor_solution_vtk_interval` to control the interval for dumping files 145*7f296bb3SBarry Smith- Add a new ARKIMEX solver for fast-slow systems that are partitioned component-wise and additively at the same time 146*7f296bb3SBarry Smith- Add `TSRHSSplitSetIFunction()`, `TSRHSSplitSetIJacobian()`, `TSRHSSplitSetSNES()`, `TSRHSSplitGetSNES()`, `TSARKIMEXSetFastSlowSplit()`, and `TSARKIMEXGetFastSlowSplit()` to support the new solver 147*7f296bb3SBarry Smith 148*7f296bb3SBarry Smith```{rubric} TAO: 149*7f296bb3SBarry Smith``` 150*7f296bb3SBarry Smith 151*7f296bb3SBarry Smith- Add support for `PETSC_DETERMINE` as an argument to `TaoSetTolerances()` and `TaoSetConstraintTolerances()` to set the parameter back to its initial value when the object's type was set 152*7f296bb3SBarry Smith- Deprecate `PETSC_DEFAULT` in favor of `PETSC_CURRENT` for `TaoSetTolerances()` and `TaoSetConstraintTolerances()` 153*7f296bb3SBarry Smith 154*7f296bb3SBarry Smith```{rubric} DM/DA: 155*7f296bb3SBarry Smith``` 156*7f296bb3SBarry Smith 157*7f296bb3SBarry Smith- Add `DMGetSparseLocalize()` and `DMSetSparseLocalize()` 158*7f296bb3SBarry Smith- Add `DMGeomModelRegister()`, `DMGeomModelRegisterAll()`, `DMGeomModelRegisterDestroy()`, `DMSnapToGeomModel()`, and `DMSetSnapToGeomModel()` to support registering geometric models 159*7f296bb3SBarry Smith- Add `DMGetOutputSequenceLength()` 160*7f296bb3SBarry Smith- Add an additional return vector to `DMCreateMassMatrixLumped()` to retrieve the local mass lumping 161*7f296bb3SBarry Smith- Add `DMPlexMigrateGlobalToNaturalSF()` modifies the NaturalSF to map from the SF's old global section to the new global section 162*7f296bb3SBarry Smith 163*7f296bb3SBarry Smith```{rubric} DMSwarm: 164*7f296bb3SBarry Smith``` 165*7f296bb3SBarry Smith 166*7f296bb3SBarry Smith```{rubric} DMPlex: 167*7f296bb3SBarry Smith``` 168*7f296bb3SBarry Smith 169*7f296bb3SBarry Smith- Add `DMLabelGetValueBounds()` 170*7f296bb3SBarry Smith- Add `DMPlexOrientLabel()` 171*7f296bb3SBarry Smith- Add an argument to `DMPlexLabelCohesiveComplete()` in order to change behavior at surface boundary 172*7f296bb3SBarry Smith- Remove `DMPlexSnapToGeomModel()` 173*7f296bb3SBarry Smith- Add refinement argument to `DMPlexCreateHexCylinderMesh()` 174*7f296bb3SBarry Smith- Now `DMPlexComputeBdIntegral()` takes one function per field 175*7f296bb3SBarry Smith- Add `DMPlexCreateEdgeNumbering()` 176*7f296bb3SBarry Smith- Add `DMPlexComputeL2FluxDiffVec()` and `DMPlexComputeL2FluxDiffVecLocal()` 177*7f296bb3SBarry Smith- Add `DMAdaptorSetType()`, `DMAdaptorGetType()`, `DMAdaptorRegister()`, `DMAdaptorRegisterAll()`, and `DMAdaptorRegisterDestroy()` 178*7f296bb3SBarry Smith- Add `DMAdaptorGetMixedSetupFunction()` and `DMAdaptorSetMixedSetupFunction()` 179*7f296bb3SBarry Smith- Add `DMPlexCreateCellNumbering()` 180*7f296bb3SBarry Smith- Add `DMPlexBuildFromCellSectionParallel()` and `DMPlexCreateFromCellSectionParallel()` 181*7f296bb3SBarry Smith- Add `-dm_plex_box_label` to add "Face Sets" label with current "box" conventions 182*7f296bb3SBarry Smith- Add "Face Sets" label to simplex meshes using current "box" conventions 183*7f296bb3SBarry Smith- Update `PetscViewerExodusII` object to cache variable names for faster and more robust look-ups 184*7f296bb3SBarry Smith- Add `PetscViewerExodusIISetNodalVariable()`, `PetscViewerExodusIISetZonalVariable()`, `PetscViewerExodusIIGetNodalVariable()`, and `PetscViewerExodusIIGetZonalVariable()` to set or get the number of variables in a file 185*7f296bb3SBarry Smith- Add `PetscViewerExodusIISetNodalVariableName()`, `PetscViewerExodusIISetZonalVariableName()`, `PetscViewerExodusIIGetNodalVariableName()`, and `PetscViewerExodusIIGetZonalVariableName()` to set or get a single variable name 186*7f296bb3SBarry Smith- Add `PetscViewerExodusIISetNodalVariablesNames()`, `PetscViewerExodusIISetZonalVariablesNames()`, `PetscViewerExodusIIGetNodalVariablesNames()`, and `PetscViewerExodusIIGetZonalVariablesNames()` to set or get all variable names at the same time (not available in Fortran) 187*7f296bb3SBarry Smith- Add degree bounds to `DMCopyFields()`, `DMCopyDS()`, `PetscDSCopy()`, and `PetscDSSelectDiscretizations()` 188*7f296bb3SBarry Smith- Add `PetscFELimitDegree()` 189*7f296bb3SBarry Smith- Add localizationHeight and sparseLocalize arguments to `DMPlexCreateBoxMesh()` for coordinate localization on periodic meshes 190*7f296bb3SBarry Smith- Add parallel CGNS reader, enabled by `-dm_plex_cgns_parallel` 191*7f296bb3SBarry Smith- Add CGNS function for `VecLoad()` of solutions in parallel (must be run with `-dm_plex_cgns_parallel`) 192*7f296bb3SBarry Smith- Add `PetscViewerCGNSOpen()` convenience function 193*7f296bb3SBarry Smith- Add `PetscViewerCGNSGetSolutionTime()`, `PetscViewerCGNSGetSolutionName()`, `PetscViewerCGNSSetSolutionIndex()`, and `PetscViewerCGNSGetSolutionIndex()` 194*7f296bb3SBarry Smith- Add `DMPlexGetDepthStratumGlobalSize()` 195*7f296bb3SBarry Smith 196*7f296bb3SBarry Smith```{rubric} FE/FV: 197*7f296bb3SBarry Smith``` 198*7f296bb3SBarry Smith 199*7f296bb3SBarry Smith```{rubric} DMNetwork: 200*7f296bb3SBarry Smith``` 201*7f296bb3SBarry Smith 202*7f296bb3SBarry Smith```{rubric} DMStag: 203*7f296bb3SBarry Smith``` 204*7f296bb3SBarry Smith 205*7f296bb3SBarry Smith```{rubric} DT: 206*7f296bb3SBarry Smith``` 207*7f296bb3SBarry Smith 208*7f296bb3SBarry Smith- Add `PetscDSSetIntegrationParameters()` and `PetscDSSetCellParameters()` 209*7f296bb3SBarry Smith 210*7f296bb3SBarry Smith```{rubric} Fortran: 211*7f296bb3SBarry Smith``` 212*7f296bb3SBarry Smith 213*7f296bb3SBarry Smith- Add `PETSC_NULL_ENUM` to be used instead of `PETSC_NULL_INTEGER` when a pointer to an `enum` is expected in a PETSc function call 214*7f296bb3SBarry Smith- Add `PETSC_NULL_INTEGER_ARRAY`, `PETSC_NULL_SCALAR_ARRAY`, and `PETSC_NULL_REAL_ARRAY` for use instead of 215*7f296bb3SBarry Smith `PETSC_NULL_INTEGER`, `PETSC_NULL_SCALAR`, and `PETSC_NULL_REAL` when an array is expected in a PETSc function call 216*7f296bb3SBarry Smith- Add automatically generated interface definitions for most PETSc functions to detect illegal usage at compile time 217*7f296bb3SBarry Smith- Add `PetscObjectIsNull()` for users to check if a PETSc object is `NULL` 218*7f296bb3SBarry Smith- Change the PETSc Fortran API so that non-array values, `v`, passed to PETSc routines expecting arrays must be cast with `[v]` in the calling sequence 219