Reference documentation for deal.II version Git 3f75665 2017-01-19 16:58:38 -0500
Changes between Version 8.1 and 8.2

This is the list of changes made between the release of deal.II version 8.1.0 and that of 8.2.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. Removed: The base class to the iterative linear solvers, Solver, received a SolverControl object upon construction and had a member function control() that returned a reference to the object previously passed in. The class now no longer stores such a reference, and consequently, the function has been removed.
    (Wolfgang Bangerth, 2014/10/24)

  2. Removed: The constructor of the Utilities::MPI::MPI_InitFinalize class used to interpret a last argument equal to numbers::invalid_unsigned_int as "create as many threads as there are processor cores on the current system" for each MPI process. If there were multiple MPI processes on a given node, this would lead to (sometimes massive) overallocation of resources because every MPI process would create as many threads as there are cores. This has now been changed: an argument equal to numbers::invalid_unsigned_int is now interpreted as "subdivide the available cores between all MPI processes running on the current system and let each process create as many threads as cores were allocated to it".
    (Wolfgang Bangerth, 2014/09/16)

  3. Removed: CMake's configure phase no longer calls back into testsuite subprojects. If a build directory is reconfigured the testsuite has to be regenerated by hand using make regen_tests.
    (Matthias Maier, 2014/07/16)

  4. Removed: Class PointerMatrixBase (and, consequently, the various classes derived from it) had comparison operators that were intended to work generically for any kind of derived class. However, the implementation used a scheme that was not robust enough to handle the various situations that derived classes implemented and, consequently, was not always correct. These operators were not previously used inside the library and, likely, were not widely used in applications either. They have now been removed.
    (Wolfgang Bangerth, 2014/02/15)

  5. The change from functionparser to muparser introduced a small number of incompatibilities: units, use_degress, and recursion with 'eval' are no longer supported. Comparing for equality is done using '==' instead of '='.
    (Timo Heister, 2014/02/10)

  6. Changed: The various classes generating graphical output, such as DataOut or DataOutStack, are all derived from a common interface class DataOutInterface which, in turn was derived from DataOutBase through private inheritance. Because we frequently also access the (public) members of this private base class this has tripped up most every compiler we know of at one point or another. Furthermore, because DataOutBase was a class that only defined static member functions and had not member variables, there was really no reason for this construct.
    For these reasons, DataOutBase is now just a regular namespace and the inheritance is gone. For the most part, this should not lead to any incompatibilities except in cases where you accessed members of DataOutBase through their derived classes. For example, it was possible to write DataOut::Patch even though the Patch class is actually declared in DataOutBase. Since the inheritance is now gone, this is no longer possible and one actually has to write DataOutBase::Patch instead. Using this form turns out to be compatible also with older versions of deal.II.
    (Wolfgang Bangerth, 2014/02/01)


  1. New: Several parts of the library have been adjusted to allow compilation with Microsoft Visual Studio. Unfortunately, not all of the library can be compiled yet.
    (Lukas Korous, 2014/12/03)

  2. New: Added support for OpenCASCADE ( library, which allows the use of arbitrary IGES files to describe the boundary of a mesh. The use of the new classes is described in the new step-54.
    (Luca Heltai, Andrea Mola, 2014/10/31)

  3. New: The classes implementing iterative solvers have gained a mechanism by which it is possible to observe the progress of the iterations, or to influence when to stop the iteration. The documentation of the Solver class now contains an extended discussion and example of this functionality.
    (Wolfgang Bangerth, 2014/10/24)

  4. New: There is now a section in the introduction of step-36 that discusses the interaction of Dirichlet boundary values and the solution of eigenvalue problems.
    (Denis Davydov, Wolfgang Bangerth, 2014/09/28)

  5. New: The glossary now contains an extensive entry on ghosted and non-ghosted vectors (see GlossGhostedVector ).
    (Wolfgang Bangerth, 2014/09/27)

  6. New: MappingQ is now aware of Manifold, i.e., we can use high order mappings that actually follow the geometry also on the interior of codimension zero meshes.
    (Luca Heltai, 2014/09/13)

  7. New: The new tutorial program step-52 explains how to use the new time stepping methods.
    (Bruno Turcksin, Damien Lebrun-Grandie, 2014/09/12)

  8. New: The new tutorial program step-53 explains how to deal with complicated geometries.
    (Wolfgang Bangerth, Luca Heltai, 2014/09/02)

  9. Changed: Namespace std_cxx1x has been renamed to namespace std_cxx11 to match the fact that the corresponding C++ standard was approved back in 2011. The old namespace name was retained for backward compatibility but is now deprecated.
    (Wolfgang Bangerth, 2014/09/01)

  10. New: Most of the operations done on Vector (like add, sadd, etc.) are now vectorized (SIMD) using OpenMP 4.0.
    (Bruno Turcksin, 2014/08/25)

  11. Updated: The version of BOOST that comes bundled with deal.II has been updated to 1.56.0.
    (Wolfgang Bangerth, 2014/08/19)

  12. Fixed: Newer versions of GCC (e.g. 4.9.x) are no longer compatible with BOOST 1.46. Consequently, the CMake scripts now require at least BOOST 1.48 in order to use a BOOST version found on the system. If no installed BOOST library is found, or if the version is older than 1.48, CMake will simply take the one that comes bundled with deal.II.
    (Wolfgang Bangerth, 2014/08/19)

  13. New: There is now a documentation module that describes deal.II's support for and interaction with the C++11 standard.
    (Wolfgang Bangerth, 2014/08/14)

  14. New: Added support for curved interior cells for all Triangulation dimensions.
    A new Manifold<dim,spacedim> class was introduced which only contains the interface needed by Triangulation to refine objects, leaving all boundary related functions in the class Boundary<dim,spacedim>, which was made derived from Manifold<dim,spacedim>.
    This new construction allows for curved interior cells, and custom refinement strategies (see, for example, the new tutorial program step-53). At the moment the following Manifolds are supported:

    • FlatManifold<dim,spacedim>: This class replaces the old StraightBoundary<dim,spacedim>, and it adds support for periodic manifolds. This is the simplest class one can use to create new Manifold classes;
    • ManifoldChart<dim,spacedim,chartdim>: This is one of the most general Manifold one can think of. The user can overload the functions ManifoldChart::pull_back() and ManifoldChart::push_forward(), to obtain a very general curved geometry, following concepts typical of elasticity;
    • SphericalManifold<dim,spacedim>: A simple implementation of spherical coordinates transformations. This manifold allows hyper shells with curved interior cells which follow the natural shape of the shell;

    The functions Triangulation::set_boundary() and Triangulation::get_boundary() can still be used to set and get Boundary objects instead of Manifold ones. For the get function, an exception is thrown if a conversion to a valid Boundary class cannot be made on the fly.
    (Luca Heltai, 2014/08/06)

  15. Ported: The build system now supports CMake 3.0.
    (Matthias Maier, 2014/07/15)

  16. New: Added support for curved interior boundaries, and general manifold id description.
    A new attribute was added to each triangulation object (types::manifold_id) which allows one to specify a manifold description, much in the same way we do for boundaries, also for interior edges and faces. At the moment this information is used only for objects of topological dimension less than spacedim, but a generalization of the class Boundary<dim,spacedim> is on its way to allow also curved cells.
    For the moment, full backward compatibility is granted, and one can keep using the old Boundary<dim,spacedim>, together with Triangulation::set_boundary(), and Triangulation::get_boundary() methods. However, this change suggests to use the types::boundary_id associated with each boundary face to indicate only boundary condition types, and it allows to separate the geometric meaning from the physical meaning. The suggested usage is

  17. New: Tutorial programs (and a few other places) are now cross-linked to their corresponding video lectures.
    (Wolfgang Bangerth, 2014/07/10)

  18. Changed: The functionparser library bundled with deal.II got replaced by the muparser library.
    (Timo Heister, 2014/02/10)

  19. Changed: It was possible to call DoFCellAccessor::set_active_fe_index() on non-active cells. However, this made no sense: Since degrees of freedoms only exist on active cells for hp::DoFHandler (i.e., there is currently no implementation of multilevel hp::DoFHandler objects), it does not make sense to assign active FE indices to non-active cells since they do not have finite element spaces associated with them without having any degrees of freedom.
    The same of course is true for asking for the finite element active on a non-active cell, i.e. using the functions DoFAccessor::active_fe_index() and DoFAccessor::get_fe(). All of these functions now produce exceptions on non-active cells.
    (Wolfgang Bangerth, 2014/01/24)

  20. New: deal.II now links with the BOOST Iostreams library (at least if the libz and libbz2 libraries can be found that are necessary for BOOST Iostreams). Among many other things, this allows to easily read files that have been compressed, as in the following code snippet:
    #include <boost/iostreams/filtering_stream.hpp>
    #include <boost/iostreams/filter/gzip.hpp>
    #include <boost/iostreams/device/file.hpp>
    boost::iostreams::filtering_istream in;
    int i;
    in >> i;
    More documentation on how to use BOOST Iostream can be found in the documentation link referenced above.
    (Wolfgang Bangerth, 2013/12/21)

Specific improvements

  1. Fixed: CMake now correctly detects -Wno-... support for gcc.
    (Matthias Maier, 2014/12/11)

  2. New: The FE_Q and FE_Q_Hierarchical classes now include pictures of their 2d shape functions in the class documentation.
    (Manuel Quezada de Luna, Wolfgang Bangerth, 2014/12/09)

  3. Fixed: Calling DoFRenumbering::Cuthill_McKee threw an exception whenever one of the processors of a parallel triangulation did not own any degrees of freedom.
    (Michal Wichrowski, Wolfgang Bangerth, 2014/12/04)

  4. Fixed: Serializing an object of type DoFHandler did not work without including additional header files.
    (David Wells, Wolfgang Bangerth, 2014/11/26)

  5. New: The class FEEvaluation with its fast tensor evaluation routines can now be initialized from a mapping, a finite element, a quadrature, and update flags on the fly similar to FEValues. This provides an alternative entry point to these routines without the need to create a MatrixFree data object.
    (Martin Kronbichler, 2014/11/20)

  6. New: Complete the interface for periodic boundary conditions. Now, it is possible to specify an additional (geometric) rotation matrix along with vector components that should be rotated when applying periodic boundary conditions (or alternatively, directly a transformation matrix working directly on dofs). With this it is now possible to e.g. compute Stokes flow on a quarter pie with periodic boundary conditions and the velocity correctly transformed.
    (Daniel Arndt, Matthias Maier, 2014/11/19)

  7. Improved: Vector updates in PreconditionChebyshev based on deal.II's own vectors are now vectorized with OpenMP 4.0 SIMD pragmas.
    (Martin Kronbichler, Bruno Turcksin, 2014/11/17)

  8. New: Added support for STEP files in the OpenCASCADE wrappers. STEP files can now be imported and exported respectively with the OpenCASCADE::read_STEP() and OpenCASCADE::write_STEP() functions.
    (Andrea Mola, 2014/11/12)

  9. New: Timer now has get_lap_time() which returns the time lapsed between the last start()/stop() cycle.
    (Fahad Alrashed, 2014/11/09)

  10. New: GridTools::get_locally_owned_vertices() allows to query which vertices of a triangulation are owned by the current processor.
    (Wolfgang Bangerth, 2014/11/09)

  11. New: parallel::distributed::Triangulation::communicate_locally_moved_vertices() allows to update vertex positions that have been moved just locally on distributed meshes. GridTools::distort_random now works for distributed meshes and hanging nodes in 3D as well.
    (Daniel Arndt, 2014/11/06)

  12. New: TableHandler objects can be cleared - i.e. reset to a zero-sized state.
    (Fahad Alrashed, 2014/11/09)

  13. New: The FE_Nothing class now has a second template argument corresponding to the space dimension in which the mesh is embedded, like many other classes. This allows to use this element in codimension one cases as well now.
    (Wolfgang Bangerth, 2014/11/05)

  14. Fixed: Using the FEEvaluation framework did not work for scalar elements in 1d because there were conflicting partial specializations. This is now fixed.
    (Shiva Rudraraju, 2014/11/04)

  15. New: There is now a macro DEAL_II_VERSION_GTE that can be used to test whether the deal.II version is greater than or equal a particular version number. This is useful if you need to make application programs compatible with different deal.II releases.
    (Wolfgang Bangerth, 2014/10/31)

  16. New: The vector classes in deal.II (including Trilinos and PETSc wrappers) now have a new method x.add_and_dot(factor,v,w) which performs x.add(factor,v) and subsequent inner product of x with another vector w. This operation occurs in some iterative solvers; by a combined operation, reduced memory transfer and thus higher performance are enabled.
    (Martin Kronbichler, 2014/10/27)

  17. Improved: Inner products and norms on deal.II's own vector classes now use vectorization through VectorizedArray if available.
    (Martin Kronbichler, 2014/10/27)

  18. Changed: PETSc and Trilinos vectors with ghost entries can now be reset to zero using = 0.0;
    (Timo Heister, 2014/10/14)

  19. New: The new function FiniteElement::get_associated_geometry_primitive() allows to query whether a given degree of freedom is associated with a vertex, line, quad, or hex.
    (Wolfgang Bangerth, 2014/09/26)

  20. Fixed: The vector and array versions of Utilities::MPI::sum() and Utilities::MPI::max() produced segmentation faults with some MPI implementations if the input and output arguments were the same. This is now fixed.
    (Wolfgang Bangerth, 2014/09/29)

  21. Fixed: Trying to have FE_Q(p) and FE_DGQ(r) elements next to each other in an hp::DoFHandler object led to assertions saying that these two elements don't know how to compute interface constraints where such elements touch. This has now been fixed: FE_DGQ is a discontinuous element, so there cannot be any interface constraints at all.
    (Wolfgang Bangerth, 2014/09/26)

  22. Fixed: The function TrilinosWrappers::VectorBase::sadd(double factor, VectorBase &v) erroneously added factor*v instead of scaling the calling vector by factor. This is now fixed.
    (Martin Kronbichler, 2014/09/26)

  23. Fixed: The function TrilinosWrappers::SparseMatrix::add(double factor, SparseMatrix &rhs) produced wrong results and ran into an exception if the rhs matrix included off-processor column entries. This is now fixed.
    (Martin Kronbichler, 2014/09/21)

  24. New: The function Threads::Task::joinable() can be used to verify whether a task object can be joined or not.
    (Wolfgang Bangerth, 2014/09/17)

  25. New: Added two optional parameters to TriaAccessor::center() and a new method TriaAccessor::intermediate_point(). They allow to query for a geometrically coherent center, or ask for arbitrary points on the underlying Manifold, given the dim coordinates in the reference element. Triangulation was refactored internally to use the new TriaAccessor::center() interface when querying for new points.
    (Luca Heltai, 2014/09/13)

  26. Improved: Optimize construction of high-order FE_Nedelec by moving out some non-essential computations. Namely, construct restriction and prolongation matrices on first request. This reduces time spent in FE_Nedelec constructor substantially.
    (Alexander Grayver, 2014/08/22)

  27. New: There is now a GridGenerator::flatten_triangulation() taking a Triangulation<dim, spacedim_1> as input and returning a Triangulation<dim, spacedim_2> as output. The output triangulation will contain a single level with all active cells of the input triangulation, and will be topologically equivalent to the input triangulation. If the two space dimensions are equal, then this function will copy the triangulation removing all levels, e.g., flattening it. If the two space dimensions are different, then this function will copy the vertices only up to the smallest space dimension parameter.
    Using this function, you can create a Triangulation<2,3> from a Triangulation<2,2> or project to the plane z=0 your Triangulation<2,3>. No checks are performed on the validity of the resulting Triangulation.
    (Luca Heltai, 2014/08/19)

  28. Changed: The functions GridTools::extract_boundary_mesh() and GridTools::create_union_triangulation() have been moved to GridGenerator::extract_boundary_mesh() and GridGenerator::create_union_triangulation() since, conceptually, they generate meshes. The old functions have been retained but are now deprecated.
    (Wolfgang Bangerth, 2014/08/19)

  29. New: TriaAccessor::measure() is now also implemented for faces of 3d cells as long as the face is planar.
    (Kevin Drzycimski, 2014/08/19)

  30. Fixed: Support SLEPc 3.5 by disabling SDFOLD spectrum transformation type that has been removed from SLEPc. Therefore, TransformationSpectrumFolding cannot be used with newer SLEPc versions.
    (Alexander Grayver, 2014/08/15)

  31. New: To better support applications that want to use C++11's range-based for loops, there are now functions Triangulation::cell_iterators(), Triangulation::all_cell_iterators() and similarly in classes DoFHandler and hp::DoFHandler that return a range object that can then be used in range-based for loops. The underlying implementation uses the new IteratorRange class.
    See the new C++11 page for more information.
    (Wolfgang Bangerth, 2014/08/07)

  32. New: The new class FunctionManifold allows arbitrary manifold descriptions, in which you have an explicit Function<chartdim> for the ManifoldChart::push_forward() method, and an explicit Function<spacedim> for ManifoldChart::pull_back() method (or an expression for both). In these cases, you can construct a Manifold description on the fly.
    (Luca Heltai, 2014/08/07)

  33. New: Added CylindricalManifold description.
    This class allows refinement of cylindrical manifolds. It is a good companion for GridGenerator::cylinder() and the perfect companion for GridGenerator::cylinder_shell().
    (Luca Heltai, 2014/08/06)

  34. New: TrilinosWrappers::PreconditionAMG can now be initialized from an object of type Epetra_RowMatrix, which allows using it with more arbitrary matrix objects, including matrix-free methods.
    (Martin Kronbichler, 2014/08/06)

  35. Fixed: The FE_Nedelec element computed face interpolation matrices wrongly for elements of order p>1. This also led to trouble computing hanging node constraints in the context of hp adaptivity. This is now fixed.
    (Alexander Grayver, 2014/08/05)

  36. New: The function GridTools::get_patch_around_cell() extracts the set of cells that surround a single cell. The new functions DoFTools::count_dofs_on_patch() and DoFTools::get_dofs_on_patch() then help set up local problem on patches.
    (Arezou Ghesmati, Wolfgang Bangerth, 2014/07/29)

  37. Fixed: Utilities::string_to_int() and Utilities::string_to_double() did not catch if the string given started with an integer or double but contained additional text. They now throw an exception if this happens.
    (Wolfgang Bangerth, 2014/07/20)

  38. New: The function GridOut::write can now be used also in the codimension one case.
    (Luca Heltai, 2014/07/18)

  39. New: The Function classes now take an additional optional template argument, specifying the type of number to use, which defaults to double.
    (Luca Heltai, 2014/07/18)

  40. New: The GridReordering::reorder_cells() function used a numbering format for the vertices in a cell that was last used in deal.II version 5.2. This format is still used internally, but the function now also understands the numbering that has been used in deal.II ever since. The choice is made by an additional argument to the function that defaults to the old-style format for backward compatibility.
    (Wolfgang Bangerth, 2014/07/14)

  41. New: There are now functions GridOut::write_vtk() and GridOut::write_vtu() that can write a mesh in VTK/VTU format.
    (Wolfgang Bangerth, 2014/07/14)

  42. Fixed: PETSc up to at least version 3.5 has a bug where it does not zero-initialize the ghost elements of a newly created ghosted parallel vector. This is now worked around inside deal.II.
    (Wolfgang Bangerth, Michal Wichrowski, 2014/07/12)

  43. Improved: The Trilinos direct solver, TrilinosWrappers::SolverDirect, now takes a string to select among the available Amesos solvers. Moreover, the solver now also supports deal.II's distributed vectors.
    (Uwe Köcher, Martin Kronbichler, 2014/07/09)

  44. New: There are now three new preconditioner classes TrilinosWrappers::PreconditionBlockJacobi, TrilinosWrappers::PreconditionBlockSSOR, and TrilinosWrappers::PreconditionBlockSOR that work on small dense blocks of the global matrix instead of the point-wise relaxation methods in TrilinosWrappers::Precondition{Jacobi,SSOR,SOR} that work on each row separately.
    (Martin Kronbichler, 2014/07/04)

  45. Fixed: Some versions of DoFTools::extract_boundary_dofs() were not instantiated for some combinations of arguments. This could lead to missing symbol errors during linking of applications on some platforms and with some compiler versions. This is now fixed.
    (Wolfgang Bangerth, 2014/07/04)

  46. Fixed: GridGenerator::merge_triangulations sometimes produced invalid orientations of faces. This is now fixed.
    (Daniel Arndt, 2014/06/30)

  47. Fixed: TrilinosWrappers::PreconditionAMG did not read user-provided constant modes (aka null space) when the null space dimension is one but not just the trivial one vector. This is now fixed.
    (Martin Kronbichler, 2014/06/30)

  48. Simplified interfaces for FEEvaluation: Previously, the user had to select the appropriate kernel (FEEvaluation, FEEvaluationGeneral, FEEvaluationDGP, FEEvaluationGL) for the matrix-free evaluation routines. This made it difficult to write compact code that needs to select between different elements. Therefore, all the functionality has been merged into FEEvaluation and one should only use FEEvaluation, while the other interfaces have been marked deprecated and will be removed in a future version. The internal data structures for the various special cases have been kept in order to provide for the most efficient routines, and are selected at construction of FEEvaluation.
    (Martin Kronbichler, 2014/06/27)

  49. Bugfix: TBB specific include directories have to be added to the list of user include directories because of direct inclusion of header files in base/thread_local_storage.h.
    (Matthias Maier, Kainan Wang, 2014/06/25)

  50. Improved: GridGenerator::hyper_cube() accepts a colorize argument.
    (Guido Kanschat, 2014/06/23)

  51. New: Functions DoFTools::extract_locally_relevant_dofs(), parallel::distributed::GridRefinement::refine_and_coarsen_fixed_number() and parallel::distributed::GridRefinement::refine_and_coarsen_fixed_fraction() are now also instantiated for objects of codimension 1.
    (Michal Wichrowski, 2014/06/15)

  52. New: There are now functions Triangulation::has_hanging_nodes() and parallel::distributed::Triangulation::has_hanging_nodes().
    (Denis Davydov, 2014/06/15)

  53. New: There is now function Triangulation::n_global_active_cells().
    (Denis Davydov, 2014/06/19)

  54. New: The class FEEvaluation now provides optimized matrix-free evaluation routines for FE_Q_DG0 elements.
    (Martin Kronbichler, 2014/06/13)

  55. Bugfix: Filter libclang_rt* from the PETSc link line.
    (Matthias Maier, 2014/06/04)

  56. Improved: ParameterHandler parsing added to DoFOutputOperator
    (Guido Kanschat, 2014/06/03)

  57. Improved: Algorithms::ThetaTimestepping and other operators now use AnyData to communicate with operators they rely on. This way, time step data can be forwarded using the same mechanism, and no complicated back access to member data is required anymore. MeshWorker::IntegrationInfo uses AnyData as well.
    (Guido Kanschat, 2014/06/03)

  58. Bugfix: CMake: Also clean CMAKE_MODULE_PATH prior to call to FIND_PACKAGE(Boost) inside FindBOOST.cmake because apparently "Boost" == "BOOST" for the Mac file system...
    (Matthias Maier, 2014/05/28)

  59. Improved: CMake: Search results and error conditions for external libraries are now much more verbose. Added an MPI sanity check.
    (Matthias Maier, 2014/05/28)

  60. Fixed: The MatrixTools::apply_boundary_values() variant that works on PETSc matrices could produce a deadlock in parallel if one processor had no boundary values to apply. This is now fixed.
    (Michal Wichrowski, 2014/05/19)

  61. New: AnyData::try_read() is a function that allows users to check whether an entry exists and get a pointer to it without throwing an exception in case of failure.
    (Guido Kanschat, 2014/05/16)

  62. New: The GMRES solver of deal.II can now write an estimate of eigenvalues to the log file, in analogy to the CG solver. This is enabled by the flag SolverGMRES::AdditionalData::compute_eigenvalues.
    (Martin Kronbichler, 2014/05/11)

  63. New: The GridIn::read_vtk() function places fewer restrictions on the VTK files it wants to read and should, consequently, be able to read more correctly formatted VTK files than before.
    (Giorgos Kourakos, 2014/05/08)

  64. New: There is now a QSorted quadrature which takes an arbitrary quadrature at construction time and reorders the quadrature points according to the weights, from smaller to bigger. This should improve stability of higher order polynomial integration.
    (Luca Heltai, 2014/05/07)

  65. New: The class VectorizedArray<Number> now provides methods VectorizedArray::load(ptr) to read from arbitrary pointer addresses and VectorizedArray::store(ptr) to write to arbitrary pointer addresses, as opposed to the data layout of VectorizedArray that requires pointers to be aligned by the size of the array in bytes. This also circumvents a (rare) compiler optimization bug with gcc-4.6 on SSE code in combination with function calls, e.g. to std::sin.
    (Martin Kronbichler, 2014/05/05)

  66. Changed: Namespace SparsityTools had a local typedef size_type that was set equal to types::global_dof_index. This typedef has been removed and we now use SparsityPattern::size_type wherever applicable as this is the type we really want to use. (The code worked previously because types::global_dof_index and SparsityPattern::size_type happen to be the same as far as the underlying type is concerned; however, they are different semantically.)
    (Wolfgang Bangerth, 2014/05/04)

  67. Updated: The step-16 tutorial program was updated to the new layout multigrid objects and thus avoids using deprecated interfaces.
    (Martin Kronbichler, 2014/05/03)

  68. Fixed: FE_DGQArbitraryNodes::has_support_on_face was broken when polynomials with support points not on the element boundary were used. This is now fixed.
    (Martin Kronbichler, 2014/04/30)

  69. Fixed: parallel::distributed::Triangulation::load now has an additional parameter autopartition to control p4est's behavior of rebalancing triangulations between MPI nodes upon reading. It is particularly useful to disable this behavior when data is stored separately (examples for this are in the regression tests mpi/p4est_save_0?).
    (Alexander Grayver, Matthias Maier, 2014/04/26)

  70. Fixed: GridTools::find_active_cell_around_point() could get into an infinite loop if the point we are looking for is in fact not within the domain. This is now fixed.
    (Giorgos Kourakos, Timo Heister, Wolfgang Bangerth, 2014/04/14)

  71. Changed: TableBase now uses AlignedVector for storing data instead of std::vector, which allows its use for VectorizedArray<Number> data fields which require more alignment.
    (Martin Kronbichler, 2014/04/09)

  72. Improved: Piola transformation for FE_BDM is now active.
    (Guido Kanschat, 2014/04/09)

  73. Changed: operator< for cell iterators no longer looks at (level-)subdomain ids but only compares level() and index(). This makes the ordering inconsistent between processes on a parallel::distributed::Triangulation, but fixes the problem that the ordering of cells changes under mesh refinement or other causes for changing the subdomain id.
    (Timo Heister, 2014/04/08)

  74. New: GridTools::laplace_transform() now takes an additional, optional parameter that indicates the "stiffness" of the mapping.
    (Denis Davydov, Jean-Paul Pelteret, 2014/04/07)

  75. Fixed: DoFTools::extract_constant_modes now correctly identifies both constant modes in the scalar element FE_Q_DG0, which has been realized by a few modifications in how the constant modes propagate from the element to the extract_constant_modes() function.
    (Martin Kronbichler, 2014/04/04)

  76. Fixed: GridTools::laplace_transform had previously announced in the documentation that one can also set the location of interior points, but this was not in fact what was implemented. This has now been fixed: the code can now do that.
    (Denis Davydov, Wolfgang Bangerth, 2014/03/23)

  77. Improved: Inhomogeneous tangential and normal flow constraints can now be treated via VectorTools::compute_nonzero_normal_flux_constraints and VectorTools::compute_nonzero_tangential_flux_constraints.
    (Daniel Arndt, 2014/03/16)

  78. Changed: Class TriaAccessor had a function parent_index(), but this function could only work for cell accessors. The function has consequently been moved to class CellAccessor.
    (Wolfgang Bangerth, 2014/03/15)

  79. Fixed: step-32 had a piece of code where we accessed an internal representation of how Trilinos vectors are actually stored. This is poor style and has been rewritten.
    (Wolfgang Bangerth, 2014/03/14)

  80. Fixed: VectorTools::project_boundary_values_curl_conforming contained a bug for some cases. This is now fixed.
    (Markus Bürg, 2014/03/10)

  81. Fixed: ParameterHandler will no longer output an error if the file to be read ends with "end" without a newline.
    (Timo Heister, 2014/02/28)

  82. Improved: DoFRenumbering::Cuthill_McKee can now run with distributed triangulations with the renumbering only done within each processor's subdomain.
    (Martin Kronbichler, 2014/02/20)

  83. Fixed: There was an indexing error in GridIn::read_vtk() that triggered for some input files. This is now fixed.
    (Mayank Sabharwal, 2014/02/19)

  84. New: There is a new namespace TimeStepping for the algorithms that do time integrations. In this new namespace, several Runge-Kutta methods have been implemented: explicit methods, implicit methods, and embedded explicit methods.
    (Damien Lebrun-Grandie, Bruno Turcksin, 2014/02/17)

  85. New: There is now a class FEEvaluationDGP that implements matrix-free evaluation routines by truncated tensor products for FE_DGP elements.
    (Martin Kronbichler, 2014/02/17)

  86. Changed: The InverseMatrixRichardson used to eat all exceptions that may have been produced by the underlying Richardson solver, leaving no trace that the underlying solver may have failed when you call functions such as InverseMatrixRichardson::vmult(). These exceptions are now propagated out to the caller.
    (Wolfgang Bangerth, 2014/02/16)

  87. New: FE_TraceQ implements finite elements on faces, which correspond to the traces of H1-conforming elements.
    (Angela Klewinghaus, 2014/02/14)

  88. New: FE_FaceQ and FE_FaceP now also work in 1D (with a single dof on each vertex).
    (Martin Kronbichler, 2014/02/11)

  89. Fixed: FE_DGQ::has_support_on_face returned a wrong number for element degree larger than 1 in 1D. This is now fixed.
    (Martin Kronbichler, 2014/02/10)

  90. Changed: DerivativeApproximation used to be a class that only had static members. It is now a namespace.
    (Wolfgang Bangerth, 2014/02/08)

  91. New: Threads::ThreadLocalStorage::clear() clears out all objects allocated on the current and all other threads.
    (Wolfgang Bangerth, 2014/02/06)

  92. Fixed: A configuration error on Debian Testing where accidentally a non-pic libSuiteSparse_config.a was picked up when building a shared library up resulting in a link error.
    (Matthias Maier, 2014/02/04)

  93. Changed: GridTools::transform() can now deal with meshes with hanging nodes.
    (Timo Heister, 2014/02/04)

  94. Fixed: Calling FEValuesViews::Vector::get_function_curls() computed wrong results in some cases (see This is now fixed.
    (Christoph Heiniger, Wolfgang Bangerth, 2014/02/03)

  95. Added: The class LAPACKFullMatrix now implements interfaces to matrix-matrix multiplication. Also, LAPACKFullMatrix::apply_lu_factorization now also operates on multiple right hand sides in form of another LAPACKFullMatrix.
    (Martin Kronbichler, 2014/02/03)

  96. Fixed: The build system does no longer record full paths to system libraries but uses the appropriate short names instead.
    (Matthias Maier, 2014/02/01)

  97. Reworked: External feature setup. Disabling a feature now cleans up associated internal, cached variables. A per-feature linkage test now spots common linking inconsistencies early in the configuration stage (and not just after a complete compilation).
    (Matthias Maier, 2014/02/01)

  98. New/fixed: The ParameterHandler::print_parameters_section method did not work for XML output. There is now a flag include_top_level_elements which prints all higher subsection elements, default is false. For XML output setting this flag to true is required to ensure that the output is a valid XML document, starting with one root element ParameterHandler and compatible with read_input_from_xml and the parameterGUI.
    (Martin Steigemann, 2014/02/01)

  99. New: There is now a method to copy the content from a PETScWrappers::MPI::Vector and TrilinosWrappers::MPI::Vector to deal.II's parallel distributed vector.
    (Ben Thompson, Martin Kronbichler, 2014/01/31)

  100. Fixed: The SolutionTransfer class had all sorts of problems when used with hp::DoFHandler that made its results at least questionable. Several parts of this class have been rewritten to make the results more predictable and, likely, more correct.
    (Wolfgang Bangerth, 2014/01/26)

  101. Fixed: A regression where a single whitespace accidentally added to DEAL_II_LINKER_FLAGS internally prevented cmake-2.8.8 from configuring successfully.
    (Matthias Maier, Krysztof Bzowski, 2014/01/26)

  102. Fixed: SparsityPattern::max_entries_per_row() forgot to consider the last row of the matrix and consequently sometimes returned wrong values. This is now fixed.
    (Martin Kronbichler, 2014/01/22)

  103. Improved: In rare cases when the vector of error indicators has entries equal to zero the adjust_interesting_range method produces a negative lower bound. As a result the parallel::distributed::GridRefinement::refine_and_coarsen_fixed_* methods flagged the wrong number of cells for coarsening and refinement. This is now changed by adjusting the lower bound in adjust_interesting_range only, if not equal to zero.
    (Martin Steigemann, 2014/01/22)

  104. Changed: It was previously possible to set the active_fe_index on non-active cells of an hp::DoFHandler. However, this was prone to mistakes because it may lead to the assumption that a finite element space out of the ones described by the hp::FECollection associated with this hp::DoFHandler was actually associated with such a cell. Since we do not actually distribute degrees of freedom for such hp::DoFHandler objects on non-active cells, this is not the case. Consequently, it no longer has any effect to assign active FE indices to non-active cells: these values are simply reset later on.
    (Wolfgang Bangerth, 2014/01/20)

  105. Fixed: The method DoFTools::extract_constant_modes only worked for elements where the constant function 1 is represented by all ones. This is now fixed by querying the element for its constant modes on each cell.
    (Martin Kronbichler, 2014/01/19)

  106. Fixed: PETScWrappers::MPI::Vector::all_zero() was broken with more than one processor (illegal memory access) and did not communicate between all processors. Documentation for many vector types of all_zero() has been extended.
    (Timo Heister, 2014/01/17)

  107. Fixed/new: DoFCellAccessor::set_dof_values_by_interpolation and DoFCellAccessor::get_interpolated_dof_values could previously be called for hp::DoFHandler objects on cells that are non-active. This makes no sense since these cells have no associated finite element space. Doing so now raises an exception.
    However, there are legitimate cases where one may want to interpolate from children to a parent's finite element space or the other way around. Since in the hp case no finite element space is naturally associated with an inactive cell, it is now possible to pass an explicit finite element index argument to these functions specifying which element of an hp::FECollection object describes the space onto which you want to interpolate.
    (Mihai Alexe, Wolfgang Bangerth, 2014/01/18)

  108. Fixed: The methods IndexSet::do_compress() and IndexSet::add_indices(IndexSet&) had quadratic complexity in the number of ranges. The algorithms have been changed into linear complexity ones.
    (Martin Kronbichler, 2014/01/15)

  109. Fixed: There were several bugs in functions like FEValues::get_function_values() where the code did not properly handle the case of FE_Nothing. This is now fixed.
    (Wolfgang Bangerth, 2014/01/08)

  110. Fixed: DataOut got confused in some situations where one uses FE_Nothing. This is now fixed.
    (Minh Do-Quang, Wolfgang Bangerth, 2014/01/08)

  111. Fixed: FESystem::get_interpolation_matrix, a function that is among other places used by SolutionTransfer, had a bug that prevented it from running correctly in some situations where one uses FE_Nothing. This is now fixed.
    (Minh Do-Quang, Wolfgang Bangerth, 2014/01/08)

  112. Improved: When you call WorkStream::run with an empty function object for the copier, operations on individual cells are essentially all independent. In other words, you have a massively parallel collection of jobs. In this case, a parallel for loop over all elements is better suited than the pipeline approach currently used. This has now been implemented.
    (Wolfgang Bangerth, 2013/12/26)

  113. New: The new function VectorTools::interpolate_based_on_material_id() can be used to interpolate several functions onto a mesh, based on the material id of each cell individually.
    (Valentin Zingan, 2013/12/26)

  114. New: A new reinit() method has been introduced to TrilinosWrappers::SparsityPattern that takes all rows that are possibly written into as an optional argument. This allows for pre-allocating all possible entries right away, which makes writing into the matrix from several threads possible (otherwise, only one processor at a time can write off-processor data). Similarly, TrilinosWrappers::MPI::Vector objects can be initialized with hints to ghost elements for a writable vector that can be added into from multiple threads.
    (Martin Kronbichler, 2013/12/23)

  115. New: The TableBase::fill function has become more powerful in that it now doesn't just take pointers to initializing elements but can deal with arbitrary input iterators. It now also takes a flag that denotes the order in which table elements are initialized, allowing to switch between C- and Fortran-style table layouts.
    Along with the TableBase::fill function, the Table classes of various ranks have also gotten constructors that allow the in-place construction not only of a table of correct size, but already initialized from somewhere. This finally allows to mark Table objects as const by creating them already with the correct content.
    (Wolfgang Bangerth, 2013/12/21)

  116. New: There is now a new class Functions::InterpolatedTensorProductGridData that can be used to (bi-/tri-)linearly interpolate data given on a tensor product mesh of \(x\) (and \(y\) and \(z\)) values, for example to evaluate experimentally determined coefficients, or to assess the accuracy of a solution by comparing with a solution generated by a different code and written in gridded data. There is also a new class Functions::InterpolatedUniformGridData that can perform the same task more efficiently if the data is stored on meshes that are uniform in each coordinate direction.
    (Wolfgang Bangerth, 2013/12/20)

  117. Fixed: ParameterHandler::get_double() and ParameterHandler::get_integer() had bugs in that they didn't detect if they were asked to return a number for a parameter whose value was in fact not a number but some general text. This is now fixed.
    (Wolfgang Bangerth, 2013/12/19)

  118. Fixed: VectorTools::project_boundary_values could not deal with function values close to (but not exactly equal to) zero. This is now fixed.
    (Martin Kronbichler, 2013/12/16)

  119. New: It is now possible to select between different smoothers and coarse solvers in the Trilinos AMG preconditioners by a string to the smoother's name.
    (Andrew Baker, 2013/12/14)