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