Changes: 3.22#
General:
- Add - -mpiuni-allow-multiprocess-launchto allow mpiexec to launch multiple indendent MPI-Uni jobs. Previously a sanity check error message was always produced
Configure/Build:
- Add - --with-openmp-kernels
- Update to work with python-3.13 
- Change - MPIU_Allreduce()to always returns an MPI error code that should be checked with- PetscCallMPI()
- Add - PetscCallReturnMPI(),- PetscCallMPIReturnMPI(), and- PetscCheckReturnMPI()to check for in PETSc provided MPI callbacks
Sys:
- Deprecate - PetscOptionsRestoreViewer()in favor of- PetscViewerDestroy()
- Deprecate - PetscOptionsGetViewer()and- PetscOptionsGetViewers()in favor of- PetscOptionsCreateViewer()and- PetscOptionsCreateViewers()
- Deprecate - PetscOptionsPushGetViewerOff(),- PetscOptionsPopGetViewerOff(), and- PetscOptionsGetViewerOff()in favor of- PetscOptionsPushCreateViewerOff(),- PetscOptionsPopCreateViewerOff(), and- PetscOptionsGetCreateViewerOff()
- Add - PetscObjectContainerCompose()and- PetscObjectContainerQuery()
- Add - size_targument to- PetscMPIErrorString()
- Add - PetscCallExternalAbort()for calling external library functions from functions not returning- PetscErrorCode
- Add - PetscOptionsGetBool3()to get a ternary logical value from a command line option
Event Logging:
PetscViewer:
- Add - PetscShmgetAllocateArrayScalar(),- PetscShmgetDeallocateArrayScalar(),- PetscShmgetAllocateArrayInt(), and- PetscShmgetDeallocateArrayInt()for Fortran
PetscDraw:
AO:
IS:
VecScatter / PetscSF:
- Add - PetscSFRegisterPersistent()and- PetscSFDeregisterPersistent()for safe optimization of persistent communication
PF:
Vec:
- The - ISpassed to- VecISAXPY()and- VecISCopy().- VecISSet()and- VecISShift()must have the same communicator of the vectors used
- Make - VecLockAPI active in optimized mode
- VecNestSetSubVec()and- VecNestSetSubVecs()now take references to input vectors rather than creating duplicates
PetscSection:
PetscPartitioner:
Mat:
- Change - MatProductSetFill()to support- PETSC_DETERMINEand- PETSC_CURRENT.- MatMatMult()and its friends and relations now accept- PETSC_DETERMINEand- PETSC_CURRENTin the- fillargument.- PETSC_DEFAULTis deprecated for those functions
- Change the default - MatTypeof the output- Matof- MatSchurComplementComputeExplicitOperator()to be- MATDENSE. It may be changed from the command line, e.g.,- -fieldsplit_1_explicit_operator_mat_type aij
- Add - MATOP_GET_BLOCK_DIAGONALand- MATOP_GET_VBLOCK_DIAGONALto set methods returning the diagonal point blocks of a matrix
MatCoarsen:
PC:
- Add support in - PCFieldSplitSetFields()including with- -pc_fieldsplit_%d_fields fieldsfor- MATNEST, making it possible to utilize multiple levels of- PCFIELDSPLITwith- MATNESTfrom the command line
- Add - PCCompositeSpecialSetAlphaMat()API to use a matrix other than the identity in preconditioners based on an alternating direction iteration, e.g., setting \(M\) for \(P = (A + alpha M) M^{-1} (alpha M + B)\)
- Reuse the result of \(T = A_{00}^-1 A_{01}\) in - PCApply_FieldSplit_Schurwith- -pc_fieldsplit_schur_fact_type full
- Change the option database keys for coarsening for - PCGAMGto use the prefix- -pc_gamg_, for example- -pc_gamg_mat_coarsen_type
- Add - PCGAMGSetGraphSymmetrize()and- -pc_gamg_graph_symmetrizeto control symmetrization when coarsening the graph
- Add - -pc_hypre_type iluwith- -pc_hypre_ilu_type,- -pc_hypre_ilu_iterative_setup_type,- -pc_hypre_ilu_iterative_setup_maxiter,- -pc_hypre_ilu_iterative_setup_tolerance,- -pc_hypre_ilu_print_level,- -pc_hypre_ilu_logging,- -pc_hypre_ilu_level,- -pc_hypre_ilu_max_nnz_per_row,- -pc_hypre_ilu_tol,- -pc_hypre_ilu_maxiter,- -pc_hypre_ilu_drop_threshold,- -pc_hypre_ilu_tri_solve,- -pc_hypre_ilu_lower_jacobi_iters,- -pc_hypre_ilu_upper_jacobi_iters, and- -pc_hypre_ilu_local_reordering
- Improve - -pc_type boomeramgwith- -pc_hypre_boomeramg_smooth_num_sweeps,- -pc_hypre_boomeramg_ilu_type,- -pc_hypre_boomeramg_ilu_iterative_setup_type,- -pc_hypre_boomeramg_ilu_iterative_setup_option,- -pc_hypre_boomeramg_ilu_iterative_setup_maxiter,- -pc_hypre_boomeramg_ilu_iterative_setup_tolerance,- -pc_hypre_boomeramg_ilu_print_level,- -pc_hypre_boomeramg_ilu_logging,- -pc_hypre_boomeramg_ilu_level,- -pc_hypre_boomeramg_ilu_max_nnz_per_row,- -pc_hypre_boomeramg_ilu_maxiter,- -pc_hypre_boomeramg_ilu_drop_tol,- -pc_hypre_boomeramg_ilu_tri_solve,- -pc_hypre_boomeramg_ilu_lower_jacobi_iters,- -pc_hypre_boomeramg_ilu_upper_jacobi_iters, and- -pc_hypre_boomeramg_ilu_local_reordering
KSP:
- Add support for - PETSC_DETERMINEas an argument to- KSPSetTolerances()to set the parameter back to its initial value when the object’s type was set
- Deprecate - PETSC_DEFAULTin favor of- PETSC_CURRENTfor- KSPSetTolerances()
SNES:
- Add support for - PETSC_DETERMINEas an argument to- SNESSetTolerances()to set the parameter back to its initial value when the object’s type was set
- Deprecate - PETSC_DEFAULTin favor of- PETSC_CURRENTfor- SNESSetTolerances()
- Add - DMAdaptorMonitor(),- DMAdaptorMonitorSet(),- DMAdaptorMonitorCancel(), and- DMAdaptorMonitorSetFromOptions()
- Add - DMAdaptorMonitorSize(),- DMAdaptorMonitorError(),- DMAdaptorMonitorErrorDraw(),- DMAdaptorMonitorErrorDrawLGCreate(), and- DMAdaptorMonitorErrorDrawLG()
- Add - DMAdaptorMonitorRegister(),- DMAdaptorMonitorRegisterAll(), and- DMAdaptorMonitorRegisterDestroy()
- Add - DMAdaptorGetCriterion()and- DMAdaptorSetCriterion()
- Add Newton’s method with arc length continuation: - SNESNEWTONALwith- SNESNewtonALSetFunction(),- SNESNewtonALGetFunction(),- SNESNewtonALComputeFunction(),- SNESNewtonALGetLoadParameter(), and- SNESNewtonALSetCorrectionType()
- Add - SNESNewtonTRSetTolerances()and- SNESNewtonTRSetUpdateParameters()to programmatically set trust region parameters
- Deprecate - SNESSetTrustRegionTolerance()in favor of- SNESNewtonTRSetTolerances()
- Add - SNESResetCounters()to reset counters for linear iterations and function evaluations
SNESLineSearch:
TS:
- Add Rosenbrock-W methods from [Ran15] with \(B_{PR}\) stability: - TSROSWR34PRW,- TSROSWR3PRL2,- TSROSWRODASPR, and- TSROSWRODASPR2
- Add support for - PETSC_DETERMINEas an argument to- TSSetTolerances()to set the parameter back to its initial value when the object’s type was set
- Deprecate - PETSC_DEFAULTin favor of- PETSC_CURRENTfor- TSSetTolerances()
- Add support for - PETSC_DETERMINEas an argument to- TSSetMaxSteps()and- TSSetMaxTime()
- Deprecate - PETSC_DEFAULTin favor of- PETSC_CURRENTfor- TSAdaptSetSafety()
- Deprecate - PETSC_DEFAULTin favor of- PETSC_CURRENTfor- TSAdaptSetClip()
- Deprecate - PETSC_DEFAULTin favor of- PETSC_CURRENTfor- TSAdaptSetStepLimits()
- Add - TSGetStepResize()
- Add - -ts_monitor_solution_vtk_intervalto control the interval for dumping files
- Add a new ARKIMEX solver for fast-slow systems that are partitioned component-wise and additively at the same time 
- Add - TSRHSSplitSetIFunction(),- TSRHSSplitSetIJacobian(),- TSRHSSplitSetSNES(),- TSRHSSplitGetSNES(),- TSARKIMEXSetFastSlowSplit(), and- TSARKIMEXGetFastSlowSplit()to support the new solver
TAO:
- Add support for - PETSC_DETERMINEas an argument to- TaoSetTolerances()and- TaoSetConstraintTolerances()to set the parameter back to its initial value when the object’s type was set
- Deprecate - PETSC_DEFAULTin favor of- PETSC_CURRENTfor- TaoSetTolerances()and- TaoSetConstraintTolerances()
DM/DA:
- Add - DMGetSparseLocalize()and- DMSetSparseLocalize()
- Add - DMGeomModelRegister(),- DMGeomModelRegisterAll(),- DMGeomModelRegisterDestroy(),- DMSnapToGeomModel(), and- DMSetSnapToGeomModel()to support registering geometric models
- Add an additional return vector to - DMCreateMassMatrixLumped()to retrieve the local mass lumping
- Add - DMPlexMigrateGlobalToNaturalSF()modifies the NaturalSF to map from the SF’s old global section to the new global section
DMSwarm:
DMPlex:
- Add - DMLabelGetValueBounds()
- Add - DMPlexOrientLabel()
- Add an argument to - DMPlexLabelCohesiveComplete()in order to change behavior at surface boundary
- Remove - DMPlexSnapToGeomModel()
- Add refinement argument to - DMPlexCreateHexCylinderMesh()
- Now - DMPlexComputeBdIntegral()takes one function per field
- Add - DMPlexComputeL2FluxDiffVec()and- DMPlexComputeL2FluxDiffVecLocal()
- Add - DMAdaptorSetType(),- DMAdaptorGetType(),- DMAdaptorRegister(),- DMAdaptorRegisterAll(), and- DMAdaptorRegisterDestroy()
- Add - DMAdaptorGetMixedSetupFunction()and- DMAdaptorSetMixedSetupFunction()
- Add - DMPlexBuildFromCellSectionParallel()and- DMPlexCreateFromCellSectionParallel()
- Add - -dm_plex_box_labelto add “Face Sets” label with current “box” conventions
- Add “Face Sets” label to simplex meshes using current “box” conventions 
- Update - PetscViewerExodusIIobject to cache variable names for faster and more robust look-ups
- Add - PetscViewerExodusIISetNodalVariable(),- PetscViewerExodusIISetZonalVariable(),- PetscViewerExodusIIGetNodalVariable(), and- PetscViewerExodusIIGetZonalVariable()to set or get the number of variables in a file
- Add - PetscViewerExodusIISetNodalVariableName(),- PetscViewerExodusIISetZonalVariableName(),- PetscViewerExodusIIGetNodalVariableName(), and- PetscViewerExodusIIGetZonalVariableName()to set or get a single variable name
- Add - PetscViewerExodusIISetNodalVariablesNames(),- PetscViewerExodusIISetZonalVariablesNames(),- PetscViewerExodusIIGetNodalVariablesNames(), and- PetscViewerExodusIIGetZonalVariablesNames()to set or get all variable names at the same time (not available in Fortran)
- Add degree bounds to - DMCopyFields(),- DMCopyDS(),- PetscDSCopy(), and- PetscDSSelectDiscretizations()
- Add - PetscFELimitDegree()
- Add localizationHeight and sparseLocalize arguments to - DMPlexCreateBoxMesh()for coordinate localization on periodic meshes
- Add parallel CGNS reader, enabled by - -dm_plex_cgns_parallel
- Add CGNS function for - VecLoad()of solutions in parallel (must be run with- -dm_plex_cgns_parallel)
- Add - PetscViewerCGNSOpen()convenience function
- Add - PetscViewerCGNSGetSolutionTime(),- PetscViewerCGNSGetSolutionName(),- PetscViewerCGNSSetSolutionIndex(), and- PetscViewerCGNSGetSolutionIndex()
FE/FV:
DMNetwork:
DMStag:
DT:
Fortran:
- Add - PETSC_NULL_ENUMto be used instead of- PETSC_NULL_INTEGERwhen a pointer to an- enumis expected in a PETSc function call
- Add - PETSC_NULL_INTEGER_ARRAY,- PETSC_NULL_SCALAR_ARRAY, and- PETSC_NULL_REAL_ARRAYfor use instead of- PETSC_NULL_INTEGER,- PETSC_NULL_SCALAR, and- PETSC_NULL_REALwhen an array is expected in a PETSc function call
- Add automatically generated interface definitions for most PETSc functions to detect illegal usage at compile time 
- Add - PetscObjectIsNull()for users to check if a PETSc object is- NULL
- 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