xref: /petsc/doc/changes/315.md (revision b11d9968bc79904c690b122f9399be46447eb113)
1*7f296bb3SBarry Smith# Changes: 3.15
2*7f296bb3SBarry Smith
3*7f296bb3SBarry Smith```{rubric} General:
4*7f296bb3SBarry Smith```
5*7f296bb3SBarry Smith
6*7f296bb3SBarry Smith- Add `PetscKokkosInitializeCheck()`, which initializes Kokkos if it
7*7f296bb3SBarry Smith  is not yet initialized
8*7f296bb3SBarry Smith- Add support for `-debug_terminal` Terminal to use Apple's Terminal
9*7f296bb3SBarry Smith  instead of xterm, allowing use of cut-paste
10*7f296bb3SBarry Smith- Make Terminal the default device to display the debugger on Apple
11*7f296bb3SBarry Smith  instead of xterm
12*7f296bb3SBarry Smith- Add PetscHasExternalPackage() determining whether PETSc has been
13*7f296bb3SBarry Smith  configured with the given external package such as "hdf5"
14*7f296bb3SBarry Smith
15*7f296bb3SBarry Smith```{rubric} Configure/Build:
16*7f296bb3SBarry Smith```
17*7f296bb3SBarry Smith
18*7f296bb3SBarry Smith- On macOS, `MACOS_FIREWALL=1` or `MACOS_FIREWALL_REFRESH=1` can
19*7f296bb3SBarry Smith  be passed to make to automatically add firewall rules preventing
20*7f296bb3SBarry Smith  firewall popups during testing. See
21*7f296bb3SBarry Smith  `make -f gmakefile.test help` for details
22*7f296bb3SBarry Smith
23*7f296bb3SBarry Smith- `./configure --with-macos-firewall-rules` makes
24*7f296bb3SBarry Smith  `MACOS_FIREWALL=1` the default
25*7f296bb3SBarry Smith
26*7f296bb3SBarry Smith- Change `--download-petsc4py` to `--with-petsc4py` to have PETSc build
27*7f296bb3SBarry Smith  and use petsc4py
28*7f296bb3SBarry Smith
29*7f296bb3SBarry Smith- Add `--download-mmg` and `--download-parmmg`, 3D unstructured mesh
30*7f296bb3SBarry Smith  adaptation package (interaction with DMPlex not available yet)
31*7f296bb3SBarry Smith
32*7f296bb3SBarry Smith- Improve detection of Git repositories when a `--download-package`
33*7f296bb3SBarry Smith  option is used
34*7f296bb3SBarry Smith
35*7f296bb3SBarry Smith  - Support `ssh://*.git` and `https://*.git` URLs without the
36*7f296bb3SBarry Smith    additional `git://` prefix
37*7f296bb3SBarry Smith  - Local directories can be specified without the `git://`
38*7f296bb3SBarry Smith    prefix as well
39*7f296bb3SBarry Smith  - Any valid Git repository (including bare and with
40*7f296bb3SBarry Smith    `--separate-git-dir`) is now correctly detected
41*7f296bb3SBarry Smith
42*7f296bb3SBarry Smith- `--download-yaml` or `--with-yaml` are no longer required for
43*7f296bb3SBarry Smith  YAML support (but can still be used to avoid compiling source
44*7f296bb3SBarry Smith  included with PETSc)
45*7f296bb3SBarry Smith
46*7f296bb3SBarry Smith```{rubric} Sys:
47*7f296bb3SBarry Smith```
48*7f296bb3SBarry Smith
49*7f296bb3SBarry Smith- Add `PETSCRANDOMCURAND` to support CURAND random number generator
50*7f296bb3SBarry Smith- Add `PetscRandomGetValues()` and `PetscRandomGetValuesReal()` to retrieve
51*7f296bb3SBarry Smith  an array of random numbers
52*7f296bb3SBarry Smith- Add `PetscOptions` argument to `PetscOptionsInsertFileYAML()`
53*7f296bb3SBarry Smith- Add `PetscCalloc()` to allocate zeroed memory
54*7f296bb3SBarry Smith- Automatically detect YAML and JSON option files by extension or
55*7f296bb3SBarry Smith  particular first line
56*7f296bb3SBarry Smith- Update YAML options file processing to ignore keys starting with
57*7f296bb3SBarry Smith  `$`, Add some special processing
58*7f296bb3SBarry Smith- Add `PetscBagViewFromOptions()`
59*7f296bb3SBarry Smith- Add `PetscLogEventDeactivatePush()`, `PetscLogEventDeactivatePop()`
60*7f296bb3SBarry Smith- Add new option to `-log_view` to view nested event timing
61*7f296bb3SBarry Smith  information as a flame graph
62*7f296bb3SBarry Smith
63*7f296bb3SBarry Smith```{rubric} PetscViewer:
64*7f296bb3SBarry Smith```
65*7f296bb3SBarry Smith
66*7f296bb3SBarry Smith- `PetscViewerAndFormat` now allows a payload
67*7f296bb3SBarry Smith- Change `PetscViewerFlowControlStepMaster()`,
68*7f296bb3SBarry Smith  `PetscViewerFlowControlEndMaster()` to
69*7f296bb3SBarry Smith  `PetscViewerFlowControlStepMain()`, `PetscViewerFlowControlEndMain()`
70*7f296bb3SBarry Smith- HDF5: `FILE_MODE_APPEND` (= `FILE_MODE_UPDATE`) now creates a new file if it does not exist yet
71*7f296bb3SBarry Smith- VU: `PetscViewerVUSetMode()` is now deprecated;
72*7f296bb3SBarry Smith  please use standard `PetscViewerFileSetMode()` instead
73*7f296bb3SBarry Smith
74*7f296bb3SBarry Smith```{rubric} PetscDraw:
75*7f296bb3SBarry Smith```
76*7f296bb3SBarry Smith
77*7f296bb3SBarry Smith```{rubric} AO:
78*7f296bb3SBarry Smith```
79*7f296bb3SBarry Smith
80*7f296bb3SBarry Smith```{rubric} IS:
81*7f296bb3SBarry Smith```
82*7f296bb3SBarry Smith
83*7f296bb3SBarry Smith```{rubric} VecScatter / PetscSF:
84*7f296bb3SBarry Smith```
85*7f296bb3SBarry Smith
86*7f296bb3SBarry Smith- `VecScatter` is now the same type as `PetscSF`, in other words, we
87*7f296bb3SBarry Smith  have `typedef PetscSF VecScatter`
88*7f296bb3SBarry Smith- Remove `VecScatter` types `VECSCATTER{SEQ,MPI1,MPI3,MPI3NODE,SF}`. One
89*7f296bb3SBarry Smith  can use all `PetscSF` types as `VecScatter` types
90*7f296bb3SBarry Smith- Rename `PetscLayoutsCreateSF()` to `PetscSFCreateFromLayouts()` and
91*7f296bb3SBarry Smith  move its declaration from `petscis.h` to `petscsf.h`
92*7f296bb3SBarry Smith- Deprecate `MPIU_REPLACE`; Use `MPI_REPLACE` instead
93*7f296bb3SBarry Smith- Deprecate `PetscSFBcastAndOp` variants; Use `PetscSFBcast` instead
94*7f296bb3SBarry Smith- Deprecate `PetscSFCreateEmbeddedSF`; Use `PetscSFCreateEmbeddedRootSF`
95*7f296bb3SBarry Smith  instead
96*7f296bb3SBarry Smith- Add experimental NVIDIA NVSHMEM support; For details on how to use
97*7f296bb3SBarry Smith  it, contact <mailto:petsc-maint@mcs.anl.gov>
98*7f296bb3SBarry Smith- Add `PetscSFCreateByMatchingIndices()` to create SF by matching root
99*7f296bb3SBarry Smith  and leaf indices
100*7f296bb3SBarry Smith
101*7f296bb3SBarry Smith```{rubric} PF:
102*7f296bb3SBarry Smith```
103*7f296bb3SBarry Smith
104*7f296bb3SBarry Smith```{rubric} Vec:
105*7f296bb3SBarry Smith```
106*7f296bb3SBarry Smith
107*7f296bb3SBarry Smith- Change `Vec{Get,Restore}Array{Read}Inplace` to
108*7f296bb3SBarry Smith  `Vec{Get,Restore}Array{Read}AndMemType()` and add an extra argument
109*7f296bb3SBarry Smith  to also return the memory type of the array
110*7f296bb3SBarry Smith- Remove vector type `VECNODE`
111*7f296bb3SBarry Smith- Add `VecConcatenate()` function for vertically concatenating an
112*7f296bb3SBarry Smith  array of vectors into a single vector. Also returns an array of
113*7f296bb3SBarry Smith  index sets to access the original components within the
114*7f296bb3SBarry Smith  concatenated final vector
115*7f296bb3SBarry Smith
116*7f296bb3SBarry Smith```{rubric} PetscSection:
117*7f296bb3SBarry Smith```
118*7f296bb3SBarry Smith
119*7f296bb3SBarry Smith```{rubric} PetscPartitioner:
120*7f296bb3SBarry Smith```
121*7f296bb3SBarry Smith
122*7f296bb3SBarry Smith```{rubric} Mat:
123*7f296bb3SBarry Smith```
124*7f296bb3SBarry Smith
125*7f296bb3SBarry Smith- Add `MatSetPreallocationCOO()` and `MatSetValuesCOO()` to preallocate and
126*7f296bb3SBarry Smith  set values in a matrix using COO format. Currently efficiently
127*7f296bb3SBarry Smith  implemented only for `MATCUSPARSE`
128*7f296bb3SBarry Smith- Add the option `MAT_FORCE_DIAGONAL_ENTRIES` for `MatSetOption()`. It
129*7f296bb3SBarry Smith  forces allocation of all diagonal entries
130*7f296bb3SBarry Smith- Remove `MAT_NEW_DIAGONALS` from `MatOption`
131*7f296bb3SBarry Smith- Add `UNKNOW_NONZERO_PATTERN` as new value for `MatStructure`. It
132*7f296bb3SBarry Smith  indicates that the relationship is unknown, when set the AIJ
133*7f296bb3SBarry Smith  matrices check if the two matrices have identical patterns and if
134*7f296bb3SBarry Smith  so use the faster code
135*7f296bb3SBarry Smith- Add `MAT_FACTOR_QR`, `MatQRFactor()`, `MatQRFactorSymbolic()`, and
136*7f296bb3SBarry Smith  `MatQRFactorNumeric()` for QR factorizations. Currently the only
137*7f296bb3SBarry Smith  built-in implementation uses LAPACK on sequential dense matrices
138*7f296bb3SBarry Smith- Change option `-mat_cusparse_transgen` to `-mat_form_explicit_transpose` to hint PETSc to form an explicit transpose for repeated operations like MatMultTranspose. Currently implemented only for `AIJCUSPARSE` and `AIJKOKKOS`
139*7f296bb3SBarry Smith- Add a `MatOption` `MAT_FORM_EXPLICIT_TRANSPOSE`
140*7f296bb3SBarry Smith
141*7f296bb3SBarry Smith```{rubric} PC:
142*7f296bb3SBarry Smith```
143*7f296bb3SBarry Smith
144*7f296bb3SBarry Smith- Add `PCGAMGSetRankReductionFactors()`, provide an array,
145*7f296bb3SBarry Smith  `-pc_gamg_rank_reduction_factors factors`, tp specify factor by
146*7f296bb3SBarry Smith  which to reduce active processors on coarse grids in `PCGAMG` that
147*7f296bb3SBarry Smith  overrides default heuristics
148*7f296bb3SBarry Smith- Change `PCCompositeAddPC()` to `PCCompositeAddPCType()`, now
149*7f296bb3SBarry Smith  `PCCompositeAddPC()` adds a specific `PC` object
150*7f296bb3SBarry Smith- Add a Compatible Relaxation (CR) viewer `PCMG` with `-pc_mg_adapt_cr`
151*7f296bb3SBarry Smith- Experimental: Add support for assembling AIJ (CUSPARSE and KOKKOS)
152*7f296bb3SBarry Smith  matrix on the Cuda device with `MatSetValuesDevice()`,
153*7f296bb3SBarry Smith  `MatCUSPARSEGetDeviceMatWrite()`, and Kokkos with
154*7f296bb3SBarry Smith  `MatKokkosGetDeviceMatWrite`
155*7f296bb3SBarry Smith- Add `PCMGSetResidualTranspose()` to support transposed linear solve
156*7f296bb3SBarry Smith  using `PCMG` and `PCGAMG`
157*7f296bb3SBarry Smith
158*7f296bb3SBarry Smith```{rubric} KSP:
159*7f296bb3SBarry Smith```
160*7f296bb3SBarry Smith
161*7f296bb3SBarry Smith- Add `-all_ksp_monitor` which turns on monitoring for all KSP
162*7f296bb3SBarry Smith  solvers regardless of their prefix. This is useful for monitoring
163*7f296bb3SBarry Smith  solvers with inner solvers such as `PCMG`, `PCGAMG`, `PCFIELDSPLIT`.
164*7f296bb3SBarry Smith- Add support for monitor `KSPPREONLY`. This is useful for monitoring
165*7f296bb3SBarry Smith  solvers with inner solvers such as `PCMG`, `PCGAMG`, `PCFIELDSPLIT`.
166*7f296bb3SBarry Smith- Add `KSPConvergedReasonViewSet()` to set an ADDITIONAL function that
167*7f296bb3SBarry Smith  is to be used at the end of the linear solver to display the
168*7f296bb3SBarry Smith  convergence reason of the linear solver
169*7f296bb3SBarry Smith- Add `KSPConvergedReasonViewCancel()` to remove all user-added
170*7f296bb3SBarry Smith  converged reason view functions
171*7f296bb3SBarry Smith- Add `KSPGetConvergedReasonString()` to retrieve a human readable
172*7f296bb3SBarry Smith  string for ksp converged reason
173*7f296bb3SBarry Smith- Change `KSPReasonView()` to `KSPConvergenceReasonView()`
174*7f296bb3SBarry Smith- Change `KSPReasonViewFromOptions()` to
175*7f296bb3SBarry Smith  `KSPConvergedReasonViewFromOptions()`
176*7f296bb3SBarry Smith- Add `KSPConvergedDefaultSetConvergedMaxits()` to declare convergence
177*7f296bb3SBarry Smith  when the maximum number of iterations is reached
178*7f296bb3SBarry Smith- Fix many `KSP` implementations to actually perform the number of
179*7f296bb3SBarry Smith  iterations requested
180*7f296bb3SBarry Smith- Chebyshev uses `MAT_SPD` to default to CG for the eigen estimate
181*7f296bb3SBarry Smith- Add `KSPPIPECG2`, a pipelined solver that reduces the number of
182*7f296bb3SBarry Smith  allreduces to one per two iterations and overlaps it with two PCs
183*7f296bb3SBarry Smith  and SPMVs using non-blocking allreduce
184*7f296bb3SBarry Smith- Add `KSPConvergedRateView()` and `KSPComputeConvergenceRate()` to
185*7f296bb3SBarry Smith  check the convergence rate of a linear solve
186*7f296bb3SBarry Smith- Add `KSPSetUseExplicitTranspose()` to explicitly transpose the
187*7f296bb3SBarry Smith  system in `KSPSolveTranspose()`
188*7f296bb3SBarry Smith- Add `KSPMonitorLGCreate()`, and remove `KSPMonitorLGResidualNorm*()`
189*7f296bb3SBarry Smith  and `KSPMonitorLGTrueResidualNorm*()`
190*7f296bb3SBarry Smith- Add `KSPMonitorError()`, used by `-ksp_monitor_error`
191*7f296bb3SBarry Smith- Add arguments to `KSPMonitorSetFromOptions()` to allow line graphs
192*7f296bb3SBarry Smith  to be configured
193*7f296bb3SBarry Smith- Deprecate `KSP{Set|Get}MatSolveBlockSize()`, use
194*7f296bb3SBarry Smith  `KSP{Set|Get}MatSolveBatchSize()` instead
195*7f296bb3SBarry Smith- Reduce default `KSPView()` ASCII output to a single subdomain's
196*7f296bb3SBarry Smith  KSP/PC information for `PCASM`, resp. `PCBJacobi`. Use
197*7f296bb3SBarry Smith  `-ksp_view ::ascii_info_detail` to output KSP/PC information for all
198*7f296bb3SBarry Smith  subdomains
199*7f296bb3SBarry Smith
200*7f296bb3SBarry Smith```{rubric} SNES:
201*7f296bb3SBarry Smith```
202*7f296bb3SBarry Smith
203*7f296bb3SBarry Smith- Add `SNESConvergedCorrectPressure()`, which can be selected using
204*7f296bb3SBarry Smith  `-snes_convergence_test correct_pressure`
205*7f296bb3SBarry Smith- Remove `SNESMonitorLGCreate()` and `SNESMonitorLGResidualNorm()` which
206*7f296bb3SBarry Smith  are now handled by the default monitor
207*7f296bb3SBarry Smith- Add `SNESConvergedReasonViewSet()` to set an ADDITIONAL function
208*7f296bb3SBarry Smith  that is to be used at the end of the nonlinear solver to display
209*7f296bb3SBarry Smith  the convergence reason of the nonlinear solver
210*7f296bb3SBarry Smith- Add `SNESConvergedReasonViewCancel()` to remove all user-added
211*7f296bb3SBarry Smith  converged reason view functions
212*7f296bb3SBarry Smith- Add `SNESGetConvergedReasonString()` to retrieve a human readable
213*7f296bb3SBarry Smith  string for snes converged reason
214*7f296bb3SBarry Smith- Add `SNESFASFullSetTotal()` to use total residual restriction and
215*7f296bb3SBarry Smith  total solution interpolation in the initial cycle of full FAS
216*7f296bb3SBarry Smith  multigrid
217*7f296bb3SBarry Smith- Deprecate `-snes_nasm_sub_view`, use `-snes_view ::ascii_info_detail` instead
218*7f296bb3SBarry Smith
219*7f296bb3SBarry Smith```{rubric} SNESLineSearch:
220*7f296bb3SBarry Smith```
221*7f296bb3SBarry Smith
222*7f296bb3SBarry Smith```{rubric} TS:
223*7f296bb3SBarry Smith```
224*7f296bb3SBarry Smith
225*7f296bb3SBarry Smith- Change to `--download-sundials2` to indicate the version of SUNDIALS
226*7f296bb3SBarry Smith  PETSc downloads, which is very old and out-dated
227*7f296bb3SBarry Smith- Add forward and adjoint sensitivity support for cases that involve
228*7f296bb3SBarry Smith  parameterized mass matrices
229*7f296bb3SBarry Smith- Add `TSGetNumEvents()` to retrieve the number of events
230*7f296bb3SBarry Smith- Add `-ts_monitor_cancel`
231*7f296bb3SBarry Smith- Now `-ts_view_solution` respects the TS prefix
232*7f296bb3SBarry Smith- Add `TSSetMatStructure()` to indicate the relationship between the
233*7f296bb3SBarry Smith  nonzero structures of the I Jacobian and the RHS Jacobian
234*7f296bb3SBarry Smith- Automatically set the `MatStructure` flag of TS to
235*7f296bb3SBarry Smith  `SAME_NONZERO_PATTERN` if the RHS matrix is obtained with a
236*7f296bb3SBarry Smith  `MatDuplicate()` from the I Jacobian
237*7f296bb3SBarry Smith
238*7f296bb3SBarry Smith```{rubric} TAO:
239*7f296bb3SBarry Smith```
240*7f296bb3SBarry Smith
241*7f296bb3SBarry Smith- Add `TaoSetRecycleFlag()` and `TaoGetRecycleFlag()` interfaces to
242*7f296bb3SBarry Smith  enable some Tao algorithms to re-use iterate information from the
243*7f296bb3SBarry Smith  previous `TaoSolve()` call
244*7f296bb3SBarry Smith- Add new Augmented Lagrangian Multiplier Method (`TAOALMM`) for
245*7f296bb3SBarry Smith  solving optimization problems with general nonlinear constraints
246*7f296bb3SBarry Smith
247*7f296bb3SBarry Smith```{rubric} DM/DA:
248*7f296bb3SBarry Smith```
249*7f296bb3SBarry Smith
250*7f296bb3SBarry Smith- Remove unneeded `Vec` argument from `DMPatchZoom()`
251*7f296bb3SBarry Smith- Change `DMDACreatePatchIS()` to collective operation and add an
252*7f296bb3SBarry Smith  extra argument to indicate whether off processor values will be
253*7f296bb3SBarry Smith  returned
254*7f296bb3SBarry Smith- Add `DMComputeError()`, which uses `PetscDS` information for the exact
255*7f296bb3SBarry Smith  solution
256*7f296bb3SBarry Smith- Add `DMShellGetGLobalVector()`
257*7f296bb3SBarry Smith- Add `DMInterpolateSolution()` for interpolating solutions between
258*7f296bb3SBarry Smith  meshes in a potentially nonlinear way
259*7f296bb3SBarry Smith- `DMInterpolationSetUp()` now can drop points outside the domain
260*7f296bb3SBarry Smith
261*7f296bb3SBarry Smith```{rubric} DMSwarm:
262*7f296bb3SBarry Smith```
263*7f296bb3SBarry Smith
264*7f296bb3SBarry Smith- `DMSwarmViewXDMF()` can now use a full path for the filename
265*7f296bb3SBarry Smith- Add `DMSwarmSetPointCoordinatesRandom()`
266*7f296bb3SBarry Smith- Add `-dm_view_radius` to set size of drawn particles
267*7f296bb3SBarry Smith
268*7f296bb3SBarry Smith```{rubric} DMPlex:
269*7f296bb3SBarry Smith```
270*7f296bb3SBarry Smith
271*7f296bb3SBarry Smith- Using `-petscpartitioner_simple_node_grid` and
272*7f296bb3SBarry Smith  `-petscpartitioner_simple_process_grid`, the Simple partitioner can
273*7f296bb3SBarry Smith  now make grid partitions
274*7f296bb3SBarry Smith- Add `DMGet/SetFieldAvoidTensor()` to allow fields to exclude tensor
275*7f296bb3SBarry Smith  cells in their definition
276*7f296bb3SBarry Smith- Remove regular refinement and marking from `DMPlexCreateDoublet()`
277*7f296bb3SBarry Smith- Add high order FEM interpolation to `DMInterpolationEvaluate()`
278*7f296bb3SBarry Smith
279*7f296bb3SBarry Smith```{rubric} FE/FV:
280*7f296bb3SBarry Smith```
281*7f296bb3SBarry Smith
282*7f296bb3SBarry Smith- Add `PetscDualSpaceTransformHessian()`,
283*7f296bb3SBarry Smith  `PetscDualSpacePushforwardHessian()`, and
284*7f296bb3SBarry Smith  `PetscFEPushforwardHessian()`
285*7f296bb3SBarry Smith- Now `PetscFEGetCellTabulation()` and `PetscFEGetFaceTabulation()` ask
286*7f296bb3SBarry Smith  for the number of derivatives
287*7f296bb3SBarry Smith- Add `PetscDualSpaceLagrangeGet/SetUseMoments()` and
288*7f296bb3SBarry Smith  `PetscDualSpaceLagrangeGet/SetMomentOrder()` to allow a moment
289*7f296bb3SBarry Smith  integral for P0
290*7f296bb3SBarry Smith
291*7f296bb3SBarry Smith```{rubric} DMNetwork:
292*7f296bb3SBarry Smith```
293*7f296bb3SBarry Smith
294*7f296bb3SBarry Smith- Add `DMNetworkAddSubnetwork()` for network of subnetworks
295*7f296bb3SBarry Smith- Add `DMNetworkAdd/GetSharedVertices()`, `DMNetworkIsSharedVertex()`
296*7f296bb3SBarry Smith- Remove `DMNetworkSetEdgeList()`,
297*7f296bb3SBarry Smith  `DMNetworkSet/GetComponentNumVariables()`,
298*7f296bb3SBarry Smith  `DMNetworkSet/Add/GetNumVariables()`,
299*7f296bb3SBarry Smith  `DMNetworkGetComponentKeyOffset()`, `DMNetworkGetVariableOffset()`,
300*7f296bb3SBarry Smith  `DMNetworkGetVariableGlobalOffset()`
301*7f296bb3SBarry Smith- Change the prototypes for `DMNetworkAdd/GetComponent()`
302*7f296bb3SBarry Smith- Rename `DMNetworkSet/GetSizes()` to `DMNetworkSet/GetNumSubNetworks()`
303*7f296bb3SBarry Smith- Rename `DMNetworkGetComponentVariableOffset()` to
304*7f296bb3SBarry Smith  `DMNetworkGetLocalVecOffset()`,
305*7f296bb3SBarry Smith  `DMNetworkGetComponentVariableGlobalOffset()` to
306*7f296bb3SBarry Smith  `DMNetworkGetGlobalVecOffset()`
307*7f296bb3SBarry Smith- Rename `DMNetworkGetSubnetworkInfo()` to `DMNetworkGetSubnetwork()`
308*7f296bb3SBarry Smith
309*7f296bb3SBarry Smith```{rubric} DT:
310*7f296bb3SBarry Smith```
311*7f296bb3SBarry Smith
312*7f296bb3SBarry Smith- `PetscDSCopyBoundary()` now takes a list of fields for which
313*7f296bb3SBarry Smith  boundary copying is done
314*7f296bb3SBarry Smith- Add `PetscDSGet/SetJetDegree()`, and `-dm_ds_jet_degree` is needed to
315*7f296bb3SBarry Smith  enable it under a DM
316*7f296bb3SBarry Smith- Add `PetscWeakForm` class to manage function pointers for problem
317*7f296bb3SBarry Smith  assembly
318*7f296bb3SBarry Smith
319*7f296bb3SBarry Smith```{rubric} Fortran:
320*7f296bb3SBarry Smith```
321*7f296bb3SBarry Smith
322*7f296bb3SBarry Smith- Add configure option `--with-mpi-f90module-visibility`
323*7f296bb3SBarry Smith  [default=\`\`1\`\`]. With `0`, `mpi.mod` will not be visible in use code
324*7f296bb3SBarry Smith  (via `petscsys.mod`) - so `mpi_f08` can now be used
325*7f296bb3SBarry Smith- Add `PetscDLAddr()` to get name for a symbol
326