# Changes: 3.10

```{rubric} General:
```

- Removed --with-errorchecking configure option.
- Added new command line option -viewfromoptions to disable
  `XXXViewFromOptions()` calls.

```{rubric} Configure/Build:
```

- Removed --with-viewfromoptions configure option in favor of the
  new command line option -viewfromoptions.

- Following options are renamed to have more consistent names:

  ```
  --with-packages-dir          -> --with-packages-download-dir
  --with-external-packages-dir -> --with-packages-build-dir
  --package-dirs               -> --with-packages-search-path
  --search-dirs                -> --with-executables-search-path
  ```

```{rubric} IS:
```

```{rubric} PetscDraw:
```

```{rubric} PF:
```

```{rubric} Vec:
```

```{rubric} VecScatter:
```

```{rubric} PetscSection:
```

```{rubric} Mat:
```

- MatNullSpaceTest() now respects the options prefix of the provided
  Mat.
- Added MatMatTransposeSolve() to MUMPS interface.
- Added -mat_mumps_use_omp_threads [m] option to better support
  OpenMP in MUMPS.
- Added MatPartitioningViewFromOptions().
- Added MatPartitioningApplyND() to compute a nested dissection
  ordering of a matrix.
- Deprecated MatISGetMPIXAIJ() in favour of MatConvert().
- Added new matrix types for limited-memory variable-metric
  (MATLMVM) approximations of Jacobians.
- Added MATAIJSELL, a sub-type of AIJ that uses SELL format
  internally for SELL-optimized operations.

```{rubric} PC:
```

- PCKSPGetKSP() now raises an error if called on a PC which is not
  of type PCKSP
- Added PCKSPSetKSP()
- Added new PC based on the new LMVM matrices.

```{rubric} KSP:
```

- The KSP viewing options have changed. Now

  - -ksp_compute_eigenvalues becomes -ksp_view_eigenvalues ascii
  - -ksp_plot_eigenvalues becomes -ksp_view_eigenvalues draw
  - -ksp_plot_eigencontours becomes -ksp_view_eigenvalues
    draw::draw_contour
  - -ksp_compute_eigenvalues_explicitly becomes
    -ksp_view_eigenvalues_explicit ascii
  - -ksp_plot_eigenvalues_explicitly becomes
    -ksp_view_eigenvalues_explicit draw
  - -ksp_compute_singularvalues becomes -ksp_view_singularvalues
    ascii
  - -ksp_final_residual becomes -ksp_view_final_residual

- `KSPLSQR`

  - Computes now an estimate of the operator's norm in the same way
    as Saunders and MATLAB, and uses it in the type-specific
    stopping criterion `KSPLSQRConvergedDefault()`; this now
    gives the same number of iterations as MATLAB's `lsqr()`.
  - Added `-ksp_lsqr_exact_mat_norm` and
    `KSPLSQRSetExactMatNorm()` to optionally compute and use the
    exact Frobenius norm instead of the estimate.
  - `KSPLSQRMonitorDefault()` and `-ksp_lsqr_monitor` now
    additionally print the (estimate of) the operator's norm.
  - Allow setting `-ksp_convergence_test lsqr` (it's a default
    for `KSPLSQR`, though).
  - `KSPLSQRSetStandardErrorVec()` is replaced by
    `KSPLSQRSetComputeStandardErrorVec()` which now specifies
    whether standard error vector should be computed instead of
    setting the vector;
  - likewise, option `-ksp_lsqr_set_standard_error` is replaced
    by `-ksp_lsqr_compute_standard_error`.
  - Renamed `KSPLSQRGetArnorm()` to `KSPLSQRGetNorms()` and
    removed its `rhs_norm` argument.
  - Renamed `KSPLSQRDefaultConverged()` to
    `KSPLSQRConvergedDefault()` merged with
    `KSPConvergedLSQR()`.

```{rubric} SNES:
```

- SNESSetTolerances() and -snes_max_funcs now accept -1 to indicate
  unlimited number of function evaluations.

```{rubric} SNESLineSearch:
```

```{rubric} TAO:
```

- Added bound-constrained Newton-Krylov methods (BNLS, BNTR, BNTL).
- All quasi-Newton methods updated to use the new LMVM Mat objects.
- Added a bound-constrained quasi-Newton line search (BQNLS) method
  that re-uses BNLS infrastructure to replace BLMVM on next release.
- Bound-constrained conjugate gradient method expanded with new CG
  update types and nonlinear preconditioning.
- Removed `-tao_type test`.
- Gradient testing can now be accessed with the options
  `-tao_test_gradient`, `-tao_test_gradient_view`, and Hessian
  testing can be done with `-tao_test_hessian`,
  `-tao_test_hessian_view` (also works for matrix-free Hessian).

```{rubric} TS:
```

- Added symplectic time integrators for separable Hamiltonian
  systems (-ts_type basicsymplectic).

```{rubric} DM/DA:
```

- Renamed `DMDAGetReducedDMDA()` to
  `DMDACreateCompatibleDMDA()`.
- Added DMGetCompatibility() and implementation for DMDA

```{rubric} DMPlex:
```

- Added an interface DM and boundary label to
  DMPlexCreateHybridMesh()
- More refined control of `DMView()` when
  `PetscViewerType=PETSCVIEWERHDF5`. `PetscViewerFormat` can now
  be one of
  `{PETSC_VIEWER_HDF5_VIZ, PETSC_VIEWER_HDF5_XDMF, PETSC_VIEWER_HDF5_PETSC, PETSC_VIEWER_DEFAULT}`.
- Parallel mesh load (i.e. mesh distributed right from beginning)
  with `DMLoad()`, `PetscViewerType=PETSCVIEWERHDF5` and
  `PetscViewerFormat=PETSC_VIEWER_HDF5_XDMF`, or
  `DMPlexCreateFromFile()` and `-dm_plex_create_from_hdf5_xdmf`.

```{rubric} PetscViewer:
```

Added argument to `PetscViewerVTKAddField()` to allow skipping of
DM check as fields are added
.. rubric:: SYS:

```{rubric} AO:
```

```{rubric} Sieve:
```

```{rubric} Fortran:
```
