Reference documentation for deal.II version Git 50c3491829 2021-08-01 13:40:40 +0200
\(\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: 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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  21. 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: 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)

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

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

  4. 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. New: The new function TableBase::clear() allows to empty a Table object.
    (Jiaqi Zhang, 2021/07/21)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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