Reference documentation for deal.II version GIT db2fd67796 2022-12-07 23:35:02+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Changes since the last release

This is the list of changes made since the last release of deal.II. 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. Removed: A number of obscure CMake configuration options have been removed: DEAL_II_PREFER_STATIC_LINKAGE, DEAL_II_STATIC_EXECUTABLE, DEAL_II_SETUP_DEFAULT_COMPILER_FLAGS.
    (Matthias Maier, 2022/12/02)

  2. Removed: The build system no longer generates pkg-config files.
    (Matthias Maier, 2022/11/30)

  3. Removed: The deal.IIFeatureConfig.cmake configuration file has been removed. This file used to contain a record of all FEATURE_[suffix] variables for a given external library. Said information is now exported via interface targets in CMake.
    (Matthias Maier, 2022/11/30)

  4. Changed: We introduced a stronger datatype for FE indices:

    This affects interfaces to a lot of functions. Most of them are backwards compatible via implicit conversion. Functions that do not fall in that category are listed below and might need your attention. Some of them have been deprecated, some are replaced because we imagine them only being used internally.

    Further, the serialization of parallel::distributed::Triangulation objects is also affected by this change as we write FE indices to disk. Thus, the version in the serialization metafile has been bumped to 5.
    (Marc Fehling, 10/27/2022)

  5. Removed: The base class of SparsityPattern, SparsityPatternBase, has been removed.
    (David Wells, 2022/09/22)

  6. Updated: The version of the vtu output has been increased to 2.2 if high-order output is requested. This is necessary to fix visualization issues in Paraview.
    (Peter Munch, Magdalena Schreter, 2022/09/18)

  7. Changed: The function DoFHandler::get_active_fe_indices() now returns the result vector. The previous version that writes into the argument as well as DoFTools::get_active_fe_indices() have been deprecated.
    (Marc Fehling, 08/20/2022)

  8. Moved: The functions in Utilities::Trilinos have been moved to a separate header, base/trilinos_utilities.h.
    (David Wells, 08/16/2022)

  9. Changed: The oldest supported version of PETSc has been increased from 3.3.0 to 3.7.0.
    (David Wells, 2022/07/27)

  10. Removed: The deprecated QTrapez, ParticleHandler::locally_relevant_ids(), and Arkode::reinit_vector have been removed.
    (Daniel Arndt, 2022/06/29)

  11. Removed: The deprecated member function CellId::to_cell() has been removed.
    (Daniel Arndt, 2022/06/28)

  12. Removed: The deprecated header file lac/parallel_block_vector.h has been removed.
    (Daniel Arndt, 2022/06/27)

  13. Removed: The deprecated classes ConstantFunction and ZeroFunction have been removed.
    (Daniel Arndt, 2022/06/24)

  14. Removed: The deprecated member functions DoFHandler::initialize() and DoFHandler::set_fe() have been removed.
    (Daniel Arndt, 2022/06/24)

  15. Removed: The deprecated member functions of QProjector not using a ReferenceCell object have been removed.
    (Daniel Arndt, 2022/06/24)

  16. Removed: The deprecated functions MatrixFree::n_macro_cells(), MatrixFree::get_hp_cell_iterator(), MatrixFree::n_components_filled(), MatrixFree::get_dof_handler(), and MatrixFree::reinit() with default Mapping argument have been removed.
    (Daniel Arndt, 2022/06/22)

  17. Removed: The deprecated constructors for SparseVanka and SparseBlockVanka have been removed.
    (Daniel Arndt, 2022/06/22)

  18. Removed: The deprecated LinearAlgebra::CUDAWrappers::atomicAdd_wrapper has been removed.
    (Daniel Arndt, 2022/06/22)

  19. Rotated: The list of incompatible changes has been rotated.
    (Matthias Maier, 2022/06/16)

  20. Removed: The previously deprecated class hp::DoFHandler has been removed, and with it all functions and classes that required the template parameter DoFHandlerType.
    From now on, use the standard DoFHandler. All hp-functionality has been integrated to this one.
    (Marc Fehling, Peter Munch, 2022/05/24)

  21. Changed: All GridIn functions now remove unused vertices and will attempt to fix pyramids and wedges with negative volumes.
    (David Wells, 2022/05/25)

  22. Removed: Deprecated constructors for PETScWrappers::MPI::SparseMatrix, a deprecated overload for PETScWrappers::MatrixBase::add and a deprecated constructor for PETScWrappers::MPI::Vector have been removed.
    (Daniel Arndt, 2020/04/21)


  1. New: Kokkos is now a required dependency.
    (Daniel Arndt, 2022/10/26)

  2. Rotated: The list of major changes has been rotated.
    (Matthias Maier, 2022/06/16)

Specific improvements

  1. Fixed: The residual assembly in step-77 contained a bug that prevented the correct residual from being computed. This is now fixed.
    (Stefano Zampini, 2022/12/06)

  2. Improved: The history of linear residuals norms inside classes SolverControl and ReductionControl is now cleared at the first step of the solution.
    (Vladimir Ivannikov, 2022/12/05)

  3. Improved: The quick_tests mechanism has been redesigned. The tests are now called quick_tests/[tests].[build] and can be invoked via ctest as well.
    (Matthias Maier, 2022/11/29)

  4. New: There is now a new function Threads::TaskGroup::return_values() that waits for all tasks in a task group and returns a vector of their returned objects.
    (Wolfgang Bangerth, 2022/11/29)

  5. Changed: All SparsityPattern classes now inherit from a new class SparsityPatternBase which provides an API for efficiently adding new entries. As a consequence of this change, the majority of templates over the sparsity pattern type have been removed.
    (David Wells, 2022/11/25)

  6. New: Add utility function Utilities::MPI::scatter.
    (Magdalena Schreter, Peter Munch, 2022/11/24)

  7. Improved: The deal.II CMake project configuration and the deal_II_invoke_autopilot() CMake macro that is used in user projects now always export the compile_commands.json file used for various tooling (such as completion backends like clangd).
    (Matthias Maier, 2022/11/24)

  8. Improved: Added capability in the particle handler to generate ghost particles in ghost cells close to periodic boundary conditions.
    (Bruno Blais, Audrey Collard-Daigneault, 2022-11-18)

  9. Changed: The constructors of the various solver classes in the PETScWrappers namespace used to take an MPI_Comm argument. This has now been changed: There is a new set of constructors that no longer take this argument, and the old constructors have been deprecated. In practice, the solvers now use the same MPI communicator as the matrix give to the solve() function.
    (Wolfgang Bangerth, 2022/11/16)

  10. Workaround: The testsuite CMake macros now generate a top-level target compile_test_executables in user projects that can be used to force the compilation of all test executables. This works around an issue with the ninja build system that concurrent invocation of tests (via ctest -jN) that build executables will fail when calling back into cmake. As a workaround it is now possible to first build all executables first via ninja compile_test_executables and then run tests in parallel with ctest -jN.
    (Matthias Maier, 2022/11/11)

  11. Improved: FEImmersedSurfaceValues can now be constructed using a MappingFEField.
    (Marco Feder, 2022/10/31)

  12. New: A new overload for MatrixFree::loop allows to specify a pre- and post-operation, similar to MatrixFree::cell_loop.
    (Sebastian Proell, 2022/10/11)

  13. New: We now instruct doxygen to build the documentation with multiple threads, substantially reducing the amount of time it takes to complete this step.
    (Wolfgang Bangerth, 2022/10/04)

  14. New: The GridTools::MarchingCubeAlgorithm supports now also 1D.
    (Magdalena Schreter, Peter Munch, 2022/09/23)

  15. Fixed: On very coarse meshes, with very particular manifolds, e.g., polar manifolds, cylindrical manifolds, Manifold<3, 3>::normal_vector may return a zero vector. This is fixed now.
    (Timo Heister, Luca Heltai, Jiaqi Zhang, 2022/09/20)

  16. New: The new function CGALWrappers::compute_intersection_of_cells computes the intersection between two (affine) cells starting from the location of the vertices. The intersection is described by a vector of arrays, where each array identifies a simplex of the sub-tassellation of the intersection.
    (Marco Feder, Johannes Heinz, 2022/09/20)

  17. Fixed: The function GridTools::internal::distributed_compute_point_locations() now projects reference points outside of a cell (but within a tolerance) onto the unit cell. This enables the use of FE_Q_iso_Q1 in Utilities::MPI::RemotePointEvaluation.
    (Peter Munch, Magdalena Schreter, 2022/09/12)

  18. Improved: The functions VectorTools::point_values()/point_gradients() and the class Utilities::MPI::RemotePointEvaluation now allow to specify the first component to be selected. The feature is used in the class DataOutResample to output multi-component solutions.
    (Peter Munch, Magdalena Schreter, 2022/09/12)

  19. Improved: The vector operations in SolverIDR::solve() have been revised for performance. The new implementation should show a speedup in case the matrix-vector product and preconditioner are not much more expensive than the vector operations. Furthermore, the usage of temporary vectors has been reduced by two.
    (Martin Kronbichler, 2022/09/12)

  20. New: Functions DoFHandler::get_future_fe_indices() and DoFHandler::set_future_fe_indices() that store and recover future FE indices on a DoFHandler. They can also be used to transfer future FE indices between different DoFHandler objects.
    (Marc Fehling, 2022/08/20)

  21. New: The CellAccessor::as_dof_handler_iterator() function can be used to convert from a Triangulation active cell iterator to a DoFHandler active cell iterator, or from an active cell iterator of one DoFHandler to that of another DoFHandler.
    (Jean-Paul Pelteret, 2022/07/15)

  22. Improved: Refinement and coarsening flags are now communicated in parallel::shared::Triangulation.
    (Peter Munch, 2022/07/12)

  23. New: The new class MatrixFreeTools::ElementActivationAndDeactivationMatrixFree is a wrapper around MatrixFree designed to deal with DoFHandler objects involving cells without degrees of freedom, i.e., cells using FENothing as element type. The class helps to implement the "element birth and death technique".
    (Peter Munch, Sebastian Proell, 2022/07/09)

  24. New: Implement DataOut::write_deal_II_intermediate_in_parallel() that writes a combined file from all MPI ranks using MPI I/O of the internal patches and a corresponding DataOutReader::read_whole_parallel_file() to read them back in.
    (Timo Heister, 2022/07/07)

  25. Improved: The function GridGenerator::merge_triangulations() can now copy boundary ids to remaining boundary faces.
    (Johannes Heinz, 2022/07/07)

  26. New: There are now functions Utilities::MPI::isend() and Utilities::MPI::irecv() that can send and receive arbitrary objects to and from other processes, and that handle all of the setting up and tearing down of MPI objects and temporary buffers.
    (Wolfgang Bangerth, 2022/07/07)

  27. Improved: The function VectorTools::point_values() can now handle cell-data vectors.
    (Peter Munch, 2022/07/06)

  28. Added the missing explicit instantiations of DoFTools::distribute_cell_to_dof_vector for problems with non-zero codim (dim != spacedim)
    (Ahmad Shahba, 2022/07/06)

  29. Fixed: MappingCartesian used to throw exceptions in debug mode when checking if small cells in a large domain size are actually aligned to coordinate axes. This is fixed now.
    (Rene Gassmoeller, 2022/07/04)

  30. Fixed: The function find_active_cell_around_point() now skips cells without any marked vertices.
    (Johannes Heinz, 2022/06/28)

  31. Rotated: The list of minor changes has been rotated.
    (Matthias Maier, 2022/06/16)

  32. New: The PetscWrappers::PreconditionBDDC preconditioner has been implemented. It requires a special matrix type (IS), which is initialized with the new function PetscWrappers::reinit.
    (Nicolas Barnafi, 2022/05/10)