Reference documentation for deal.II version Git e1b67c38dc 2020-08-13 12:19:15 -0400
\(\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: CUDA 9, 10.0, and 10.1 are not supported anymore.
    (Bruno Turcksin, 2020/08/05)

  2. Changed: The template arguments of the classes DoFAccessor and DoFCellAccessor have changed. The template argument DoFHandlerType has been replaced by dimension and space dimension.
    (Peter Munch, 2020/06/24)

  3. Deprecated: The functions MatrixFree::reinit(), which take a vector of hp::DoFHandlers, have been deprecated. Users are asked to provide vectors of DoFhandlers, which may contain hp::DoFHandlers. This is possible now since hp::DoFHandler is deriving from DoFHandler.
    (Peter Munch, 2020/06/03)

  4. Removed: The deprecated class MGCoarseGridLACIteration has been removed.
    (Daniel Arndt, 2020/06/12)

  5. Removed: The header file deal.II/grid/tria_object.h has been removed. It was only used for internal purposes.
    (Wolfgang Bangerth, 2020/06/05)

  6. Changed: The binary representation of the Triangulation and DoFHandler classes created by the function save() with release 9.2 cannot be read anymore with load() due to major internal changes of these classes. This change also affects, i.a., the functions GridIn::read_vtu() and GridOut::write_vtu().
    (Peter Munch, 2020/06/03)

  7. Removed: The deprecated bindings to the legacy NETCDF C++ library have been removed.
    (David Wells, 2020/05/27)

  8. Removed: The deprecated bindings to nanoflann have been removed.
    (David Wells, 2020/05/27)

  9. Changed: The ThreadLocalStorage class has been reimplemented with C++14 STL primitives and does not depend on the TBB library any more. With that the obscure ThreadLocalStorage::get_implementation() function that exposed the underlying TBB container has been removed.
    (Matthias Maier, 2020/05/23)

  10. Removed: The Threads::Task class had an operator== that allowed comparing objects of this type for equality. This operator has been removed. If you want to store objects of this kind in a collection that requires this kind of operator (say, std::set), then you probably can't do so any more in a reasonable way. However, this is exactly what the Threads::TaskGroup class is there for.
    (Wolfgang Bangerth, 2020/05/26)

  11. Deprecated: The class hp::DoFHandler has been deprecated, since the DoFHandler has been extended with its functionalities.
    (Peter Munch, 2020/05/23)

  12. Removed: The following preprocessor definitions have been removed from DEAL_II_NOEXCEPT, DEAL_II_USE_MT_POSIX, DEAL_II_USE_MT_POSIX_NO_BARRIERS
    (Matthias Maier, 2020/05/23)

  13. Removed: The deprecated classes Threads::Mutex::ScopedLock, Threads::ConditionVariable, and deprecated functions Threads::Mutex::acquire(), Threads::Mutex::release(), Threads::n_existing_threads(), Threads::this_thread_id() have been removed.
    (Matthias Maier, 2020/05/22)

  14. Removed: The DEAL_II_WITH_CXX14 and DEAL_II_WITH_CXX17 configuration options have been removed. The library will now be compiled with the default C++ standard enabled by the compiler. This is (as of May 2020) C++14 for all compilers. If you want to override that behavior, please set the C++ standard directly for example by configuring with -DDEAL_II_CXX_FLAGS="-std=c++17", or by setting the environement variable CXXFLAGS="-std=c++17".
    (Matthias Maier, 2020/05/21)

  15. Updated: deal.II now requires a compiler with enabled C++14 support.
    (Matthias Maier, 2020/05/21)

  16. Changed: The polynomial space template argument has been removed from FE_Poly and FE_PolyTensor.
    (Graham Harper, Daniel Arndt, 2020/05/21)

  17. Removed: The deprecated class Threads::PosixThreadBarrier has been removed.
    (Wolfgang Bangerth, 2020/04/21)


  1. New: The multithreading framework in the library has been completely revamped: Intel TBB has been replaced by taskflow, which is bundled within the library. Multithreading support is now unconditionally enabled and we removed the CMake option DEAL_II_WITH_THREADS. The tasking framework can be controlled using MultithreadInfo and the DEAL_II_NUM_THREADS environment variable.
    (Wolfgang Bangerth, Timo Heister, Matthias Maier, 2020/05/25)

  2. Changed: The internal data structures of DoFHandler have been modified to use compressed row storage, enabling it to also handle hp::DoFHandler functionalities. Currently, the user can choose between the normal mode and the hp mode during calling the constructur. Please note that the multigrid functionalities are only available during normal mode.
    (Peter Munch, 2020/05/23)

  3. List rotated: The list of major changes is now empty.
    (Matthias Maier, 2020/05/12)

Specific improvements

  1. New: MGTools::make_sparsity_pattern() can now take an optional AffineConstraints argument to add the effect of, e.g., periodic boundary conditions.
    (Martin Kronbichler, 2020/08/11)

  2. Fixed: The DataPostprocessorTensor class erroneously announced that the components of its output are a bunch of scalars when, of course, the whole point of the class was to output things as one tensor field. This is now fixed.
    (Wolfgang Bangerth, 2020/08/06)

  3. New: GridIn::read_vtk() now supports triangular and tetrahedral meshes.
    (Peter Munch, 2020/07/23)

  4. New: GridIn::read_msh() now supports triangular and tetrahedral meshes.
    (Daniel Paukner, 2020/07/20)

  5. New: The method hp::FEFaceValues::reinit() can now also accept face iterators.
    (Peter Munch, 2020/07/16)

  6. New: The class hp::MappingCollection has a new constructor. This constructor creates a MappingCollection from one or more mapping objects passed to the constructor.
    (Peter Munch, 2020/07/15)

  7. Fixed: MeshWorker::mesh_loop() did not work on 1d with refined grids. This is now fixed.
    (Luca Heltai, 2020/07/08)

  8. Added the functions CUDAWrappers::MatrixFree::get_vector_partitioner() and CUDAWrappers::MatrixFree::get_dof_handler()
    (Bruno Turcksin, 2020/07/06)

  9. New: The new class Simplex::ScalarPolynomial provides polynomials defined on simplices.
    (Peter Munch, 2020/07/02)

  10. Fixed: In parallel hp-adaptive applications, DoFHandler::distribute_dofs() no longer fails to enumerate degrees of freedom on ghost interfaces if continuous finite elements do not dominate each other.
    (Marc Fehling, 2020/07/03)

  11. New: A new quadrature rule for simplex geometric entities has been added.
    (Peter Munch, 2020/07/02)

  12. New: Geometric objects of a Triangulation are assigned a ReferenceCell::Type. The value can be queried via TriaAccessor::reference_cell_type().
    (Peter Munch, 2020/06/30)

  13. New: The class ArrayView can now also be constructed from std::array.
    (Peter Munch, 2020/06/29)

  14. New: BoundingBox::real_to_unit() and BoundingBox::unit_to_real() allow one to apply both the direct and the inverse transformation that are needed to map the unit bounding box to the current box, and viceversa.
    (Luca Heltai, 2020/06/29)

  15. New: The member function DiscreteTime::set_next_step_size() is added.
    (Reza Rastak, 2020/06/27)

  16. New: There is now a constructor for class Tensor that takes an initializer from an object of type ArrayView.
    (Wolfgang Bangerth, 2020/06/27)

  17. Fixed: The class parallel::distributed::SolutionTransfer can now also handle FE_Nothing.
    (Dominic Soldner, Peter Munch, 2020/06/24)

  18. Fixed: FEInterfaceValues now works also for codim one and two. Instantiated also DoFTools::make_flux_sparsity_pattern() for codim one and two.
    (Luca Heltai, 2020/06/24)

  19. New: The class TriaAccessor provides now the capability to query the number of vertices, lines, and faces (with n_vertices(), n_lines(), n_faces(), vertex_indices(), line_indices(), face_indices()). The new methods can be used as an alternative to the methods in GeometryInfo.
    (Peter Munch, 2020/06/23)

  20. New: Added FEInterfaceValues to MeshWorker::ScratchData.
    (Luca Heltai, 2020/06/23)

  21. Fixed: The ParticleHandler::insert_particles() function forgot to associate particles with the common property pool. Consequently, setting properties on particles added to a ParticleHandler this way led to an error.
    (Andrew Davis, Wolfgang Bangerth, 2020/06/23)

  22. New: Particles::Particle and Particles::ParticleAccessor can now be used as indexable in boost::rtree objects.
    (Luca Heltai, 2020/06/15)

  23. New: The function Particles::ParticleHandler::add_global_particles() now takes another optional argument, that allows one to set ids arbitrarily. Moreover, now the numbering of the ids is correct also if we call the method more than one time. Newly added particles, if ids are not specified, now correctly get the first available ids. Added a new version of Particles::ParticleHandler::add_global_particles() that takes a vector of Particles::Particle objects instead of just their positions. This can be used in conjunction with the signal Particles::ParticleHandler::Signals::particle_lost() to reinsert Particles::Particle objects that went out of the locally owned and ghost cells.
    (Luca Heltai, 2020/06/11)

  24. Fixed: The AffineConstraints class had a bug where, if deal.II was compiled without threading, the class used a global variable. If a user program used threads nonetheless, this global variable led to race conditions. This is now fixed.
    (Wolfgang Bangerth, 2020/06/11)

  25. Fixed: Fix a bug where CUDAWrappers::MatrixFree::cell_loop() would set the destination vector to zero if the partitioner of the MatrixFree object was different from the partitioner of the source or destination vector.
    (Bruno Turcksin, 2020/06/10)

  26. New: Applying user constraints before prolongation in MGTransferPrebuilt.
    (Julian Roth and Conrad Clevenger, 2020/06/05)

  27. New: FEEvaluation::evaluate(), FEEvaluation::integrate(), FEFaceEvaluation::evaluate() and FEFaceEvaluation::integrate() now take an argument of type EvaluationFlags::EvaluationFlags to determine which of the values, gradients or hessians should be evaluated to quadrature points or integrated, allowing much more expressive programs than the previous list of bools. The evaluation flags can be combined with operator|, similarly to UpdateFlags for FEValues.
    (Timo Heister, 2020/06/05)

  28. Changed: The vertices in CellData are now stored in form of a std::vector instead of C-style array.
    (Peter Munch, 2020/05/31)

  29. Improved: The efficiency of the assembly of step-62 has been improved and now it is 7 times faster.
    (Daniel Garcia-Sanchez, 2020/05/31)

  30. Fixed: Fix a bug where only one CUDAWrappers::MatrixFree object was valid at a given time. There is now a variable CUDAWrappers::mf_n_concurrent_objects in base/cuda_size.h that controls the maximum number of concurrent objects. The default value is five.
    (Bruno Turcksin, 2020/05/29)

  31. Improved: step-28 now uses tasks instead of threads.
    (David Wells, 2020/05/28)

  32. New: The class Particles::DataOut can now output particle properties as scalars, vectors, or tensors, depending on the arguments handed over to the Particles::DataOut::build_patches() function.
    (Rene Gassmoeller, 2020/05/27)

  33. New: When executing a task on a separate thread, if that task ends with throwing an exception instead of returing a value, then this exception will be obtained when you wait for the task using Threads::Task::join() or Threads::Task::return_value().
    (Wolfgang Bangerth, 2020/05/27)

  34. New: GridTools::Cache::get_locally_owned_cell_bounding_boxes_rtree() extracts a tree of bounding boxes covering the locally owned cells of a triangulation. This can be used in conjunction with GridTools::Cache::get_covering_rtree() to make approximate geometrical queries on who owns what spatial region.
    (Luca Heltai, 2020/05/26)

  35. New: pack_rtree_of_indices() and IndexableGetterFromIndices allow to construct an RTree object that stores indices to existing containers of indexable objects.
    (Luca Heltai, 2020/05/24)

  36. New: The class ParticleHandler now provides a signal 'signals.particle_lost' that is triggered whenever a particles can not be associated with a cell while calling its function sort_particles_into_subdomains_and_cells().
    (Rene Gassmoeller, 2020/05/25)

  37. Bugfix: hp::Refinement::choose_p_over_h() now works in parallel.
    (Marc Fehling, 2020/05/22)

  38. New: There is now a second overload for Particles::ParticleAccessor::set_properties() that takes an ArrayView as argument.
    (Wolfgang Bangerth, 2020/05/22)

  39. Removed: All headers under base/std_cxx11/ have been removed.
    (David Wells, 2020/05/21)

  40. Changed: In many other classes that are templated on dim and spacedim, the second template argument spacedim had a default value equal to dim. Particles::DataOut did not, but now does.
    (Wolfgang Bangerth, 2020/05/21)

  41. New: A new BoundingBoxDataOut class is available, to output a collection of objects that can be converted to BoundingBox objects in graphical format.
    (Luca Heltai, 2020/05/19)

  42. List rotated: The list of minor changes is now empty.
    (Matthias Maier, 2020/05/12)