Changes: 3.13#
General:
Update
make test
to run the full test suite. Usemake check
to run the short testRemove 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/
andexamples/tests/
totutorials/
andtests/
respectivelyMake 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_display
and-snes_test_jacobian_display_threshold
.-snes_test_jacobian
accepts an optional threshold parameter (since v3.10) and-snes_test_jacobian_view
should 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() manpageAdd 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: