Reference documentation for deal.II version GIT relicensing-837-gaf73e64026 2024-06-15 22:40:02+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
No Matches
Changes between Version 8.4.2 and 8.5.0

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


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: LAPACKFullMatrix::print_formatted is only allowed if the state is 'matrix' or 'inverse_matrix'.
    (Daniel Arndt, 2017/03/18)

  2. Changed: The template arguments to the DerivativeApproximation::approximate_derivative_tensor() function have been modified. It is no longer necessary to explicitly specify the dim and spacedim arguments as they are determined from the input DoFHandler.
    (Jean-Paul Pelteret, 2017/02/16)

  3. Changed: PETScWrappers::VectorBase::operator= is now both private and undefined. This operator was formerly implicitly defined (i.e., it did a byte-for-byte copy of VectorBase's members), which provided, almost certainly, the wrong behavior since the underlying Vec (the managed PETSc object) would then be destroyed twice. Since both inheriting classes (PETScWrappers::Vector and PETScWrappers::MPI::Vector) define their own operator= overloads this operator is also not necessary.
    (David Wells, 2017/02/11)

  4. Fixed: The MappingQGeneric class (which is a base class of MappingQ) sometimes set the update_JxW_values flag internally, even though this was not necessary. This resulted in doing more work than was actually necessary, and this has been rectified. On the other hand, this change means that in some circumstances, codes may not have explicitly told an FEValues or FEFaceValues object that they actually need the JxW values, but could access them anyway without getting an error. This will now yield an error that is easily fixed by explicitly listing update_JxW_values as a required flag where you create the FEValues object.
    (Wolfgang Bangerth, 2017/01/16)

  5. Changed: The class FE_DGQ used to provide a protected constructor taking a one-dimensional Quadrature argument. This has been changed in favor of a constructor taking a vector of polynomials. To use the old constructor, you can create a vector of polynomials by replacing the argument quadrature_1d by Polynomials::generate_complete_Lagrange_basis(quadrature_1d.get_points()). In addition, the class FE_DGQArbitraryNodes that defines the public interface taking a one-dimensional quadrature formula is unchanged, so only user codes that derive directly from FE_DGQ should be affected.
    (Martin Kronbichler, 2017/01/11)

  6. Deprecated: The DataOutInterface::write_pvd_record() and DataOutInterface::write_visit_record() functions were actually independent of any kind of data being written. As a consequence, they did not depend on the state of the DataOutInterface object to which they belonged (or any object of a derived class). Such functions typically reside in the DataOutBase namespace instead where they have now been moved. The functions in DataOutInterface are now deprecated.
    (Wolfgang Bangerth, 2016/12/03)

  7. Changed: VectorTools::create_right_hand_side and VectorTools::create_boundary_right_hand_side now take an additional template parameter VectorType.
    (Daniel Arndt, 2016/10/25)

  8. Deprecated: ParameterHandler::read_input, ParameterHandler::read_input_from_xml, and ParameterHandler::read_input_from_string are now deprecated in favor of ParameterHandler::parse_input, ParameterHandler::parse_input_from_xml, and ParameterHandler::parse_input_from_string. These new functions throw exceptions to indicate failure instead of using return codes.
    (David Wells, 2016/09/15)

  9. Deprecated: MGCoarseGridLACIteration got deprecated in favor of MGCoarseGridIterativeSolver.
    (Timo Heister, 2016/09/14)

  10. Changed: The template parameter order in many VectorTools functions is now different; this was done so that the order is the same across similar functions. This will only effect code that explicitly specifies template parameters for overloaded VectorTools functions (no known deal.II-based projects do this).
    (David Wells, 2016/09/06)

  11. New: deal.II now requires at least BOOST version 1.56, rather than the previous minimal version of 1.54. This is because 1.54 does not support serializing objects of type std::unique_ptr if C++11 is used, but we now use such objects in a variety of places in classes that can be serialized. BOOST 1.56, on the other hand, supports this. deal.II bundles BOOST 1.62 for cases where no or no sufficiently new version of BOOST is found on a system.
    (Wolfgang Bangerth, 2016/08/22)

  12. Removed: Deprecated classes CompressedSparsityPattern, CompressedSimpleSparsityPattern, CompressedSetSparsityPattern, and their block variants got removed.
    (Timo Heister, 2016/08/13)

  13. Deprecated: MGLevelObject::clear() deprecated in favor of MGLevelObject::clear_elements() due to clear() being inconsistent with behavior of other container objects.
    (Jonathan Robey, 2016/08/08)

  14. Changed: Several operators from LocalIntegrators::Divergence got moved to LocalIntegrators::GradDiv and the never used/tested LocalIntegrators::Divergence::grad_div() function was removed.
    (Timo Heister, Guido Kanschat, 2016/08/02)

  15. Changed: DoFTools::make_cell_patches() only accepts block lists of type SparsityPattern. The reason is that it has to initialize the size of the pattern on distributed triangulations by computing the number of locally owned cells. Initialization differs between sparsity pattern classes, so no generic function would be possible. On the other hand, the block list is an object, which only extends over locally owned grid cells and its size can be determined efficiently upon initialization. Therefore, SparsityPattern is a good choice here.
    At the same time, we changed the dof handler template to the type DoFHandler, since hp::DoFHandler requires a different setup of the SparsityPattern.
    (Guido Kanschat, 2016/08/02)

  16. Changed: The conversion constructors of class Vector from the PETScWrappers::Vector, PETScWrappers::MPI::Vector, TrilinosWrappers::Vector, and TrilinosWrappers::MPI::Vector classes are now marked as explicit, i.e., they will no longer allow implicit, silent conversions. Such conversions lead to awkward errors that are hard to debug, and in cases where they are necessary, are best described in code through explicit casts.
    (Wolfgang Bangerth, 2016/06/25)

  17. Changed: The deal.II distributed vector classes do now derive from LinearAlgebra::VectorSpaceVector and have been moved to the LinearAlgebra::distributed namespace. In the definition of the new interfaces, several old vector functions have been marked as deprecated. The methods operator==, operator!=, is_non_negative, and norm_sqr have been removed from the new interface. For the latter, there exists a simple workaround as it simply corresponds to the square of l2_norm.
    (Martin Kronbichler, 2016/06/15)

  18. Changed: The Triangulation::Signals::clear signal is now triggered before, not after the internal data structures of the triangulation are destroyed. This allows functions attached to the signal to save information associated with the triangulation.
    (Wolfgang Bangerth, 2016/06/07)

  19. Changed: deal.II used to create template instantiations for scalar types double, float, and long double. Since long double is rarely used and the additional precision does usually not pay off because most of the other arithmetics in deal.II are only done using double variables, it is not instantiated by default any more. This reduces the library size by up to 20 percent. In case you need instantiations of certain methods using long double data structures and get linker errors stating undefined symbols involving long double, include the respective .templates.h file(s) with the code definitions. See the section on Template instantiations in the manual for further information.
    (Martin Kronbichler, 2016/04/26)

  20. Changed: FlatManifold takes as argument a periodicity option. This used to be a Point<dim>, but it should have been a Tensor<1,dim>. This is now changed.
    (Luca Heltai, 2016/04/09)

  21. Changed: The default nodal point distribution of FE_Q, FE_DGQ, FE_Q_DG0, FE_Q_Bubbles, and FE_TraceQ has been changed from equidistant points to the node points of the corresponding Gauss-Lobatto quadrature formula. For degrees one and two, the Gauss-Lobatto quadrature is equidistant and thus the unit support points are as before. However, the Gauss-Lobatto points are more dense towards the element boundaries at higher degrees. This gives well-conditioned interpolation at arbitrary orders and much more stable computations. While these node distribution was available before, it was not very visible and often lead to misunderstandings by inexperienced users. Most codes will not be affected by this change, even those using cubic and higher degree polynomials, apart from slightly different (better) interpolation behavior and different entries in solution vectors. If you explicitly need equidistant points, use the constructors FE_Q<dim>(QIterated<1>(QTrapez<1>(),degree)) or FE_DGQArbitraryNodes<dim>(QIterated<1>(QTrapez<1>(),degree)).
    (Martin Kronbichler, 2016/04/05)

  22. Removed: Support for the legacy Make.global_options file has been removed.
    (Matthias Maier, 2016/03/17)

  23. Removed: Functions with names containing boundary_indicator have been removed. They had previously already been deprecated, and replaced by functions containing the string boundary_id instead, to keep with the style used for material_id, subdomain_id, etc.
    (Wolfgang Bangerth, 2016/02/28)

  24. Changed: Many functions in VectorTools and MatrixTools now require matching data types between vectors, matrices, and Function arguments.
    (Denis Davydov, 2016/02/27)

  25. Changed: ConstraintMatrix::distribute_local_to_global() and numerous functions in VectorTools namespace now require matching data types. This is done to correctly handle complex-valued case.
    (Denis Davydov, 2016/02/22)


  1. New: The new code gallery example, "Quasi-Static Finite-Strain Quasi-incompressible Visco-elasticity", demonstrates the parallel solution of a near incompressible rate-dependent elastomeric strip.
    (Jean-Paul Pelteret, 2017/02/24)

  2. New: The tutorial step-57 shows how to solve the stationary Navier-Stokes equations using Newton's method.
    (Liang Zhao, Timo Heister, 2017/01/17)

  3. New: A LinearOperator Payload class supporting Trilinos sparse matrices and preconditioners has been developed. LinearOperator's, and their associated functionality, have thus been extended so that they can now be used with Trilinos algebra types.
    (Jean-Paul Pelteret, Matthias Maier, 2017/01/04)

  4. New: The Physics::Transformations namespace defines a number of operations that can be used to push forward and pull back quantities to and from different body configurations.
    (Jean-Paul Pelteret, Andrew McBride, 2016/12/05)

  5. New: Implemented some standard tensor definitions for elasticity in Physics::Elasticity::StandardTensors. Within the newly implemented Physics::Elasticity::Kinematics namespace are some standard definitions of kinematic quantities commonly used in elasticity.
    (Jean-Paul Pelteret, Andrew McBride, 2016/12/05)

  6. New: The Physics namespace is dedicated to defining useful functions and other quantities that are regularly used in the implementation of classical (multi-)physics problems.
    (Jean-Paul Pelteret, 2016/12/05)

  7. Improved: The step-37 tutorial program now shows the matrix-free multigrid solver based on MPI parallelization rather than only a serial version. Moreover, support for adaptively refined meshes has been added.
    (Martin Kronbichler, 2016/11/23)

  8. Improved: the error codes for all MPI functions are now checked and, if the MPI function failed for any reason, an exception with a helpful message is thrown.
    (David Wells, 2016/11/09)

  9. Fixed: We have run the PVS static analysis checker on the entire code base, to see what possible problems it uncovers (see With the exception of a few false positives, several dozen issues (mostly uninitialized variables) were fixed.
    (Konstantin Ladutenko and many others, 2016/11/08)

  10. Improved: The way DataPostprocessor receives its input has been updated.
    In the past, the two functions we use to postprocess data got lists of arguments for the solution, its derivatives, the evaluation points, and normal vectors. This is not flexible enough: We can not easily add other information that we have needed in the past or that users have requested, such as a pointer to the cell we're currently on, or the material-id of the cell.
    Rather than adding each possible argument anyone may want to use individually to the list of the postprocessor function arguments, the existing functions have been deprecated in favor of a new set of functions DataPostprocessor::evaluate_scalar_field() and DataPostprocessor::evaluate_vector_field() that take a reference to a structure that contains these individual pieces of information. We can extend the members of these structures without backward compatibility issues because the functions still get a reference to the same structure, we just grow the structure itself. Functions that never used the new members of the structure will continue to work as they always did.
    As an example of what is possible, the DataPostprocessorInputs classes that are now handed to the evaluation functions contain a way to access the cell that is currently being evaluated.
    (Wolfgang Bangerth, 2016/10/31-2016/12/21)

  11. Improved: The code in class GridReordering has been rewritten from scratch. It now follows the algorithm described in the paper by Agelek, Anderson, Bangerth and Barth mentioned in the documentation of that class.
    (Wolfgang Bangerth, 2016/10/28)

  12. Improved: deal.II now bundles a subset of BOOST 1.62 instead of a subset of BOOST 1.56.
    (David Wells, 2016/10/20)

  13. New: Add a new FiniteElement class, FE_P1NC, to implement the scalar version of the P1 nonconforming finite element which is a piecewise linear element on quadrilaterals in 2d.
    (Jaeryun Yim, 2016/10/01)

  14. New: FE_Enriched finite element class implements the partition of unity method which allows to enrich the finite element space based on a priori knowledge about solution.
    (Denis Davydov, 2016/09/28)

  15. New: The Tensor class has two new functions implemented, namely those that return its Tensor::adjugate() and Tensor::cofactor().
    (Jean-Paul Pelteret, 2016/09/25)

  16. Improved: The doxygen documentation now contains nicely formatted boxes containing the text message of each exception. Several messages haven been clarified and improved.
    (Timo Heister, 2016/09/06)

  17. New: There are 6 new video lectures that explain the basics of Linux and the command line, how mesh refinement works, and some more complicated time stepping schemes. (See also video lecture 2.9, video lecture 2.91, video lecture 17.25, video lecture 17.5, video lecture 17.75, video lecture 30.25.)
    (Wolfgang Bangerth, 2016/08/19)

  18. New: deal.II no longer uses features of the C++ language that were deprecated with C++11, C++14, or that are scheduled to be deprecated for C++17.
    (David Wells, Jonathan Robey, Wolfgang Bangerth, 2016/08/11)

  19. New: Added Python bindings to generate and manipulate a Triangulation from Python. The Triangulation generated in Python can be saved and later, loaded inside a C++ code.
    (Bruno Turcksin, 2016/08/03)

  20. Improved: A few of the introductory examples (steps five through eight) no longer use the Function class; they use plain functions instead.
    (David Wells, 2016/07/25)

  21. Improved: The build system now checks for usable compiler/linker flags during various stages of the configure run. This should catch the majority of issues by user supplied flags/libraries and unusable final link interfaces before we actually proceed to compile the library.
    (Matthias Maier, 2016/07/13)

  22. Improved: The testsuite now supports fine grained feature constraints of the form test.with_[feature]_with_[...]=true corresponding to variables DEAL_II_<FEATURE>WITH[...] exported to deal.IIConfig.cmake.
    (Matthias Maier, 2016/07/11)

  23. New: The library is now compatible with PETSc 3.7.0. Part of this change included adding a new header, petsc_compatibility.h, which provides some version-independent functions for using common PETSc functions.
    (David Wells, 2016/07/07)

  24. Refactored: The contrib/ directory has been cleaned up and the Parameter GUI has be reloacted into its own repository:
    (Matthias Maier, Timo Heister, 2016/07/06)

  25. New: Add new classes to expand a scalar finite element solution into the orthogonal bases FESeries::Fourier and FESeries::Legendre. Also provide auxiliary functions to calculate norms of subsets of expansion coefficients FESeries::process_coefficients and linear regression FESeries::linear_regression. Update step-27 to use this namespace to drive the hp-adaptive FEM solution process.
    (Denis Davydov, 2016/06/23)

  26. New: The tutorial step-55 shows how to solve the Stokes system in parallel with PETSc or Trilinos.
    (Timo Heister, 2016/06/17)

  27. New: The tutorial step-56 demonstrates Geometric Multigrid for the Stokes equations.
    (Ryan Grove, Timo Heister, 2016/06/01)

  28. Improved: The step-44 tutorial now uses the new CellDataStorage class to store and retrieve local quadrature point data. An alternative approach to solving the linear system using the LinearOperator class has been implemented.
    (Jean-Paul Pelteret, 2016/05/20)

  29. New: Add a collection of classes to manage user's quadrature point data: CellDataStorage, TransferableQuadraturePointData and parallel::distributed::ContinuousQuadratureDataTransfer. The implementation of CellDataStorage is flexible to support different types of data object at different cells. parallel::distributed::ContinuousQuadratureDataTransfer provides a convenient interface to transfer quadrature point data between cells of parallel::distributed::Triangulation.
    (Denis Davydov, Jean-Paul Pelteret, 2016/04/30)

  30. New: Added an interface to the GNU Scientific Library. Also introduce a cubic spline interpolation function Functions::CSpline.
    (Denis Davydov, 2016/04/28)

  31. New: Added move operations to BlockIndices, BlockVectorBase and BlockVector; Vector move operations nullify old object instead of using swap.
    (Daniel Shapero, 2016/04/13)

  32. New: Added a new Mapping class, MappingManifold, to use exact geometrical information extracted from the Manifold description instead of a polynomial approximation when computing transformations from the reference to the real cell. This class allows the computation of quadrature points, tangent vectors, and normal vectors which are exact with respect to the geometrical description, and it uses the underlying Manifold objects of the Triangulation. MappingManifold coincides with MappingQ1 for the FlatManifold descriptor.
    (Luca Heltai, 2016/04/09)

  33. New: Manifold objects were previously only used to compute the locations of individual new points on a manifold. Now, they are also used to compute tangent vectors (via Manifold::get_tangent_vector()), and this functionality provides the basis for computing normal vectors to manifolds as well.
    In many cases, tangent vectors can be computed quite easily if the manifold has a functional description, i.e., if it can be represented via the ChartManifold class. In those cases, it is only necessary to overload the ChartManifold::push_forward_gradient() function that computes the derivatives of the push forward operation.
    (Luca Heltai, Wolfgang Bangerth, 2016/04/08)

  34. New: Added indent target to indent all headers and source files. Now you can do make (or ninja) indent inside the build directory.
    (Alberto Sartori, 2016/03/02)

Specific improvements

  1. Fixed: Configuration and compilation with opencascade 7
    (Matthias Maier, 2017/03/21)

  2. Fixed: FEFieldFunction now correctly throws ExcPointNotAvailableHere if used in parallel with points not available locally.
    (Timo Heister, 2017/03/18)

  3. New: The Manifold class and derived classes now provide a function Manifold::add_new_points that allows to compute multiple new points according to a matrix of weights that are appended to the last argument of the function. This function is used in MappingQGeneric and can be much more efficient for ChartManifold because ChartManifold::pull_back() calls are reused for several interpolation operations.
    (Martin Kronbichler, 2017/03/17)

  4. Improved: The mechanism for placing the additional points of a MappingQ or MappingQGeneric between different Manifolds or between an old-style Boundary class and the interior StraightBoundary has been reworked. In the new implementation, a smoothing algorithm is invoked that interpolates from the whole perimeter of a cell's (or a face's) interior in case two or more manifolds are adjacent to the cell, like a Boundary object and the StraightBoundary in the interior. If only one manifold is present, the new points are interpolated from the surrounding vertices only.
    (Martin Kronbichler, 2017/03/17)

  5. Fixed: By moving a forward declaration of VectorizedArray to a more central place, it is now possible to use the norm() methods of Tensor, Point or SymmetricTensor objects of VectorizedArray classes without particular order of include files.
    (Martin Kronbichler, 2017/03/12)

  6. Changed: The parallel triangulation classes parallel::shared::Triangulation and parallel::distributed::Triangulation used to duplicate the MPI communicator given to the constructor, which could lead to access-after-free problems in Trilinos data structures based on this communicator that stayed alive longer than the Triangulation. The new implementation simply uses the MPI communicator provided by the user and thus avoids these problems. It is the user's responsibility to make sure MPI_Comm_free is only called when all data structures initialized with it are deleted.
    (Martin Kronbichler, 2017/03/08)

  7. Fixed: The CellSimilarity detection was broken on two corner cases involving complicated elements such as FE_RaviartThomas inside an FESystem and when preserving an FEValues object using GridTools::transform. These have been fixed.
    (Martin Kronbichler, 2017/03/07)

  8. Improved: MatrixFreeOperators::Base also supports block vectors. Derived operators may act on multiple blocks.
    (Daniel Arndt, 2017/03/05)

  9. New: Reworked Physics::Elasticity::Kinematics so that it is usable with vectorization
    (Mathias Mentler, 2017/03/01)

  10. Fixed: Fixed a bug in IndexSet::index_within_set() for the case when an index set is empty.
    (Denis Davydov, 2017/02/28)

  11. Fixed: The function AlignedVector::push_back did not work correctly for types that do not provide a default constructor. This is now fixed.
    (Martin Kronbichler, 2017/02/22)

  12. Fixed: The class MGTransferMatrixFree::clear() did not reset all member variables, sometimes treating Dirichlet boundary conditions incorrectly if a transfer object was reused. This is now fixed.
    (Martin Kronbichler, 2017/02/22)

  13. Fixed: The DoFAccessor specialization for structdim == 0 and dimension == 1 was missing several definitions, which were required for use of hp::DoFHandler in 1D. These have now been added.
    (David Wells, 2017/02/19)

  14. Fixed: Fixed a bug in GridTools::laplace_transform() which was previously solving for the final position field instead of displacement. The two formulations are not equivalent when a non-constant coefficient is provided, which is commonly used with displacement formulation.
    (Denis Davydov, 2017/02/17)

  15. Improved: The class FEEvaluation can now also be used without compile-time knowledge of the polynomial degree. If the template parameter fe_degree is set to -1, the degree will be deduced from the underlying finite element. Note that performance is 2-3 times slower, though.
    (Martin Kronbichler, 2017/02/16)

  16. Fixed: The GridOut::write_mesh_per_processor_as_vtu() function now works for a mesh whose multilevel hierarchy is not distributed, as well as a mesh whose level_subdomain_ids do not necessarily match its subdomain_ids for every active cell.
    (Conrad Clevenger, 2017/02/09)

  17. Fixed: Patterns::Selection now ignores spaces at the beginning and the end of the sequence string.
    (Rajat Arora, 2017/02/09)

  18. Fixed: Trilinos solvers now respect the convergence criterion specified by ReductionControl.
    (Jean-Paul Pelteret, 2017/01/28)

  19. New: Implement Functions::Spherical to represent a function given in spherical coordinates.
    (Denis Davydov, 2017/01/28)

  20. New: numbers::signaling_nan() can now also be called with Point<dim> as argument.
    (Wolfgang Bangerth, 2017/01/18)

  21. Changed: The function FETools::compute_node_matrix() used to return its result by reference through its first argument (a reference to a FullMatrix object). It now returns this matrix as an object.
    (Wolfgang Bangerth, 2017/01/16)

  22. New: Two ConstraintMatrix objects can be merged even if their local_lines are not the same.
    (Daniel Arndt, 2017/01/13)

  23. Fixed: The FE_PolyTensor class (and all of its descendants) was not thread-safe. This is now fixed.
    (Wolfgang Bangerth, 2017/01/09)

  24. Fixed: The FE_ABF class reported the maximal polynomial degree (via FiniteElement::degree) for elements of order \(r\) as \(r+1\), but this is wrong. It should be \(r+2\) (see Section 5 of the original paper of Arnold, Boffi, and Falk). This is now fixed.
    (Wolfgang Bangerth, 2017/01/13)

  25. Fixed: Various issues with the CMake configuration of the cuda configuration have been addressed, including correct handling of compiler flags and preprocessor definitions.
    (Matthias Maier, 2017/01/12)

  26. Improved: The results for step-18 have been updated to reflect the influence of the recent corrections to the rotation matrix.
    (Jean-Paul Pelteret, 2017/01/12)

  27. New: There are two new finite elements FE_DGQLegendre and FE_DGQHermite which are similar to FE_DGQ but use the class Polynomials::Legendre and Polynomials::HermiteInterpolation as shape functions.
    (Martin Kronbichler, 2017/01/11)

  28. Fixed: LinearAlgebra::distributed::Vector used persistent MPI communicators for data exchange, which are not as well-tuned as the usual MPI_Isend and MPI_Irecv calls on some implementations, including memory leaks on IBM MPI if the communicators are alive over a longer time. Therefore, the communication has been changed to non-blocking MPI_Isend and MPI_Irecv calls.
    (Martin Kronbichler, 2017/01/11)

  29. New: The class VectorizedArray has gained two new access functions, gather and scatter, that map to more efficient hardware versions on new architectures (AVX2 or AVX-512). Furthermore, support for AVX-512 has been improved by providing optimized vectorized_load_and_transpose() and vectorized_transpose_and_store().
    (Martin Kronbichler, 2017/01/11)

  30. New: MatrixFree allows to be asked if a certain FiniteElement is supported.
    (Daniel Arndt, 2017/01/11)

  31. Fixed: FE_Q::compare_for_face_domination() could not deal with FE_Nothing if dim != spacedim.
    (Wolfgang Bangerth, 2017/01/11)

  32. Fixed: FE_Q::compare_for_face_domination() did not know how to deal with situations where the neighboring cell was an FE_DGQ, even though the reverse situation worked just fine. This is now fixed.
    (Wolfgang Bangerth, 2017/01/11)

  33. Improved: The contract3() function has been extended accommodate both Tensor and SymmetricTensors arguments.
    (Jean-Paul Pelteret, Matthias Maier, 2017/01/10)

  34. Fixed: A bug in the rotation matrix used in step-18 has now been corrected. This tutorial now uses the function Physics::Transformations::Rotations::rotation_matrix_3d to compute the 3d rotation matrix.
    (Jean-Paul Pelteret, Paul Kuberry, 2017/01/09)

  35. New: Functions to compute the 2d and 3d rotation matrix have been implemented and can be found in the Physics::Transformations::Rotations namespace.
    (Jean-Paul Pelteret, 2017/01/09)

  36. New: LocalIntegrators::Laplace::ip_tangential_matrix() and LocalIntegrators::Laplace::nitsche_tangential_matrix() implement interior penalty and Nitsche boundary conditions for vector valued Poisson problems.
    (Guido Kanschat, 2017/01/09)

  37. Fixed: Copying objects of type PolynomialsABF would lead to memory corruption once one of the two copies is destroyed. This is now fixed.
    (Wolfgang Bangerth, 2017/01/09)

  38. Fixed: PolynomialsABF::compute_n_pols() returned the wrong value in 3d.
    (Wolfgang Bangerth, 2017/01/09)

  39. Improved: The MPI_Comm used in MatrixFree is not configurable via AdditionalData anymore but set to the MPI_Comm of the Triangulation.
    (Daniel Arndt, 2017/01/08)

  40. Fixed: The testsuite now handles paths containing spaces correctly.
    (Matthias Maier, 2017/01/06)

  41. New: hp::DoFHandler now uses a compressed data structure for its internal representation of DoF indices. This saves memory.
    (Wolfgang Bangerth, 2017/01/06)

  42. Fixed: MappingQGeneric, when computing values on a given cell, sometimes reused information computed on a different cell whose faces were curved in a different way. MappingQGeneric now recomputes all values when its order is greater than one (that is, when it can represent curved cells).
    (David Wells, 2017/01/05)

  43. New: Additional solve() functions have been added to the Trilinos solver classes, which provide the necessary extension for them to be compatible with LinearOperators.
    (Jean-Paul Pelteret, 2017/01/04)

  44. New: The Trilinos preconditioner classes have been extended to be compatible with LinearOperators.
    (Jean-Paul Pelteret, 2017/01/04)

  45. New: LinearOperator now derive from an arbitrary Payload class. This allows their functionality to be extended to support matrix and vector classes such as the wrappers to PETSc or Trilinos.
    (Jean-Paul Pelteret, Matthias Maier, 2017/01/04)

  46. Improved: The representation of the two polynomial classes Polynomials::Legendre and Polynomials::HermiteInterpolation has been changed to the root form, which ensures stable evaluation at high degrees as opposed to the coefficient form previously used.
    (Martin Kronbichler, 2017/01/03)

  47. Fixed: ConstraintMatrix::shift also works if the object is initialized with an IndexSet object.
    (Daniel Arndt, 2017/01/03)

  48. New: Modify IndexSet::index_within_set() to return numbers::invalid_dof_index if the global index is not a member of this index set.
    (Denis Davydov, 2016/12/23)

  49. Improved: ContraintMatrix::distribute_local_to_global now does a bulk write of all vector values at once. This improves performance with PETScWrappers::MPI::Vector by about 10%.
    (David Wells, 2016/12/21)

  50. Changed: IndexSet::compress() and, by extension, all of the "const" member functions of the IndexSet class, are now thread-safe.
    (Wolfgang Bangerth, 2016/12/20)

  51. Changed: IndexSet::nth_index_in_set() can now be called without calling IndexSet::compress() first.
    (Wolfgang Bangerth, 2016/12/19)

  52. Fixed: The SymmetricTensor copy constructor that accepted another SymmetricTensor of a different number type had an error in its internal data initialization loop range. This bug was only triggered when copying rank-4 tensors.
    (Jean-Paul Pelteret, 2016/12/16)

  53. Fixed: The DataOutFaces class did not work with parallel triangulations if a process had no faces to deal with.
    (Justin Kauffman, Wolfgang Bangerth, 2016/12/15)

  54. New: The ArrayView class now has a default constructor that creates an invalid object.
    (Wolfgang Bangerth, 2016/12/08)

  55. Fixed: ArrayView objects to empty views could not be copied. This is now fixed.
    (Wolfgang Bangerth, 2016/12/07)

  56. New: The inverse of a rank-2 SymmetricTensor can now be directly computed with SymmetricTensor::invert() instead of having to use the Tensor::invert() function.
    (Jean-Paul Pelteret, 2016/12/07)

  57. Improved: The run time for the method hp::DoFHandler::distribute_dofs was quadratic in the total number of dofs for some grids. This has been fixed.
    (David Wells, 2016/12/07)

  58. Changed: To improve readability, TimerOutput::print_summary() now simply outputs "0%" if a particular section's time requires less than 0.1 per cent of the overall run time.
    (Wolfgang Bangerth, 2016/12/03)

  59. Improved: The trait class has_vmult_add in linear_operators.h has been restricted to test if there is a vmult_add and a Tvmult_add method that takes two arguments. This check now also works with ICC 13 and ICC 14.
    (Daniel Arndt, 2016/11/25)

  60. New: Automatically recreate changes.h from files in subfolders of ./doc/news
    (Daniel Arndt, 2016/11/18)

  61. Fixed: Objects of type TrilinosWrappers::SparsityPattern::const_iterator were entirely unusable due to a bug. This is now fixed.
    (Wolfgang Bangerth, 2016/11/15)

  62. Fixed: DataOut::build_patches() ignored a higher order or Eulerian mapping if no data had previously been attached via DataOut::add_data_vector(), i.e., if all that was to be output is the mesh itself. This is now fixed.
    (Wolfgang Bangerth, 2016/11/15)

  63. Fixed: Calling MappingQ::clone() did not copy the use_mapping_q_on_all_cells flag that this mapping class gets passed to its constructor. This leads to wrong results if you wanted to use curved cells on interior cells and if such an object was used inside an hp::MappingCollection, for example. There are, in addition, several places in the library where one would pass a mapping, and the library would clone it into a member of such a collection, and these would also yield wrong results. An example is the use of DataOut::build_patches with a mapping that had this flag set upon construction.
    (Sebastian Gonzalez-Pintor, Wolfgang Bangerth, 2016/11/15)

  64. Fixed: There was a memory leak if a previously used SparsityPattern object was re-used by reading from a serialization archive via SparsityPattern::load(). This is now fixed.
    (Wolfgang Bangerth, 2016/11/10)

  65. New: Add PArpackSolver::reinit(const VectorType &distributed_vector) to initialize internal data structures based on a vector. This makes PArpack usable with MatrixFree operators.
    (Denis Davydov, 2016/10/31)

  66. New: Add MatrixFreeOperators::LaplaceOperator representing a Laplace matrix.
    (Denis Davydov, 2016/10/30)

  67. New: VectorTools::project can be used for parallel Triangulations in specific cases.
    (Daniel Arndt, 2016/10/30)

  68. Fixed: Increased precision of timesteps in DataOutInterface::write_pvd_record().
    (Rajat Arora, 2016/10/29)

  69. New: Add VectorTools::project() to do L2 projection of scalar-valued quadrature point data in parallel.
    (Denis Davydov, 2016/10/28)

  70. New: The class PreconditionChebyshev now offers a third template parameter PreconditionerType that is passed to the preconditioner setup via AdditionalData::preconditioner. This allows using other preconditioners than the default (and previous) selection of a point-Jacobi preconditioner.
    (Martin Kronbichler, 2016/10/27)

  71. New: There is a new class DiagonalMatrix which represents a diagonal matrix via a vector. This is useful for representing Jacobi preconditioners with matrix-free methods.
    (Martin Kronbichler, 2016/10/27)

  72. New: Add MatrixFreeOperators::MassOperator representing a mass matrix.
    (Daniel Arndt, 2016/10/27)

  73. Fixed: GridIn::read_vtk() had off-by-one errors in reading face boundary indicators from VTK files. Consequently, not all boundary indicators were correctly set.
    (Mayank Sabharwal, Wolfgang Bangerth, 2016/10/25)

  74. New: Add ArpackSolver::set_shift() to set the shift value in spectral transformation.
    (Denis Davydov, 2016/10/25)

  75. New: VectorTools::create_right_hand_side can be used for parallel Triangulations and homogeneous constraints using a ConstraintMatrix.
    (Daniel Arndt, 2016/10/25)

  76. New: PreconditionChebyshev now offers a PreconditionChebyshev::step() and PreconditionChebyshev::Tstep() methods for usage in relaxation smoothers.
    (Martin Kronbichler, 2016/10/21)

  77. Fixed: GridIn::read_vtk() accidentally only read material ids of input cells correctly if the file listed them as integers. If they were listed them as floating point numbers, then unpredictable numbers were used.
    (Wolfgang Bangerth, 2016/10/20)

  78. New: Add a base class for matrix-free operators MatrixFreeOperators::Base.
    (Denis Davydov, 2016/10/16)

  79. New: There is now a function FEEvaluation::JxW() to return the Jacobian determinant times the quadrature weight in the matrix-free evaluation routines similarly to FEValues.
    (Martin Kronbichler, 2016/10/14)

  80. Fixed: GridGenerator::hyper_cube_slit() with colorized set to true is now working correctly.
    (Timo Heister, 2016/10/04)

  81. Fixed: SphericalManifold now behaves correctly also when R>>1 and the center is not the origin.
    (Luca Heltai, 2016/10/01)

  82. New: FETools::extrapolate allows for using the extrapolate algorithm on parallel::distributed::Triangulations.
    (Daniel Arndt, Martin Steigemann, 2016/09/28)

  83. Improved: Some parts of mesh refinement are now parallelized.
    (Wolfgang Bangerth, 2016/09/27)

  84. Improved: MGSmootherBlock is now able to use the shared memory pool for temporary vector allocation. The constructor requiring an external memory allocation has therefore been deprecated.
    (Jonathan Robey, 2016/09/21)

  85. Fixed: EmbeddedRungeKutta methods now correctly increase delta_t_guess when the error is below coarsen_tol.
    (Vaibhav Palkar, Bruno Turcksin, 2016/09/16)

  86. New: DoFTools::write_gnuplot_dof_support_point_info outputs support point locations and dof indices to a format readable by gnuplot.
    (Timo Heister, 2016/09/16)

  87. Fixed: The Multigrid W-cycle and F-cycle have been fixed (for uniform grids).
    (Martin Kronbichler, 2016/09/16)

  88. Improved: The multigrid V-cycle has been rewritten for performance on large-scale machines. Rather than transferring parts of the defect immediately to all coarser levels with a complexity of O(n_levels) global communication steps per V-cycle, we now transfer the full defect once to the next coarser level only, resulting in crossing all processors only once.
    (Martin Kronbichler, 2016/09/16)

  89. Fixed: TrilinosWrappers::MPI::Vector::locally_owned_elements() now returns the correct IndexSet also if initialized with two IndexSets.
    (Daniel Arndt, 2016/09/16)

  90. New: LinearAlgebra::Vector is now instantiated for float and double.
    (Bruno Turcksin, 2016/09/15)

  91. New: The class MGCoarseGridIterativeSolver is replacing MGCoarseGridLACIteration with a simpler interface.
    (Timo Heister, 2016/09/14)

  92. Improved: FEValues no longer generates the mapping's internal database if the mapping will not be required for the set of update flags specified.
    (Jonathan Robey, 2016/09/14)

  93. Fixed: Instantiating class Vector with non-standard template arguments did not work because of duplicate function symbols. This is now fixed.
    (Dragan Nikolic, 2016/09/14)

  94. New: IndexSet::is_ascending_and_one_to_one allows to find out whether the nth range of indices is stored on the nth process in case the IndexSets are contiguous.
    (Daniel Arndt, 2016/09/11)

  95. Fixed: IndexSet::make_trilinos_map now treats non-ascending but contiguous IndexSets correctly. It creates a linear EpetraMap only if the IndexSets are ascending and 1:1.
    (Daniel Arndt, 2016/09/11)

  96. Fixed: The CMake macros DEAL_II_(ADD_TEST|SETUP_TARGET) now enforce a stricter CMAKE_BUILD_TYPE handling. This helps to avoid situations where targets with different build flavors might accidentally get linked against each other.
    (Matthias Maier, 2016/09/08)

  97. Fixed: FE_TraceQ now provides unit support points.
    (Martin Kronbichler, 2016/09/08)

  98. Fixed: Reimplement copy_triangulation and load in parallel::shared::Triangulation, this avoids the loss of partition information which causes parallel::shared::Triangulation to be in an invalid state.
    (Ce Qin, 2016/09/05)

  99. Fixed: The build system now uses -fPIC instead of -fpic
    (Matthias Maier, 2016/08/31)

  100. Fixed: Fix MPI_InitFinalize by correctly initializing and destroying all p4est/libsc related objects by calls to sc_init(), p4est_init(), and sc_finalize(); compatibility with p4est versions >1.1.
    (Jonathan Perry-Houts, 2016/08/31)

  101. Improved: SparsityPattern::copy_from() copying from a DynamicSparsityPattern argument had quadratic complexity in the number of rows for sparsity patterns where most of the rows are of length zero. The bad algorithm has been replaced by a linear complexity one.
    (Dustin Kumor, Martin Kronbichler, 2016/08/31)

  102. New: There is now the possibility to store information about the time of an output time step within the .visit file created by the DataOutInterface<dim,spacedim>::write_visit_record function.
    (Rene Gassmoeller, Juliane Dannberg, 2016/08/24)

  103. New: It is now possible to generate a cell_iterator to a cell that is identified by a CellId. CellIds are unique even across processes in distributed computations, therefore this change allows to identify a particular cell (e.g. a ghost cell of the local process) in another domain.
    (Rene Gassmoeller, 2016/08/17)

  104. New: Rank-4 symmetric tensors of type SymmetricTensor can now be converted to rank-4 tensors of type Tensor.
    (Wolfgang Bangerth, 2016/08/11)

  105. New: PreconditionMG can now be used as a LinearOperator.
    (Denis Davydov, 2016/08/09)

  106. New: Implement MGCoarseGridApplySmoother class to do a few steps of a smoother at the coarsest level.
    (Denis Davydov, 2016/08/09)

  107. New: RelaxationBlock classes for geometric multigrid now support parallel computations using Trilinos.
    (Timo Heister, Guido Kanschat, 2016/08/08)

  108. New: Added a new PolarManifold descriptor, that uses a polar coordinate system to compute new points, and modified the existing SphericalManifold descriptor to use geodesics on the surface of the sphere.
    (Luca Heltai, Mauro Bardelloni, 2016/08/04)

  109. New: Introduce operators for residuals and interior penalty terms for the Grad-Div operator in LocalIntegrators::GradDiv.
    (Timo Heister, Guido Kanschat, 2016/08/02)

  110. Improved: DoFTools::make_cell_patches() can create block lists only extending over local cells of distributed triangulations.
    (Guido Kanschat, 2016/08/02)

  111. Improved: The regular and hp versions of DoFTools::make_flux_sparsity_pattern() no longer use the user flags of the underlying triangulation to determine if entries along a certain face have been added to the sparsity pattern.
    (David Wells, 2016/03/02 - 2016/08/02)

  112. Fixed: (P)ARPACK interface for non-symmetric matrices.
    (Joscha Gedicke, 2016/08/01)

  113. Fixed: The TrilinosWrappers::SparsityPattern::print() and TrilinosWrappers::SparsityPattern::print_gnuplot() methods did not produce correct output on distributed computations. This is now fixed.
    (Martin Kronbichler, 2016/07/30)

  114. Fixed: CMake now tries to pick up the full link interface for gsl. This works around an underlinkage issue with not correctly stating all shared object dependencies.
    (Matthias Maier, 2016/07/28)

  115. Fixed: Level indices for geometric multigrid queried through DoFAccessor::get_mg_dof_indices() would return wrong indices on lines and faces in non-standard orientation in 3D. This is now fixed.
    (Martin Kronbichler, 2016/07/27)

  116. New: There is now a new DoFTools::make_flux_sparsity_pattern() which takes a constraint matrix and flux and internal dof masks, in parallel. This is useful in the case where some components of a finite element are continuous and some discontinuous, allowing constraints to be imposed on the continuous part while also building building the flux terms needed for the discontinuous part.
    (Sam Cox, 2016/07/25)

  117. Improved: VectorTools::interpolate() may now be used on FESystems with mixed interpolating and non-interpolating FEs, if all of the selected components for interpolation originate from interpolating FEs.
    (Jonathan Robey, 2016/07/24)

  118. Improved: Allow for including dofs for individual components on boundary in DoFTools::make_vertex_patches().
    (Ryan Grove, Daniel Arndt, 2016/07/21)

  119. Improved: Split out pattern descriptions for LaTeX and Description ParameterHandler OutputStyles, and add better description text.
    (Jonathan Robey, 2016/07/21)

  120. Improved: VectorTools::interpolate() now takes a ComponentMask to select the components to interpolate.
    (Jonathan Robey, 2016/07/21)

  121. Improved: Allow for initializing the constrained boundary DoFs in MGConstrainedDoFs using a std::set instead of a FunctionMap whose function values were not used. Allow for non-primitive FiniteElements.
    (Daniel Arndt, 2016/07/20)

  122. New: Added GridGenerator::quarter_hyper_ball() to generate the intersection of a hyper ball with the positive orthant relative to its center.
    (Daniel Arndt, 2016/07/19)

  123. Fixed: Work around an issue with the OpenMPI installation on certain Ubuntu versions: The build system now automatically drops the "-fuse-ld=gold" linker flag if openmpi is incompatible with it.
    (Wolfgang Bangerth, Martin Kronbichler, Matthias Maier, 2016/07/13)

  124. Fixed: CMake now handles mixed compiler and linker setup via DEAL_II_CXX_FLAGS* / DEAL_II_LINKER_FLAGS* and CMAKE_CXX_FLAGS* properly.
    (Matthias Maier, 2016/07/13)

  125. Fixed: FEValues::reinit() would sometimes try to be overly clever and not re-compute information when called with the same cell twice in a row, even if the underlying triangulation had been moved, translated, stretched, or otherwise had its vertex locations changed between the two calls to FEValues::reinit(). This is now fixed.
    (Wolfgang Bangerth, Jean-Paul Pelteret, Rajat Arora, 2016/07/11)

  126. Fixed: Allow to use FETools::get_fe_by_name for all availabale FiniteElements.
    (Daniel Arndt, 2016/07/10)

  127. New: There is now a function DerivativeForm::norm().
    (Wolfgang Bangerth, 2016/07/08)

  128. Fixed: SymmetricTensor::norm() did not work correctly for complex underlying scalar types. This is now fixed.
    (Wolfgang Bangerth, 2016/07/08)

  129. Fixed: SymmetricTensor::access_raw_entry() erroneously produced an indexing error for rank-4 symmetric tensors. This is now fixed.
    (Wolfgang Bangerth, 2016/07/08)

  130. New: A move constructor has been added to Triangulation.
    (Daniel Shapero, 2016/07/07)

  131. Fixed: The function DoFTools::dof_couplings_from_component_couplings for hp::FECollection arguments was compiled but not exported from the object file. This is now fixed.
    (Wolfgang Bangerth, 2016/07/01)

  132. New: Added TrilinosWrappers::SolveDirect::initialize and TrilinosWrappers::SolverDirect::solve to solve distributed linear systems with multiple right hand sides without needing to refactorize the matrix every time.
    (Michael Harmon, 2016/06/30)

  133. New: The MappingFEField class was previously only instantiated if the vector type was Vector. It is now also instantiated for PETSc and Trilinos wrapper vector types.
    (Wolfgang Bangerth, 2016/06/25)

  134. Changed: Similar to MappingQEulerian, MappingQ1Eulerian has gained a second constructor that reverses the order of the arguments to indicate which DoFHandler a vector is based on. The old constructor is now deprecated and will be removed in a future version.
    (Wolfgang Bangerth, 2016/06/25)

  135. New: GnuplotFlags now supports user specified space dimension labels through a member variable.
    (David Wells, 2016/06/24)

  136. New: Added an operator* to SynchronousIterators which returns a reference to the stored tuple of iterators iterators. The iterators member may be made private in a future release.
    (Daniel Shapero, 2016/06/24)

  137. Fixed: Performance of DynamicSparsityPattern::begin(r) and DynamicSparsityPattern::end(r) has been improved dramatically in parallel computations and if the pattern is empty.
    (Timo Heister, 2016/06/21)

  138. New: IndexSet::at(idx) returns an iterator pointing to the given index or the next larger element in the set if idx is not contained.
    (Timo Heister, 2016/06/21)

  139. Fixed: FEFieldFunction now works correctly in distributed computations, where before exceptions of type ExcPointNotAvailableHere could occur for evaluation points on or close to a boundary to a ghost cell.
    (Timo Heister, 2016/06/06)

  140. Fixed: The Tensor class was not explicitly instantiated. This did not matter in almost all contexts because its members are all defined as inline in the header file. The only cases where it matters if one (or the compiler) were to take the address of one of the static member variables.
    (Wolfgang Bangerth, 2016/06/03)

  141. New: Return value std::vector<unsigned int> vertex_mapping for the DoFTools::make_vertex_patches() function, including the optional inversion of the vertex mapping.
    (Joscha Gedicke, 2016/05/25)

  142. Fixed: Fix a bug where the SparsityPattern could not have more than 4 billions entries when using 32bit indices.
    (Bruno Turcksin, 2016/05/22)

  143. New: There are now additional functions in the FETools::Compositing namespace that build finite elements out of simpler finite elements, either by forming tensor products or by combining the set of shape functions.
    (Denis Davydov, Wolfgang Bangerth, 2016/05/20)

  144. New: Added PArpackSolver::reinit() when dealing with BlockVectors.
    (Alberto Sartori, 2016/05/19)

  145. New: Add VectorTools::compute_global_error that computes global errors from cellwise errors obtained by VectorTools::integrate_difference() and do MPI collectives if necessary.
    (Timo Heister, 2016/05/15)

  146. Fixed: The function GridGenerator::subdivided_parallelepiped and its variants could generate meshes with cells that had negative Jacobians. The function now detects when this will happen and raises a descriptive exception instead of going on to produce cells which may have negative measure.
    (David Wells, 2016/05/11)

  147. New: Add functions to transform Cartesian coordinates to spherical and back: GeometricUtilities::Coordinates::to_spherical and GeometricUtilities::Coordinates::from_spherical.
    (Denis Davydov, 2016/05/10)

  148. Fixed: Corrected the sign of curl calculated in the functions: LocalIntegrators::curl_curl_matrix, LocalIntegrators::curl_matrix, LocalIntegrators::nitsche_curl_matrix and LocalIntegrators::ip_curl_matrix in integrators/maxwell.h.
    (Jihuan Tian, 2016/05/09)

  149. Fixed: Bug in the RelaxationBlock class function do_step. Before, the corrections were not added together, which leads to a wrong update whenever the Jacobi blocks are overlapping. For SOR, SSOR and non-overlapping Jacobi this was not an issue.
    (Joscha Gedicke, 2016/05/07)

  150. Improved: The method Triangulation::create_triangulation will now throw an exception if any cells have negative measure. This check is not run if the triangulation keeps track of distorted cells or if the codimension is not zero. This check was previously only run in 3D.
    (David Wells, 2016/05/07)

  151. New: Added function GridOut::write_mesh_per_processor_as_vtu. This allows the visualization of a parallel finite element mesh that can be separated into each processor's owned and ghost cells. It also allows for the visualization of each level of a multilevel mesh.
    (Conrad Clevenger, 2016/04/28)

  152. Fixed: TrilinosWrappers::SparseMatrix will now exit early if there are no entries to add to the matrix. This usually occurs when zero elision is on. This fixes a bug where the matrix raises an exception if there are no entries to add to a matrix and the provided row and column values are not locally stored.
    (David Wells, 2016/04/24)

  153. Fixed: TrilinosWrappers::MPI::Vector and TrilinosWrappers::Vector could access invalid memory in the reinit() method if the MPI communicator was deleted before termination of the program. This usually happened when using vectors from GrowingVectorMemory where a pool keeps vector alive. This has been fixed.
    (Martin Kronbichler, 2016/04/23)

  154. Fixed: The methods TrilinosWrappers::SparseMatrix::(T)mmult previously produced invalid matrix sizes if the final matrix was non-square. This has been fixed.
    (Martin Kronbichler, Daniel Jodlbauer, 2016/04/21)

  155. New: Added an optional string parameter to the ParameterHandler::read_input () and ParameterHandler::read_input_from_string() functions. When a line which equals this string is encountered, the parsing of parameters is terminated.
    (Denis Davydov, 2016/04/20)

  156. New: Added move operations to IndexSet.
    (Daniel Shapero, 2016/04/19)

  157. Improved: MeshWorker treats periodic faces as interior faces.
    (Daniel Arndt, 2016/04/18)

  158. Improved: The parallel loops in the deal.II Vector class for vector-vector operations have been revised for performance. This includes adjusting the minimum parallel grain size to 4096 vector entries and using an affinity partitioner provided by Threading Building Blocks for better data locality, especially on multi-socket systems.
    (Martin Kronbichler, 2016/04/14)

  159. New: added ReinitHelper for PETSc. This is required by LinearOperator class to reinit vectors.
    (Mauro Bardelloni, 2016/04/13)

  160. Fixed and improved: Fix algorithm for incomplete assignment of level subdomain ids for parallel geometric multigrid. Also optimize algorithms used for assignment and DoF communication.
    (Timo Heister, Martin Kronbichler, 2016/04/12)

  161. New: Added TensorProductManifold to create new manifolds from two ChartManifold objects. This can be used, for example, to combine a 2d manifold with a flat manifold for an extruded mesh.
    (Timo Heister, 2016/04/12)

  162. Improved: DoFRenumbering::compute_Cuthill_McKee when used with distributed triangulations contained parts that scaled as the global problem size, rather than the processor-local size. This prevented its use with more than a few hundred cores when hanging node constraints were activated. This has been fixed.
    (Martin Kronbichler, 2016/04/11)

  163. New: added hessenberg_signal and krylov_space_signal to SolverGMRES. These signals allow to retrieve the Hessenberg matrix and the basis vectors generated by the Arnoldi algorithm.
    (Giuseppe Pitton, Luca Heltai, 2016/04/11)

  164. New: Added New option in the read_ucd function of the GridIn class. A flag can now be assigned to the function, to decide whether the indicators specified in a UCD file should be interpreted as boundary_ids or as manifold_ids. This is particularly useful when the indicators refer to internal faces, for which boundary_ids cannot be used.
    (Andrea Mola, 2016/04/11)

  165. New: Added CompositionManifold to create new manifolds from two ChartManifold objects. This can be used, for example, to rotate a cylindrical Manifold, or to make a cylinders with parabolic sides.
    (Luca Heltai, 2016/04/09)

  166. New: A move constructor has been added to Quadrature.
    (Daniel Shapero, 2016/04/08)

  167. Fixed: Meshworker::Assembler::ResidualSimple now also works for multiple blocks if no constraints are given.
    (Daniel Arndt, 2016/04/08)

  168. Fixed: The multigrid transfer performed invalid data accesses on multigrid hierarchies that define the coarse level as a level larger than 0. This has been fixed.
    (Martin Kronbichler, 2016/04/03)

  169. New: Add GridTools::remove_hanging_nodes() and GridTools::remove_anisotropy() in GridTools. GridTools::remove_hanging_nodes() detects cells with hanging nodes and refines the neighbours in the direction that removes hanging nodes or in every directions. GridTools::remove_anisotropy() refines a mesh until the resulting mesh is composed by cells with ratio between the extension in each coordinate direction lower than a fixed value.
    (Mauro Bardelloni, 2016/03/28)

  170. New: When using C++11, a move constructor and assignment operator has been added to SparseMatrix, so that these objects can be returned from functions and packed into pairs and tuples.
    (Daniel Shapero, 2016/03/27)

  171. New: The product of a rank-1 tensor (a vector) and a rank-2 symmetric tensor (a symmetric matrix) is now defined and yields a rank-1 tensor (a vector). The opposite product was previously already defined.
    (Wolfgang Bangerth, 2016/03/25)

  172. New: Triangulation::add_periodicity allows for accessing neighbors across periodic boundaries via new functions in TriaAccessor.
    (Daniel Arndt, Ali Samii, 2016/03/23)

  173. New: Added GridGenerator::torus() to generate the volume mesh of a torus in three dimensions and a manifold description TorusManifold to go with it.
    (Timo Heister, 2016/03/21)

  174. Fixed: DoFHandler::locally_owned_dofs() could create a segmentation fault in cases where some processors do not own any cells. This was caused by an incorrect computation in DoFTools::locally_owned_dofs_per_subdomain().
    (Wolfgang Bangerth, 2016/03/20)

  175. New: Added GridTools::rotate() in three space dimensions.
    (Timo Heister, 2016/03/18)

  176. Improved: The distribution of degrees of freedom on multigrid levels, DoFHandler::distribute_mg_dofs(), contained a few steps that scaled quadratically in the number of local cells for certain configurations. These steps have been replaced by linear complexity calls.
    (Martin Kronbichler, 2016/03/18)

  177. New: Added custom target "relocate" to Mac OS X builds, that runs a script to make all paths absolute in the shared libraries included in the deal.II package (only enabled when building a package, and when including external libraries to the package)
    (Luca Heltai, 2016/03/14)

  178. New: Added unit tests for complex-valued PETSc and SLEPc.
    (Toby D. Young, Denis Davydov, 2016/03/11)

  179. New: Add NURBSPatchManifold. This class is a child of ChartManifold and implements a manifold descriptor for the face of a CAD imported using OpenCASCADE.
    (Mauro Bardelloni, 2016/03/09)

  180. New: When using C++11, there is now a function Threads::new_task() that can take as an argument either a lambda function, or the result of a std::bind expression, or anything else that can be called as in a function call. There is also a similar function Threads::new_thread() that takes the same kind of argument.
    (Wolfgang Bangerth, 2016/03/07)

  181. New: Added another scaling factor to Kelly error estimator, namely h_K.
    (Denis Davydov, 2016/03/05)

  182. New: When using C++11, the function filter_iterators() allows to filter a range of iterators using predicates (like the ones defined in IteratorFilter).
    (Bruno Turcksin, 2016/03/04)

  183. Fixed: The OpenCASCADE::push_forward_and_differential_forms() function is now able to change the direction of the normal vector according to Orientation() method.
    (Mauro Bardelloni, 2016/03/02)

  184. Updated: step-44 has been been expressed in a more dimension independent manner, and can be now run in both 2-d and 3-d.
    (Jean-Paul Pelteret, 2016/02/17)

  185. Fixed: The function IndexSet::make_trilinos_map() now works if some processors have a contiguous range of indices and others do not.
    (Bruno Turcksin, 2016/02/17)

  186. Fixed: Double contraction of two SymmetricTensor<..,VectorizedArray<T>> now works. Introduced internal::NumberType<T> with static member internal::Numbertype::value to be called instead of the constructor Number() in symmetric_tensor.h.
    (Mathias Mentler, 2016/02/14)

  187. Fixed: FE_Nedelec elements up to polynomial order 12 can now be constructed.
    (Jean-Paul Pelteret, 2016/02/12)

  188. Fixed: The GridTools::build_triangulation_from_patches() function now also copies the locations of vertices from the cells of the source triangulation to the triangulation that is built from the list of patch cells.
    (Spencer Patty, 2016/02/11)