1# Changes: 3.13 2 3```{rubric} General: 4``` 5 6- Update `make test` to run the full test suite. Use 7 `make check` to run the short test 8- Remove last PetscBool argument from PetscBinaryWrite() and 9 PetscBinarySynchronizedWrite() 10- Change PetscLayoutFindOwner() and PetscLayoutFindOwnerIndex() to 11 return a PetscMPIInt instead of a PetscInt 12- Support for Compaq F90 is removed along with supporting flags 13 PETSC_HAVE_FORTRAN_STDCALL, PETSC_BLASLAPACK_STDCALL, 14 HAVE_FORTRAN_MIXED_STR_ARG 15- Promote all example directories `examples/tutorials/` and 16 `examples/tests/` to `tutorials/` and `tests/` respectively 17- Make title argument of PetscOptionsBegin() obligatory 18 19```{rubric} Configure/Build: 20``` 21 22```{rubric} IS: 23``` 24 25- Add ISSetInfo(): set local and global properties of an IS (whether 26 the IS is sorted, unique, a permutation, an interval, or identity) 27- Add ISGetInfo(): query local and global properties of an IS 28 29```{rubric} PetscDraw: 30``` 31 32```{rubric} PetscSF: 33``` 34 35- Fix few bugs in PETSCSFWINDOW when using PETSCSF_WINDOW_SYNC_LOCK 36 or PETSCSF_WINDOW_SYNC_ACTIVE synchronization types 37- Add window reusage for PETSCSFWINDOW and support for different 38 creation flavor types. See PetscSFWindowFlavorType man page for 39 details 40- Set default of -use_gpu_aware_mpi from false to true 41 42```{rubric} PF: 43``` 44 45```{rubric} Vec: 46``` 47 48- VecPinToCPU() is deprecated in favor of VecBindToCPU() 49- Add Vec{Set|Get}PinnedMemoryMin() and -vec_pinned_memory_min 50 option. Note that VECCUDA now defaults to using pinned memory for 51 host allocations 52 53```{rubric} VecScatter: 54``` 55 56```{rubric} PetscSection: 57``` 58 59```{rubric} PetscPartitioner: 60``` 61 62- PetscPartitionerPartition() does not longer gets a DM as input. 63 Vertex weights can be specified through PetscSection 64- Add support for target partition weights for 65 PETSCPARTITIONERSIMPLE, PETSCPARTITIONERPARMETIS and 66 PETSCPARTITIONERPTSCOTCH 67 68```{rubric} Mat: 69``` 70 71- Improve the performance of MatConvert_AIJ_BAIJ by preallocating 72 the Mat before dispatching to MatConvert_Basic 73- Change the behavior of MatConvert_AIJ_SBAIJ for block size greater 74 than one, the block structure is now preserved (even for the 75 diagonal entries) 76- Fix various bugs related with matrix conversions from Hermitian 77 SBAIJ matrices with complex numbers 78- Add MatPropagateSymmetryOptions to propagate symmetry information 79 from one matrix to another 80- Fix a bug in MATSUPERLU_DIST interface when MATMPIAIJ with 81 commsize 1 is used 82- Add MATCHOLMOD support for block solves 83- --download-suitesparse now uses the official SuiteSparse 84 repository 85- MatPinToCPU() is deprecated in favor of MatBindToCPU() 86- Fix MatAXPY for MATSHELL 87- MatAXPY(Y,0.0,X,DIFFERENT_NONZERO_PATTERN) no longer modifies the 88 nonzero pattern of Y to include that of X 89- Add support of selective 64-bit MUMPS, i.e., the regular/default 90 build of MUMPS. One should still build PETSc --with-64-bit-indices 91 to handle matrices with >2G nonzeros 92- Add MatProductCreate(), MatProductCreateWithMat(), 93 MatProductSetType(), MatProductSetAlgorithm(), 94 MatProductSetFill(), MatProductSetFromOptions(), 95 MatProductSymbolic(), MatProductNumeric(), 96 MatProductReplaceMats(), MatProductClear() 97- Deprecate MatMatMultSymbolic(), MatMatMultNumeric() 98- Deprecate MatMatTransposeMultSymbolic(), 99 MatMatTransposeMultNumeric() 100- Deprecate MatPtAPSymbolic(), MatPtAPNumeric() 101- Deprecate MatRARtSymbolic(), MatRARtNumeric() 102- Fix a deadlock with MATELEMENTAL; if one configures PETSc with 103 Elemental *and* has PETSC_COMM_WORLD != MPI_COMM_WORLD, it is now 104 one's responsability to explicitly call 105 PetscElementalInitializePackage()/PetscElementalFinalizePackage() 106 outside of PetscInitialize()/PetscFinalize(). 107 PetscElementalInitializePackage()/PetscElementalFinalizePackage() 108 are collective on MPI_COMM_WORLD. 109 110```{rubric} PC: 111``` 112 113- Change the default behavior of PCASM and PCGASM to not 114 automatically switch to PCASMType BASIC if the matrices are 115 symmetric 116- Change the default behavior of PCCHOLESKY to use nested dissection 117 ordering for AIJ matrix 118 119```{rubric} KSP: 120``` 121 122- Add KSPHPDDMGetDeflationSpace and KSPHPDDMSetDeflationSpace for 123 recycling Krylov methods in KSPHPDDM 124 125```{rubric} SNES: 126``` 127 128- Deprecate `-snes_test_jacobian_display` and 129 `-snes_test_jacobian_display_threshold`. `-snes_test_jacobian` 130 accepts an optional threshold parameter (since v3.10) and 131 `-snes_test_jacobian_view` should be used in favor of 132 `-snes_test_jacobian_display` 133 134```{rubric} SNESLineSearch: 135``` 136 137- Add SNESLineSearchGetType() in v3.13.1. 138 139```{rubric} TS: 140``` 141 142```{rubric} TAO: 143``` 144 145- TAOPDIPM: A new solver in TAO for general NLP problems 146 147```{rubric} DM/DA: 148``` 149 150- DMCopyLabels(): add two additional input flags 151- DMPlexDistribute(): fix a bug associated with vertex partition 152 weights and overlapped meshes 153- DMPlexDistribute(): vertex partition weights are now computed by 154 summing all the local section dofs in the transitive closure of 155 each cell 156- Add PetscTabulation to hold function tabulation data 157- Add DMEnclosureType to describe relations between meshes 158- Add DMGetEnclosureRelation() and DMGetEnclosurePoint() to discover 159 relations between meshes 160- Add DMPolytopeType to describe different cell constructions 161 162```{rubric} DMPlex: 163``` 164 165- DMPlexInterpolate() now works correctly for distributed DMPlex 166- The idea of hybrid and ghost cells has been removed from Plex in 167 favor of cell type 168- Plex can now classify points by cell type, stored in a DMLabel. 169 This is useful for operations that require more than topological 170 data, such as mesh interpolation, geometric calculations, and is 171 also used an index to avoid repeated topological queries 172- Add DMPlexSetCellType() and DMPlexCreateReferenceCellByType() 173- Distribution sorts strata by cell type. 174- Plex can now allow any number of cell types in a single mesh. 175 Interpolation, refinement, and extraction of submeshes mixed 176 meshes work smoothly. Both oriented and tensor-product prisms can 177 be used in the same mesh 178- Cell refiners have been abstracted. Currently there are two 179 (regular refinement, and conversion to hexes). The plan is to add 180 more, such as local extrusion and conversion to simplices 181- Remove SimplexToTensor in favor of DM_REFINER_TO_BOX 182- DMForest now responds to DMPlexGetOverlap() and propagates its 183 overlap to the underlying Plex 184- Add DMPlexGetSimplexOrBoxCells() to replace 185 DMPlexGetInteriorCellStratum() 186- Add DMPolytopTypeGetDim(), DMPolyTopeTypeGetConeSize(), 187 DMPolytopeTypeGetNumVertices() 188- Add DMLabelSetStratumBounds() 189- Add DMPlexOrientCell() which orients a single cell 190- Add DMPlexCompareOrientations() which compares the cone point 191 order of a single cell with the given reference cone 192- Add DMPlexIsInterpolated() which finds out whether the plex is 193 interpolated 194- Add DMPlexIsInterpolatedCollective() which finds out whether the 195 plex is interpolated on all ranks 196- Add DMPlexIsDistributed() which finds out whether the plex is 197 distributed 198 199```{rubric} DMNetwork: 200``` 201 202- Add DMNetworkSetComponentNumVariables(), 203 DMNetworkGetComponentVariableOffset(), and 204 DMNetworkGetComponentVariableGlobalOffset() to set number of 205 variables for a component, and retrieve its local/global offsets. 206 207```{rubric} DT: 208``` 209 210- All tabulated data is now stored in PetscTabulation structures. 211 This changes interfaces in PetscDS, PetscFE, and PetscFV 212- Rename DefaultTabulation to CellTabulation everywhere 213- PetscDTGaussJacobiQuadrature() is now truly Gauss-Jacobi 214 quadrature. The quadrature for the simplex (without weight 215 function) is now called PetscDTStroudConicalQuadrature() 216- Add PetscDTJacobiEval(), PetscDTGaussLobattoJacobiQuadrature() 217- Add PetscDTIndexToBary() and PetscDTBaryToIndex() for barycentric 218 lattice calculations 219- Add PetscDTNodeType to enumerate methods of defining interpolation 220 nodes 221- PetscDualSpace now has PetscDualSpaceSetFormDegree() and 222 PetscDualSpaceGetFormDegree() for governing functional 223 pushforward/pullback behavior 224- PETSCDUALSPACELAGRANGE now has PetscDualSpaceGetTrimmed() and 225 PetscDualSpaceSetTrimmed() for creating degrees of freedom for 226 trimmed polynomial spaces 227- PETSCDUALSPACELAGRANGE now has PetscDualSpaceGetNodeType() and 228 PetscDualSpaceSetNodType() for controlling the placement of 229 interpolation nodes 230- PETSCDUALSPACEBDM is no longer a standalone type of 231 PetscDualSpace: it is now a constructor alias for 232 PETSCDUALSPACELAGRANGE 233 234```{rubric} PetscViewer: 235``` 236 237- Remove last PetscBool argument from PetscViewerBinaryWrite() 238- Add "fieldnum" argument to PetscViewerVTKAddField() to indicate 239 only one field of the vector should be viewed 240 241```{rubric} SYS: 242``` 243 244- Rename PetscSignalSegvCheckPointer() to 245 PetscSignalSegvCheckPointerOrMpi() 246 247- Extend -info option controlling PetscInfo(). It now takes takes 248 optional arguments 249 `-info [filename][:[~]list,of,classnames[:[~]self]]`. See 250 PetscInfo() manpage 251 252- Add new API to control PetscInfo() programatically: 253 254 - Add PetscInfoEnabled() - Indicate whether a given PETSc class 255 is allowed in PetscInfo() 256 - Add PetscInfoSetFile() - Set output destination of PetscInfo() 257 - Add PetscInfoGetFile() - Get output destination of PetscInfo() 258 - Add PetscInfoSetClasses() - Sets the classes which PetscInfo() 259 is filtered for/against 260 - Add PetscInfoGetClass() - Indicates whether the provided 261 classname is marked as a filter in PetscInfo() as set by 262 PetscInfoSetClasses() 263 - Add PetscInfoProcessClass() - Activates or deactivates a class 264 based on the filtering status of PetscInfo() 265 - Add PetscInfoGetInfo() - Returns the current state of several 266 indicator flags for PetscInfo() 267 - Add PetscInfoSetFilterCommSelf() - Sets PetscInfoCommFlag enum 268 to control communicator size filtering for PetscInfo() 269 - Add PetscInfoDestroy() - Destroys and resets internal 270 PetscInfo() filter options 271 - Change PetscInfoAllow() to only activate/deactivate 272 PetscInfo(), file setting is now handled separately by 273 PetscInfoSetFile() 274 275- Add PetscSubcommGetParent() - Gets the communicator that was used 276 to create the PetscSubcomm 277 278- Add PetscSubcommGetContiguousParent() - Gets a communicator that 279 that is a duplicate of the parent but has the ranks reordered by 280 the order they are in the children 281 282- Add PetscSubcommGetChild() - Gets the communicator created by the 283 PetscSubcomm 284 285- Change the default option of -build_twosided from ibarrier to 286 allreduce for communicators with no more than 1024 ranks 287 288```{rubric} AO: 289``` 290 291```{rubric} Sieve: 292``` 293 294```{rubric} Fortran: 295``` 296