Reference documentation for deal.II version Git 92ca227 2018-05-25 19:47:08 -0500
Changes after Version 9.0.0

This is the list of changes made after the release of deal.II version 9.0.0. All entries are signed with the names of the authors.


Following are a few modifications to the library that unfortunately are incompatible with previous versions of the library, but which we deem necessary for the future maintainability of the library. Unfortunately, some of these changes will require modifications to application programs. We apologize for the inconvenience this causes.

  1. Changed: The OpenCASCADE Manifold classes with names ending in Boundary (i.e., NormalProjectionBoundary, DirectionalProjectionBoundary, and NormalToMeshProjectionBoundary) have been deprecated in favor of renamed classes ending in Manifold (i.e., NormalProjectionManifold, DirectionalProjectionManifold, and NormalToMeshProjectionManifold).
    (David Wells, 2018/05/16)

  2. Changed: The PolynomialSpace::compute_index() and PolynomialsP::directional_degree() functions used to return their information through an array that they received as a reference argument. Instead, they now return a std::array<unsigned int,dim> by value.
    (Wolfgang Bangerth, 2018/05/09)


  1. Changed: clang-format replaces astyle as source code formatting tool.
    (2018/05/24, Matthias Maier, Daniel Arndt)

  2. New: FE_NedelecSZ is a new H(curl)-conforming element which overcomes the sign conflict problem which can be encountered for Nedelec elements on hexahedral meshes. This is an implementation of the method described in the PhD thesis of Sabine Zaglmayr and should be considered over the FE_Nedelec element where meshes with non-standard orientation are used. Note that not all functionality (e.g. Hessians), has been implemented for this element.
    (Ross Kynch, 2018/04/28)

Specific improvements

  1. Improved: MatrixFree::cell_loop() and MatrixFree::loop() directly use LinearAlgebra::distributed::BlockVector::update_ghost_values() and LinearAlgebra::distributed::BlockVector::compress() calls on block vectors with many blocks, rather than splitting each method into two parts for overlapping communication and computation. The latter is inefficient as soon as too many MPI requests are in flight. (Martin Kronbichler, Denis Davydov 2018/05/24)

  2. Fixed: step-16 was broken caused by uninitialized variables, it is now fixed. (Ce Qin, 2018/05/21)

  3. Improved: MGTransferPrebuilt now supports PETScWrappers::MPI::Vector and PETScWrappers::MPI::SparseMatrix.
    (Alexander Knieps, 2018/05/21)

  4. Fixed: DoFTools::make_flux_sparsity_pattern was accessing invalid dof indices in case neighboring cells were not using FiniteElement objects with the same number of degrees of freedom. This is fixed now.
    (Daniel Arndt, 2018/05/19)

  5. Fixed: Two invalid off-by-one data accesses in the initialization of MatrixFree with face data enabled, that appeared in some rare cases on certain configurations of processors, have been fixed. (Daniel Arndt, Martin Kronbichler, 2018/05/18)

  6. New: A new tutorial program, step-60, shows how to deal with non-matching discretizations using Distributed Lagrange Multipliers.
    (Luca Heltai, Giovanni Alzetta, 2018/05/07)