Changes: 3.13¶
General:
- Update - make testto run the full test suite. Use- make checkto run the short test
- Remove last PetscBool argument from PetscBinaryWrite() and PetscBinarySynchronizedWrite() 
- Change PetscLayoutFindOwner() and PetscLayoutFindOwnerIndex() to return a PetscMPIInt instead of a PetscInt 
- Support for Compaq F90 is removed along with supporting flags PETSC_HAVE_FORTRAN_STDCALL, PETSC_BLASLAPACK_STDCALL, HAVE_FORTRAN_MIXED_STR_ARG 
- Promote all example directories - examples/tutorials/and- examples/tests/to- tutorials/and- tests/respectively
- Make title argument of PetscOptionsBegin() obligatory 
Configure/Build:
IS:
- Add ISSetInfo(): set local and global properties of an IS (whether the IS is sorted, unique, a permutation, an interval, or identity) 
- Add ISGetInfo(): query local and global properties of an IS 
PetscDraw:
PetscSF:
- Fix few bugs in PETSCSFWINDOW when using PETSCSF_WINDOW_SYNC_LOCK or PETSCSF_WINDOW_SYNC_ACTIVE synchronization types 
- Add window reusage for PETSCSFWINDOW and support for different creation flavor types. See PetscSFWindowFlavorType man page for details 
- Set default of -use_gpu_aware_mpi from false to true 
PF:
Vec:
- VecPinToCPU() is deprecated in favor of VecBindToCPU() 
- Add Vec{Set|Get}PinnedMemoryMin() and -vec_pinned_memory_min option. Note that VECCUDA now defaults to using pinned memory for host allocations 
VecScatter:
PetscSection:
PetscPartitioner:
- PetscPartitionerPartition() does not longer gets a DM as input. Vertex weights can be specified through PetscSection 
- Add support for target partition weights for PETSCPARTITIONERSIMPLE, PETSCPARTITIONERPARMETIS and PETSCPARTITIONERPTSCOTCH 
Mat:
- Improve the performance of MatConvert_AIJ_BAIJ by preallocating the Mat before dispatching to MatConvert_Basic 
- Change the behavior of MatConvert_AIJ_SBAIJ for block size greater than one, the block structure is now preserved (even for the diagonal entries) 
- Fix various bugs related with matrix conversions from Hermitian SBAIJ matrices with complex numbers 
- Add MatPropagateSymmetryOptions to propagate symmetry information from one matrix to another 
- Fix a bug in MATSUPERLU_DIST interface when MATMPIAIJ with commsize 1 is used 
- Add MATCHOLMOD support for block solves 
- –download-suitesparse now uses the official SuiteSparse repository 
- MatPinToCPU() is deprecated in favor of MatBindToCPU() 
- Fix MatAXPY for MATSHELL 
- MatAXPY(Y,0.0,X,DIFFERENT_NONZERO_PATTERN) no longer modifies the nonzero pattern of Y to include that of X 
- Add support of selective 64-bit MUMPS, i.e., the regular/default build of MUMPS. One should still build PETSc –with-64-bit-indices to handle matrices with >2G nonzeros 
- Add MatProductCreate(), MatProductCreateWithMat(), MatProductSetType(), MatProductSetAlgorithm(), MatProductSetFill(), MatProductSetFromOptions(), MatProductSymbolic(), MatProductNumeric(), MatProductReplaceMats(), MatProductClear() 
- Deprecate MatMatMultSymbolic(), MatMatMultNumeric() 
- Deprecate MatMatTransposeMultSymbolic(), MatMatTransposeMultNumeric() 
- Deprecate MatPtAPSymbolic(), MatPtAPNumeric() 
- Deprecate MatRARtSymbolic(), MatRARtNumeric() 
- Fix a deadlock with MATELEMENTAL; if one configures PETSc with Elemental and has PETSC_COMM_WORLD != MPI_COMM_WORLD, it is now one’s responsability to explicitly call PetscElementalInitializePackage()/PetscElementalFinalizePackage() outside of PetscInitialize()/PetscFinalize(). PetscElementalInitializePackage()/PetscElementalFinalizePackage() are collective on MPI_COMM_WORLD. 
PC:
- Change the default behavior of PCASM and PCGASM to not automatically switch to PCASMType BASIC if the matrices are symmetric 
- Change the default behavior of PCCHOLESKY to use nested dissection ordering for AIJ matrix 
KSP:
- Add KSPHPDDMGetDeflationSpace and KSPHPDDMSetDeflationSpace for recycling Krylov methods in KSPHPDDM 
SNES:
- Deprecate - -snes_test_jacobian_displayand- -snes_test_jacobian_display_threshold.- -snes_test_jacobianaccepts an optional threshold parameter (since v3.10) and- -snes_test_jacobian_viewshould be used in favor of- -snes_test_jacobian_display
SNESLineSearch:
- Add SNESLineSearchGetType() in v3.13.1. 
TS:
TAO:
- TAOPDIPM: A new solver in TAO for general NLP problems 
DM/DA:
- DMCopyLabels(): add two additional input flags 
- DMPlexDistribute(): fix a bug associated with vertex partition weights and overlapped meshes 
- DMPlexDistribute(): vertex partition weights are now computed by summing all the local section dofs in the transitive closure of each cell 
- Add PetscTabulation to hold function tabulation data 
- Add DMEnclosureType to describe relations between meshes 
- Add DMGetEnclosureRelation() and DMGetEnclosurePoint() to discover relations between meshes 
- Add DMPolytopeType to describe different cell constructions 
DMPlex:
- DMPlexInterpolate() now works correctly for distributed DMPlex 
- The idea of hybrid and ghost cells has been removed from Plex in favor of cell type 
- Plex can now classify points by cell type, stored in a DMLabel. This is useful for operations that require more than topological data, such as mesh interpolation, geometric calculations, and is also used an index to avoid repeated topological queries 
- Add DMPlexSetCellType() and DMPlexCreateReferenceCellByType() 
- Distribution sorts strata by cell type. 
- Plex can now allow any number of cell types in a single mesh. Interpolation, refinement, and extraction of submeshes mixed meshes work smoothly. Both oriented and tensor-product prisms can be used in the same mesh 
- Cell refiners have been abstracted. Currently there are two (regular refinement, and conversion to hexes). The plan is to add more, such as local extrusion and conversion to simplices 
- Remove SimplexToTensor in favor of DM_REFINER_TO_BOX 
- DMForest now responds to DMPlexGetOverlap() and propagates its overlap to the underlying Plex 
- Add DMPlexGetSimplexOrBoxCells() to replace DMPlexGetInteriorCellStratum() 
- Add DMPolytopTypeGetDim(), DMPolyTopeTypeGetConeSize(), DMPolytopeTypeGetNumVertices() 
- Add DMLabelSetStratumBounds() 
- Add DMPlexOrientCell() which orients a single cell 
- Add DMPlexCompareOrientations() which compares the cone point order of a single cell with the given reference cone 
- Add DMPlexIsInterpolated() which finds out whether the plex is interpolated 
- Add DMPlexIsInterpolatedCollective() which finds out whether the plex is interpolated on all ranks 
- Add DMPlexIsDistributed() which finds out whether the plex is distributed 
DMNetwork:
- Add DMNetworkSetComponentNumVariables(), DMNetworkGetComponentVariableOffset(), and DMNetworkGetComponentVariableGlobalOffset() to set number of variables for a component, and retrieve its local/global offsets. 
DT:
- All tabulated data is now stored in PetscTabulation structures. This changes interfaces in PetscDS, PetscFE, and PetscFV 
- Rename DefaultTabulation to CellTabulation everywhere 
- PetscDTGaussJacobiQuadrature() is now truly Gauss-Jacobi quadrature. The quadrature for the simplex (without weight function) is now called PetscDTStroudConicalQuadrature() 
- Add PetscDTJacobiEval(), PetscDTGaussLobattoJacobiQuadrature() 
- Add PetscDTIndexToBary() and PetscDTBaryToIndex() for barycentric lattice calculations 
- Add PetscDTNodeType to enumerate methods of defining interpolation nodes 
- PetscDualSpace now has PetscDualSpaceSetFormDegree() and PetscDualSpaceGetFormDegree() for governing functional pushforward/pullback behavior 
- PETSCDUALSPACELAGRANGE now has PetscDualSpaceGetTrimmed() and PetscDualSpaceSetTrimmed() for creating degrees of freedom for trimmed polynomial spaces 
- PETSCDUALSPACELAGRANGE now has PetscDualSpaceGetNodeType() and PetscDualSpaceSetNodType() for controlling the placement of interpolation nodes 
- PETSCDUALSPACEBDM is no longer a standalone type of PetscDualSpace: it is now a constructor alias for PETSCDUALSPACELAGRANGE 
PetscViewer:
- Remove last PetscBool argument from PetscViewerBinaryWrite() 
- Add “fieldnum” argument to PetscViewerVTKAddField() to indicate only one field of the vector should be viewed 
SYS:
- Rename PetscSignalSegvCheckPointer() to PetscSignalSegvCheckPointerOrMpi() 
- Extend -info option controlling PetscInfo(). It now takes takes optional arguments - -info [filename][:[~]list,of,classnames[:[~]self]]. See PetscInfo() manpage
- Add new API to control PetscInfo() programatically: - Add PetscInfoEnabled() - Indicate whether a given PETSc class is allowed in PetscInfo() 
- Add PetscInfoSetFile() - Set output destination of PetscInfo() 
- Add PetscInfoGetFile() - Get output destination of PetscInfo() 
- Add PetscInfoSetClasses() - Sets the classes which PetscInfo() is filtered for/against 
- Add PetscInfoGetClass() - Indicates whether the provided classname is marked as a filter in PetscInfo() as set by PetscInfoSetClasses() 
- Add PetscInfoProcessClass() - Activates or deactivates a class based on the filtering status of PetscInfo() 
- Add PetscInfoGetInfo() - Returns the current state of several indicator flags for PetscInfo() 
- Add PetscInfoSetFilterCommSelf() - Sets PetscInfoCommFlag enum to control communicator size filtering for PetscInfo() 
- Add PetscInfoDestroy() - Destroys and resets internal PetscInfo() filter options 
- Change PetscInfoAllow() to only activate/deactivate PetscInfo(), file setting is now handled separately by PetscInfoSetFile() 
 
- Add PetscSubcommGetParent() - Gets the communicator that was used to create the PetscSubcomm 
- Add PetscSubcommGetContiguousParent() - Gets a communicator that that is a duplicate of the parent but has the ranks reordered by the order they are in the children 
- Add PetscSubcommGetChild() - Gets the communicator created by the PetscSubcomm 
- Change the default option of -build_twosided from ibarrier to allreduce for communicators with no more than 1024 ranks 
AO:
Sieve:
Fortran: