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