=============
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 consistant 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:
