Reference documentation for deal.II version 9.5.0
\(\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\}}\)
No Matches
Changes between Version 9.4.0 and 9.5.0

This is the list of changes made between the release of deal.II version 9.4.0 and that of 9.5.0. All entries are signed with the names of the author.


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 SUNDIALS::KINSOL, SUNDIALS::ARKode, and SUNDIALS::IDA interfaces used to use callbacks through which users provide information to these solvers. If user code encountered errors, this was indicated via integer return codes – a zero return value indicating success. This is not in line with how C++ typically operates; in C++ errors are typically indicated via exceptions. The interfaces to the libraries above have been changed to now use exceptions instead, and this convention has been documented in a glossary entry on user provided callback.
    (Wolfgang Bangerth, 2023/05/31)

  2. Changed: The integrate() function of FEPointEvaluation now multiplies the submitted entities internally with a JxW value to represent a proper integration like in FEEvaluation. The old behavior (where the entities are only multiplied with the test functions and summed up) is available through the new function test_and_sum().
    (Maximilian Bergbauer, 2023/05/29)

  3. Deprecated: All vector classes had member functions called import() to copy elements from a source into the current vector. Unfortunately, import is a keyword (of sorts) in C++20. While not strictly necessary because we do not use the name in a context where it would be recognized as a keyword, it is useful to avoid the name nonetheless, if only to avoid confusing readers and IDEs. As a consequence, these functions have been renamed to import_elements(). The old name remains for now, but is deprecated.
    (Wolfgang Bangerth, 2023/05/23)

  4. Extensive rework of CUDAWrappers::MatrixFree and CUDAWrappers::FEEvaluation.
    (Bruno Turcksin, 2023/05/11)

  5. Changed: The get_mpi_communicator() methods no longer return references to MPI_Comm. They all now return the MPI_Comm by value.
    (Stefano Zampini, 2023/04/12)

  6. Removed: The docker image with root user has been removed.
    If you would like to use the docker image in the context of github actions, you can use the regular image and override the default user like this:

    image: dealii/dealii:master-focal
    options: --user root

    (Marc Fehling, 2023/04/09)

  7. Removed: The CUDAWrappers::MatrixFee::AdditionalData::ParallelizationScheme parameter has been removed.
    (Bruno Turcksin, 2023/03/30)

  8. Updated: deal.II no longer exports the -fPIC/-fpic compiler flags for compiling relocatable, position independent code. This should have minimal impact on user projects because CMake is handling the -fPIC/-fpic automatically. But for some less common scenarios in user projects (e.g., object targets) it might be necessary to set the POSITION_INDEPENDENT_CODE target property in CMake.
    (Matthias Maier, 2023/03/29)

  9. Changed: The default behavior of the hdf5 output is changed from "not compressed" to "compressed" (default compression_level: best_speed).
    (Christoph Schmidt, 2023/03/24)

  10. Updated: deal.II now requires CMake version 3.13.4 or later.
    (Matthias Maier, 2023/01/26)

  11. Updated: The minimum version for Trilinos has been bumped to 12.14.1 if Trilinos bundles Kokkkos.
    (Daniel Arndt, 2022/12/30)

  12. Fixed: The function ParameterHandler::add_parameter() used to call the internal action. Within that step, the action converts the default value to a string and back afterwards. This can lead to round-off errors so that the default values might change in the case of floating-point numbers. The action is not called any more during ParameterHandler::add_parameter(), fixing the problem.
    (Peter Munch, Magdalena Schreter, 2022/12/11)

  13. 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)

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

  15. 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)

  16. 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, 2022/10/27)

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

  18. 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)

  19. 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, 2022/08/20)

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

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

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

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

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

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

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

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

  28. 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)

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

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

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

  32. 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)

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

  34. 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: Added support for the VTK library (
    (Pasquale Africa, 2023/05/24)

  2. New: The new function distributed_compute_intersection_locations() computes intersections on parallel::distributed::Triangulations using CGAL. It returns a new class DistributedComputeIntersectionLocationsInternal which stores the found intersections and relevant information about communication. The class contains a helper function convert_to_distributed_compute_point_locations_internal() to produce DistributedComputePointLocationsInternal without an additional (possibly expensive) search of points and can therefore be used to initialize RemotePointEvaluation.
    (Johannes Heinz, 2023/05/18)

  3. Changed: Several parts of the library involve interfacing with external libraries by way of user-defined callback functions. Specific examples are the interfaces to the SUNDIALS solvers (e.g., the SUNDIALS::KINSOL class). These interfaces typically required using the convention for error reporting defined by the underlying library – in the case of SUNDIALS, for example, callbacks needed to return zero in case of success, a negative value for an irrecoverable error, and a positive value for a recoverable error. This approach does not scale across the many interfaces we have. As a consequence, we standardized how callbacks should behave, as documented in this glossary entry. The interfaces in SUNDIALS::KINSOL and SUNDIALS::ARKode have been changed correspondingly.
    (Wolfgang Bangerth, 2021/05/08)

  4. New: Add a two level transfer operator between non-nested multigrid levels for CG and DG.
    (Marco Feder, Johannes Heinz, Peter Munch, Martin Kronbichler, 2023/04/26)

  5. New: Add wrappers to the non-linear solver SNES (PETScWrappers::NonLinearSolver ) and the ode integrator TS (PETScWrappers::TimeStepper) from the PETSc library.
    (Stefano Zampini, 2023/04/22)

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

  7. New: Add a wrapper to the non-linear solver NOX from the Trilinos library.
    (Peter Munch, Vladimir Ivannikov, 2022/10/02)

Specific improvements

  1. Fixed: An out-of-bounds write due to an insufficiently sized buffer in the Scalapack wrappers has been fixed.
    (Matthias Maier, 2023/07/03)

  2. Fixed: With some compilers, calling Threads::Task::Task() with a function object that ends with an exception lead to a segmentation fault. This is now fixed.
    (Wolfgang Bangerth, 2023/06/26)

  3. Fixed: Originally, the LAPACK wrappers in source/lac/ directly printed errors to the console. This is fixed by using the AssertThrow mechanism to explicitly display various error messages based on the error values that are consistent with the LAPACK manual.
    (Tao Jin, 2023/06/20)

  4. Fixed: The numbering applied within FEPointEvaluation did not work correctly for multiple components and when used with first_selected_component!=0 for certain FiniteElement types, leading to wrong results. This is now fixed.
    (Johannes Heinz, Peter Munch, 2023/06/11)

  5. Fixed: DoFCellAccessor::distribute_local_to_global() now works with std:: iterators.
    (Johannes Heinz, 2022/06/06)

  6. New: All parallel BlockVector classes now have a reinit function that takes collections of Utilities::MPI::Partitioner objects as an argument. This affects TrilinosWrappers::MPI::BlockVector, PETScWrappers::MPI::BlockVector, and LinearAlgebra::distributed::BlockVector. The interface is compatible.
    (Marc Fehling, 2023/06/02)

  7. Improved: Make it possible to fill JxW in NonMatching::MappingInfo from quadratures which contain JxW as weights.
    (Johannes Heinz, 2023/06/01)

  8. Fixed: Patterns::pattern_factory now parses lists of lists correctly.
    (Daniel Arndt, 2023/05/16)

  9. Changed: The KINSOL wrapper used to copy vectors to/from deal.II format to/from a native SUNDIALS format. These copies are no longer made.
    (Sebastian Proell, 2023/05/15)

  10. Fixed: step-77 contained a bug where the residual was not zeroed out before assembly.
    (Sebastian Proell, 2023/05/14)

  11. Changed: MPI communicators (of type MPI_Comm) are now treated as trivially copyable POD types throughout the library. This means that we store and pass them by value instead of by reference.
    (Timo Heister, 2023/05/08)

  12. New: The new class ScopeExit is useful in ensuring that cleanup code is always run, regardless of how a function is left.
    (Wolfgang Bangerth, 2023/05/05)

  13. New: Added new nonlinear solver class NonlinearSolverSelector.
    (Sean Ingimarson, 2023/05/01)

  14. New: FEInterfaceValues::reinit() sometimes had trouble automatically determining which quadrature or mapping object to use in the hp context. There are now two more rules that help determine which objects to use, as described in detail in the documentation.
    (Wolfgang Bangerth, 2023/04/25)

  15. Fixed: Consider the following scenario: You initialize a DoFHandler with a parallel::distributed::Triangulation, and afterwards you want to create the Triangulation by calling Triangulation::create_triangulation() that takes a TriangulationDescription::Description as an argument. This caused an issue as the active FE tables of the DoFHandler have not been properly updated during the creation of the Triangulation. This is fixed now by treating the resulting Triangultion as a 'fresh' one by triggering Triangulation::Signals::create at the end of Triangulation::create_triangulation(), which in turn reinitializes the DoFHandler.
    (Marc Fehling, 2023/04/21)

  16. Fixed: ParameterAcceptor::clear() had issues with 'use after free'.
    (Luca Heltai, 2023/04/20)

  17. Fixed: Mesh files in COMSOL's .mphtxt format are often created on Windows and then read using deal.II on Unix. Windows uses a different line ending style than Linux, and this led to error messages that were impossible to understand because the different line ending style is not visible in most editors. This is now fixed: The GridIn::read_comsol_mphtxt() function also accepts Windows line endings.
    (Wolfgang Bangerth, 2023/04/20)

  18. Fixed: In FEInterfaceValues::reinit(), if q_index is not explicitly given but none of the two adjacent elements dominates the other, one used to get a rather obscure error. The error now produced points at the actual problem, and a much expanded discussion of what is going wrong is provided in the documentation of the function.
    (Simon Sticko, Wolfgang Bangerth, 2023/04/13)

  19. Deprecated: The DoFTools::map_dofs_to_support_points() function family had functions that returned what they computed via a non-const reference argument support_points of type std::map. These overloads are now deprecated and replaced by functions that return the map via a regular return value.
    (Wolfgang Bangerth, 2023/04/07)

  20. New: Added Functions::SignedDistance::ZalesakDisk() to compute the signed distance function of Zalesak's disk.
    (Magdalena Schreter, Simon Sticko, Peter Munch, 2023/04/06)

  21. Fixed: In VtkFlags with default settings were passed to the write_vtu method instead of the available vtu_flags. Thus, a compression_level that has been set was simply ignored. This has been fixed in #14983 by passing the available vtu_flags to the method.
    (Christoph Schmidt, 2023/04/05)

  22. New: Added Functions::SignedDistance::Rectangle() and BoundingBox::signed_distance() to compute the signed distance function of a rectangle.
    (Magdalena Schreter, Peter Munch, 2023/03/31)

  23. Changed: The default compression_level for vtu output is changed from best_compression to best_speed.
    (Christoph Schmidt, 2023/03/28)

  24. New: Added an ArrayView::empty() function.
    (Maximilian Bergbauer, 2023/03/21)

  25. New: Added functionality to the matrix-free CellwiseInverseMassMatrix operator for coupling (dyadic) coefficients. fill_inverse_JxW_values and CellwiseInverseMassMatrixImplFlexible have been extended. Internal interfaces for the coefficients now use ArrayView instead of AlignedVector.
    (Bugrahan Temur, 2023/03/15)

  26. Fixed: There was no instance of GridTools::collect_periodic_faces() with MeshType = parallel::shared::Triangulation<1,1>. But the function works with the template parameter as well. Thus, it should be instantiated.
    (Nils Schween, 2023/03/14)

  27. New: LAPACKFullMatrix now provides two new functions, LAPACKFullMatrix::get_right_eigenvectors() and LAPACKFullMatrix::get_left_eigenvectors(), to return eigenvectors after calls to LAPACKFullMatrix::compute_eigenvalues().
    (Martin Kronbichler, 2023/03/09)

  28. New: Provide overloads for make_array_view for AlignedVector.
    (Sebastian Proell, 2023/03/06)

  29. Fixed: It was previously possible to assign scalar values to Tensor and VectorizedArray objects that were temporaries – say in expressions such as

    VectorizedArray<...> my_function();
    my_function() = 1.234;

    This does not make any sense: What my_function() returns is a temporary object, and assigning a value to it has no consequences because the temporary object dies at the end of the line. Whatever the programmer intended to do here was almost certainly a mistake. As a consequence, this is now prohibited and the compiler will produce an error when trying to do this.
    (Wolfgang Bangerth, 2023/03/05)

  30. Fixed: SolverCG used with matrices and preconditioners that support interleaving of the vector updates with the matrix-vector product (e.g. with certain matrix-free operators) sometimes performed the final update to the result vector x with a wrong coefficient. This could affect the returned solution for coarse tolerances far away from convergence. This is now fixed.
    (Martin Kronbichler, 2023/02/26)

  31. Fixed: When used with the linear-polynomial MappingQCache(1), FEValues::reinit() could previously trigger CellSimilarity in case the underlying mesh was affine, but the deformed state described via MappingQCache was not. This is now fixed.
    (Martin Kronbichler, 2023/02/22)

  32. New: Implement VectorTools::add_constant that adds a constant to a given component of a finite element solution.
    (Timo Heister, 2023/02/17)

  33. New: The function ReferenceCell::face_vertex_location() allows translating between the vertices of faces of cells and the coordinate system of the cell itself.
    (Wolfgang Bangerth, 2023/02/09)

  34. Fixed: Fix GridTools::find_all_active_cells_around_point() to return the correct cells if the requested point is located on a cell edge adjacent to neighbor cells at different refinement levels.
    (Peter Munch, Magdalena Schreter, 2023/02/07)

  35. Fixed: The DerivativeForm class had a constructor that took an array of elements via the type Tensor<order, spacedim, Tensor<1, dim,Number>>. This should have been Tensor<1, spacedim, Tensor<order, dim, Number>>, and it is now fixed.
    (Robin Goermer, Wolfgang Bangerth, 2023/02/01)

  36. New: The function IndexSet::get_index_vector() returns a vector with all indices that are part of an index set.
    (Wolfgang Bangerth, 2023/01/26)

  37. Improved: Mapping can now return vertices on a face of a cell.
    (Johannes Heinz, 2023/01/25)

  38. Fixed: When outputting hexahedral meshes in AVS Explorer's UCD file format, cells were written with an inverted vertex order. While they were shown correctly, these cells had negative volume. This has now been fixed.
    (Nils Margenberg, 2023/01/22)

  39. Improved: Introduce a function that only checks if Bounding Boxes are overlapping. Fixed: If a 1D BBox is completely contained in another one, it was not recognized as mergeable neighbor.
    (Johannes Heinz, 2022/07/07)

  40. New: The function ReferenceCell::contains_points() is now implemented for all reference cell kinds (it had been missing for wedges and pyramids before).
    (Wolfgang Bangerth, 2023/01/11)

  41. New: There are now overloads of the make_array_view() function for objects of type std::array.
    (Wolfgang Bangerth, 2023/01/09)

  42. Deprecated: The functions ReferenceCell::compute_orientation() and ReferenceCell::permute_according_orientation() have been deprecated. Use ReferenceCell::get_orientation_index() and ReferenceCell::reorient_based_on_orientation_index() instead.
    (Wolfgang Bangerth, 2023/01/09)

  43. New: Writing graphical output in VTU format now uses a workflow that uses multiple threads where possible, substantially increasing the speed with which functions such as DataOut::write_vtu() work.
    (Wolfgang Bangerth, 2022/12/30)

  44. Improved: The FEInterfaceValues values public interface has been extended further to support hp-FEM. Functions have been added to report if the class has been initialized with hp support, and to get the underlying hp::MappingCollection, hp::FECollection and hp::QCollection. The various FEInterfaceValues::reinit() methods now accept indices to indicate which quadrature rule, mapping (and, in some cases, finite elements) should be used to compute values across the interface.
    (Jean-Paul Pelteret, 2022/12/28)

  45. New: ScratchData now has support for hp finite elements on interfaces.
    (Jean-Paul Pelteret, 2022/12/23)

  46. New: Allow the construction of a deal.II PETSc matrices from a PETSc Mat.
    (Stefano Zampini, 2022/12/21)

  47. New: Expose PETScWrappers::MPI::BlockVector as a PETSc VecNest vector, and make sure the mpi communicator is always queried from the internal vec object.
    (Stefano Zampini, 2022/12/21)

  48. New: PETScWrappers:BlockSparseMatrix now is also a PETSc MATNEST type.
    (Stefano Zampini, 2022/12/20)

  49. Fixed: Small fixes to communicator handling in PETSc classes. Move from GetArray to GetArrayRead (threadsafe version).
    (Stefano Zampini, 2022/12/20)

  50. New: LinearAlgebra::distributed::BlockVector::reinit now accepts a vector of Utilities::MPI::Partitioner objects.
    (Marc Fehling, 2022/12/20)

  51. Improved: FEInterfaceValues objects can now also be constructed using hp-collections.
    (Marco Feder, 2022/12/20)

  52. Fixed: Add default MPI getter for PETSc Mat objects, that queries the underlying PETSc type.
    (Stefano Zampini, 2022/12/13)

  53. Fixed: PETSc has no concept of ownership, but only shared ownership. Vec and Mat objects are reference counted, and automatically cleaned when no longer used. We do not need to keep track of ownership manually.
    (Stefano Zampini, 2022/12/13)

  54. Improved: The function GridTools::rotate() can now also handle Triangulation objects with dim=1 and spacedim=2.
    (Peter Munch, 2022/12/08)

  55. New: SolverGMRES and SolverFGMRES now also support classical Gram-Schmidt orthonormalization alongside to the existing modified Gram-Schmidt algorithm. This algorithm allows to reduce the cost of vector operations in terms of communication latency and memory transfer significantly.
    (Peter Munch, Martin Kronbichler, 2022/12/08)

  56. 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)

  57. 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)

  58. New: TrilinosWrappers::MPI::Vector and PETScWrappers::MPI::Vector now both have reinit functions that take a Utilities::MPI::Partitioner as an argument, so their interface is compatible to LinearAlgebra::distributed::Vector.
    (Marc Fehling, 2022/12/05)

  59. Improved: The quick_tests mechanism has been redesigned. Quick tests are now part of the regular deal.II testsuite. This means they can be configured via the setup_tests_quick_tests target, and run via invoking ctest from the build directory. The test target will now ensure that the library is fully compiled and quick tests are configured prior to running all quick tests.
    (Matthias Maier, 2022/11/29, 2022/12/10)

  60. 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)

  61. 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)

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

  63. 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)

  64. 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)

  65. 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)

  66. New: PreconditionChebyshev now also supports James Lottes s fourth-kind Chebyshev.
    (Martin Kronbichler, Peter Munch, 2022/11/12)

  67. 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)

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

  69. 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)

  70. 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)

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

  72. 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)

  73. 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)

  74. 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)

  75. 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)

  76. 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)

  77. 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)

  78. 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)

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

  80. 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)

  81. 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)

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

  83. 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)

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

  85. 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)

  86. 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)

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

  88. 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)