xref: /petsc/doc/changes/313.md (revision d000e8ac2eed99d0cf14796aab94de0aed57fd8b)
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