Reference documentation for deal.II version 8.4.1
Changes between Version 8.3.0 and 8.4.0

This is the list of changes made between the release of deal.II version 8.3.0 and that of 8.4.0. All entries are signed with the names of the author.

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: GridGenerator::hyper_rectangle and GridGenerator::subdivided_hyper_rectangle now take points with dim components to correctly handle meshes embedded in higher dimensional spaces.
    (Timo Heister, 2016/02/04)

  2. Changed: The constructor of FiniteElementData had a last argument n_blocks that was not actually used by the class to initialize anything. It has been removed. In addition, the default constructor of FiniteElementData has also been removed given that it only creates a dysfunctional element.
    (Wolfgang Bangerth, 2016/01/23).

  3. Rework: SLEPcWrappers were reworked to allow usage of PETSc solvers and preconditioners inside SLEPc's eigensolvers. To that end extra methods were introduced to PETSc wrappers. Moreover, initialization of the underlying SLEPc objects is now done inside constructors of the wrapper classes. As a result, one has to provide an MPI communicator to the constructors of spectral transformation classes.
    (Denis Davydov, 2015/12/29).

  4. Removed: The deprecated Operator class in the Algorithms namespace has been removed.
    (Timo Heister, 2015/12/21)

  5. Changed: deallog console depth is now 0 by default, causing no output to the screen from solvers and other places in the library.
    (Timo Heister, 2015/12/06)

  6. Changed: The function Utilities::trim() now removes general white space characters, such as '\r' and '\n', as well as space characters.
    (David Wells, 2015/12/05)

  7. Removed: The previously deprecated global instance multithread_info of MultithreadInfo has been removed (all members of this class are static so there is no reason to use/create an instance). The deprecated MultithreadInfo::n_cpus member also got removed in favor of MultithreadInfo::n_cores().
    (Timo Heister, 2015/11/19)

  8. Removed: The UpdateFlags flags update_support_points, update_support_jacobians, and update_support_inverse_jacobians have been removed. update_support_points was deprecated in 2013 and has not done anything in a long time. The other two appeared in 2007 and were never implemented.
    (David Wells, 2015/09/16)

  9. Cleanup: The two argument variant of cross_product() that returned the result by reference as first argument has been removed. Use the function cross_product_2d(), or cross_product_3d(), that directly returns the result instead. Further, the exception Tensor<rank,dim,Number>::ExcInvalidTensorContractionIndex has been removed
    (Matthias Maier, 2015/09/14 - 2015/09/17)

  10. Cleanup: The following functions in tensor.h have been deprecated:

    • double_contract(). Use the generic contraction function contract() instead.
    • The four and five argument variants of contract() that return the result by reference as first argument and take the contraction indices as arguments. use the generic contraction function contract() instead.
    • The three argument variants of contract() that return the result by reference as first argument. Use operator* instead.
    • The three argument variant of cross_product() that returns the result by reference as first argument. Use the cross_product() function that directly returns the result instead.
    • The three argument variants of outer_product that return the result by reference as first argument. Use the function that directly returns the result instead.
    • determinant(::Tensor<rank,1,Number>)
      (Matthias Maier, 2015/09/14 - 2015/09/17)

  11. Removed: The Tensor and Point classes no longer have a constructor taking a boolean argument. Those were replaced by a default constructor that will always initialize underlying values with zero.
    (Matthias Maier, 2015/09/07)

  12. Removed: The testsuite no longer supports compiler constraints of the form "<code>.compiler=[NAME]...</code>".
    (Matthias Maier, 2015/08/21)

  13. Changed: The parameter first_vector_components has been removed from GridTools::collect_periodic_faces(). Instead, DoFTools::make_periodicity_constraints() now accepts a parameter first_vector_components in all (supported) variants.
    (Matthias Maier, 2015/08/21)

  14. Changed: FEValues::normal_vector() for historical reasons returned a value of type Point, though a normal vector is more adequately described as a Tensor<1,dim>. Many similar cases were already clarified in deal.II 8.3. The current case has now also been changed: FEValues::normal_vector() now returns a Tensor, rather than a Point.
    In a similar spirit, the FEValues::get_normal_vectors() function that still returns a vector of Points has been deprecated, and a new function, FEValues::get_all_normal_vectors() that returns a vector of tensors, has been added. This was necessary since there is no way to change the return type of the existing function in a backward compatible way. The old function will be removed in the next version, and the new function will then be renamed to the old name.
    (Wolfgang Bangerth, 2015/08/20)

  15. Changed: The mesh_converter program has been removed from the contrib folder. The equivalent functionality can now be found in the GridIn class.
    (Jean-Paul Pelteret, 2015/08/12)

  16. Changed: The signature of the FiniteElement::fill_fe_values(), FiniteElement::fill_fe_face_values(), and FiniteElement::fill_fe_subface_values() functions has been changed, in an effort to clarify which of these contain input information and which contain output information for these functions. The same has been done for the corresponding functions in the Mapping class hierarchy.
    Likewise the signature of FiniteElement::get_data() has been changed.
    As part of a general overhaul, the FEValuesData class has also been removed.
    (Wolfgang Bangerth, 2015/07/20-2015/08/13)

  17. Changed: The functions update_once() and update_each() in the Mapping classes computed information that was, in essence, only of use internally. No external code actually needed to know which pieces of information a mapping could compute once and which they needed to compute on every cell. Consequently, these two functions have been removed and have been replaced by Mapping::requires_update_flags().
    A similar change has been applied to the FiniteElement class.
    (Wolfgang Bangerth, 2015/07/20-2015/12/01)

  18. Changed: The function DoFRenumbering::random() now produces different numberings than it did before, but in return has now acquired the property that its results are predictable and repeatable.
    (Wolfgang Bangerth, 2015/07/21)

General

  1. New: A variant for GridGenerator::subdivided_parallelepiped() was added that supports meshes embedded in higher dimesional spaces.
    (Timo Heister, 2016/02/04)

  2. Fixed: Partitioning using METIS now works correctly with more domains than cells.
    (Timo Heister, 2016/01/26)

  3. New: The documentation of step-17 has been completely rewritten, and many aspects of how one has to think when writing parallel programs have been much better documented now.
    (Wolfgang Bangerth, 2016/01/07)

  4. New: deal.II now provides a string DEAL_II_ALWAYS_INLINE that, when supported by the compiler, can be used to annotate functions to ensure that the compiler always inlines them.
    (Matthias Maier, Wolfgang Bangerth, 2016/01/07)

  5. New: There is a new documentation module, Concepts, or expectations on template parameters, which describes the meaning behind template parameter type names.
    (David Wells, 2015/12/09)

  6. Changed: The template type name arguments of some classes no longer shadow class names. Additionally, template type names are now much more consistent across deal.II.
    (David Wells, 2015/10/18 - 2016/01/23)

  7. New: The WorkStream class's design and implementation are now much better documented in the form of a preprint.
    (Wolfgang Bangerth, 2015/11/29)

  8. New: There is now much more documentation for the FiniteElement class, in particular detailing what one needs to implement when writing finite element descriptions in derived classes.
    (Wolfgang Bangerth, 2015/11/29)

  9. New: We now experimentally support Microsoft Visual C++ compiler under Windows.
    (Timo Heister, 2015/11/26)

  10. New: There is now a function template numbers::signaling_nan() that is used to create invalid floating point objects. These objects can either be scalars, or of type Tensor, SymmetricTensor, or DerivativeForm. The content of these objects is a "signaling NaN" ("NaN" stands for "not a number", and "signaling" implies that at least on platforms where this is supported, any arithmetic operation using them terminates the program). The purpose of this is to use them as markers for uninitialized objects and arrays that are required to be filled in other places, and to trigger an error when this later initialization does not happen before the first use.
    (Wolfgang Bangerth, Timo Heister, 2015/11/24)

  11. Changed: The function FE_DGPNonparametric::shape_value() and similar functions in the same class returned values and derivatives of shape functions on the reference cell. However, this element is not defined through mapping of shape functions from the reference cell, and consequently it makes no sense to ask for this information. These functions have therefore been changed to throw an exception instead, as documented in FiniteElement::shape_value().
    (Wolfgang Bangerth, 2015/11/20)

  12. Changed: The functionality to distribute cells across processes according to a vector of cell weights that was passed in a call to parallel::distributed::Triangulation::repartition() was replaced by a cell-wise signal. This signal is called during parallel::distributed::Triangulation::execute_coarsening_and_refinement() and parallel::distributed::Triangulation::repartition() if any function is connected to it. It allows to connect a function that takes the current cell iterator and a status argument that indicates whether this cell will be refined, coarsened or remains unchanged and returns a cell weight, which will be used to distribute cells across processes in a way that keeps the sum of weights across each individual process approximately equal.
    (Rene Gassmoeller, 2015/11/02)

  13. New: Preliminary support for parallel, adaptive, geometric multigrid is now in place with changes to MGConstrainedDoFs (many new functions), MGTransfer, MGTools::extract_inner_interface_dofs, MGTransferPrebuilt, DoFTools::extract_locally_relevant_level_dofs.
    (Timo Heister, Guido Kanschat, 2015/10/26)

  14. New: Two cell level signals are added to class Triangulation, namely pre_coarsening_on_cell and post_refinement_on_cell.
    (Lei Qiao, 2015/10/22)

  15. New: parallel::distributed::Triangulation::ghost_owners() returns the set of MPI ranks of the ghost cells. Similarly parallel::distributed::Triangulation::level_ghost_owners() for level ghosts.
    (Timo Heister, 2015/09/30)

  16. Improved: The interfaces to all deal.II type solvers and preconditioners have been updated such that they function as expected with the LinearOperator class and its associated functions (i.e., linear_operator(), transpose_operator() and inverse_operator()). These preconditioners can now be wrapped as a LinearOperator, facilitating the construction of approximate matrix inverses such as in the development of a block matrix preconditioner. An example of this functionality can be found in tests/lac/linear_operator_08.cc.
    (Jean-Paul Pelteret, 2015/09/24 - 2015/10/19)

  17. New: MGTransferPrebuilt can now be used with parallel::distributed::Vector and TrilinosWrappers::SparseMatrix as a transfer matrix.
    (Martin Kronbichler, 2015/09/22)

  18. Fixed: parallel::distributed::Vector is now fully functional for indices larger than 4 billion.
    (Martin Kronbichler, 2015/09/22)

  19. New: PArpackSolver eigensolver interface class.
    (Denis Davydov, 2015/09/17)

  20. Changed: All doxygen-generated pages now contain a link to the tutorial in their top-level menus.
    (Wolfgang Bangerth, 2015/09/13)

  21. New: A new namespace TensorAccessors is introduced that contains generic algorithms for tensorial objects, i.e., objects that allow repeated access via the index operator operator[](unsigned int). The methods in TensorAccessors is primarily meant to replace old internal code in tensor.h, but it might also proof useful otherwise.
    (Matthias Maier, 2015/09/11)

  22. New: A python script (including instructions) for enabling pretty printing with GDB is now available in /contrib/utilities/dotgdbinit.py.
    (Wolfgang Bangerth, David Wells, 2015/09/11)

  23. Improved: When available, deal.II now uses the "gold" linker, a reimplementation of the traditional Unix "ld" linker that is substantially faster. This reduces build and, in particular, test turnaround times.
    (Wolfgang Bangerth, Matthias Maier, 2015/09/06)

  24. Cleanup: The interface of Tensor<rank,dim,Number> has been cleaned up (a lot of unnecessary partial template specializations have been removed). The specialization Tensor<1,dim,Number> has been removed.
    (Matthias Maier, 2015/09/02)

  25. Improved: The testsuite now supports multiple comparison files. Apart from the main comparison file that ends in [...].output all files of the form [...].output.[string] are considered for comparison.
    (Matthias Maier, 2015/08/29)

  26. New: A class BlockLinearOperator has been introduced that extends the LinearOperator concept to block structures. A BlockLinearOperator can be sliced back to a LinearOperator.
    (Matthias Maier, 2015/08/27)

  27. Improved: Support for complex number types throughout the library. Several parts of the library have been reorganized to support complex number types.
    Classes that are now instantiated for complex number types:

  28. Fixed: The testsuite now properly supports version constraints for features. Those are annotated by .with_FEATURE(<=|>=|=|<|>)VERSION..
    (Matthias Maier, 2015/08/25)

  29. Improved: The interface and documentation for periodic boundary conditions have been restructured. A glossary entry has been written.
    (Daniel Arndt, Matthias Maier, 2015/08/01-2015/08/21)

  30. New: There is a new documentation module on How Mapping, FiniteElement, and FEValues work together.
    (Wolfgang Bangerth, 2015/08/20)

  31. New: parallel::shared::Triangulation class which extends Triangulation class to automatically partition triangulation when run with MPI. Common functionality between parallel::shared::Triangulation and parallel::distributed::Triangulation is implemented in the parent class parallel::Triangulation.
    (Denis Davydov, 2015/08/14)

  32. New: The online documentation of all functions now includes links to the file and line where that function is implemented. Both are clickable to provide immediate access to the source code of a function.
    (Jason Sheldon, Wolfgang Bangerth, 2015/08/13)

  33. New: FE_RannacherTurek describes a discontinuous FiniteElement with vanishing mean values of jumps across faces.
    (Patrick Esser, 2015/08/17)

  34. New: FE_Q_Bubbles describes a FiniteElement based on FE_Q enriched by bubble functions.
    (Daniel Arndt, 2015/08/12)

  35. New: The testsuite now runs in a mode in which we abort programs for floating point exceptions due to divisions by zero or other invalid arithmetic.
    (Wolfgang Bangerth, 2015/07/29)

  36. New: MultithreadInfo::set_thread_limit() can now be called more than once and the environment variable DEAL_II_NUM_THREADS will be respected even if user code never calls it.
    (Timo Heister, 2015/07/26)

  37. New: IndexSet now implements iterators.
    (Timo Heister, 2015/07/12)

Specific improvements

  1. New: FunctionParser now supports rand() and rand_seed(number), which return a random value in the range [0,1].
    (Wolfgang Bangerth, Luca Heltai, Alberto Sartori, 2016/02/09)

  2. Fixed: FullMatrix::TmTmult for matrix multiplication used to compute wrong results for larger matrix sizes where external BLAS is called. This has been fixed.
    (Martin Kronbichler, 2016/02/02)

  3. Fixed: parallel::distributed::Triangulation with periodic boundary conditions did not respect 2:1 balance over vertices on periodic boundaries. This lead to incomplete ghost layers on multigrid levels. This has been fixed.
    (Martin Kronbichler, Timo Heister, 2016/01/27)

  4. Fixed: SparseVanka now really uses second-order couplings for the right-hand side of the local problems.
    (Florian Sonner, 2016/01/27)

  5. Fixed: A bug in the Neumann boundary handling of KellyErrorEstimator in 1d has been fixed and KellyErrorEstimator now correctly handles codimension one problems by using the correct normals from the manifold inside the gradient jump computation.
    (Andrea Bonito, Timo Heister, 2016/01/21)

  6. New: The new class MGTransferMatrixFree implements multigrid level transfer using local polynomial embedding and restriction with tensor product evaluation techniques. This is a faster and less memory-demanding alternative to MGTransferPrebuilt.
    (Martin Kronbichler, 2016/01/20)

  7. New: hp::FECollection now has constructors which take multiple finite elements as arguments.
    (Angel Rodriguez, 2016/01/18)

  8. New: The glossary now contains a long entry describing what the term "scalability" means in the context of finite element codes. See GlossParallelScaling.
    (Wolfgang Bangerth, 2016/01/11)

  9. Fixed: Tensor::operator[] that takes TableIndices as a parameter no longer returns by value, but rather by reference. Tensor::operator<< for dim==0 now accesses values by reference instead of making a copy. This is useful when non-trivial number types are stored.
    (Jean-Paul Pelteret, 2016/01/08)

  10. New: constrained_linear_operator() and constrained_right_hand_side() provide a generic mechanism of applying constraints to a LinearOperator. A detailed explanation with example code is given in the Constraints on degrees of freedom module.
    (Mauro Bardelloni, Matthias Maier, 2015/10/25 - 2015/12/27)

  11. New: OpenCASCADE::read_IGES() and OpenCASCADE::read_STEP() have been unified in behaviour, and now they allow to extract all elements of the IGES and STEP files instead of only the faces. This allows the use of iges files describing edges only to be used as input for some of the OpenCASCADE Manifold wrappers.
    (Luca Heltai, 2015/12/13)

  12. New: A new linear operator representing the Schur complement, namely schur_complement(), has been implemented. Some auxiliary functions that are often used in conjunction with the Schur complement (condense_schur_rhs() and postprocess_schur_solution()) are also provided as a PackagedOperation. An example of this functionality can be found in tests/lac/schur_complement_01.cc. The solution of a multi-component problem (namely step-22) using the schur_complement can be found in tests/lac/schur_complement_03.cc .
    (Jean-Paul Pelteret, Matthias Maier, Martin Kronbichler, 2015/12/07)

  13. New: There is now a function Utilities::to_string that works like int_to_string, but is more safe for long integers, negative integers, and also handles floating point numbers. The implementation of int_to_string was changed to simply call to_string. int_to_string is kept for compatibility, but should only be used for unsigned integers.
    (Rene Gassmoeller, 2015/12/09)

  14. Fixed: GridOut::write_msh() and GridOut::write_ucd() used the same geometric element numbers for lines and faces. This caused visualization programs to ignore parts with repeated geometric element numbers. This is now fixed.
    (David Wells, 2016/01/16)

  15. New: DoFTools::extract_dofs() are now instantiated also for codimension different from zero.
    (Alberto Sartori, 2016/01/13)

  16. Fixed: The DataOutFaces class should now also work with triangulations of type parallel::distributed::Triangulation.
    (Heikki Virtanen, Wolfgang Bangerth, 2016/01/11)

  17. Fixed: AlignedVector<T>::fill() (and thus, Table<N,T>::reinit) did not correctly call the destructor of T() and could leak memory for complicated class types that depend on their constructor to free memory.
    (Martin Kronbichler, 2016/01/08)

  18. Fixed: inverse_operator() now populates Tvmult and Tvmult_add correctly.
    (Jean-Paul Pelteret, David Wells, Matthias Maier, 2015/12/30)

  19. New: MGTransferPrebuilt with parallel adaptive refinement has been finalized for parallel::distributed::Vector.
    (Martin Kronbichler, 2015/12/23)

  20. Fixed: Now all members in the class SparseMatrixEZ are initialized correctly in the constructor. This was causing random crashes before.
    (Timo Heister, 2015/12/21)

  21. New: There is now a new class ArrayView that presents a chunk of memory as if it was an array of fixed size. This is eventually going to replace the VectorSlice class which suffers from the defect that its template argument does not encode the type of objects it points to, but instead the type of the underlying container; consequently, where the VectorSlice class is used as a function argument, it automatically ties the type of object the function can be called with (i.e., the underlying container) even if the called function has no actual use for this kind of information.
    (Wolfgang Bangerth, 2015/12/20)

  22. Fixed: Handling of constraints in step-26 was incorrect (hanging nodes were condensed twice) leading to garbage solutions. This is now fixed.
    (Timo Heister, 2015/12/20)

  23. Fixed: The implementation of ShiftedMatrixGeneralized contained several errors that prevented it from being compiled. These have now been fixed.
    (David Wells, 2015/12/18)

  24. New: There is now a function Triangulation::get_triangulation() that allows writing code to get at the underlying triangulation for everything that looks like a container, i.e., both Triangulation or DoFHandler objects.
    (Wolfgang Bangerth, 2015/12/10)

  25. Deprecated: The functions DoFHandler::get_tria() and hp::DoFHandler::get_tria() were deprecated. UseDoFHandler::get_triangulation() and hp::DoFHandler::get_triangulation() instead.
    (Wolfgang Bangerth, 2015/12/10)

  26. New: parallel::distributed::Vector has now a method to return a shared pointer to the underlying partitioner object.
    (Martin Kronbichler, 2015/12/07)

  27. Improved: Many more functions in namespace GridTools and class InterGridMap are now consistely instantiated also for types parallel::distributed::Triangulation and parallel::shared::Triangulation.
    (Gennadiy Rishin, Wolfgang Bangerth, 2015/12/07)

  28. Improved: Both versions of SparsityTools::distribute_sparsity_pattern() are now plain, not template, functions. This is not a breaking change because each function was instantiated for exactly one template argument.
    (David Wells, 2015/12/06)

  29. Improved: The method parallel::distributed::Triangulation::fill_vertices_with_ghost_neighbors() that is used for distributing DoFs on parallel triangulations previously exhibited quadratic complexity in the number of coarse grid cells. This has been changed into linear complexity calls (apart from a few issues inside p4est).
    (Martin Kronbichler, 2015/12/05)

  30. New: There are now new functions GridTools::build_triangulation_from_patch() and GridTools::get_cells_at_coarsest_common_level() that help build patches around individual cells.
    (Arezou Ghesmati, 2015/12/02)

  31. Fixed: The GridTools::copy_boundary_to_manifold_id() function only copied boundary indicators from faces, but in 3d forgot about edges. This is now fixed.
    (Wolfgang Bangerth, 2015/11/30)

  32. Fixed: The constructor of SymmetricTensor that takes an array of initializing elements led to a compiler error. This is now fixed.
    (Wolfgang Bangerth, 2015/11/28)

  33. Fixed: parallel::distributed::Vector now detects if the size of MPI messages exceeds 2GB or if the local range exceeds the size of 32-bit integers and throws an exception informing about the unsupported sizes.
    (Martin Kronbichler, 2015/11/26)

  34. New: In 3d, GridGenerator::extract_boundary_mesh() now copies the manifold ids of edges of the volume mesh to the manifold ids of the edges of the extracted surface mesh.
    (Wolfgang Bangerth, 2015/11/25)

  35. New: Triangulation::create_triangulation() now accepts subcell-data objects that may include information about interior edges and faces, to facilitate setting manifold indicators on interior edges and faces.
    (Wolfgang Bangerth, 2015/11/25)

  36. Fixed: GridGenerator::extract_boundary_mesh() in 3d could generate surface cells that did not uniformly had a right- or left-handed coordinate system associated with them when viewed from one side of the surface. This has been fixed: they now all have a right-handed coordinate system when seen from one side of the surface, and a left-handed one when viewed from the other side.
    (Daniel Weygand, Wolfgang Bangerth, 2015/11/22)

  37. Fixed: Trilinos ML preconditioner is now deterministic when using version 12.4 or newer.
    (Timo Heister, 2015/11/16)

  38. New: Extra parameters to GD and Lanczos SLEPc solvers. Also added unit tests.
    (Denis Davydov, 2015/11/09)

  39. Fixed: FETools::project_dg was adding the vector projection to the output vector. Now is the output vector initialized to zero.
    (Adam Kosik, 2015/11/09)

  40. Fixed: A compilation issue with DEAL_II_INCLUDE_DIRS not used for compiling bundled boost.
    (Lukas Korous, 2015/11/01)

  41. New: 2nd derivatives are implemented for PolynomialsBDM in 3D.
    (Alistair Bentley, 2015/10/27)

  42. Fixed: PolynomialsBDM::degree() now returns the correct value.
    (Alistair Bentley, 2015/10/24)

  43. New: Triangulation::set_all_manifold_ids_on_boundary(boundary_id, manifold_id) which sets the manifold_id for all parts of the boundary with a given boundary_id.
    (Alberto Sartori, 2015/10/22)

  44. Fixed: The range vectors in the construction of an inverse_operator() is now reinitialised before solve calls. This ensures a consistent starting point for the solver.
    (Jean-Paul Pelteret, 2015/10/19)

  45. New: Ghost cells for the multigrid levels in parallel::distributed::Triangulation are now correctly created also for periodic boundary conditions.
    (Martin Kronbichler, 2015/10/18)

  46. Fixed: GridGenerator::subdivided_parallelepiped() produced invalid, unconnected meshes and wrong boundary indicators.
    (Timo Heister, 2015/10/13)

  47. Improved: DoFTools::compute_intergrid_transfer_representation can now be used with a fine grid given by a parallel::Triangulation.
    (Alexander Grayver, 2015/10/09)

  48. New: GridIn::read_unv() can now read more element codes that are used in typical meshes.
    (Aslan Kosakian, 2015/10/06)

  49. New: FunctionParser now supports pow(a,b).
    (Timo Heister, 2015/09/30)

  50. New: DoFTools::locally_relevant_dofs_per_subdomain() can be used to extract an IndexSet of locally relevant DoFs for a Triangulation partitioned using METIS or with a parallel::shared::Triangulation .
    (Jean-Paul Pelteret, 2015/09/24)

  51. Fixed: hp::SolutionTransfer could get confused when dealing with FE_Nothing elements. This is now fixed.
    (Claire Bruna-Rosso, Wolfgang Bangerth, 2015/09/23)

  52. Improved: The construction of the non-local graph for quick data exchange of TrilinosWrappers::SparseMatrix became very slow for a few thousand processors. This has been fixed.
    (Martin Kronbichler, 2015/09/22)

  53. Improved: Initializing a TrilinosWrappers::SparseMatrix from a DynamicSparsityPattern included some O(global_size) operations. These have been replaced by operations only on the local range.
    (Martin Kronbichler, 2015/09/22)

  54. Changed: All doxygen-generated pages now contain a link to the tutorial in their top-level menus.
    (Wolfgang Bangerth, 2015/09/13)

  55. Cleanup: Constructors of AdditionalData in various linear solvers are now marked explicit. This avoid bugs with implicit conversions like the one fixed in step-40.
    (Timo Heister, Lei Qiao, 2015/09/09)

  56. New: Introduced third-order derivatives of the shape functions, which can now be accessed through FEValues and FEValuesViews using similar interfaces as shape_values, shape_derivatives and shape_hessians. (Maien Hamed, 2015/09/08)

  57. Cleanup: TableIndices<N> can now be used (constructed and accessed) with N > 7.
    (Matthias Maier, 2015/09/08)

  58. New: std::begin and std::end are now available within the std_cxx11 namespace through <base/std_cxx11/iterator.h>
    (Matthias Maier, 2015/09/08)

  59. New: MappingQ1Eulerian was not instantiated for the various Trilinos vector types. It is now instantiated for the same vector types as MappingQEulerian is.
    (Wolfgang Bangerth, 2015/09/08)

  60. New: Introduced Hessian-related functions to the Function class.
    (Denis Davydov, 2015/09/08)

  61. New: Memory consumption during compilation has been reduced by splitting instantiation files. For this make_instantiations now supports additional logic to split the the instantiations in .inst files into groups. This is used in fe_values.cc, error_estimator.cc, and others.
    (Timo Heister, 2015/09/05)

  62. Improved: Allow continuation lines in ParameterHandler. Any line in a parameter file ending with a \ will now be combined with the next line; see ParameterHandler's documentation for more information.
    (Alberto Sartori, 2015/09/04, David Wells, 2016/01/18-2016/01/28)

  63. New: There is now a function SparsityPattern::print_svg() which prints the sparsity of the matrix in a .svg file which can be opened in a web browser.
    (Conrad Clevenger, 2015/09/03)

  64. Openmp SIMD support is now enabled for Clang version 3.6, or newer (or the equivalent XCode version). Further, openmp support is not any more falsely activated for very old clang versions.
    (Matthias Maier, 2015/09/03)

  65. Improved: DoFTools::make_hanging_node_constraints() now supports hp-refinement cases when neither_element_dominates. To that end we look for a least face dominating FE inside FECollection.
    (Denis Davydov, 2015/09/02)

  66. Changed: FEValues::transform() has been deprecated. The functionality of this function is a (small) subset of what the Mapping classes already provide.
    (Wolfgang Bangerth, 2015/09/02)

  67. New: introduced hp::FECollection::find_least_face_dominating_fe(const std::set<unsigned int> &fes) which aims to find the least dominating finite element w.r.t. those provided as fe_indices in fes.
    (Denis Davydov, Wolfgang Bangerth, 2015/08/31)

  68. New: step-6 now has an additional subsection in the "Possibilities for extensions" section that discusses how to create a better mesh.
    (Konstantin Ladutenko, Wolfgang Bangerth, 2015/08/31)

  69. New: Introduce an option for FE_Nothing to dominate any other FE. Therefore at interfaces where, for example, a Q1 meets an FE_Nothing, we will force the traces of the two functions to be the same. Because the FE_Nothing encodes a space that is zero everywhere, this means that the Q1 field will be forced to become zero at this interface.
    (Denis Davydov, 2015/08/31)

  70. Fixed: VectorTools::integrate_difference() for VectorTools::Hdiv_seminorm was computed incorrectly.
    (Timo Heister, 2015/08/31)

  71. New: Jacobian second and third derivatives are now computed by the mapping classes and can be accessed through FEValues in much the same way as the Jacobian and Jacobian gradient.
    (Maien Hamed, 2015/08/28-2015/08/31)

  72. Fixed: The GridIn class was not instantiated for the dim==1,spacedim==3 case. This is now fixed.
    (Wolfgang Bangerth, 2015/08/25)

  73. Fixed: In 1d, GridIn::read_msh() ignored boundary indicators associated with vertices. This is now fixed.
    (Jan Stebel, Wolfgang Bangerth, 2015/08/25)

  74. New: There are now a collection of functions named GridTools::compute_active_cell_halo_layer() that determine which cells form a layer around a specified subdomain. There is also a function GridTools::compute_ghost_cell_halo_layer() that returns the smallest layer of ghost cells around all locally relevant cells.
    (Jean-Paul Pelteret, Denis Davydov, Wolfgang Bangerth, 2015/08/21)

  75. Documentation: How to set up a testsuite in a user project is now properly documented.
    (Matthias Maier, 2015/08/01 - 2015/08/20)

  76. Fixed: The computation of gradients in FE_PolyTensor and its derived classes (in particular in FE_RaviartThomas and FE_Nedelec) forgot to account for terms that appear on non-affine cells. Consequently, the computed gradients did not match the actual derivatives of the values these elements report. This is now fixed.
    (Maien Hamed, 2015/08/18-2015/08/20)

  77. Improved: Generalized conversion between Tensor<order+1,dim> and DerivativeForm<order,dim,dim> to general order using converting constructor and assignment operator.
    (Maien Hamed, 2015/08/01-2015/08/09)

  78. Changed: The function Vector::ratio() and the corresponding functions in other vector classes have been deprecated.
    (Wolfgang Bangerth, Bruno Turcksin, 2015/08/13)

  79. New: Direct support for Abaqus mesh files has been added to the GridIn class through the function GridIn::read_abaqus().
    (Jean-Paul Pelteret, Timo Heister, Krzysztof Bzowski, 2015/08/12)

  80. Improved: Finite elements now compute hessians analytically rather than by finite differencing.
    (Maien Hamed, 2015/08/01-2015/08/09)

  81. New: The InterpolatedTensorProductGridData::gradient() function is now implemented.
    (Daniel Shapero, 2015/08/12)

  82. New: There is now a function Mapping::project_real_point_to_unit_point_on_face() that calls Mapping::transform_real_to_unit_cell() and then projects the result to a provided face.
    (Jason Sheldon, 2015/08/11)

  83. New: FEFaceValues and FESubfaceValues can now also compute gradients of the Jacobian of the transformation from unit to real cell, controlled by update_jacobian_grads.
    (Martin Kronbichler, 2015/08/08)

  84. New: There is now a function MemoryConsumption::memory_consumption() for std_cxx11::unique_ptr arguments.
    (Wolfgang Bangerth, 2015/08/07)

  85. Improved: CMake configuration: The DEAL_II_ADD_TEST now also supports unit tests writing to stdout and stderr. Further, a second test type consisting of an internal executable target, a configuration and a comparison file is now supported.
    (Matthias Maier, 2015/08/03)

  86. New: VtkFlags now stores a parameter describing the compression level zlib uses when writing compressed output. For small problems, the flag ZlibCompressionLevel::best_speed can make the call to write_vtu many times faster.
    (David Wells, 2015/08/03)

  87. Improved: The conversion Epetra_Map -> IndexSet is now an O(1) operation for contiguous index ranges, improving over the old O(N) behavior.
    (Martin Kronbichler, 2015/07/30)

  88. Changed: The initialization methods of TrilinosWrappers::SparseMatrix, TrilinosWrappers::BlockSparseMatrix, TrilinosWrappers::SparsityPattern, and TrilinosWrappers::BlockSparsityPattern with Epetra_Map arguments have been marked as deprecated. Use the functions with IndexSet argument instead.
    (Martin Kronbichler, Luca Heltai, 2015/07/30)

  89. New: FESystem now does some work in parallel if your system has multiple processors.
    (Wolfgang Bangerth, 2015/07/19)

  90. Fixed: When using FESystem with base elements that require information other than the determinant of the Jacobian (e.g., elements that require the Jacobian itself), then this information was not passed down to FiniteElement::fill_fe_values of the base element. This is now fixed.
    (Wolfgang Bangerth, Zhen Tao, 2015/07/17)

  91. New: The parallel::distributed::Triangulation can now be told to partition the cells so that the sum of certain weights associated with each cell, rather than the number of cells, is roughly constant between processors. This is done by passing a vector of weights to the function that repartitions the triangulation, parallel::distributed::Triangulation::repartition().
    (Wolfgang Bangerth, 2015/07/14)

  92. New: DataOutBase::TecplotFlags now takes a third argument for solution time which is useful to visualize transient data. If a user sets a non-negative time, it will be saved into the tecplot file.
    (Praveen Chandrashekar, 2015/08/30)