Reference documentation for deal.II version Git 0ec6fa4 2017-05-22 12:08:17 +0200
Changes after Version 8.5.0

This is the list of changes made after the release of deal.II version 8.5.0. 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. Changed: The deprecated function SparsityTools::reorder_Cuthill_McKee() acting on a SparsityPattern object has been removed. Use the one acting on a DynamicSparsityPattern instead.
    (Daniel Arndt, 2017/05/15)

  2. Changed: The deprecated functions BlockSparseMatrixEZ::n_rows() and BlockSparseMatrixEZ::n_cols() have been removed. Use BlockSparseMatrixEZ::m() and BlockSparseMatrixEZ::n() instead.
    (Daniel Arndt, 2017/05/14)

  3. Changed: The deprecated function Utilities::System::job_supports_mpi() has been removed. Use Utilities::MPI::job_supports_mpi() instead.
    (Daniel Arndt, 2017/05/14)

  4. Removed: The deprecated serial PETSc vector classes have been removed.
    (David Wells, 2017/05/06)

  5. Changed: The deprecated member functions in the classes TrilinosWrappers::BlockVector, TrilinosWrappers::MPI::BlockVector, TrilinosWrappers::Vector and TrilinosWrappers::MPI::Vector have been removed.
    (Daniel Arndt, 2017/05/05)

  6. Changed: The deprecated version of Manifold::get_new_point() that took an argument of type Quadrature has been removed. Use the other variant of that function instead. The same has been done to all implementations of that interface in derived classes.
    (Wolfgang Bangerth, 2017/05/05)

  7. Changed: The deprecated typedef FEFieldFunction::ExcPointNotAvailableHere has been removed. Use VectorTools::ExcPointNotAvailableHere instead.
    (Wolfgang Bangerth, 2017/05/04)

  8. Changed: The deprecated variant of GridTools::get_face_connectivity_of_cells() has been removed. Use the other variant instead.
    (Wolfgang Bangerth, 2017/05/04)

  9. Changed: The deprecated constructors of MappingQEulerian and MappingQ1Eulerian have been removed. Use the other constructor of each class instead.
    (Wolfgang Bangerth, 2017/05/04)

  10. Changed: The deprecated function FEValuesBase::transform() has been removed. It only forwarded the call to the Mapping object used by the FEValuesBase object. Use the corresponding function of the mapping instead.
    (Wolfgang Bangerth, 2017/05/04)

  11. Changed: The deprecated member variables supports_distributed_data that was present in all vector classes has been removed. If you needed this functionality, use the type trait is_serial_vector instead.
    (Wolfgang Bangerth, 2017/04/30)

  12. Changed: The deprecated functions DoFHandler::get_tria() and hp::DoFHandler::get_tria() have been removed. Use DoFHandler::get_triangulation() and hp::DoFHandler::get_triangulation() instead.
    (Wolfgang Bangerth, 2017/04/25)

  13. Changed: The deprecated functions DataOutInterface::write_pvd_record() and DataOutBase::write_visit_record() have been removed. Use the corresponding functions in namespace DataOutBase.
    (Wolfgang Bangerth, 2017/04/25)

  14. Changed: The deprecated function FEValuesBase::get_normal_vectors() that returned a vector of Point objects has been removed. Its replacement, FEValuesBase::get_all_normal_vectors() has now itself been deprecated, and we have created a new function FEValuesBase::get_normal_vectors() that returns a vector of Tensor<1,dim> objects. The net effect is that the function with the old name has simply gotten a new return type.
    (Wolfgang Bangerth, 2017/04/25)

  15. Removed: DataPostprocessor had member functions compute_derived_quantities_*() that had previously already been deprecated. These have now been removed.
    (Wolfgang Bangerth, 2017/04/24)

  16. Removed: The ParameterHandler::read_input() function and friends have been removed. They were already deprecated in the previous release.
    (Wolfgang Bangerth, 2017/04/21)

  17. Changed: It was previously allowed to copy one FESystem object to another via the copy constructor. There are probably few reasons to do so, but they complicated the design of data structures. Consequently, it is now no longer allowed to copy such objects.
    (Wolfgang Bangerth, 2017/04/17)

  18. Removed: The FETools::compute_node_matrix() variant that takes two arguments has been removed. It was previously already deprecated. Use the variant with just one argument instead.
    (Wolfgang Bangerth, 2017/04/16)

  19. Changed: The AssertGlobalIndexRange macro has been removed: the expansion of this macro involved an undeclared template and always generates compiler errors if used.
    (David Wells, 2017/04/13)

  20. Removed: A number of deprecated classes have been removed in favor of the new LinearOperator concept: TODO Use the LinearOperator class instead, see the module on linear operators for more details.
    (Matthias Maier, 2017/04/06)

  21. Removed: The FiniteElement::interpolate() function and all of its implementations in derived classes has been removed. It was previously already deprecated. Use FiniteElement::convert_generalized_support_point_values_to_nodal_values() instead.
    (Wolfgang Bangerth, 2017/04/05)

  22. The deprecated MPI communicator and the constructor which used it were removed from the MatrixFree::AdditionalData class.
    (Denis Davydov, 2017/03/26)

  23. Removed: The deprecated CMake flag DEAL_II_CXX11_FLAG has been removed.
    (David Wells, 2017/03/23)

  24. Changed: deal.II now requires a compiler supporting (very nearly) the entire C++11 standard. The minimal version of GCC supported is now 4.8.
    (David Wells, 2017/03/23)


Specific improvements

  1. New: Added a GridTools::regularize_corner_cells function that detects if the boundary cells of a mesh at corner positions (with dim adjacent faces on the boundary) need to be split into cells with smaller angles.
    (Luca Heltai, Martin Kronbichler, 2017/05/18)

  2. New: add a new class ConsecutiveControl which returns SolverControl::State::success if and only if a certain positive number of consecutive iterations satisfy the specified tolerance.
    (Denis Davydov, 2017/05/17)

  3. New: The vertex (and face) iterator for dimension 1 triangulations now implements the get_manifold method.
    (David Wells, 2017/05/10)

  4. New: Add support for matrix-free operator application on GPU using CUDA. Constraints (Dirichlet boundary conditions, hanging nodes, etc.) cannot be applied.
    (Bruno Turcksin and Karl Ljungkvist, 2017/05/10)

  5. New: TrilinosWrappers::MPI::BlockMatrix can now return its MPI_Comm via get_mpi_communicator() and its range and domain indices via locally_owned_range_indices() and locally_owned_domain_indices() relying on the information of the TrilinosWrappers::MPI::Matrix object it is based on.
    (Daniel Arndt, 2017/05/09)

  6. New: ConstraintMatrix::distribute_local_to_global can now also assemble to rectangular matrices where rows and columns are described by different ConstraintMatrix objects.
    (Martin Kronbichler, 2017/04/12)

  7. Changed: The PETScWrappers::MPI::Vector class always corresponds to a PETSc vector with type mpi, even when empty.
    (David Wells, 2017/03/29)

  8. New: TriaAccessor::enclosing_ball() computes and return a pair of Point and double corresponding to the center and the radius of a reasonably small enclosing ball of the TriaAccessor object.
    (Vishal Boddu, Denis Davydov 2017/04/26)

  9. Fixed: Copying Patterns::List or Patterns::Map objects previously led to memory corruption. This is now fixed.
    (Wolfgang Bangerth, 2017/04/25)

  10. New: add Point<dim,Number>::distance_square() which calculates the squared Euclidean distance.
    (Denis Davydov, 2017/04/24)

  11. New: The ParameterHandler::parse_input() function and friends now make a guarantee that if a parameter value does not match its pattern, or an associated action throws an exception, that the enclosing ParameterHandler object will be reset to the same subsection level it was in before ParameterHandler::parse_input() was called.
    (Wolfgang Bangerth, 2017/04/21)

  12. Changed: We no longer support Visual Studio 2013 because it lacks important c++11 features like constexpr. It is now possible to use MSVC 2017 in addition to MSVC 2015.
    (Timo Heister, 2017/04/20)

  13. New: The new function ParameterHandler::add_action() allows to register actions that should be performed when a parameter is read from somewhere. This allows, in particular, initializing member variables that store parameter values without having to explicitly call ParameterHandler::get(), ParameterHandler::get_integer(), or similar functions.
    (Wolfgang Bangerth, 2017/04/16)

  14. Fixed: The MeshWorker framework can also be used in case dim != spacedim.
    (Daniel Arndt, 2017/04/16)

  15. Changed: The PointValueHistory class still used the old, deprecated interface for DataPostprocessor objects in that variant of the PointValueHistory::evaluate_field() function that takes such an object. This is now fixed: it uses DataPostprocessor::evaluate_scalar_field() and DataPostprocessor::evaluate_vector_field(), like all other users of the DataPostprocessor class.
    (Wolfgang Bangerth, 2017/04/16)

  16. Fixed: FETools::extrapolate also works for BlockVector types.
    (Daniel Arndt, 2017/04/13)

  17. Fixed: When initializing a LinearAlgebra::distributed::Vector and omitting zeroing the entries, ghost entries were left undefined, leading to use of invalid memory when calling compress() without a previous zero_out_ghosts() also when the local range was completely valid. This is now fixed.
    (Martin Kronbichler, 2017/04/12)

  18. New: Augment python interface of Point: add operators to modify point, a function to compute the distance between points, and functions to compute norms.
    (Bruno Turcksin, 2017/04/11)

  19. New: There is now a function TableHandler::declare_entry() that creates a column of a table without actually putting a value into it.
    (Wolfgang Bangerth, 2017/04/11)

  20. New: There is now a function TableHandler::start_new_row() that fills all entries of the current row (if any) that hadn't been filled, and thus starts a new row of the table. interface.
    (Wolfgang Bangerth, 2017/04/09)

  21. New: The class FESystem now implements the FiniteElement::convert_generalized_support_point_values_to_nodal_values() interface.
    (Wolfgang Bangerth, 2017/04/05)

  22. New: The classes FE_Q, FE_DGQ, and FE_DGQArbitraryNodes now implement the FiniteElement::convert_generalized_support_point_values_to_nodal_values() interface.
    (Wolfgang Bangerth, 2017/04/05)

  23. New: The FEEvaluation::read_dof_values and FEEvaluation::distribute_local_to_global now use dedicate gather (AVX2, AVX-512) and scatter (AVX-512) instructions for faster vector access if those are available.
    (Martin Kronbichler, 2017/03/24)

  24. New: The tensor product kernels used by FEEvaluation have gained a faster variant for evaluating gradients derived from spectral identities. This improves performance of the Laplace operator evaluation by 10-20% in the computation-bound case.
    (Martin Kronbichler, 2017/03/24)

  25. New: DoFTools::extract_dofs_with_support_contained_within() returns a set of degrees of freedom whose support is entirely contained within the cells for which the predicate returns true.
    (Denis Davydov, 2017/03/24)

  26. New: GridTools::compute_bounding_box() computes a bounding box of a subdomain whose active cells conform to a given predicate. GridTools::compute_active_cell_layer_within_distance() computes a collection of active cells that are within a given distance from predicate subdomain. GridTools::compute_ghost_cell_layer_within_distance() computes a collection of active cells that are within a given distance from locally owned active cells.
    (Vishal Boddu, Denis Davydov 2017/03/23)

  27. Extend: The two overloaded functions GridTools::find_active_cell_around_point() now take an optional custom mask for vertices to narrow down the search for surrounding cells.
    (Vishal Boddu, 2017/03/22)