xref: /petsc/doc/changes/322.md (revision cbc48d0321ac5484d6e8b221b28a7c1281fa28e3)
17f296bb3SBarry Smith# Changes: 3.22
27f296bb3SBarry Smith
37f296bb3SBarry Smith% STYLE GUIDELINES:
47f296bb3SBarry Smith% * Capitalize sentences
57f296bb3SBarry Smith% * Use imperative, e.g., Add, Improve, Change, etc.
67f296bb3SBarry Smith% * Don't use a period (.) at the end of entries
77f296bb3SBarry Smith% * If multiple sentences are needed, use a period or semicolon to divide sentences, but not at the end of the final sentence
87f296bb3SBarry Smith
97f296bb3SBarry Smith```{rubric} General:
107f296bb3SBarry Smith```
117f296bb3SBarry Smith
127f296bb3SBarry Smith- Add `-mpiuni-allow-multiprocess-launch` to allow mpiexec to launch multiple indendent MPI-Uni jobs. Previously a sanity check
137f296bb3SBarry Smith  error message was always produced
147f296bb3SBarry Smith
157f296bb3SBarry Smith```{rubric} Configure/Build:
167f296bb3SBarry Smith```
177f296bb3SBarry Smith
187f296bb3SBarry Smith- Add `--with-openmp-kernels`
197f296bb3SBarry Smith- Update to work with python-3.13
207f296bb3SBarry Smith- Change `MPIU_Allreduce()` to always returns an MPI error code that should be checked with `PetscCallMPI()`
217f296bb3SBarry Smith- Add `PetscCallReturnMPI()`, `PetscCallMPIReturnMPI()`, and `PetscCheckReturnMPI()` to check for in PETSc provided MPI callbacks
227f296bb3SBarry Smith
237f296bb3SBarry Smith```{rubric} Sys:
247f296bb3SBarry Smith```
257f296bb3SBarry Smith
267f296bb3SBarry Smith- Add `PetscPragmaUseOMPKernels`
277f296bb3SBarry Smith- Deprecate `PetscOptionsRestoreViewer()` in favor of `PetscViewerDestroy()`
287f296bb3SBarry Smith- Deprecate `PetscOptionsGetViewer()` and `PetscOptionsGetViewers()` in favor of `PetscOptionsCreateViewer()` and `PetscOptionsCreateViewers()`
297f296bb3SBarry Smith- Deprecate `PetscOptionsPushGetViewerOff()`, `PetscOptionsPopGetViewerOff()`, and `PetscOptionsGetViewerOff()` in favor of
307f296bb3SBarry Smith  `PetscOptionsPushCreateViewerOff()`, `PetscOptionsPopCreateViewerOff()`, and `PetscOptionsGetCreateViewerOff()`
317f296bb3SBarry Smith- Add `PetscObjectContainerCompose()` and `PetscObjectContainerQuery()`
327f296bb3SBarry Smith- Add `size_t` argument to `PetscMPIErrorString()`
337f296bb3SBarry Smith- Add `PetscCallExternalAbort()` for calling external library functions from functions not returning `PetscErrorCode`
347f296bb3SBarry Smith- Add `PetscRandomSetOptionsPrefix()`
357f296bb3SBarry Smith- Add `PetscOptionsGetBool3()` to get a ternary logical value from a command line option
367f296bb3SBarry Smith
377f296bb3SBarry Smith```{rubric} Event Logging:
387f296bb3SBarry Smith```
397f296bb3SBarry Smith
407f296bb3SBarry Smith```{rubric} PetscViewer:
417f296bb3SBarry Smith```
427f296bb3SBarry Smith
437f296bb3SBarry Smith- Add `PetscViewerASCIIStdoutSetFileUnit()`
447f296bb3SBarry Smith- Add `PetscShmgetAllocateArrayScalar()`, `PetscShmgetDeallocateArrayScalar()`, `PetscShmgetAllocateArrayInt()`, and `PetscShmgetDeallocateArrayInt()` for Fortran
457f296bb3SBarry Smith
467f296bb3SBarry Smith```{rubric} PetscDraw:
477f296bb3SBarry Smith```
487f296bb3SBarry Smith
497f296bb3SBarry Smith```{rubric} AO:
507f296bb3SBarry Smith```
517f296bb3SBarry Smith
527f296bb3SBarry Smith```{rubric} IS:
537f296bb3SBarry Smith```
547f296bb3SBarry Smith
557f296bb3SBarry Smith```{rubric} VecScatter / PetscSF:
567f296bb3SBarry Smith```
577f296bb3SBarry Smith
587f296bb3SBarry Smith- Add `PetscSFRegisterPersistent()` and `PetscSFDeregisterPersistent()` for safe optimization of persistent communication
597f296bb3SBarry Smith
607f296bb3SBarry Smith```{rubric} PF:
617f296bb3SBarry Smith```
627f296bb3SBarry Smith
637f296bb3SBarry Smith```{rubric} Vec:
647f296bb3SBarry Smith```
657f296bb3SBarry Smith
66*f21e3f8aSPierre Jolivet- The `IS` passed to `VecISAXPY()`, `VecISCopy()`, `VecISSet()`, and `VecISShift()` must have the same communicator of the vectors used
677f296bb3SBarry Smith- Make `VecLock` API active in optimized mode
687f296bb3SBarry Smith- `VecNestSetSubVec()` and `VecNestSetSubVecs()` now take references to input vectors rather than creating duplicates
697f296bb3SBarry Smith- Deprecate `VecSetInf()` with `VecFlag()`
707f296bb3SBarry Smith
717f296bb3SBarry Smith```{rubric} PetscSection:
727f296bb3SBarry Smith```
737f296bb3SBarry Smith
747f296bb3SBarry Smith```{rubric} PetscPartitioner:
757f296bb3SBarry Smith```
767f296bb3SBarry Smith
777f296bb3SBarry Smith```{rubric} Mat:
787f296bb3SBarry Smith```
797f296bb3SBarry Smith
807f296bb3SBarry Smith- Change `MatProductSetFill()` to support `PETSC_DETERMINE` and `PETSC_CURRENT`. `MatMatMult()` and its friends and relations now accept
817f296bb3SBarry Smith  `PETSC_DETERMINE` and `PETSC_CURRENT` in the `fill` argument. `PETSC_DEFAULT` is deprecated for those functions
827f296bb3SBarry 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`
837f296bb3SBarry Smith- Add `MATOP_GET_BLOCK_DIAGONAL` and `MATOP_GET_VBLOCK_DIAGONAL` to set methods returning the diagonal point blocks of a matrix
847f296bb3SBarry Smith
857f296bb3SBarry Smith```{rubric} MatCoarsen:
867f296bb3SBarry Smith```
877f296bb3SBarry Smith
887f296bb3SBarry Smith```{rubric} PC:
897f296bb3SBarry Smith```
907f296bb3SBarry Smith
917f296bb3SBarry Smith- Add support in `PCFieldSplitSetFields()` including with `-pc_fieldsplit_%d_fields fields` for `MATNEST`, making it possible to
927f296bb3SBarry Smith  utilize multiple levels of `PCFIELDSPLIT` with `MATNEST` from the command line
937f296bb3SBarry Smith- Add `PCCompositeSpecialSetAlphaMat()` API to use a matrix other than the identity in
947f296bb3SBarry Smith  preconditioners based on an alternating direction iteration, e.g., setting $M$ for
957f296bb3SBarry Smith  $P = (A + alpha M) M^{-1} (alpha M + B)$
967f296bb3SBarry Smith- Reuse the result of $T = A_{00}^-1 A_{01}$ in `PCApply_FieldSplit_Schur` with `-pc_fieldsplit_schur_fact_type full`
977f296bb3SBarry Smith- Change the option database keys for coarsening for `PCGAMG` to use the prefix `-pc_gamg_`, for example `-pc_gamg_mat_coarsen_type`
987f296bb3SBarry Smith- Add `PCGAMGSetGraphSymmetrize()` and `-pc_gamg_graph_symmetrize` to control symmetrization when coarsening the graph
997f296bb3SBarry Smith- Add `-pc_hypre_type ilu` with `-pc_hypre_ilu_type`, `-pc_hypre_ilu_iterative_setup_type`, `-pc_hypre_ilu_iterative_setup_maxiter`,
1007f296bb3SBarry Smith  `-pc_hypre_ilu_iterative_setup_tolerance`, `-pc_hypre_ilu_print_level`, `-pc_hypre_ilu_logging`, `-pc_hypre_ilu_level`,
1017f296bb3SBarry Smith  `-pc_hypre_ilu_max_nnz_per_row`, `-pc_hypre_ilu_tol`, `-pc_hypre_ilu_maxiter`, `-pc_hypre_ilu_drop_threshold`,
1027f296bb3SBarry Smith  `-pc_hypre_ilu_tri_solve`, `-pc_hypre_ilu_lower_jacobi_iters`, `-pc_hypre_ilu_upper_jacobi_iters`, and `-pc_hypre_ilu_local_reordering`
1037f296bb3SBarry Smith- Improve `-pc_type boomeramg` with `-pc_hypre_boomeramg_smooth_num_sweeps`, `-pc_hypre_boomeramg_ilu_type`, `-pc_hypre_boomeramg_ilu_iterative_setup_type`,
1047f296bb3SBarry Smith  `-pc_hypre_boomeramg_ilu_iterative_setup_option`, `-pc_hypre_boomeramg_ilu_iterative_setup_maxiter`, `-pc_hypre_boomeramg_ilu_iterative_setup_tolerance`,
1057f296bb3SBarry 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`,
1067f296bb3SBarry 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`,
1077f296bb3SBarry Smith  `-pc_hypre_boomeramg_ilu_upper_jacobi_iters`, and `-pc_hypre_boomeramg_ilu_local_reordering`
1087f296bb3SBarry Smith
1097f296bb3SBarry Smith```{rubric} KSP:
1107f296bb3SBarry Smith```
1117f296bb3SBarry Smith
1127f296bb3SBarry 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
1137f296bb3SBarry Smith- Deprecate `PETSC_DEFAULT` in favor of `PETSC_CURRENT` for `KSPSetTolerances()`
1147f296bb3SBarry Smith
1157f296bb3SBarry Smith```{rubric} SNES:
1167f296bb3SBarry Smith```
1177f296bb3SBarry Smith
1187f296bb3SBarry 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
1197f296bb3SBarry Smith- Deprecate `PETSC_DEFAULT` in favor of `PETSC_CURRENT` for `SNESSetTolerances()`
1207f296bb3SBarry Smith- Add `DMAdaptorMonitor()`, `DMAdaptorMonitorSet()`, `DMAdaptorMonitorCancel()`, and `DMAdaptorMonitorSetFromOptions()`
1217f296bb3SBarry Smith- Add `DMAdaptorMonitorSize()`, `DMAdaptorMonitorError()`, `DMAdaptorMonitorErrorDraw()`, `DMAdaptorMonitorErrorDrawLGCreate()`, and `DMAdaptorMonitorErrorDrawLG()`
1227f296bb3SBarry Smith- Add `DMAdaptorMonitorRegister()`, `DMAdaptorMonitorRegisterAll()`, and `DMAdaptorMonitorRegisterDestroy()`
1237f296bb3SBarry Smith- Add `DMAdaptorGetCriterion()` and `DMAdaptorSetCriterion()`
1247f296bb3SBarry Smith- Add `DMAdaptorSetOptionsPrefix()`
1257f296bb3SBarry Smith- Add Newton's method with arc length continuation: `SNESNEWTONAL` with `SNESNewtonALSetFunction()`, `SNESNewtonALGetFunction()`, `SNESNewtonALComputeFunction()`, `SNESNewtonALGetLoadParameter()`, and `SNESNewtonALSetCorrectionType()`
1267f296bb3SBarry Smith- Add `SNESNewtonTRSetTolerances()` and `SNESNewtonTRSetUpdateParameters()` to programmatically set trust region parameters
1277f296bb3SBarry Smith- Deprecate `SNESSetTrustRegionTolerance()` in favor of `SNESNewtonTRSetTolerances()`
1287f296bb3SBarry Smith- Add `SNESResetCounters()` to reset counters for linear iterations and function evaluations
1297f296bb3SBarry Smith
1307f296bb3SBarry Smith```{rubric} SNESLineSearch:
1317f296bb3SBarry Smith```
1327f296bb3SBarry Smith
1337f296bb3SBarry Smith```{rubric} TS:
1347f296bb3SBarry Smith```
1357f296bb3SBarry Smith
1367f296bb3SBarry Smith- Add Rosenbrock-W methods from {cite}`rang2015improved` with $B_{PR}$ stability: `TSROSWR34PRW`, `TSROSWR3PRL2`, `TSROSWRODASPR`, and `TSROSWRODASPR2`
1377f296bb3SBarry 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
1387f296bb3SBarry Smith- Deprecate `PETSC_DEFAULT` in favor of `PETSC_CURRENT` for `TSSetTolerances()`
1397f296bb3SBarry Smith- Add support for `PETSC_DETERMINE` as an argument to `TSSetMaxSteps()` and `TSSetMaxTime()`
1407f296bb3SBarry Smith- Deprecate `PETSC_DEFAULT` in favor of `PETSC_CURRENT` for `TSAdaptSetSafety()`
1417f296bb3SBarry Smith- Deprecate `PETSC_DEFAULT` in favor of `PETSC_CURRENT` for `TSAdaptSetClip()`
1427f296bb3SBarry Smith- Deprecate `PETSC_DEFAULT` in favor of `PETSC_CURRENT` for `TSAdaptSetStepLimits()`
1437f296bb3SBarry Smith- Add `TSGetStepResize()`
1447f296bb3SBarry Smith- Add `-ts_monitor_solution_vtk_interval` to control the interval for dumping files
1457f296bb3SBarry Smith- Add a new ARKIMEX solver for fast-slow systems that are partitioned component-wise and additively at the same time
1467f296bb3SBarry Smith- Add `TSRHSSplitSetIFunction()`, `TSRHSSplitSetIJacobian()`, `TSRHSSplitSetSNES()`, `TSRHSSplitGetSNES()`, `TSARKIMEXSetFastSlowSplit()`, and `TSARKIMEXGetFastSlowSplit()` to support the new solver
1477f296bb3SBarry Smith
1487f296bb3SBarry Smith```{rubric} TAO:
1497f296bb3SBarry Smith```
1507f296bb3SBarry Smith
1517f296bb3SBarry 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
1527f296bb3SBarry Smith- Deprecate `PETSC_DEFAULT` in favor of `PETSC_CURRENT` for `TaoSetTolerances()` and `TaoSetConstraintTolerances()`
1537f296bb3SBarry Smith
1547f296bb3SBarry Smith```{rubric} DM/DA:
1557f296bb3SBarry Smith```
1567f296bb3SBarry Smith
1577f296bb3SBarry Smith- Add `DMGetSparseLocalize()` and `DMSetSparseLocalize()`
1587f296bb3SBarry Smith- Add `DMGeomModelRegister()`, `DMGeomModelRegisterAll()`, `DMGeomModelRegisterDestroy()`, `DMSnapToGeomModel()`, and `DMSetSnapToGeomModel()` to support registering geometric models
1597f296bb3SBarry Smith- Add `DMGetOutputSequenceLength()`
1607f296bb3SBarry Smith- Add an additional return vector to `DMCreateMassMatrixLumped()` to retrieve the local mass lumping
1617f296bb3SBarry Smith- Add `DMPlexMigrateGlobalToNaturalSF()` modifies the NaturalSF to map from the SF's old global section to the new global section
1627f296bb3SBarry Smith
1637f296bb3SBarry Smith```{rubric} DMSwarm:
1647f296bb3SBarry Smith```
1657f296bb3SBarry Smith
1667f296bb3SBarry Smith```{rubric} DMPlex:
1677f296bb3SBarry Smith```
1687f296bb3SBarry Smith
1697f296bb3SBarry Smith- Add `DMLabelGetValueBounds()`
1707f296bb3SBarry Smith- Add `DMPlexOrientLabel()`
1717f296bb3SBarry Smith- Add an argument to `DMPlexLabelCohesiveComplete()` in order to change behavior at surface boundary
1727f296bb3SBarry Smith- Remove `DMPlexSnapToGeomModel()`
1737f296bb3SBarry Smith- Add refinement argument to `DMPlexCreateHexCylinderMesh()`
1747f296bb3SBarry Smith- Now `DMPlexComputeBdIntegral()` takes one function per field
1757f296bb3SBarry Smith- Add `DMPlexCreateEdgeNumbering()`
1767f296bb3SBarry Smith- Add `DMPlexComputeL2FluxDiffVec()` and `DMPlexComputeL2FluxDiffVecLocal()`
1777f296bb3SBarry Smith- Add `DMAdaptorSetType()`, `DMAdaptorGetType()`, `DMAdaptorRegister()`, `DMAdaptorRegisterAll()`, and `DMAdaptorRegisterDestroy()`
1787f296bb3SBarry Smith- Add `DMAdaptorGetMixedSetupFunction()` and `DMAdaptorSetMixedSetupFunction()`
1797f296bb3SBarry Smith- Add `DMPlexCreateCellNumbering()`
1807f296bb3SBarry Smith- Add `DMPlexBuildFromCellSectionParallel()` and `DMPlexCreateFromCellSectionParallel()`
1817f296bb3SBarry Smith- Add `-dm_plex_box_label` to add "Face Sets" label with current "box" conventions
1827f296bb3SBarry Smith- Add "Face Sets" label to simplex meshes using current "box" conventions
1837f296bb3SBarry Smith- Update `PetscViewerExodusII` object to cache variable names for faster and more robust look-ups
1847f296bb3SBarry Smith- Add `PetscViewerExodusIISetNodalVariable()`, `PetscViewerExodusIISetZonalVariable()`, `PetscViewerExodusIIGetNodalVariable()`, and `PetscViewerExodusIIGetZonalVariable()` to set or get the number of variables in a file
1857f296bb3SBarry Smith- Add `PetscViewerExodusIISetNodalVariableName()`, `PetscViewerExodusIISetZonalVariableName()`, `PetscViewerExodusIIGetNodalVariableName()`, and `PetscViewerExodusIIGetZonalVariableName()` to set or get a single variable name
1867f296bb3SBarry Smith- Add `PetscViewerExodusIISetNodalVariablesNames()`, `PetscViewerExodusIISetZonalVariablesNames()`, `PetscViewerExodusIIGetNodalVariablesNames()`, and `PetscViewerExodusIIGetZonalVariablesNames()` to set or get all variable names at the same time (not available in Fortran)
1877f296bb3SBarry Smith- Add degree bounds to `DMCopyFields()`, `DMCopyDS()`, `PetscDSCopy()`, and `PetscDSSelectDiscretizations()`
1887f296bb3SBarry Smith- Add `PetscFELimitDegree()`
1897f296bb3SBarry Smith- Add localizationHeight and sparseLocalize arguments to `DMPlexCreateBoxMesh()` for coordinate localization on periodic meshes
1907f296bb3SBarry Smith- Add parallel CGNS reader, enabled by `-dm_plex_cgns_parallel`
1917f296bb3SBarry Smith- Add CGNS function for `VecLoad()` of solutions in parallel (must be run with `-dm_plex_cgns_parallel`)
1927f296bb3SBarry Smith- Add `PetscViewerCGNSOpen()` convenience function
1937f296bb3SBarry Smith- Add `PetscViewerCGNSGetSolutionTime()`, `PetscViewerCGNSGetSolutionName()`, `PetscViewerCGNSSetSolutionIndex()`, and `PetscViewerCGNSGetSolutionIndex()`
1947f296bb3SBarry Smith- Add `DMPlexGetDepthStratumGlobalSize()`
1957f296bb3SBarry Smith
1967f296bb3SBarry Smith```{rubric} FE/FV:
1977f296bb3SBarry Smith```
1987f296bb3SBarry Smith
1997f296bb3SBarry Smith```{rubric} DMNetwork:
2007f296bb3SBarry Smith```
2017f296bb3SBarry Smith
2027f296bb3SBarry Smith```{rubric} DMStag:
2037f296bb3SBarry Smith```
2047f296bb3SBarry Smith
2057f296bb3SBarry Smith```{rubric} DT:
2067f296bb3SBarry Smith```
2077f296bb3SBarry Smith
2087f296bb3SBarry Smith- Add `PetscDSSetIntegrationParameters()` and `PetscDSSetCellParameters()`
2097f296bb3SBarry Smith
2107f296bb3SBarry Smith```{rubric} Fortran:
2117f296bb3SBarry Smith```
2127f296bb3SBarry Smith
2137f296bb3SBarry 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
2147f296bb3SBarry Smith- Add `PETSC_NULL_INTEGER_ARRAY`, `PETSC_NULL_SCALAR_ARRAY`, and `PETSC_NULL_REAL_ARRAY` for use instead of
2157f296bb3SBarry Smith  `PETSC_NULL_INTEGER`, `PETSC_NULL_SCALAR`, and `PETSC_NULL_REAL` when an array is expected in a PETSc function call
2167f296bb3SBarry Smith- Add automatically generated interface definitions for most PETSc functions to detect illegal usage at compile time
2177f296bb3SBarry Smith- Add `PetscObjectIsNull()` for users to check if a PETSc object is `NULL`
2187f296bb3SBarry 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