Reference documentation for deal.II version Git 42bfb73b5a 2019-11-14 07:57:06 +0100
Changes between Version 8.2.1 and 8.3

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

### Incompatibilities

Following are a few modifications to the library that unfortunately are incompatible with previous versions of the library, but which we deem necessary for the future maintainability of the library. Unfortunately, some of these changes will require modifications to application programs. We apologize for the inconvenience this causes.

1. Changed: GridTools::distort_random is now deterministic (gives the same distorted mesh when called with the same input Triangulation).
(Timo Heister, 2015/07/09)

2. Changed: MatrixCreator::create_mass_matrix() took matrix and vector objects where the scalar type of the matrix was a template argument but the scalar type of the vector was always double. This has been changed so that the two always need to match.
(Denis Davydov, Wolfgang Bangerth, 2015/06/17)

3. Changed: Functions such as FEValuesBase::get_function_values() that extracted the values of functions at the quadrature points of a cell implicitly always assumed that double is a reasonable type to store the result in. This, however, is not true if the solution vector's underlying scalar type was, for example, std::complex<double>. All of the functions of FEValuesBase as well as of the various FEValuesViews class that extract values from solution vectors have been changed so that they now return their results in vectors that use the same underlying scalar type (float, double, or std::complex) as was used in the solution vector.
Most user codes will be entirely unaffected by this because they simply use the default vector types which all store their data as doubles. You may have to adjust your code, though, if you use non-standard types such as Vector<float> for solution vectors, or use complex-valued data types. This includes compiling PETSc with complex scalars.
(Denis Davydov, 2015/05/08)

4. Removed: The generic, templated vmult, Tvmult, etc. -interfaces of LAPACKFullMatrix - they were never implemented.
(Matthias Maier, 2015/04/10)

5. Removed: SparseDirectUMFPACK::vmult_add and SparseDirectUMFPACK::Tvmult_add - they were never implemented.
(Matthias Maier, 2015/04/10)

6. Removed: The class NamedData has been removed after it had been superseded by AnyData a while ago. This affects the use of classes in Algorithms and MeshWorker
(Guido Kanschat, 2015/04/02)

7. Removed: The CMake configuration does not use the variable DEAL_II_CMAKE_MACROS_RELDIR any more. Instead, the fixed location ${DEAL_II_SHARE_RELDIR}/macros is used unconditionally (Matthias Maier, 2015/03/26) 8. Changed: The TrilinosWrappers::SparseMatrix::clear_row() function used to call TrilinosWrappers::SparseMatrix::compress() before doing its work, but this is neither efficient nor safe. You will now have to do this yourself after assembling a matrix and before clearing rows. The changes to the function above also affect the MatrixTools::apply_boundary_values() variants that operate on Trilinos matrices. (Wolfgang Bangerth, 2015/03/09) 9. Changed: Implicit conversion from Tensor<1,dim> to Point<dim> was previously possible. This has now been prohibited (but you can still do the conversion with an explicit cast) as such conversions are likely incorrect uses of class Point (which should represent only points in space, i.e., vectors anchored at the origin) whereas Tensor should be used for vectors anchored elsewhere (such as normal vectors, directions, differences between points, etc). The difference in usage between Point and Tensor have now been clarified in the documentation of class Point. (Wolfgang Bangerth, 2015/01/12) 10. Changed: The project configuration no longer exports [...]/include/deal.II. Thus it is now mandatory to prefix all includes of deal.II headers with deal.II/, i.e. #include <deal.II/[...]>. (Matthias Maier, 2015/01/19) 11. Changed: ParameterHandler::leave_subsection() no longer returns a bool indicating if there was a subsection to leave. This never worked in the first place, because an exception was thrown. (Timo Heister, 2015/01/19) 12. Changed: Make.global_options was completely redesigned. It still contains Makefile sourcable information, but they now closely mimic the declarative style of deal.IIConfig.cmake. Thus, projects that still use Makefiles that source Make.global_options have to be ported to the new layout. (Matthias Maier, 2015/01/13) 13. Removed: The Component compat_files was removed entirely. deal.II now always configures and installs with a somewhat FSHS compliant directory structure. Further, the ancient make_dependencies binary was removed. Either migrate your project to CMake, or port your build system to the new (incompatible) Make.global_options found at ${DEAL_II_SHARE_RELDIR}.
(Matthias Maier, 2015/01/13)

14. Changed: The two-argument call to the MPI_InitFinalize constructor used to imply that the user wanted only one thread per MPI process. This has been changed and now means that every processor core on the system is used. If you run as many MPI processes as there are processor cores, then this means one thread per MPI process, as before. On the other hand, if you start fewer MPI processes than there are cores, then your program will now be allowed to use more than one thread. You can get the old behavior by setting the third (optional) argument to one.
(Wolfgang Bangerth, 2015/01/14)

15. Removed: TrilinosWrappers::SparseMatrix copy constructor got removed to be in line with PETSc and SparseMatrix. You can use reinit() and copy_from().
(Timo Heister, 2015/01/12)

16. Removed: The following compatibility definitions were removed from include/deal.II/base/config.h.in (replacement in brackets):

• DEAL_II_CAN_USE_CXX11 (new: DEAL_II_WITH_CXX11)
• DEAL_II_CAN_USE_CXX1X (new: DEAL_II_WITH_CXX11)
• DEAL_II_COMPILER_SUPPORTS_MPI (new: DEAL_II_WITH_MPI)
• DEAL_II_MAJOR (new: DEAL_II_VERSION_MAJOR)
• DEAL_II_MINOR (new: DEAL_II_VERSION_MINOR)
• DEAL_II_USE_ARPACK (new: DEAL_II_WITH_ARPACK)
• DEAL_II_USE_CXX11 (new: DEAL_II_WITH_CXX11)
• DEAL_II_USE_METIS (new: DEAL_II_WITH_METIS)
• DEAL_II_USE_MT (new: DEAL_II_WITH_THREADS)
• DEAL_II_USE_P4EST (new: DEAL_II_WITH_P4EST)
• DEAL_II_USE_PETSC (new: DEAL_II_WITH_PETSC)
• DEAL_II_USE_SLEPC (new: DEAL_II_WITH_SLEPC)
• DEAL_II_USE_TRILINOS (new: DEAL_II_WITH_TRILINOS)
(Matthias Maier, 2015/01/12)

17. Removed: The direct Mumps interface through SparseDirectMUMPS has been removed. The MUMPS solver is still available through the Trilinos or PETSc interfaces. Alternatively, there is SparseDirectUMFPACK, which has a similar interface.
(Matthias Maier, 2015/01/11)

18. Removed: This release removes a number of functions that have long been deprecated and that were previously already marked as deprecated (i.e., they would have yielded warnings by the compiler whenever you tried to use them). In almost all cases, there is a function with same name but different argument list that should be used instead. Specifically, the removed functions and classes are:
With headers in deal.II/base/:

• ThreadManagement::spawn.
• Threads::ThreadCondition and Threads::ThreadMutex.
• DataOutBase::create_xdmf_entry with 3 arguments.
• DataOutBase::write_hdf5_parallel with 2 arguments.
• The versions of FunctionParser::initialize that took a use_degrees or constants argument. The implementation as it is now no longer supports either of these two concepts (since we switched from the FunctionParser library to the muparser library after the deal.II 8.1 release).
• GridOutFlags::XFig::level_color.
• class BlockList.
• The MPI support functions in namespace Utilities and Utilities::System.
• Deprecated members of namespace types.
• Namespace deal_II_numbers.
• MultithreadInfo::n_default_threads.
• Table::data.

With headers in deal.II/lac/:

With headers in deal.II/deal.II/:

• GridGenerator::laplace_transformation.
• The version of GridGenerator::parallelogram where the corners are given as a rank-2 tensor rather than as an array of points.
• GridTools::create_union_triangulation.
• GridTools::extract_boundary_mesh.
• Triangulation::distort_random.
• Triangulation::clear_user_pointers.
• The refinement listener concept of the Triangulation class. This approach to getting notified about what happens to triangulations has been superseded by the signals defined by the triangulation class.

With headers in deal.II/fe/:

• In FEValues and related classes, the functions that contain the term 2nd_derivatives were removed in favor of those with names containing hessian. Similarly, functions with names including function_grads were removed in favor of those called function_gradients. Finally, the cell_normal_vector functions were replaced by normal_vector ones. In all cases, the new functions have been around for a while.
• Mapping::transform_covariant and Mapping::transform_contravariant.

With headers in deal.II/dofs/:

With headers in deal.II/multigrid/:

With headers in deal.II/matrix_free/:

• Classes FEEvaluationDGP, FEEvaluationGeneral and FEEvaluationGL.

With headers in deal.II/mesh_worker/:

With headers in deal.II/algorithm/:

With headers in deal.II/numerics/:

• TimeDependent::end_sweep (with an argument).
• PointValueHistory::mark_locations.
• The DataPostprocessor::compute_derived_quantities_scalar and DataPostprocessor::compute_derived_quantities_vector functions without evaluation points. If you have data postprocessor classes implemented in your program that overload these functions, you will have to change it in a way that they overload the functions of same name but with the evaluation point argument instead.
This release also removes the deprecated class MGDoFHandler. The functionality of this class had previously been incorporated into the DoFHandler class. Unlike the changes above, if you were still using this class, you will need to do the following changes to your code:
• Where you called mg_dof_handler.distribute_dofs() you now also need to explicitly call mg_dof_handler.distribute_mg_dofs().
• If you called mg_dof_handler.begin(level), you will now have to write this as mg_dof_handler.begin_mg(level) to make clear that you are not just interested in an iterator to a cell on a given level, but in fact to a cell that can access the degrees of freedom on a particular level of a multigrid hierarchy.
• The type previously referred to as MGDoFHandler::cell_iterator now corresponds to MGDoFHandler::level_cell_iterator.
• Where you previously called DoFRenumbering::component_wise for the entire MGDoFHandler object, you now need to call this function for the DoFHandler object, and then call the same function with the level argument for each of the levels of the triangulation individually.
(Wolfgang Bangerth, 2014/12/29-2015/01/22)

19. Removed: The config.h file no longer exports HAVE_* definitions. Those are either entirely removed (for the blas/lapack symbols) or renamed to DEAL_II_HAVE_*. This change is done in order to avoid clashes with external projects also exporting HAVE_* definitions in their header files.
(Matthias Maier, 2014/12/29)

### General

1. New: IndexSet now can be constructed using Epetra_Map.
(Luca Heltai, 2015/07/25)

2. New: Added the class Functions::Polynomial for representation of polynomials. The new class is derived from the Function class.
(Angel Rodriguez, 2015/07/01)

3. New: deal.II now supports compilation in C++14 mode, which may be enabled with the CMake option DEAL_II_WITH_CXX14.
(David Wells, 2015/06/21)

4. New: Implement a modified version of the Kelly error estimator, which effectively provides the boundary residual term for the hp-FEM error estimators.
(Denis Davydov, 2015/06/17)

5. New: DerivativeForm() now takes an additional optional template argument specifying the type, similarly to Tensor() classes.
(Luca Heltai, 2015/05/16)

6. New: Utilities::MPI::min() functions.
(Timo Heister, 2015/05/12)

7. New: A PackagedOperation class that stores computation expressions. The primary purpose of this class is to provide syntactic sugar for vector operations (vector space addition, scalar multiplication, application of a linear operator) while avoiding intermediate storage.
(Matthias Maier, 2015/05/10)

8. Fixed: Utilities::generate_normal_random_number() will now produce a deterministic sequence of numbers on every thread. Furthermore, it will also work on systems that do not have the rand_r library function, such as Cygwin.
(Wolfgang Bangerth, 2015/04/19)

9. New: A LinearOperator class that stores the abstract concept of a linear operator. The class is fully compatible with the solver and preconditioner interfaces. The primary purpose of this class is to provide syntactic sugar for complex matrix-vector operations and free the user from having to create, set up and handle intermediate storage locations by hand.
(Matthias Maier, 2015/04/08)

10. Fixed: There were a number of places in the library where we unconditionally called functions _mm_malloc()/_mm_free() to allocate and free memory with a known alignment. This function, however, is only available on systems with x86 or x64_64 compatible processors. These places have now been replaced by calling posix_memalign() instead, a function that should be more widely available.
(Wolfgang Bangerth, 2015/04/15)

11. Deprecated: The library uses functions such as CellAccessor::subdomain_id(), TriaAccessor::manifold_id(), etc, but used the deviant spelling TriaAccessor::boundary_indicator(), TriaAccessor::set_boundary_indicator(), TriaAccessor::set_all_boundary_indicators(). These last three functions are now deprecated and have been replaced by TriaAccessor::boundary_id(), TriaAccessor::set_boundary_id(), and TriaAccessor::set_all_boundary_ids() for consistency. Similar, Triangulation::get_boundary_indicators() has been deprecated in favor of Triangulation::get_boundary_ids().
(Wolfgang Bangerth, 2015/04/11)

12. Changed: All example programs used to have calls to set_boundary() methods to deal with curved boundaries. These have been replaced with the corresponding set_manifold() equivalent.
(Luca Heltai, 2015/04/06)

13. New: A new flag no_automatic_repartitioning in parallel::distributed::Triangulation will disable the automatic repartitioning when calling execute_coarsening_and_refinement() (or things like refine_global(), ...), resulting in all cells staying on the processor they were before. The new function repartition() will execute the repartitioning as done automatically before.
(Timo Heister, 2015/03/22)

14. Changed: All (Block)Compressed*SparsityPattern classes got replaced by DynamicSparsityPattern and BlockDynamicSparsityPattern, respectively and all examples now teach the dynamic way of creating dynamic sparsity patterns.
(Timo Heister, 2015/03/22)

15. Improved: We have traditionally had a large number of exceptions that did not output any useful error message other than the name of the exception class. This name was suggestive of the error that had happened, but did not convey a sufficient amount of information to what happened in many of the places where these kinds of exceptions were used, nor what may have caused the exception, or how it could be avoided. We have gone through many of these places and changed the exception to be much more verbose in what they state about the problem, its origin, and how it may be solved.
(Wolfgang Bangerth, 2015/02/28-2015/03/31)

16. Changed: We have traditionally used Point<dim> to represent points in physical space, i.e., vectors that are anchored at the origin, whereas for vectors anchored elsewhere (e.g., differences between points, normal vectors, gradients, etc) we have used Tensor<1,dim>. This has now be made more formal in the documentation but also in the return types of operator-() for Point objects: The difference between two points, p1-p2 now returns a Tensor<1,dim>. On the other hand, subtracting a Tensor<1,dim> object from a Point, p-t, results in a Point<dim>.
(Wolfgang Bangerth, 2015/02/05)

17. New: Examples from 1 to 16 now use the Manifold interface instead of the old Boundary interface to describe curved boundaries and domains.
(Luca Heltai, 2015/01/15)

18. New: The build system now queries for git branch name and revision sha1 (and automatically reconfigures if necessary). This information is used to annotate summary.log and detailed.log with the current revision sha1. Further, a header file <deal.II/base/revision.h> is now available that exports the macros: DEAL_II_GIT_BRANCH, DEAL_II_GIT_REVISION, DEAL_II_GIT_REVISION_SHORT.
(Matthias Maier, 2015/01/02)

### Specific improvements

1. New: VectorTools::get_position_vector now works with arbitrary FESystems, provided that the geometrical components are primitive, and that you provide a component mask to select what components of the finite element to use for the geometrical interpolation.
(Luca Heltai, 2015/07/25)

2. Fixed: parallel::distributed::refine_and_coarsen_fixed_fraction() in rare circumstances decided to not refine any cells at all, even if the refinement threshold was nonzero. This is now fixed.
(Wolfgang Bangerth, Andrea Bonito, 2015/07/24)

3. Fixed: Bug in DynamicSparsityPattern::iterator would cause invalid stl::vector::iterator comparison.
(Timo Heister, 2015/07/22)

4. New: parallel::distributed::Triangulation::add_periodicity now allows for arbitrary orientations between matching faces.
(Daniel Arndt, 2015/07/12)

5. New: Utilities::trim() function removes trailing and leading spaces.
(Timo Heister, 2015/07/11)

6. Changed: The IsBlockMatrix class is now declared in constraint_matrix.h instead of its former home in block_indices.h.
(Wolfgang Bangerth, 2015/07/10)

7. New: CellId::to_string() returns a string representation of a CellId object.
(Timo Heister, 2015/07/05)

8. New: Utilities::replace_in_string().
(Timo Heister, 2015/07/05)

9. Improved: GridOut::write_vtk() and GridOut::write_vtu() now output material id, level and subdomain ids of the cells.
(Guido Kanschat, 2015/07/05)

10. Improved: The font scaling in GridOut::write_svg() was broken, since the units were missing. It has been fixed and an additional parameter GridOutFlags::Svg::cell_font_scaling has been introduced for tuning.
(Guido Kanschat, 2015/07/04)

11. New: VectorizedArray now provides two methods vectorized_load_and_transpose() and vectorized_transpose_and_store() that perform vectorized reads or writes and convert from array-of-struct into struct-of-array or the other way around.
(Martin Kronbichler, 2015/07/02)

12. New: GridGenerator::cheese() for a mesh with many holes; GridGenerator::simplex() for simplices in 2 and 3 dimensions; GridGenerator::hyper_cross() for crosses in 2 and 3 dimensions.
(Guido Kanschat, 2015/07/02)

13. Fixed: The specialization of DoFAccessor for zero-dimensional objects, i.e., for vertices as created by accessing the faces of one-dimensional cells, had a member function DoFAccessor::child() that was declared but not implemented. This is now fixed.
(Wolfgang Bangerth, 2015/07/01)

14. Improved: Functions::Monomial::gradient function now works when both base and exponent are equal to zero for one or more components of the monomial. Also, an assertion is added to avoid exponentiation of negative base numbers with real exponents.
(Angel Rodriguez, 2015/06/29)

15. Fixed: The function numbers::is_finite() produced incorrect results when called with a NaN number (specifically, it produces an uncatchable floating point exception when called with a signaling NaN). This was clearly not intended since such values are definitely not finite.
(Wolfgang Bangerth, 2015/06/29)

16. Improved: The SparseMatrix class can now also use std::complex scalars for its elements.
(Wolfgang Bangerth, 2015/06/26)

17. Improved: FE_DGQArbitraryNodes::get_name() now also detects if the quadrature rule was Gauss points.
(Guido Kanschat, 2015/06/22)

18. Improved: DoFRenumbering::Cuthill_McKee() can now also use starting indices for parallel triangulations.
(Wolfgang Bangerth, 2015/06/11)

19. Improved: VectorTools::interpolate now works with FE_Nothing.
(Angel Rodriguez, 2015/06/03)

20. Improved: deal.II now uses a variety of strategies to silence compiler warnings about unused variables and unused parameters.
(David Wells, 2015/04/13)

21. New: Add a clear function to the PETSc::Vector and PETSc::MPI::Vector classes similar to the Trilinos vector classes.
(Martin Steigemann 2015/05/22)

22. New: Three new quadrature formulas in quadrature_lib, based on Chebyshev quadrature rules. See functions QGaussChebyshev, QGaussRadauChebyshev and QGaussLobattoChebyshev.
(Giuseppe Pitton, Luca Heltai 2015/05/11)

23. Fixed: MatrixOut now also works with Trilinos and PETSc matrices.
(Wolfgang Bangerth, 2015/05/11)

24. Changed: TrilinosWrappers::Vector, TrilinosWrappers::BlockVector, PETScWrappers::Vector, and PETScWrappers::BlockVector are deprecated. Either use the MPI or the deal.II version of the Vector/BlockVector.
(Bruno Turcksin, 2015/05/04)

25. Fixed: GridGenerator::half_hyper_shell can now be colorized.
(Daniel Arndt, 2015/05/05)

26. New: The function VectorTools::point_gradient has been added to compute the gradient of a given FE function.
(Daniel Arndt, 2015/05/03)

27. New: dealii:Vector, BlockVector, TrilinosWrappers::MPI::Vector, TrilinosWrappers::MPI::BlockVector, PETScWrappers::MPI::Vector and PETScWrappers::MPI::BlockVector now have move constructors and move assignment operators in C++11 mode.
(Matthias Maier, 2015/05/01)

28. New: Introduce DoFRenumbering::block_wise for multigrid computation.
(Timo Heister, Florian Sonner, 2015/04/30)

29. New: There are now MPI sum functions for Tensors and SymmetricTensors in the Utilities::MPI namespace.
(Ian Rose, 2015/04/24)

30. Fixed: project_boundary_values_curl_conforming_l2() produced incorrect results for non-uniform grids in 2D. Adjustment to the way 2D tangents to edges are computed fixes this.
(Ross Kynch, 2015/04/23)

31. Fixed: The TimerOutput class reported abnormally large cpu time when run with more than one process with MPI. Now this is fixed.
(Lei Qiao, 2015/04/19)

32. New: The VectorTools::integrate_difference() function can now also compute the $$H_\text{div}$$ seminorm, using the VectorTools::NormType::Hdiv_seminorm argument.
(Zhen Tao, Arezou Ghesmati, Wolfgang Bangerth, 2015/04/17)

33. Fixed: The class SymmetricTensor<2,dim> is now usable also for dim>3.
(Martin Kronbichler, 2015/04/14)

34. New: The DynamicSparsityPattern class (formerly called CompressedSparsityPattern) now has an iterator class that allows to walk over the nonzero elements of a matrix represented by this class.
(Wolfgang Bangerth, 2015/04/13)

35. New: The GridGenerator::subdivided_hyper_cube() and GridGenerator::subdivided_hyper_rectangle() now work also for codimension one and two Triangulation;
(Luca Heltai, 2015/04/12)

36. New: A new VectorTools::get_position_vector() function has been added to the library that allows one to interpolate the Geometry of a (possibly curved) triangulation to vector finite element fields of at least spacedim components.
(Luca Heltai, 2015/04/11)

37. New: TrilinosWrappers::BlockSparseMatrix now has member functions TrilinosWrappers::BlockSparseMatrix::domain_paritioner() and TrilinosWrappers::BlockSparseMatrix::range_partitioner() that return a vector of the underlying block Epetra_Map.
(Matthias Maier, 2015/04/08)

38. New: A new MappingFEField() class has been added to the library that generalizes MappingQEulerian to allow arbitrary FiniteElements.
(Marco Tezzele, Luca Heltai, 2015/04/06)

39. Changed: The cells of coarse meshes in parallel::distributed::Triangulation used to be ordered in a Cuthill-McKee numbering, which yields very high surface-to-volume ratios of the individual processors' partition in case the coarse mesh consists of many cells, in particular in 3D. The algorithm now uses SparsityTools::reorder_hierarchical in order to get more compact partitions, similarly to the z-ordering applied by p4est.
(Martin Kronbichler, 2015/04/10)

40. New: There is now a new method GridTools::get_vertex_connectivity_of_cells.
(Martin Kronbichler, 2015/04/10)

41. New: There is now a new method SparsityTools::reorder_hierarchical to sort nodes of a graph (sparsity pattern) in a z-like way by hierarchical grouping of neighboring nodes.
(Martin Kronbichler, 2015/04/10)

42. Changed: The methods SparsityTools::reorder_Cuthill_McKee and GridTools::get_face_connectivity_of_cells used to take a SparsityPattern as argument. The data type has been changed to DynamicSparsityPattern in order to avoid copying things around. The old interface is still available but marked as deprecated.
(Martin Kronbichler, 2015/04/10)

43. New: One can now ask a cell the how many-th active cell it is, using CellAccessor::active_cell_index() (which is called as cell->active_cell_index()).
(Wolfgang Bangerth, 2015/04/10)

44. Fixed: Added missing hp-related functions to FE_Q_Hierarchical together with a couple of unit tests. Improved code comments.
(Denis Davydov, 2015/04/10)

45. Fixed: deal.II did not compile on 32-bit systems when using newer p4est versions (1.0 and later) due to a type mismatch. This is now fixed.
(Wolfgang Bangerth, 2015/04/08)

46. Changed: In the spirit of the changes made to the distinction between Point and Tensor objects discussed above, the first argument to GridTools::shift() has been changed from a Point to a Tensor<1,dim>.
(Wolfgang Bangerth, 2015/04/02)

47. New: There is now a new quadrature formula in quadrature_lib. It is now possible to use Telles' quadrature rules through the function QTelles to integrate singular integrals
(Nicola Giuliani, 2015/04/01)

48. New: Added FE_Bernstein: a scalar finite element based on Bernstein basis polynomials.
(Marco Tezzele, Luca Heltai, 2015/03/31)

49. New: A function to get a map with all vertices at boundaries has been added at GridTools::get_all_vertices_at_boundary(). This function will return a map which can be used in functions like GridTools::laplace_transform().
(Fernando Posada, 2015/03/31)

50. Fixed: TrilinosWrappers::SparseMatrix::local_range() erroneously threw an exception in 64-bit mode. This is now fixed.
(Wolfgang Bangerth, 2015/03/24)

51. New: The GridOut::write_gnuplot() function produced output for 1d meshes embedded in higher dimensional spaces that was invalid in that the lines showing individual cells were connected. While this is not wrong for singly connected 1d meshes, it leads to wrong results if the domain is not singly connected and not every cell is the right neighbor of the previous cell.
(Wolfgang Bangerth, 2015/03/23)

52. New: The various file format writers of class GridOut were not instantiated for 1d meshes in 3d space. This is now fixed.
(Wolfgang Bangerth, 2015/03/23)

53. New: ParameterHandler::declare_alias() allows to define alternate names for parameters. This is primarily intended to allow for backward compatible ways of changing the names of parameters to applications.
(Wolfgang Bangerth, 2015/03/22)

54. New: GridGenerator::create_triangulation_with_removed_cells() creates a new mesh out of an existing one by dropping individual cells.
(Wolfgang Bangerth, 2015/03/13)

55. New: Add MueLu preconditioner from Trilinos through the class TrilinosWrappers::PreconditionAMGMueLu. This is a new algebraic multigrid package. The input parameters are almost the same as the ones from ML so that the two preconditioners can be easily swapped.
(Bruno Turcksin, 2015/03/11)

56. Fixed: Iterating over the elements of a TrilinosWrappers::SparseMatrix object previously led to errors if the matrix was in fact stored in parallel across multiple MPI processes. This is now fixed: rows not stored locally on the processor where you run the iteration simply look like they're empty.
(Wolfgang Bangerth, 2015/03/08)

57. New: There is now a new macro DeclExceptionMsg that allows to declare an exception that does not take any run-time arguments yet still allows to specify an error message.
(Wolfgang Bangerth, 2015/02/27)

58. New: There is now a class std_cxx11::unique_ptr that provides the functionality of std::unique_ptr in C++11 mode, and that provides an emulation for older compilers.
(Wolfgang Bangerth, 2015/02/22)

59. New: IndexSet now has a local typedef IndexSet::value_type.
(Wolfgang Bangerth, 2015/02/22)

60. New: FE_TraceQ can now also be used in 1D.
(Martin Kronbichler, 2015/02/21)

61. New: FE_TraceQ now implements get_face_interpolation_matrix and get_subface_interpolation_matrix, enabling DoFTools::make_hanging_node_constraints on this element.
(Anton Evgrafov, 2015/02/21)

62. Fixed: MappingQEulerian would previously not move interior points in 1D for higher order mappings. This has been fixed by removing a few specializations of MappingQ for 1D that are no longer necessary.
(Martin Kronbichler, 2015/02/19)

63. Fixed: The implementation of the class GrowingVectorMemory has been moved from source/lac/vector_memory.cc to the new file include/deal.II/lac/vector_memory.templates.h. This allows users to create instantiations of GrowingVectorMemory for their own vector classes in case they intend to use them for the deal.II solvers.
(Martin Kronbichler, 2015/02/18)

64. Changed: All members of MultithreadInfo are now static so it is no longer necessary to use the global instance multithread_info (now deprecated) or create your own instance (which does not work correctly anyway).
(Timo Heister, 2015/02/13)

65. Fixed: There was a bug in the energy source term of step-33 whereby the term was erroneously multiplied by the density. This is now fixed.
(Praveen C, Lei Qiao, 2015/02/13)

66. Changed: If you take the product of a Tensor and a scalar number, you previously got a Tensor back that stored its elements in the same data type as the original tensor. This leads to problems if you multiply a Tensor<1,dim,double> by a std::complex<double> because the result clearly needs to store its elements as complex numbers, rather than as double variables. This is now changed: The result of the product of a Tensor and a scalar number is now a Tensor that stores its elements in a data type appropriate for this product. The same approach is taken for the SymmetricTensor class.
(Wolfgang Bangerth, 2015/02/11)

67. New: There is now a new class ProductType that can be used to infer the type of the product of two objects. There is now also a class EnableIfScalar that helps restrict some templates to only cases where a type is a scalar.
(Wolfgang Bangerth, 2015/02/04)

68. New: The Tensor classes now have copy constructors and copy operators that allow assignment from other tensors with different underlying scalar types.
(Denis Davydov, 2015/02/03)

69. New: Class hp::DoFHandler can now also be serialized.
(Lukas Korous, 2015/01/31)

70. Bugfix: deal.II now correctly links against librt in case of bundled boost being used.
(Matthias Maier, 2015/01/27)

71. New: A new macro DEAL_II_QUERY_GIT_INFORMATION is provided to query user projects for git repository information simmilarly to those exported by deal.II.
(Matthias Maier, 2015/01/21)

72. Fixed: FEFaceValues and FESubfaceValues did not fill the jacobians and inverse jacobians if requested via the update flags. This is now fixed.
(Martin Kronbichler, 2015/01/23)

73. Fixed: ParameterHandler::read_input() now checks that 'subsection'/'end' are balanced in the input.
(Timo Heister, 2015/01/19)

74. Fixed: In 3d, when you set the colorize flag of GridGenerator::hyper_shell(), the faces of the domain were colored but the edges were not. This was an oversight because to refine correctly, the edges also have to have the appropriate boundary indicator set.
(Wolfgang Bangerth, 2015/01/16)

75. New: ::multithread_info.n_cpus returns the correct number of CPU on FreeBSD.
(Bruno Turcksin, 2015/01/14)

76. Improved: MPI collective operations such as MPI::sum, MPI::max now check for job_supports_mpi() internally, which allows running them also without a call to MPI_Init.
(Martin Kronbichler, 2015/01/13)

77. Changed: The method job_supports_mpi() now resides in the namespace Utilities::MPI instead of Utilities::System for consistency with other MPI methods. The old method has been marked deprecated and will be removed in a future version.
(Martin Kronbichler, 2015/01/13)

78. Fixed: The update of ghost values in parallel::distributed::Vector when calling the assignment operator is now active when one of the two vector had its ghost values updated before or when the layout of the right hand side vector is one-to-one, more consistent with parallel PETSc and Trilinos vectors.
(Martin Kronbichler, 2015/01/13)

79. New: PETScWrappers::MPI::SparseMatrix::reinit(other) copies the layout of another matrix. TrilinosWrappers::SparseMatrix operator= and copy constructor are now disabled. This brings functionality between PETSc and Trilinos in line.
(Timo Heister, 2015/01/12)

80. New: Triangulation::set_all_manifold_ids() and Triangulation::set_all_manifold_ids_on_boundaries() set all manifold ids on every object or on every boundary object respectively.
(Luca Heltai, 2015/01/12)

81. New: GridTools::copy_boundary_to_manifold_id() and GridTools::copy_material_to_manifold_id() copy boundary_ids and material_ids to manifold_ids for faces on the boundary and for cells respectively.
(Luca Heltai, 2015/01/09)

82. Fixed: Utilities::int_to_string() produced wrong results if the number of digits specified was ten or greater.
(David Wells, 2015/01/08)

83. Fixed: VectorTools::interpolate_to_different_mesh() was accidentally only instantiated for Vector arguments, rather than all vector classes. This is now fixed.
(Benjamin Brands, Wolfgang Bangerth, 2014/12/29)

84. Fixed: Use CASROOT environment variable as additional hint for opencasacade.
(Matthias Maier, 2014/12/29)

85. Fixed: Update the run_testsuite.cmake script to also pick up muparser and opencascade configuration.
(Matthias Maier, 2014/12/29)

86. Fixed: Update several places in the documentation that were not updated from functionparser to muparser. Add several forgotten DEAL_II_WITH_* variables to certain places in the documentation.
(Matthias Maier, 2014/12/29)