Reference documentation for deal.II version Git 6177fad8a5 2019-03-23 23:27:20 +0100
Changes after Version 9.0.1

This is the list of changes made after the release of deal.II version 9.0.1. All entries are signed with the names of the authors.

### Incompatibilities

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 "debug" and "release" targets that are created by the DEAL_II_INVOKE_AUTOPILOT() macro no longer automatically rebuild the project.
(Matthias Maier, 2019/02/05)

2. Changed: VectorSlice has been deprecated in favor of the more general ArrayView class. All public interfaces now take ArrayView arguments instead of VectorSlice arguments. Since VectorSlice now inherits from ArrayView this should be compatible with the overwhelming majority of use cases.
(David Wells, 2019/01/21)

3. Changed: The class VectorView has been removed. The suggested replacements are to either use an ArrayView, a BlockVector, or to copy the relevant subset into a Vector.
(David Wells, 2019/01/11)

4. Changed: The particle MPI datatype macro PARTICLE_INDEX_MPI_TYPE is now properly namespaced: its new name is DEAL_II_PARTICLE_INDEX_MPI_TYPE.
(David Wells, 2018/11/30)

5. Changed: Subscriptor::subscribe cannot be called with rvalue references anymore. In particular, temporary string literals cannot be used as argument. Storing string literals with the same content at the same memory location is implementation defined and cannot be relied upon. On the other hand, the subscriber strings are not compared by their memory address anymore but by their actual content.
(Daniel Arndt, 2018/11/12)

6. Changed: The constructor for Subscriptor requires providing a pointer to a boolean that can be used to signal validity of the object pointed to by the subscribing object.
(Daniel Arndt, 2018/11/02)

7. Deprecated: deal.II's NetCDF bindings have been deprecated. The present set of bindings are incompatible with recent releases of NetCDF and, at the present time, no one has volunteered to either maintain or upgrade our interface. The bindings will be removed in a future version if no one steps forward to update the bindings.
(David Wells, 2018/10/27)

8. Changed: Time is described by a real-valued scalar in Function, TensorFunction, ConstantTensorFunction and ZeroTensorFunction, i.e. all of them derive from FunctionTime with a real-valued scalar template parameter.
(Daniel Arndt, 2018/10/26)

9. Deprecated: FiniteElement::compare_for_face_domination() has been deprecated and will be replaced by the more versatile function FiniteElement::compare_for_domination().
(Marc Fehling, 2018/10/11)

10. Changed: The function previously called FECollection::find_least_face_dominating_fe() is now named FECollection::find_least_face_dominating_fe_in_collection().
(Marc Fehling, 2018/10/08)

11. Changed: Triangulation::create_triangulation() doesn't allow to set a boundary id different from numbers::internal_face_boundary_id for internal faces anymore.
(Daniel Arndt, 2018/08/07)

12. Changes: The data transfer interface of the class parallel::distributed::Triangulation now requires different kinds of callback functions. register_data_attach() now takes std::function<std::vector<char>(cell_iterator &, CellStatus)>, which returns the buffer of the packed data. notify_ready_to_unpack() requires std::function<void(const cell_iterator &, const CellStatus, const boost::iterator_range<std::vector<char>::const_iterator &>, where the last argument describes an iterator range, from which the callback function is allowed to read.
Further, the register_data_attach() function now requires a boolean argument returns_variable_size_data, which denotes if the registered pack_callback function interacts with the fixed size (=false) or variable size (=true) buffer for data transfer.
(Marc Fehling, 2018/07/20)

13. Changed: MatrixCreator::create_mass_matrix and MatrixCreator::create_boundary_mass_matrix that had mixed number type (real valued for the matrix and complex valued for vectors) have been changed to support complex number types uniformly. This implies that now all underlying number types of matrix, vectors and AffineConstraint objects have to match; mixed variants are no longer supported.
(Matthias Maier, 2018/05/25)

14. Changed: The AffineConstraints object (formerly ConstraintMatrix) gained a template parameter for the underlying storage type. In order to facilitate this change, the interface for AffineConstraints has become more strict: In particular, the AffineConstraints::distribute_local_to_global(), AffineConstraints::add_entries_local_to_global(), and other functions now require that all matrix and vector arguments have the same matching number type as the AffineConstraints object.
(Matthias Maier, 2018/05/25)

15. Changed: The OpenCASCADE Manifold classes with names ending in Boundary (i.e., NormalProjectionBoundary, DirectionalProjectionBoundary, and NormalToMeshProjectionBoundary) have been deprecated in favor of renamed classes ending in Manifold (i.e., NormalProjectionManifold, DirectionalProjectionManifold, and NormalToMeshProjectionManifold).
(David Wells, 2018/05/16)

16. Changed: The PolynomialSpace::compute_index() and PolynomialsP::directional_degree() functions used to return their information through an array that they received as a reference argument. Instead, they now return a std::array<unsigned int,dim> by value.
(Wolfgang Bangerth, 2018/05/09)

### General

1. New: A new class Differentiation::AD::VectorFunction has been added to help implement point-wise vector functions using automatic differentiation. In particular, this class is designed to compute the Jacobian of a vector function that is parameterized in terms of scalar, vector, and tensor arguments. One example of its use would be to compute the linearization of a multi-field constitutive law that is expressed in terms of some kinetic variables.
(Jean-Paul Pelteret, 2019/03/21)

2. New: A new class Differentiation::AD::ScalarFunction has been added to help implement point-wise scalar functions using automatic differentiation. In particular, this class is designed to compute the gradient and Hessian of a scalar function that is parameterized in terms of scalar, vector, and tensor arguments. One example of its use would be to compute the derivatives of a multi-field constitutive law that is expressed in terms of an energy function.
(Jean-Paul Pelteret, 2019/02/20)

3. Improved: The preconditioner and solver setup in step-20 has been rewritten to highlight the new LinearOperator and PackagedOperation classes.
(Matthias Maier, 2019/02/08)

4. New: Support for Ginkgo, a high-performance numerical linear algebra library has been added. Ginkgo provides advanced highly optimized linear solvers, matrix formats and an abstraction to easily create linear operators on both the cpu and the gpu. The deal.II's Ginkgo interface can currently be used to solve linear systems using Krylov solvers with the cuda and OpenMP paradigms.
(Ginkgo developers, 2019/01/30)

5. Changed: Class hp::DoFHandler now transfers the active_fe_index of each cell automatically when refining/coarsening a Triangulation, parallel::shared::Triangulation, or parallel::distributed::Triangulation. However, serialization of a parallel::distributed::Triangulation still requires a user to explicitly call the functions hp::DoFHandler::prepare_for_serialization_of_active_fe_indices() and hp::DoFHandler::deserialize_active_fe_indices().
(Marc Fehling, 2019/01/27)

6. New: A new HDF5 interface has been added. The Hierarchical Data Format (HDF) is a cross platform and a high I/O performance format designed to store large amounts of data. It supports serial and MPI I/O access. The deal.II's HDF5 interface can be used to write and read data, such the results of a simulation, in a HDF5 file.
(Daniel Garcia-Sanchez, 2019/01/09)

7. Changed: hp::DoFHandler now automatically sets active_fe_indices on cells that will be refined and coarsened whenever a Triangulation or parallel::shared::Triangulation is used. Upon refinement, the active_fe_index will be passed on to the children. For coarsening, the parent's active_fe_index will be determined from its former children using the FiniteElementDomination logic.
(Marc Fehling, 2018/10/15)

8. New: Function FiniteElement::compare_for_domination() inspects two FiniteElement objects upon FiniteElementDomination, and uses a codim parameter that determines in which subspace we actually compare them.
(Marc Fehling, 2018/10/11)

9. New: A new class Differentiation::AD::ResidualLinearization has been added to help compute the linearization of a residual vector defined on the level of a cell (a finite element residual), or for local nonlinear equations.
(Jean-Paul Pelteret, 2018/09/30)

10. Changed: hp::DoFHandler::distribute_dofs() called on parallel::distributed::Triangulation objects now assigns exactly one index for each degree of freedom located on interfaces with ghost cells. Previously, those degrees of freedom were assigned indices by each adjacent subdomain.
(Marc Fehling, 2018/08/31)

11. New: A new class Differentiation::AD::EnergyFunctional has been added to help implement (incremental) variational formulations using automatic differentiation. In particular, this class is designed to compute the finite element residuals and their linearizations.
(Jean-Paul Pelteret, 2018/08/27)

12. New: The parallel::distributed::SolutionTransfer class is now capable of transferring data that has been associated with a hp::DoFHandler object. See the class documentation of the former on how to use this new functionality.
(Marc Fehling, 2018/08/15)

13. Improved: GridGenerator::extrude_triangulation can now optionally extrude manifold ids.
(David Wells, 2018/08/11)

14. New: FE_BernardiRaugel is the implementation of an element developed by Christine Bernardi and Genevieve Raugel in the 1985 Mathematics of Computation paper. The Bernardi-Raugel element is an enrichment of the P1-P0 element for Stokes problems by the addition of edge-based quadratic bubble functions. The original description is for simplicial meshes, but this implementation is for quadrilateral and hexahedral meshes. The BR1-P0 pair is LBB stable for Stokes problems. Due to the edge-based bubble functions, features such as hanging nodes are not supported.
(Graham Harper, 07/09/2018)

15. New: A new function GridGenerator::channel_with_cylinder has been added. This function generates a grid corresponding to the classic flow past a cylinder test problem, and uses manifolds to blend between the description of the cylinder and the Cartesian bulk geometry.
(2018/07/04, David Wells)

16. Changed: The ConstraintMatrix class has been renamed to AffineConstraints. Further, AffineConstraints gained a template parameter for the underlying storage type. This in particular enables the definition of complex-valued constraints (for example, complex-valued Dirichlet boundary conditions, or periodic boundary conditions with an additional phase shift).
(Matthias Maier, Daniel Arndt, David Wells, 2018/05/31)

17. New: The introduction to step-6 has been completely rewritten. It previously mentioned only the bare minimum about what this important tutorial program actually does. It now gives a much broader overview of why we use adaptive meshes and how this is achieved in practice.
(Wolfgang Bangerth, 2018/05/25)

18. Changed: clang-format replaces astyle as source code formatting tool.
(Matthias Maier, Daniel Arndt, 2018/05/24)

19. New: FE_NedelecSZ is a new H(curl)-conforming element which overcomes the sign conflict problem which can be encountered for Nedelec elements on hexahedral meshes. This is an implementation of the method described in the PhD thesis of Sabine Zaglmayr and should be considered over the FE_Nedelec element where meshes with non-standard orientation are used. Note that not all functionality (e.g. Hessians), has been implemented for this element.
(Ross Kynch, 2018/04/28)

20. New: The new class ColorEnriched::Helper constructs an hp::FECollection, a collection of finite element objects used by hp::DoFHandler, in a domain with multiple, possibly overlapping, sub-domains with individual enrichment functions. Note that the overlapping regions may have multiple enrichment functions associated with them. This is implemented using a general constructor of FE_Enriched which allows different enrichment functions.
(Nivesh Dommaraju, Denis Davydov, 2018/04/20)

### Specific improvements

1. New: If present, we will detect the LLD linker ld.lld at configuration time.
(Timo Heister, 2019/03/11)

2. New: FEValuesExtractor classes now have a new method get_name() that returns a unique string identifier for each extractor.
(Luca Heltai, 2019/03/19)

3. New: Add Utilities::MPI::create_ascending_partitioning() to create a one-to-one ascending partitioning from locally owned sizes.
(Denis Davydov, 2019/03/19)

4. New: interpolate_to_different_mesh works now with hp::DoFHandler objects
(Sebastian Stark, 2019/03/16)

5. Improved: The apply_all_indicators_to_manifold flag in GridIn::read_ucd() lets the indicators be used for cells as manifold id as well.
(Daniel Arndt, 2019/03/16)

6. Fixed: DoFHandler::renumber_dofs() called on levels would previously run into an assertion on distributed triangulation when used with continuous elements. This is now fixed.
(Martin Kronbichler, 2019/03/08)

7. New: Added a new function Utilities::type_to_string() to demangle type names.
(Luca Heltai, 2019/03/07)

8. Fixed: LinearAlgebra::CUDAWrappers::Vector::add_and_dot was giving a wrong result if the size of vector was greater than 4096.
(Bruno Turcksin, 2018/03/06)

9. Fixed: EllipiticalManifold::push_forward_gradient did previously not take the rotation into account. This is now fixed.
(Daniel Appel, Martin Kronbichler, 2019/03/05)

10. Fixed: CylindricalManifold::get_new_point would previously return wrong results if the resulting point is on the axis, and the cylinder axis does not pass through the origin.
(Daniel Appel, Martin Kronbichler, 2019/03/05)

11. Fixed: the DoFTools::make_sparsity_pattern variant that takes, as arguments, two different DoFHandler objects now works correctly with parallel::shared::Triangulation and parallel::distributed::Triangulation.
(David Wells, 2019/03/04)

12. New: Signals Triangulation::pre_distributed_repartition and Triangulation::post_distributed_repartition which will be triggered in parallel::distributed::Triangulation::repartition().
(Marc Fehling, 2019/03/03)

13. Fixed: CellAccessor::material_id interfered with the manifold object for refining the mesh in case its dimension was less than the space dimension.
(Daniel Arndt, Sebastian Stark, 2019/03/02)

14. New: Hierarchy of finite elements in hp::FECollection objects. Get succeeding and preceding indices via hp::FECollection::next_in_hierarchy() and hp::FECollection::prev_in_hierarchy(). By default, a hierarchy corresponding to indices is established. Hierarchy can be overridden via hp::FECollection::set_hierarchy().
(Marc Fehling, 2019/02/28)

15. Fixed: Tensor-valued pvtu output.
(Daniel Jodlbauer, 2019/02/27)

16. New: Introduced flags for p-refinement and p-coarsening that can be accessed and changed via member functions of the DoFCellAccessor class, namely DoFCellAccessor::p_refine_flag_set, DoFCellAccessor::set_p_refine_flag, DoFCellAccessor::clear_p_refine_flag, and DoFCellAccessor::p_coarsen_flag_set, DoFCellAccessor::set_p_coarsen_flag, DoFCellAccessor::clear_p_coarsen_flag.
(Marc Fehling, 2019/02/24)

17. Fixed: FEFaceEvaluation::evaluate() and FEFaceEvaluation::integrate() would provide wrong results for faces in non-standard orientation layout, namely with orientation=true, face_flip={false,true}, face_rotation=true. This is now fixed.
(Martin Kronbichler, 2019/02/21)

18. New: Function DoFRenumbering::random(dof_handler, level) which allows for a random renumbering of degrees of freedom on a level in a mutilevel hierarchy.

19. Fixed: Handle the case properly that a local matrix with all diagonal elements equal to zero is distributed with AffineConstraints::distribute_local_to_global() to the global matrix while constraints apply.
(Sebastian Stark, 2019/02/13)

20. Fixed: inverse_operator() now handles a (composite) LinearOperator, the temporary PreconditionIdentity(), or no argument as preconditioner argument correctly.
(Matthias Maier, 2019/02/13)

21. New: Function MGConstrainedDoFs::make_no_normal_flux_constraints which adds functionality for no normal flux constraints during geometric mutigrid computations. Currently, this function is limited to meshes with no normal flux boundaries normal to the x-, y-, or z-axis.

22. New: Member functions DoFHandler::set_fe() and hp::DoFHandler::set_fe() that will register a finite element object without enumerating all degrees of freedom. In the hp case, the active_fe_indices will be initialized and communicated amongst all processors, additionally.
(Marc Fehling, 2019/02/10)

23. New: make_const_array_view() creates a constant view from a non-const object.
(Daniel Arndt, 2019/02/09)

24. Fixed: PreconditionChebyshev would previously run one iteration more than requested, i.e., perform degree+1 matrix-vector products rather than degree which is the convention in literature. This is now fixed. Note that the quality of PreconditionChebyshev is obviously slightly reduced by this change, and some solvers might need more outer iterations due to a ligher Chebyshev iteration.
(Martin Kronbichler, 2019/02/08)

25. New: Add default constructor to SparsityPatternIterators::Accessor().
(Denis Davydov, 2019/02/08)

26. Improved: The iteration of PreconditionChebyshev has been overhauled to reduce the number of vectors written per iteration to one, leading to slightly faster execution of the vector updates.
(Martin Kronbichler, 2019/02/07)

27. Improved: The FEEvaluation::evaluate() and FEEvaluation::integrate() routines would previously unconditionally use an evaluation routine with a transformation to a collocation basis and subsequent collocation derivative for n_q_points_1d > fe_degree because it is faster for the usual case of n_q_points_1d close to the polynomial degree. Now, we switch back to the standard evaluation if n_q_points_1d > 3 * (fe_degree+1) / 2 where that variant is faster.
(Martin Kronbichler, 2019/02/06)

28. Improved: Use binary search in BlockIndices::global_to_local() to improve performance for large number of blocks.
(Denis Davydov, 2019/02/06)

29. Fixed: MGLevelGlobalTransfer::copy_to_mg would initialize the level vectors without ghosts. When combined with Chebyshev smoother and a DiagonalMatrix as well as specific matrix-free loops, this could lead to ghosted vectors in places where they were not supposed to be ghosted, leading to exceptions. This is now fixed.
(Martin Kronbichler, 2019/02/05)

30. Documented: The minimal supported MPI version is MPI-2.0.
(Daniel Arndt, 2019/02/02)

31. New: added constructor to the class Point, which converts a boost::geometry::model::point to a Point
(Giovanni Alzetta, Daniel Arndt, Wolfgang Bangerth, 2019/01/31)

32. Changed: Function GridGenerator::general_cell() can now generate a cell of dimension dim inside a space of dimension spacedim with dim <= spacedim
(Giovanni Alzetta, 2019/01/30)

33. New: Add internal::MatrixFreeFunctions::DoFInfo::get_dof_indices_on_cell_batch() to return locally owned DoFs used by matrix-free framework on a given cell.
(Denis Davydov, 2019/01/30)

34. New: Add default constructor to DynamicSparsityPatternIterators::Accessor() and DynamicSparsityPatternIterators::Iterator() to be able to store such objects in STL containers.
(Denis Davydov, 2019/01/18)

35. New: Indentation script deal.II/contrib/utilities/indent.py is added to format code in external projects that use deal.II
(Vishal Boddu, 2019/01/13)

36. New: GridTools::Cache::get_covering_rtree() automatically stores and generates a rtree of bounding boxes covering the whole triangulation. In a distributed setting it can identify which processes have locally owned cells in any part of the mesh.
(Giovanni Alzetta, 2019/01/11)

37. Fixed: Tensor indices of set_k_vectors() in FESeries::Fourier. Coefficients will now be distributed in every coordinate direction correctly.
(Marc Fehling, 2019/01/08)

38. New: LinearAlgebra::distributed::Vector with CUDA memory space uses CUDA-aware MPI in case deal.II is configured with DEAL_II_WITH_CUDA_AWARE_MPI=ON.
(Daniel Arndt, Bruno Turcksin, 2019/01/04)

39. New: Add LAPACKFullMatrix::apply_givens_rotation() and Vector::apply_givens_rotation() to apply a Givens rotation matrix.
(Denis Davydov, 2018/12/30)

40. New: Add SolverBFGS to minimize a function using the limited memory BFGS approach.
(Denis Davydov, 2018/12/26)

41. Replaced: TrilinosWrappers::MPI::Vector::vector_partitioner() has been deprecated in favor of TrilinosWrappers::MPI::Vector::trilinos_partitioner(). The latter one returns an Epetra_BlockMap instead of an Epetra_Map avoiding an invalid downcast. The IndexSet constructor taking an Epetra_Map object has been replaced to accept a base class object of type Epetra_BlockMap instead.
(Daniel Arndt, 2018/12/22)

42. Fixed: Reinit blockvector only when necessary in MGTransferBlockMatrixFree::copy_to_mg.
(Daniel Jodlbauer, 2018/12/19)

43. New: Class parallel::distributed::CellDataTransfer has been introduced to transfer cell by cell data across distributed meshes in case of refinement/serialization.
(Marc Fehling, 2018/12/18)

44. New: Function GridTools::build_global_description_tree which exchanges a given vector of bounding boxes on all processes and uses the result to build an Rtree with packing algorithm.
(Giovanni Alzetta, 2018/12/17)

45. New: Add helpers functions to use varying coefficients when using CUDAWrappers::MatrixFree.
(Bruno Turcksin, 2018/12/10)

46. New: GridTools::find_active_cell_around_point now allows you to specify an (optional) rtree, constructed from the used vertices of the triangulation. Once you have built a tree, querying for a nearest vertex is an O(log(N)) operation, where N is the number of used vertices. You can ask a GridTools::Cache object to return a tree that is compatible with the new function signature. The previous version of this function had a cost that was O(N^2) when the point was not in the cell_hint object.
(Luca Heltai, 2018/12/05)

47. New: Add LAPACKFullMatrix::transpose() to perform out-of-place transposition.
(Denis Davydov, 2018/12/05)

48. New: Add DEAL_II_LAPACK_WITH_MKL macro which will be set if Intel MKL is being used.
(Denis Davydov, 2018/12/05)

49. Changed: FESeries::Fourier::calculate and FESeries::Legendre::calculate accept both Vector<float> and Vector<double> as input parameters for local dof values.
(Marc Fehling, 2018/12/04)

50. New: Added entries to GridTools::Cache to build a vertices RTree, and a bounding boxes RTree.
(Luca Heltai, 2018/12/03)

51. New: Class EllipticalManifold<dim,spacedim> derived from ChartManifold, valid only for dim=2 and spacedim=2. It maps points from a system of cartesian coordinates to a system of elliptical coordinates and vice-versa.
(Stefano Dominici, 2018/11/30)

52. New: A new header deal.II/base/undefine_macros.h has been added. This header, as the name suggests, undefines all deal.II macros that are not prefixed with either DEAL or deal.
(David Wells, 2018/11/30)

53. Fixed: The MatrixFree::initialize() function would sometimes run into an assertion when ghost faces occur on subdomain interfaces. This is now fixed.
(Martin Kronbichler, 2018/11/28)

54. New: Triangulation::n_faces, Triangulation::n_active_faces, and Triangulation::n_raw_faces now work also in one dimension.
(Luca Heltai, 2018/11/22)

55. New: Add support for MPI when using CUDAWrappers::MatrixFree. This only works with LinearAlgebra::distributed::Vector<Number, MemorySpace::CUDA>
(Bruno Turcksin, 2018/11/21)

56. Fixed: The TriaAccessor<0,dim,spacedim> and TriaAccessor<0,1,spacedim> classes were missing member functions get_triangulation() and operator<(). This prevented these objects from being stored in std::maps, among other issues.
(Wolfgang Bangerth, Luca Heltai, 2018/11/20)

57. Fix bug with FEFaceValues initialization when used with the FE_NedelecSZ
(Alexander Grayver, 2018/11/19)

58. New: A new function GridTools::get_coarse_mesh_description has been added. This function extracts the vertices, CellData, and SubCellData objects from a Triangulation (i.e., it is the inverse of Triangulation::create_triangulation).
(David Wells, 2018/11/11)

59. Fixed: The operation FEEvaluation::read_dof_values performed invalid array accesses with AVX512 vectorization in rare circumstances of particular 1d meshes. This is now fixed.
(Martin Kronbichler, 2018/11/10)

60. Deprecated: The binary Tecplot output using the DataOutBase::tecplot_binary format has been deprecated.
(Daniel Arndt, 2018/11/10)

61. New: GridOut::write_vtk and GridIn::read_vtk are now compatible with each other, and can be used to save and restore a Triangulation with all manifold_ids and boundary_ids correctly saved. This is now the only format that supports both boundary_id and manifold_id both in reading and writing.
(Luca Heltai, 2018/11/07)

62. Improved: The class ArrayView checks the memory location of the data it presents and gained a template parameter indicating whether the data is stored in CPU or CUDA memory.
(Daniel Arndt, 2018/11/04)

63. Improved: GridIn::read_msh also support version 4 of MSH file format extracting the same information as for the older versions.
(Daniel Arndt, 2018/11/04)

64. Fixed: The grid generated by GridGenerator::truncated_cone now uses more level 0 cells to improve conditioning of cells when they are refined.
(David Wells, 2018/11/03)

65. Changed: The class Subscriptor and SmartPointer check for dangling pointers and use-after-move. The destructor of Subscriptor doesn't signal an error when there is still an object subscribed to it. Instead, validity is checked when dereferencing the SmartPointer object.
(Daniel Arndt, 2018/11/02)

66. Fixed: SparsityPattern::begin() and DynamicSparsityPattern::begin() resulted in an invalid iterator if the sparsity pattern was actually empty.
(Wolfgang Bangerth, Denis Davydov, 2018/11/01)

67. New: Add Functions::IncrementalFunction which returns the difference in values of a given function at two time steps.
(Denis Davydov, Jean-Paul Pelteret, 2018/10/05)

68. New: Classes FESeries::Fourier and FESeries::Legendre now take two template arguments dim and spacedim, which allow them to use corresponding hp::FECollection objects.
(Marc Fehling, 2018/10/17)

69. Fixed: The project_boundary_values_div_conforming() function now works correctly with parallel::distributed::Triangulation.
(Jonathan Matthews, 2018/10/13)

70. New: Functions DoFAccessor::get_active_fe_indices() and internal::DoFAccessorImplementation::get_active_vertex_fe_indices() return all active finite element indices on the corresponding object.
(Marc Fehling, 2018/10/08)

71. New: Added RTree class and pack_rtree() function to create a boost::gemoetry::index::rtree from containers and/or iterators of BoundingBox, Point, or Segment objects.
(Luca Heltai, 2018/10/06)

72. The computation of normal vectors on very small cells could fail. This is now fixed.
(Timo Heister, 2018/10/05)

73. The class VectorizedArray has gained support for the intrinsics of Altivec of IBM Power processors.
(Martin Kronbichler, Bruno Turcksin, Sambit Das, 2018/10/05)

74. New: Member function hp::FECollection::find_face_dominating_fe_in_subset() returns the index of the most dominating finite element out of a given set of indices.
(Marc Fehling, 2018/10/05)

75. New: Add inverse_Hilbert_space_filling_curve() to map points in dim-dimensional space to line index of the Hilbert space filling curve.
(Denis Davydov, 2018/10/05)

(Wolfgang Bangerth, 2018/10/05)

77. New: There is now a constructor of hp::QCollection that, like the existing one of hp::FECollection, takes a variable number of quadrature objects and creates a collection from it.
(Wolfgang Bangerth, 2018/10/04)

78. New: Class parallel::distributed::CellWeights allows to set the weight of a cell depending on the number of degrees of freedom associated with it. This guarantees an improved load balancing in case a hp::DoFHandler is used on a p::d::Triangulation.
(Marc Fehling, 2018/10/01)

79. Removed: The Threads::DummyMutex, Threads::DummyConditionVariable, and Threads::DummyThreadBarrier classes have been removed. These were only used if deal.II was compiled without thread support, in which case certain functionality from the TBB was not available. But the implementations of the underlying functionality is now unconditionally available via the C++11 standard library, and so we don't need the dummy implementations any more.
(Wolfgang Bangerth, 2018/09/27)

80. Deprecated: The Threads::PosixThreadBarrier class and the corresponding Threads::Barrier using declaration are deprecated. The functionality implemented by these classes is easily replaced by C++11 functionality.
(Wolfgang Bangerth, 2018/09/27)

81. Deprecated: The Threads::ConditionVariable class is now deprecated. Use std::condition_variable instead.
(Wolfgang Bangerth, 2018/09/27)

82. Deprecated: The Threads::Mutex class is now derived from std::mutex. As a consequence, the Threads::Mutex::ScopedLock class is now no longer necessary and is deprecated in favor of std::lock_guard or any of the other similar classes provided by C++11 and later. Similarly, the Threads::Mutex::acquire() and Threads::Mutex::release() functions are deprecated in favor of the corresponding functions in the std::mutex base class.
(Wolfgang Bangerth, 2018/09/27)

83. New: Support for complex values can be controlled using the CMake flag DEAL_II_WITH_COMPLEX_VALUES.
(Daniel Arndt, 2019/09/26)

84. Fixed: The GridIn::read_abaqus() function now correctly reads in grids designed for the co-dimension 1 case (specifically with dim == 2 and spacedim == 3).
(Yuxiang Wang, Jean-Paul Pelteret, 2018/09/20)

85. Fixed: MatrixFree::loop() would not zero a vector if all degrees of freedom are constrained. This is now fixed.
(Martin Kronbichler, 2018/09/20)

86. New: Add optional flag to ParameterHandler to skip undefined sections and parameters.
(Denis Davydov, 2018/09/20)

87. New: extend Patterns::Tools::Convert to work with ComponentMask and std::unique_ptr<FunctionParser>.
(Denis Davydov, 2018/09/19)

88. New: SolverSelector gained a new constructor initializing the object completely.
(Daniel Arndt, 2018/09/17)

89. New: added the function TrilinosWrappers::MPI::Vector::import() to get data from a ReadWriteVector.
(Timo Heister, 2018/09/16)

90. New: Add line minimization functions.
(Denis Davydov, 2018/09/13)

91. Fixed: make test now runs in parallel automatically (i.e., it uses a CMake command to determine the number of cores available). Since make test just immediately invokes ctest as a subprocess, it is currently not possible to link the number of globally available make processes with the number of concurrently run tests; i.e., the number of cores make test uses is not changeable by users.
(David Wells, 2018/09/13)

92. Fixed: VectorTools::project_boundary_values_div_conforming works correctly in case the DoFHandler object contains more than one FE_RaviartThomas element.
(Daniel Arndt, 2018/09/13)

93. New: The function DoFRenumbering::hierarchical() is now also available for hp::DoFHandler objects, as well as for DoFHandlers build on triangulations with dim != spacedim.
(Wolfgang Bangerth, 2018/09/06)

94. Added: New function Utilities::MPI::compute_n_point_to_point_communications() is implemented to be used for computing number of processes in an MPI universe to expect communication from.
(Eldar Khattatov, 2018/09/04)

95. New: Utilities::CUDA::allocate_device_data() and Utilities::CUDA::delete_device_data() help to manage data on CUDA devices using std::unique_ptr.
(Daniel Arndt, 2018/09/01)

(Dustin Kumor, 2018/08/24)

97. Fixed: TrilinosWrappers::SparseMatrix::mmult() sometimes gave the wrong result in parallel.
(Damien Lebrun-Grandie and Bruno Turcksin, 2018/08/22)

98. Fixed: The function Particles::ParticleAccessor::serialize() was declared but not implemented. This is now fixed.
(Wolfgang Bangerth, 2018/08/21)

99. New: Add a mask argument to filter out some vector lanes in FEEvaluationBase This is required for local time stepping using the MatrixFree framework, because some cells of batches must be excluded from read/write operations when operating on different time steps compared to their neighbor cells.
(Svenja Schoeder, 2018/08/21)

100. New: Table and FullMatrix now have complete (both mutable and const) random-access iterators.
(David Wells, 2018/08/20)

101. New: CUDAWrappers::PreconditionILU and CUDAWrappers::PreconditionIC can be used for preconditioning CUDAWrappers::SparseMatrix objects.
(Daniel Arndt, 2018/08/20)

102. New: There are nothrow versions of AssertCUDA and AssertCusparse, namely AssertNothrowCUDA and AssertNothrowCusparse.
(Daniel Arndt, 2018/08/20)

103. New: There are new methods CUDAWrappers::SparseMatrix::print() and CUDAWrappers::SparseMatrix::print_formatted(). Additionally, CUDAWrappers::SparseMatrix gained a move assignment operator.
(Daniel Arndt, 2018/08/20)

104. Fixed: Throwing an exception in Assert doesn't slice objects derived from ExceptionBase anymore.
(Daniel Arndt, 2018/08/17)

105. New: There is LinearAlgebra::CUDAWrappers::Vector::norm_sqr() for computing the squared l2-norm and LinearAlgebra::CUDAWrappers::Vector::swap() for swapping two vectors.
(Daniel Arndt, 2018/08/17)

106. Fixed: CUDAWrappers::Vector performs now a deep copy instead of a shallow copy in its copy assignment operator.
(Daniel Arndt, 2018/08/16)

107. Fixed: MGConstrainedDofs::initialize(...) now handles refinement edges across periodic boundaries correctly.
(Alexander Knieps, 2018/08/13)

108. Fixed: Bug using ScaLAPACKMatrix::save() and load() for configurations with pHDF5 in combination with serial HDF5 matrices from user code.
(Benjamin Brands, 2018/08/10)

109. Improved: Triangulation::prepare_coarsening_and_refinement also takes care of limiting the level difference across periodic boundary faces.
(Daniel Arndt, Stefan Kaessmair, 2018/08/09)

110. New: The new function MatrixFreeOperators::CellwiseInverseMassMatrix::transform_from_q_points_to_basis() enables to change the basis from a representation in quadrature points into the original basis of FEEvaluation.
(Martin Kronbichler, 2018/08/06)

111. Improved: FEEvaluation and FEFaceEvaluation have gained support for renumbering of degrees of freedom for fully discontinuous finite element spaces which can improve performance by around 10 percent.
(Martin Kronbichler, 2018/08/06)

112. New: Add support for constraint when using matrix-free on GPU. Note you cannot set constraints in 2D if the degree of the finite element is even.
(Bruno Turcksin, 2018/08/06)

113. New: A convenience function Triangulation::active_face_iterators() (which is like Triangulation::active_cell_iterators(), but for faces) has been added.
(David Wells, 2018/08/05)

114. Fixed: Minor issues when using matrix-free cell categorization with multi-grid operators.
(Denis Davydov, 2018/08/02)

115. Fixed: The import function for LinearAlgebra::distributed::Vector would fail if the IndexSet of the ReadWriteVector has no locally owned element
(Bruno Turcksin, 2018/08/02)

116. New: GridGenerator::merge_triangulations can merge multiple Triangulation objects at once.
(Daniel Arndt, 2018/08/01)

117. New: LinearAlgebra::distributed::Vector has an extra template parameter MemorySpace. This new template parameter can be used if the data should be allocated on the host or on the device.
(Bruno Turcksin, 2018/08/01)

118. Added support for high-order VTU output by using newly introduced Lagrange VTK cells.
(Alexander Grayver, 2018/08/01)

119. Added support for high-order VTK output by using newly introduced Lagrange VTK cells.
(Alexander Grayver, 2018/07/27)

120. New: Add FiniteSizeHistory class to store a finite-size history of objects.
(Denis Davydov, 2018/07/26)

121. Deprecate project_boundary_values_curl_conforming in favor of project_boundary_values_curl_conforming_l2. The former has a number of known limitations and bugs.
(Alexander Grayver, 2018/07/26)

(Luca Heltai, 2018/07/24)

(Luca Heltai, Bruno Turcksin, 2018/07/22)

124. New: Add new constructor type for FunctionParser class.
(Luca Heltai, 2018/07/21)

125. Fixed: hp::DoFHandler::distribute_dofs() now works on parallel::distributed::Triangulation<3> objects that contain artificial cells.
(Marc Fehling, 2018/07/20)

126. Changed: The Subscriptor class has been made thread-safe, and its behavior in debug and release modes are now identical. Although this makes subscription and un-subscription slightly more expensive in release mode, debugging should be easier overall.
(Jean-Paul Pelteret, 2018/07/15)

127. New: A new function GridGenerator::concentric_hyper_shells has been added. This function generates a grid comprised of shells of varying widths, where the shells near the center are much thinner than those near the outer boundary.
(David Wells, 2018/07/15)

128. Fixed: Iterating over the entries of a TrilinosWrappers::SparsityPattern object in parallel and after calling TrilinosWrappers::SparsityPattern::compress() works now.
(Mathias Anselmann, Daniel Arndt, 2018/07/11)

129. Fixed: GridTools::delete_duplicated_vertices also treats the SubCellData object correctly when renumbering the vertices.
(Daniel Arndt, 2018/07/08)

130. New: GridGenerator::merge_triangulations gained an option to copy manifold ids.
(Daniel Arndt, 2018/07/08)

131. New: Add GridGenerator::plate_with_a_hole() that generates a rectangular plate with an (offset) cylindrical hole.
(Denis Davydov, 2018/06/21)

132. Fixed: The functions FEFaceEvaluation::evaluate and FEFaceEvaluation::integrate would access invalid memory when only evaluating function values and using multiple components in 1D. This is now fixed.
(Martin Kronbichler, 2018/07/04)

133. New: The class MatrixFreeFunctions::CellwiseInverseMassMatrix can now also be used in 1D.
(Martin Kronbichler, 2018/07/04)

134. New: Add support for output of tensor-valued data in DataOut::write_vtu().
(Denis Davydov, 2018/06/21)

135. New: Extend get_vector_data_ranges() to return extra element in the tuple to represent DataComponentInterpretation. The functions were renamed to get_nonscalar_data_ranges().
(Denis Davydov, 2018/06/21)

136. Fixed: FETools::back_interpolate can be used for TrilinosWrappers::MPI::BlockVector.
(Daniel Arndt, 2018/06/20)

137. Changed: Calling GridGenerator::refine_and_coarsen_fixed_fraction() and GridGenerator::refine_and_coarsen_fixed_fraction() with values for the coarsen and refine fractions that added to 1.0 in exact arithmetic, but something slightly larger in floating point arithmetic, resulted in an error. These functions are now slightly more relaxed in that they allow arguments that add to 1.0 up to a small floating point round off error.
(Wolfgang Bangerth, 2018/06/18)

138. New: The LinearAlgebra::distributed::Vector::compress() function has gained two new combine operations VectorOperation::min and VectorOperation::max to define the entry at the owning processor as the minimum/maximum of its own value and the one coming from a ghost.
(Svenja Schoeder, 2018/06/18)

139. Fixed: TrilinosWrappers::MPI::Vector::reinit check now checks if parallel_partitioner is_ascending_and_one_to_one before calling make_trilinos_map because make_trilinos_map may be able to make a linear map if is_ascending_and_one_to_one is true.
(Joshua Hanophy, 2018/06/16)

140. Fixed: The eigenvalue approximation in SolverGMRES failed if no iterations were performed. Now, there is simply no output in this case.
(Daniel Arndt, 2018/06/15)

141. Bugfix: Fixed bugs for TrilinosWrapper::SparseMatrix::add(factor, other_matrix) and TrilinosWrapper::SparseMatrix::copy_from(other_matrix) for the case of non-contiguous rows.
(Uwe Koecher, 2018/06/14)

142. Fixed: Mismatched numbers of components between the exact solution and underlying FE in step-51.
(Pi-Yueh Chuang, 2018/06/14)

143. Bugfix: Fixed a bug where VectorDataExchange::ghosts_were_set was not set inside MatrixFree::cell_loop() for block vectors with many blocks.
(Denis Davydov, 2018/06/12)

144. Fixed: CMake now supports again in-source builds (This functionality was accidentally broken in the previous release).
(Matthias Maier, 2018/06/11)

145. Deprecated: FunctionMap is deprecated. It is recommended to use the aliased type directly.
(Daniel Arndt, 2018/06/11)

146. Fixed: BlockLinearOperator::vmult(), BlockLinearOperator::vmult_add(), BlockLinearOperator::Tvmult() and BlockLinearOperator::Tvmult_add() can be used with identical source and destination vectors.
(Daniel Arndt, 2018/06/10)

147. Improved: Extend ScaLAPACKMatrix::invert() to use pXtrtri for inversion of triangular matrices.
(Sambit Das, 2018/06/06)

148. New: TimerOutput::cpu_and_wall_times_grouped will print CPU and wallclock time in a single table.
(Denis Davydov, 2018/05/29)

149. Improved: TimerOutput now dynamically adjust to the the width of Section column.
(Denis Davydov, 2018/05/29)

150. New: The function GridTools::find_all_active_cells_around_point() returns a list of all cells around a point, rather than only a single one for the old GridTools::find_active_cell_around_point.
(Martin Kronbichler, Niklas Fehn, 2018/05/28)

151. Improved: MatrixFree::cell_loop() and MatrixFree::loop() directly use LinearAlgebra::distributed::BlockVector::update_ghost_values() and LinearAlgebra::distributed::BlockVector::compress() calls on block vectors with many blocks, rather than splitting each method into two parts for overlapping communication and computation. The latter is inefficient as soon as too many MPI requests are in flight.
(Martin Kronbichler, Denis Davydov, 2018/05/24)

152. Fixed: step-16 was broken caused by uninitialized variables, it is now fixed.
(Ce Qin, 2018/05/21)

153. Improved: MGTransferPrebuilt now supports PETScWrappers::MPI::Vector and PETScWrappers::MPI::SparseMatrix.
(Alexander Knieps, 2018/05/21)

154. Fixed: DoFTools::make_flux_sparsity_pattern was accessing invalid dof indices in case neighboring cells were not using FiniteElement objects with the same number of degrees of freedom. This is fixed now.
(Daniel Arndt, 2018/05/19)

155. Fixed: Two invalid off-by-one data accesses in the initialization of MatrixFree with face data enabled, that appeared in some rare cases on certain configurations of processors, have been fixed.
(Daniel Arndt, Martin Kronbichler, 2018/05/18)

156. New: Classes that act as an interface to the drivers of internally supported automatic differentiation libraries (ADOL-C and Sacado) have been implemented. A brief summary of what these classes are used for is given in the Automatic differentiation module.
(Jean-Paul Pelteret, 2017/11/18)