Reference documentation for deal.II version Git 500a7ed831 2022-01-17 20:04:17 -0700
\(\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. Updated: The header inclusions of several files in the deal.II/matrix_free subfolder have been cleaned up to make the library more maintainable. As a result, some headers are no longer implicitly included and a user code might need to add the respective include file.
    (Martin Kronbichler, 2021/11/30)

  2. Renamed: The namespace Functions::LevelSet has been renamed to Functions::SignedDistance.
    (Peter Munch, 2021/10/19)

  3. Changed: For parallel::distributed::Triangulation, vertices will no longer be communicated automatically to p4est in debug mode. Please set the corresponding flag parallel::distributed::Triangulation::Settings::communicate_vertices_to_p4est while constructing your triangulation object.
    (Marc Fehling, 2021/10/13)

  4. Changed: The 3D implementation of GridTools::rotate() with an integer for a Cartesian coordinate direction has been superseded by the version that accepts unit vectors as rotation axes. Further, Physics::Transformations::Rotations::rotation_matrix_3d() now requires a Tensor<1,3> object instead of a Point<3> as an axis.
    (Marc Fehling, 2021/10/11)

  5. Updated: deal.II now requires ginkgo version 1.4.0 or newer (Fabian Castelli, 2021/09/01)

  6. Deprecated: The Tensor and SymmetricTensor classes had functions begin_raw() and end_raw() that suggested that the elements of these objects are stored in arrays and consequently could be accessed consecutively through iterators. While they are indeed stored contiguously in memory, they are not part of an array and, as a consequence, C++ does not actually allow this kind of access. The functions have therefore been deprecated and will be removed in due time.
    As a consequence, the make_array_view() functions that allow turning a Tensor or SymmetricTensor into an ArrayView object have now also been deprecated.
    (Wolfgang Bangerth, 2021/08/19)

  7. Deprecated: Many of the member functions of the FEInterfaceValues class, as well as the FEInterfaceViews::Scalar and FEInterfaceViews::Vector classes, that are used to compute jumps and averages of shape function-related quantities have been renamed in such a way that they are more expressive about what they compute.
    (Jean-Paul Pelteret, 2021/07/31)

  8. Changed: MatrixFreeOperators::MassOperator now computes its true diagonal (and not a lumped mass matrix) as its diagonal.
    (David Wells, 2021/07/29)

  9. Deprecated: The autopartition parameter has been removed from parallel::DistributedTriangulationBase::load() and all inheriting classes.
    (Marc Fehling, 2021/07/24)

  10. Changed: Custom repartitioning via Triangulation::Signals::cell_weight is no longer part of parallel::distributed::Triangulation::load(). If desired, call parallel::distributed::Triangulation::repartition() manually after load().
    (Marc Fehling, 2021/07/23)

  11. Updated: FE_RaviartThomasNodal now uses a different polynomial space to allow for a simpler use for faces in non-standard orientation. The new polynomials are anisotropic tensor products of Lagrange polynomials on the points of a Gauss–Lobatto quadrature formula. This change leads to different entries in the matrices and constraints, for example, but as the resulting polynomial space spans the same polynomials, no change in accuracy should be expected.
    (Martin Kronbichler, Katharina Kormann, Konrad Simon, 2021/06/12)

  12. Removed: The PETSc Eisenstat preconditioner wrapper, which has never worked correctly in parallel, has been removed.
    (David Wells, 2021/06/11)

  13. Removed: The deprecated exception ParameterHandler::ExcInvalidEntryForPatternXML and the deprecated overload of SparsityTools::gather_sparsity_pattern() have been removed.
    (Daniel Arndt, 2021/06/07)

  14. Removed: The deprecated member function TriangulationBase::compute_vertices_with_ghost_neighbors() has been removed.
    (Daniel Arndt, 2021/06/07)

  15. Removed: The deprecated constructors for FESeries::Fourier and FESeries::Legendre have been removed.
    (Daniel Arndt, 2021/06/07)

  16. Removed: The deprecated specializations of VectorTools::integrate_difference() and VectorTools::project_boundary_values_curl_conforming() have been removed.
    (Daniel Arndt, 2021/06/04)

  17. Removed: The deprecated overloads of FETools::lexicographic_to_hierarchic_numbering() and FETools::hierarchic_to_lexicographic_numbering() have been removed.
    (Daniel Arndt, 2021/06/03)

  18. Removed: The deprecated member variable VectorizedArray::n_array_elements has been removed.
    (Daniel Arndt, 2021/06/03)

  19. Removed: The deprecated member function CellAccessor::active() has been removed.
    (Daniel Arndt, 2021/06/03)

  20. Removed: The deprecated member functions DataOut::first_cell() and DataOut::next_cell() have been removed.
    (Daniel Arndt, 2021/06/02)

  21. Changed: Trilinos support in deal.II requires both deal.II and Trilinos to be configured with MPI support.
    (Daniel Arndt, 2021/06/02)

  22. Removed: The deprecated build_matrices() member functions in various multigrid transfer classes have been removed.
    (Daniel Arndt, 2021/06/01)

  23. Removed: The deprecated versions of DoFTools::count_dofs_per_component() and DoFTools::count_dofs_per_block() have been removed.
    (Daniel Arndt, 2021/06/01)

  24. Removed: The deprecated overloads for DoFTools::extract_hanging_node_dofs(), and DoFTools::extract_dofs() have been removed.
    (Daniel Arndt, 2021/05/28)

  25. Removed: Deprecated parallel::CellWeights member functions have been removed.
    (Daniel Arndt, 2021/05/27)

  26. Removed: The overloads in CUDAWrappers::FEEvaluation that take a local dof index or a quadrature point as arguement have been removed. Use the ones that don't use these arguments in their interface instead.
    (Daniel Arndt, 2021/05/26)

  27. Removed: The deprecated parallel::Triangulation class has been removed. Use parallel::TriangulationBase instead.
    (Daniel Arndt, 2021/05/26)

  28. Removed: The deprecated member field MatrixFree::AdditionalData::level_mg_handler.
    (Peter Munch, 2021/05/25)

  29. Removed: The deprecated parallel::distributed::CellDataTransfer::CoarseningStrategies struct has been removed. Use AdaptationStrategies::Coarsening instead.
    (Daniel Arndt, 2021/05/25)

  30. Removed: The deprecated member functions DoFHandler::locally_owned_dofs_per_processor(), DoFHandler::n_locally_owned_dofs_per_processor(), and DoFHandler::n_locally_owned_mg_dofs_per_processor() have been removed.
    (Daniel Arndt, 2021/05/24)

  31. Deprecated: The template arguments of the following classes have been changed to avoid the legacy argument DoFHandlerType:

    Please change your code accordingly.
    If for some reason, you need a code that is compatible with deal.II 9.3 and the subsequent release, a Legacy namespace has been introduced with aliases of these classes with their original interface. You can make the following substitutions to your code for each of the affected classes:

    • X → Legacy::X

    To perform this substitution automatically, you may use a search and replace script like the following made for the bash shell:

    classes=(SolutionTransfer parallel::distributed::SolutionTransfer Functions::FEFieldFunction DataOut DataOut_DoFData DataOutFaces DataOutRotation)
    for c in \${classes[@]}; do
    find /path/to/your/code -type f -exec sed -i -E "/(\w\${c}|\${c}[^<]|Particles::\${c}|distributed::\${c}|^\s*(\/\/|\*))/! s/\${c}/Legacy::\${c}/g" {} \;

    (Marc Fehling, 2020/11/21)


  1. New: Geometry GridGenerator::pipe_junction() creates an intersection of arbitrary truncated cones in 3D. It can be used to generate T-pipes, Y-pipes, corner pieces and other fittings.
    (Marc Fehling, Maximilian Bergbauer, Peter Munch, Martin Kronbichler, 2021/12/01)

  2. New: The step-49 tutorial now has an extended section about generating meshes from Gmsh with a more interesting example.
    (Timo Heister, Sean Ingimarson, 2021/10/08)

  3. New: Added an interface to p4est_search.h (>=v2.2) to find the MPI rank of cells owning remote points without communication. This works in the special (but not uncommon) case that no nontrivial manifold is attached to the triangulation, i.e., the triangulation has only FlatManifold attached to it.
    (Konrad Simon, 2021/09/24)

  4. New: The tutorial program step-82 (local discontinuous Galerkin method for the bi-Laplacian problem) has been added.
    (Diane Guignard, 2021/09/17)

  5. Added: Evaluation and integration of hessians both on cells and on faces is now available in the matrix-free framework.
    (Maximilian Bergbauer, Martin Kronbichler, Peter Munch, 2021/09/06)

  6. New: VTU files have traditionally been used for visualization purposes, but more recently they have also been used for more general postprocessing tasks since they can easily be imported into Python, for example. By setting the DataOutBase::VtkFlags::physical_units variable and attaching such a flags object to a DataOut, Particles::DataOut, or MatrixOut object, one can now specify the physical units associated with variables that are written into VTU files, so that they can be parsed by scripts that do further postprocessing.
    (Wolfgang Bangerth, 2021/07/09)

  7. Improved: DataOut_DoFData and the derived classes create internally a copy of vectors attached via add_data_vector() and are now responsible for updating ghost values so that users do not need to call update_ghost_values() and potentially zero_out_ghost_values().
    (Peter Munch, Magdalena Schreter, 2021/05/27)

  8. New: The new postprocessing class DataOutResample is similar to DataOut but allows to interpolate the result onto a second triangulation.
    (Peter Munch, Martin Kronbichler, Magdalena Schreter, 2021/06/08)

  9. Improved: The internal particle handler storage structure has been reworked to allow for significantly faster particle sorting and iteration as well as for future improvements and extensions.
    (Rene Gassmoeller, Bruno Blais, Martin Kronbichler, Peter Munch, 2021/06/06)

Specific improvements

  1. Fixed: GridGenerator::convert_hypercube_to_simplex_mesh() now correctly copies line manifold ids in 3D.
    (David Wells, 2022/01/07)

  2. Changed: The step-43 tutorial program used Amg_preconditioner and Mp_preconditioner to denote the preconditioners for the top left and bottom right block of a mixed-Laplace matrix. These variable names were taken from step-31/step-32 where they made sense, but in the current context, the names do not reflect what is in the corresponding matrix blocks. They have been renamed to top_left_preconditioner and bottom_right_preconditioner, respectively.
    (Wolfgang Bangerth, 2022/01/07)

  3. Fixed: Serializing empty sparsity patterns ran into a segmentation fault. This is now fixed.
    (Lucas Myers, Wolfgang Bangerth, 2022/01/05)

  4. Fixed: deal.II has been updated to support the new OneAPI api interface introduced by the Intel Threading Building Blocks Library. Note that the threading support of the matrix-free backend will be disabled in this case: For now, the MatrixFree::AdditionalData::tasks_parallel_scheme control has no effect and simply defaults to the serial loop.
    (Wolfgang Bangerth, Matthias Maier, 2022/01/06)

  5. Fixed: The FEInterfaceValues class is now made compatible with filtered iterators. Specifically, it is now possible to call FEInterfaceValues::reinit() with the active cell being a filtered iterator and the type returned by cell->neighbor() being some other non-filtered iterator type.
    (Simon Sticko, Jean-Paul Pelteret, 2022/01/05)

  6. Fixed: deal.II is now compatible with the versions of Boost.Geometry shipped with boost 1.77 and boost 1.78.
    (David Wells, 2022/01/03)

  7. Improved: The class PreconditionRelaxation has been refactored. Similarly to PreconditionChebyshev, it can be now used stand-alone and users can attach their own preconditioners. Furthermore, users can specify multiple iteration steps, which is particularly useful if PreconditionRelaxation is used as smoother in a multigrid algorithm.
    (Peter Munch, 2022/01/01)

  8. New: More "getter" functions have been added to MeshWorker::ScratchData, facilitating the construction of other FEValues-type objects with some of the same objects as those used in a ScratchData instance.
    (Jean-Paul Pelteret, 2021/12/31)

  9. Fixed: The SparseDirectUMFPACK class had a bug where it did not correctly set up the data passed to the UMFPACK package if (i) the matrix is a block matrix, and (ii) the elements are complex-valued. This is now fixed.
    (Kuljit S. Virk, 2021/12/30)

  10. New: The IteratorFilters::BoundaryIdEqualTo and IteratorFilters::ManifoldIdEqualTo filtered iterator predicates have been added to help select cell faces that have, respectively, one or more specified boundary ID(s) and manifold ID(s).
    (Jean-Paul Pelteret, 2021/12/30)

  11. Changed: The step-60 tutorial now works also with non-zero Dirichlet BCs and non-zero right-hand side
    (Marco Feder, 2021/12/24)

  12. New: Build also a docker image with root user, to be used in github actions directly.
    (Luca Heltai, 2021/12/24)

  13. Deprecated: The Threads::new_thread() functions have been deprecated. These functions return a Threads::Thread object, which is a class that had previously been deprecated, and should no longer be used: use the std::thread or std::jthread classes and related functionality instead.
    (Wolfgang Bangerth, 2021/12/23)

  14. Fixed: The matrix-free FEFaceEvaluation would produce wrong results in case hanging nodes were present on faces with non-standard orientation. This is now fixed.
    (Martin Kronbichler, 2021/12/20)

  15. Fixed: IndexSet::subtract_set would previously run in quadratic complexity in the number of ranges. This is now fixed.
    (Martin Kronbichler, 2021/12/13)

  16. New: GridOut::write_msh() now also works for triangular and tetrahedral meshes.
    (Wolfgang Bangerth, 2021/12/06)

  17. New: The DataPostprocessorInputs::CommonInputs class now also stores the face number that is currently being worked on when using a DataOutFaces object. This allows accessing face-related data like the boundary id from a DataPostprocessor.
    (Wolfgang Bangerth, 2021/12/03)

  18. Changed: The function TrilinosWrappers::Vector::is_non_negative() now also works in parallel.
    (Justin O'Connor, 2021/12/02)

  19. Fixed: MatrixFreeOperators::CellwiseInverseMassMatrix with template argument -1 for the polynomial degree now chooses the pre-compiled code with fast tensor-product algorithms if available, rather than a slower general-purpose code.
    (Martin Kronbichler, 2021/11/29)

  20. New: Namespace Physics::VectorRelations features functions to compute angles between (spatial) vectors.
    (Marc Fehling, 2021/11/29)

  21. New: The SD::BatchOptimizer::copy_from() function can be used to duplicate the data from one batch optimizer instance to another.
    (Jean-Paul Pelteret, 2021/11/27)

  22. Fixed: The step-22 tutorial now uses FEValuesExtractors also for the right-hand side
    (Marco Feder, 2021/11/23)

  23. New: Utilities::MPI::create_mpi_data_type_n_bytes() helps with large MPI communication and IO.
    (Timo Heister, 2021/11/17)

  24. New: In the same spirit as provided by the C++20 range;adaptors feature, it is now possible to "filter" ranges over the active cells of Triangulation and DoFHandler objects.
    This allows to replace:

    DoFHandler<dim> dof_handler;
    for (const auto &cell : dof_handler.active_cell_iterators())
    if (cell->is_locally_owned())
    fe_values.reinit (cell); the local integration on 'cell'...;


    DoFHandler<dim> dof_handler;
    const auto filtered_iterators_range =
    for (const auto &cell :
    fe_values.reinit (cell); the local integration on 'cell'...;

    Here, the operator| is to be interpreted in the same way as is done in the range adaptors feature that is part of C++20. It has the same meaning as the | symbol on the command line: It takes what is on its left as its inputs, and filters and transforms to produce some output. In the example above, it "filters" all of the active cell iterators and removes those that do not satisfy the predicate – that is, it produces a range of iterators that only contains those cells that are both active and locally owned.
    (Wolfgang Bangerth, 2021/11/03)

  25. New: The GridOut::write_gnuplot() function can now deal with tetrahedral meshes, as well as with wedges and pyramids.
    (Wolfgang Bangerth, 2021/11/15)

  26. New: The GridIn::read_comsol_mphtxt() function adds the ability to read .mphtxt files generated by COMSOL.
    (Wolfgang Bangerth, 2021/11/15)

  27. New: The new class Functions::SignedDistance::Ellipsoid computes a signed distance function for ellipsoids. It is implemented for 1D and 2D ellipsoids (ellipses).
    (Nils Much, 2021/11/05)

  28. New: One can now output simplex, pyramid, and wedge cells in GNUPLOT format via DataOut and other classes that are based on DataOutBase and call DataOutBase::write_gnuplot().
    (Wolfgang Bangerth, 2021/11/03)

  29. Changed: The DataOutBase::write_deal_II_intermediate() function had a bug when outputting data that corresponds to cells other than hypercubes. This is now fixed. In the process, the format version for this function's output has been incremented from 3 to 4, which also includes changing the order in which vertices are outputted.
    The DataOutReader class was also updated to match the new output format.
    (Wolfgang Bangerth, 2021/10/25)

  30. New: The ReferenceCell class now has input and output operators (>> and <<).
    (Wolfgang Bangerth, 2021/10/25)

  31. Fixed: GridIn::read_unv() can now ignore any sections before 2411. In other words, the unv file can start with any number sections (before 2411) as long as they have a proper format (must begin and end with a "-1").
    (Vachan Potluri, 2021/10/22)

  32. New: There is now a function ReferenceCell::vertex() that returns the coordinates of a vertex of a reference cell.
    (Wolfgang Bangerth, 2021/10/13)

  33. Fixed: The DataOutFaces class can now also be used with simplex meshes. It previously aborted with exceptions.
    (Wolfgang Bangerth, 2021/10/13)

  34. Improved: PreconditionChebyshev can now run the vector updates on a part of the vector for better data locality. The prerequisite is an associated MatrixType class to provide a vmult class with two std::function objects to specify the operation before and after the matrix-vector product.
    (Martin Kronbichler, 2021/10/12)

  35. Fixed: The KellyErrorEstimator for 1D can now handle the hp case.
    (Fabian Castelli, 2021/10/12)

  36. Fixed: Deleted duplicate occurrence of VectorTools::interpolate_boundary_values() in setup_dofs() of step-45.
    (Raghunandan Pratoori, 2021/10/11)

  37. Changed: The 3D implementation of GridTools::rotate() now accepts unit vectors as rotation axes.
    (Marc Fehling, 2021/10/11)

  38. New: VectorizedArray can now be constructed from an initializer list.
    (Peter Munch, 2021/10/08)

  39. Fixed: The FEPointEvaluation class always evaluated a solution starting at the component 0 of the selected vector-valued base element, even if a different component was selected by the caller. This has been fixed to correctly start evaluating at the selected component.
    (Rene Gassmoeller, 2021/10/01)

  40. Fixed: The payload for Trilinos-based linear operators is now able to use its own type as an examplar operator. This means that one can now use linear operators based on Trilinos matrices as exampler operators when initializing a LinearOperator for a Trilinos preconditioner.
    (Wenyu Lei, Jean-Paul Pelteret, 2021/09/12)

  41. Fixed: ParticleHandler::insert_particles() runs into a deadlock in parallel when a processor is not inserting any particles. This is now fixed.
    (Sebastian Fuchs, 2021/08/31)

  42. Fixed: There was a bug in the default constructor of TimeStepping::EmbeddedExplicitRungeKutta(). Some parameters were left uninitialized which triggered a segmentation fault when calling evolve_one_time_step().
    (Praveen Chandrashekar, Bruno Turcksin, 2021/08/30)

  43. Changed: For 1d cells, the following code did not compile:

    for (const auto &face : cell->face_iterators())
    if (face->at_boundary())

    That was because, unlike in the 2d and 3d case, the class that describes the faces of 1d cells had a set_boundary_id() function that was not marked as const. This has now been fixed by adding the const specification for this function, along with the one on the set_all_boundary_ids() function.
    (Wolfgang Bangerth, Tyler Anderson, 2021/08/21)

  44. New: The hp::FECollection::hp_vertex_dof_identities() function (and related functions for lines and quads) allows for the computation of multiway computations of DoF indentities in the hp-context.
    (Wolfgang Bangerth, 2021/08/20)

  45. New: There is now an overload for Particles::ParticleAccessor::set_properties() that a Tensor as argument. It is used in step-19.
    (Wolfgang Bangerth, 2021/08/19)

  46. Fixed: Exceptions thrown via AssertThrow did not have a stacktrace attached to them, unlike exceptions thrown with Assert. This is now fixed.
    (Wolfgang Bangerth, Paras Kumar, 2021/08/20)

  47. Fixed: It was not possible to default-construct objects of type DoFHandler::face_iterator for dim==1. As a consequence, one could also not call cell->face_iterators() for the cells of 1d DoFHandler objects. This is now fixed.
    (Wolfgang Bangerth, Tyler Anderson, 2021/08/19)

  48. New: MeshWorker::ScratchData is now able to evaluate the jumps in, and averages of, finite element functions and their derivatives across an interface.
    (Jean-Paul Pelteret, 2021/08/14)

  49. New: FEInterfaceViews now has functions get_*_function_values() and get_*_function_values_from_local_dof_values() to evaluate solution values across cell faces, such as the jump in (or average of) values, gradients, and Hessians. With these functions, FEInterfaceValues can now be used with automatic differentiation.
    (Jiaqi Zhang, 2021/08/11)

  50. New: The functions FEFaceValuesBase::face_number(), FEInterfaceValues::get_cell() and FEInterfaceValues::face_number() have been implemented to provide introspection as to which entities these objects have been initialized for.
    (Jean-Paul Pelteret, 2021/08/06)

  51. New: The function FEInterfaceValues::dof_indices() has been added to make writing range-based for loops over all local interface degrees of freedom much simpler.
    (Jean-Paul Pelteret, 2021/08/05)

  52. New: Diagnostic functions AffineConstraints::n_identities() and AffineConstraints::n_inhomogeneities() to analyse your constraints.
    (Marc Fehling, 2021/08/04)

  53. Fixed: Use tolerances consistently in RemotePointEvaluation, VectorTools::point_values(), and GridTools::distributed_compute_point_locations().
    (Peter Munch, Magdalena Schreter, 2021/07/31)

  54. New: QWitherdenVincentSimplex now implements even-order rules in addition to the standard Gauss-like odd-order rules.
    (David Wells, 2021/07/29)

  55. Fixed: AlignedVector objects for which AlignedVector::replicate_across_communicator() had previously been called, could not be move-constructed or move-assigned: The resulting object was usable, but destruction of the target object led to memory errors that aborted the program. This is now fixed. As a side effect of the patch, memory consumption of AlignedVector objects has also been shrunk for the most common case where AlignedVector::replicate_across_communicator() has not actually been called.
    (Wolfgang Bangerth, 2021/07/28)

  56. New: The new function TableBase::clear() allows to empty a Table object.
    (Jiaqi Zhang, 2021/07/21)

  57. Fixed: MappingFEField now works with simplex faces correctly.
    (David Wells, 2021/07/19)

  58. New: Added a class QIteratedSimplex for building composite simplex quadrature rules.
    (David Wells, 2021/07/15)

  59. New: ParticleAccessor::get_local_index() is a new function returning particle indices local to each MPI process, which is useful for direct access into arrays with temporary results associated to particles.
    (Martin Kronbichler, 2021/07/06)

  60. Fixed: step-34 had a minor memory leak whereby the function get_singular_quadrature() allocated some memory the first time it was called, and then never released it. This is now fixed. Separately, this function was not thread-safe, and now it is.
    (Wolfgang Bangerth, 2021/07/03)

  61. New: When calling cell->vertex_dof_index(...) on a DoFHandler that uses the hp capability, then one needed to provide the last argument indicating what the active fe index is. But for cells, there can only be one active fe index, so leaving the last argument at its default value is now interpreted as using the active fe index of the cell. The argument still needs to be provided if the vertex_dof_index() function is called on faces, edges, or vertices.
    (Wolfgang Bangerth, 2021/07/02)

  62. New: The new function Triangulation::n_global_coarse_cells() allows to query the global number of coarse cells. This function is particularly useful for parallel::fullydistributed::Triangulation, since in this case the coarse cells might differ on each process.
    (Peter Munch, 2021/06/26)

  63. New: The new unified function MGTwoLevelTransfer::reinit() selects automatically if MGTwoLevelTransfer::reinit_geometric_transfer() or MGTwoLevelTransfer::reinit_polynomial_transfer() is needed.
    (Peter Munch, 2021/06/23)

  64. New: The new function CellAccessor::is_ghost_on_level() allows to check if a cell is a ghost cell on a multigrid level.
    (Peter Munch, 2021/06/23)

  65. Improved: i) Standardized the format of the references in the file doc/doxygen/references.bib using in particular the convention "M. Mo" or "R.B. Kellogg" for names and the full name for journals. ii) Fixed the display of some titles (e.g., upper case for proper noun). iii) Added an URL entry for the references with a DOI.
    (Diane Guignard, 2021/06/22)

  66. Fixed: The Gauss-like rules implemented by QGaussSimplex now integrate 2 * n_points_1D - 1 degree polynomials exactly.
    (David Wells, 2021/06/22)

  67. Fixed: The shell script for installing p4est has been updated for its latest releases (p4est>=2.3).
    (Marc Fehling, 2021/06/10)

  68. Fixed: The step-21 program called a function that was disabled on Microsoft Windows to work around a bug in the Microsoft Visual Studio compiler. This is now fixed and the program should run successfully again on Windows.
    (Wolfgang Bangerth, 2021/06/08)

  69. Fixed: MappingQCache::get_vertices() would previously always return the actual vertices, ignoring a possible displacement that is possible with this class. This is now fixed.
    (Martin Kronbichler, 2021/06/07)

  70. Improved: An assert has been added in the constructor of FEPointEvaluation to prevent accessing non-existing components.
    (Judith Pauen, 2021/06/05)

  71. New: The new function Utilities::MPI::reduce() allows to reduce arbitrary types with a user-specified binary operation.
    (Peter Munch, 2021/05/27)

  72. New: Fixed a bug in clear user data for standard Triangulation.
    (Nicola Giuliani, 2021/05/25)

  73. Addes conformity tests for several vector elements in 2D/3D as well as minor fixes for 2d Nedelec and Raviart-Thomas to make them work on non-standard meshes.
    (Konrad Simon, 2021/05/08)

  74. New: You can now perform range-based iterations on hp::FECollecion, hp::QCollection, and hp::MappingCollection objects.
    (Peter Munch, 2021/10/27)