--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2017 - 2018 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+/**
+@page changes_between_8_5_0_and_9_0_0 Changes between Version 8.5.0 and 9.0.0
+
+<p>
+This is the list of changes made between the release of deal.II version
+8.5.0 and that of 9.0.0. All entries are signed with the names of the
+author.
+</p>
+
+
+
+<!-- ----------- INCOMPATIBILITIES ----------------- -->
+
+<a name="incompatible"></a>
+<h3 style="color:red">Incompatibilities</h3>
+
+<p style="color:red">
+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.
+</p>
+
+<ol>
+
+ <li>
+ New: Every function in the GridGenerator namespace now attaches a default manifold to the
+ curved parts of the boundary of the domain, and sets reasonable defaults for manifold indicators in the
+ domain, independently on the boundary indicators.
+ <br>
+ (Luca Heltai, Daniel Arndt, Jean-Paul Pelteret, David Wells, 2018/04/17)
+ </li>
+
+ <li>
+ New: The implementation of the divergence in FEValuesExtractors::Tensor
+ was changed so that the gradient operator is contracted from the right.
+ This is done in order to make it consistent with gradient of the
+ second order tensor, namely $Grad(T) : I = Div(T)$.
+ <br>
+ (Denis Davydov, 2018/04/12)
+ </li>
+
+ <li>
+ New: The Manifold class now requires the implementation of a Manifold::clone() method in
+ all derived classes.
+ <br>
+ (Luca Heltai, 2018/04/08)
+ </li>
+
+ <li>
+ New: The class FE_DGQHermite has been switched to the more stable polynomial
+ basis Polynomials::HermiteLikeInterpolation. This changes the representation
+ of the numbers by the FE_DGQHermite class. The change is yet highly beneficial
+ because it significantly improves the accuracy (in terms of roundoff) for this
+ basis and also reduces iteration counts for some iterative solvers with simple
+ preconditioner ingredients such as point-Jacobi or point-Jacobi smoothing.
+ <br>
+ (Martin Kronbichler, 2018/02/09)
+ </li>
+
+ <li>
+ Changed: FETools::get_fe_by_name returns a std::unique_ptr instead of a
+ owning raw pointer to prevent creating memory leaks.
+ <br>
+ (Daniel Arndt, 2018/02/09)
+ </li>
+
+ <li>
+ Changed: The function Mapping::clone (and all inheriting classes' implementations, such as MappingQ1Eulerian::clone) now return a <code>unique_ptr<Mapping<dim,spacedim>></code>.
+ <br>
+ (David Wells, 2018/02/08)
+ </li>
+
+ <li>
+ Changed: The GridRefinement functions only allow Vector objects
+ to be passed in as criteria.
+ <br>
+ (Daniel Arndt, 2018/02/04)
+ </li>
+
+ <li>
+ Changed: TableIndices uses std::size_t for index access,
+ LAPACKFullMatrix::size_type is types::blas_int and
+ FullMatrix::size_type is std::size_t.
+ <br>
+ (Daniel Arndt, 2018/02/02)
+ </li>
+
+ <li>
+ Changed: The classes OpenCASCADE::NormalProjectionBoundary,
+ OpenCASCADE::DirectionalProjectionBoundary
+ and OpenCASCADE::NormalToMeshProjectionBoundary are rebased
+ from Boundary to FlatManifold.
+ <br>
+ (Daniel Arndt, 2018/01/05)
+ </li>
+
+ <li>
+ Changed: It is now necessary to explicitly enable MPI support when
+ configuring deal.II via -DDEAL_II_WITH_MPI=ON, or -DWITH_MPI=ON on the
+ command line. The old behavior of just specifying an MPI compiler wrapper
+ via environment, or CMAKE_(C|CXX)_COMPILER does not work any more.
+ <br>
+ (Matthias Maier, 2018/01/01)
+ </li>
+
+ <li>
+ Changed: The type <code>LAPACKFullMatrix::size_type</code> is now <code>unsigned int</code>, which matches <code>FullMatrix::size_type</code>.
+ <br>
+ (David Wells, 2017/12/20)
+ </li>
+
+ <li>
+ Changed: Change the logic of DoFTools::get_subdomain_association to have the
+ degrees of freedom along a refinement edge be now all given to the processor
+ with the smallest subdomain_id.
+ <br>
+ (Alexander Grayver, 2017/12/11)
+ </li>
+
+ <li>
+ Changed: The parameters contained in struct SolverQMRS::AdditionalData have
+ been changed in order to meet the rewritten algorithm. See the class documentation
+ for more details.
+ <br>
+ (Ingo Kligge, 2017/12/06)
+ </li>
+
+ <li>
+ Changed: The default partitioner for parallel::shared::Triangulation
+ is Zoltan.
+ <br>
+ (Daniel Arndt, 2017/11/28)
+ </li>
+
+ <li>
+ Changed: The minimal supported Trilinos version is 12.4.
+ <br>
+ (Daniel Arndt, 2017/11/18)
+ </li>
+
+ <li>
+ Removed: The default constructor for ArrayView was removed since
+ an object constructed in this way can't be used in any sensible way.
+ <br>
+ (Daniel Arndt, 2017/11/17)
+ </li>
+
+ <li>
+ Changed: The many KellyErrorEstimator::estimate() overloads all have
+ an argument that represents the Neumann boundary values (if the
+ solution of the PDE satisfies Neumann boundary conditions on parts of
+ the boundary). They used to just be of type Function<dim>, but this
+ has now been changed to Function<dim,number> (or, more precisely,
+ FunctionMap<dim,number>, which stores a map to Function<dim,number>
+ objects) where @p number is the underlying data type of the input
+ vector. In other words, if you are using a regular Vector<double> (or
+ PETSc or Trilinos equivalents), then nothing has changed since @p
+ number is @p double, which is the default for the Function class. On
+ the other hand, if you are using a Vector<std::complex<double>>, for
+ example, then you need to pass a Function<dim,std::complex<double>> --
+ which of course makes sense because the Neumann boundary values of a
+ complex-valued solution should also be complex-valued.
+ <br>
+ (Wolfgang Bangerth, 2017/11/17)
+ </li>
+
+ <li>
+ Changed: The distribution of degrees of freedom along a refinement edge for a parallel::shared::Triangulation has been changed to mimic that of a parallel::distributed::Triangulation, that is, they are now all given to the processor with the smallest subdomain_id.
+ <br>
+ (Conrad Clevenger, 2017/11/13)
+ </li>
+
+ <li>
+ Changed: ParameterHandler::print_parameters() in LaTeX format now correctly
+ escapes special characters. As a consequence, the names of labels changed
+ because they are now mangled. See the documentation for more details.
+ <br>
+ (Timo Heister, 2017/11/03)
+ </li>
+
+ <li>
+ Removed: The BZIP2 dependency has been removed as it was not used
+ in the library anymore.
+ <br>
+ (Daniel Arndt, 2017/10/25)
+ </li>
+
+ <li>
+ Changed: The direction argument of the DoFRenumbering::downstream()
+ and related functions have been changed from a Point<dim> to a
+ Tensor<1,dim> type, since that is the correct data type for a
+ direction vector.
+ <br>
+ (Wolfgang Bangerth, 2017/10/23)
+ </li>
+
+ <li>
+ Changed: LAPACKSupport::Properties is renamed to LAPACKSupport::Property to be
+ consistent with LAPACKSupport::State.
+ <br>
+ (Denis Davydov, 2017/08/24)
+ </li>
+
+ <li>
+ Changed: The virtual function SolverRichardson::criterion() now
+ receives the residual and preconditioned residual vectors as
+ arguments, rather than accessing it through the member variables of
+ the class. It has also been made @p const.
+ <br>
+ (Wolfgang Bangerth, 2017/09/12)
+ </li>
+
+ <li>
+ Changed: The methods
+ <ol>
+ <li>Manifold::get_new_point</li>
+ <li>Manifold::project_to_manifold</li>
+ </ol>
+ have had their declarations changed in an incompatible manner: these three
+ methods now take ArrayView arguments instead of <code>std::vector</code>s. This
+ change was done for performance reasons: before this change about a third of the
+ time spent generating a curved grid (in this particular benchmark, a circle
+ described with polar coordinates and a transfinite interpolation) was used in
+ allocating and freeing memory used by the <code>std::vector</code> arguments to
+ Manifold::get_new_point() even though the sizes of the arrays are usually known
+ at compilation time. This change completely eliminates this allocation cost.
+ The method <code>Manifold::add_new_points()</code> has been removed in favor of
+ Manifold::get_new_points(), which also uses ArrayView arguments instead of
+ <code>std::vector</code>s.
+ <br>
+ (David Wells, 2017/09/10)
+ </li>
+
+ <li>
+ Changed: deal.II now requires BOOST version 1.59 or newer.
+ <br>
+ (David Wells, 2017/09/04)
+ </li>
+
+ <li>
+ Changed: LAPACKSupport::upper_triangle and LAPACKSupport::lower_triangle are
+ renamed to LAPACKSupport::upper_triangular and LAPACKSupport::lower_triangular,
+ respectively.
+ <br>
+ (Denis Davydov, 2017/08/24)
+ </li>
+
+ <li>
+ Changed: SolverGMRES used to notify via deallog when re-orthogonalization
+ of the Arnoldi vectors kicks in. Now, there is a slot one can connect to
+ retrieve this information. By default nothing is printed.
+ <br>
+ (Daniel Arndt, 2017/09/02)
+ </li>
+
+ <li>
+ Fixed: FiniteElement::get_generalized_support_points() now always returns a
+ list of unique points. This is in contrast to the old behavior where
+ get_generalized_support_points() returned a repeated list of (nodal)
+ support points for an FE_System consisting of Lagrangian elements.
+ <br>
+ (Matthias Maier, 2017/08/31)
+ </li>
+
+ <li>
+ Changed: Specialization of the ProductType class are now implemented through
+ specialization of the class internal::ProductTypeImpl . This was done in order
+ to ensure that product operations performed with qualified number types do not
+ result in the intended specializations being overlooked by the compiler.
+ <br>
+ (Jean-Paul Pelteret, Wolfgang Bangerth, 2017/08/24)
+ </li>
+
+ <li>
+ Changed: The VectorMemory::Pointer class used to have an automatic
+ conversion operator to the underlying pointer-to-vector object. As
+ part of a rewrite of this class, this conversion (rarely used in
+ practice) has been removed.
+ <br>
+ (Wolfgang Bangerth, 2017/08/22)
+ </li>
+
+ <li>
+ Changed: The constructors SymmetricTensor (const Tensor &) and
+ Tensor (const array_type &) have been marked as 'explicit'.
+ <br>
+ (Daniel Arndt, 2017/08/20)
+ </li>
+
+ <li>
+ Changed: The configuration file <code>deal.II/base/config.h</code> has been
+ thoroughly cleaned up. As a result, the following preprocessor symbols (which
+ were either never used or were workarounds for older, now unsupported compilers)
+ are no longer defined:
+ <ul>
+ <li> <code>DEAL_II_EXPLICIT_CONSTRUCTOR_BUG</code>
+ <li> <code>DEAL_II_MEMBER_VAR_SPECIALIZATION_BUG</code>
+ <li> <code>DEAL_II_BOOST_BIND_COMPILER_BUG</code>
+ <li> <code>DEAL_II_HAVE_ISNAN</code>
+ <li> <code>DEAL_II_STD_ISNAN</code>
+ <li> <code>DEAL_II_HAVE_UNDERSCORE_ISNAN</code>
+ <li> <code>DEAL_II_HAVE_ISFINITE</code>
+ <li> <code>DEAL_II_HAVE_SYS_TIMES_H</code>
+ <li> <code>DEAL_II_HAVE_TIMES</code>
+ <li> <code>DEAL_II_HAVE_SYS_TYPES_H</code>
+ <li> <code>DEAL_II_HAVE_SYS_TIMES_H</code>
+ </ul>
+ <br> (Matthias Maier and David Wells, 2017/08/08 - 2017/08/24)
+ </li>
+
+ <li>
+ Changed: The member function Boundary::project_to_surface is now ignored in the
+ function GridTools::fix_up_distorted_child_cells. Instead,
+ GridTools::fix_up_distorted_child_cells uses an internal function that
+ duplicates the algorithm used by StraightBoundary::project_to_surface, which was
+ the only place project_to_surface was implemented in the library.
+ <br>
+ (Luca Heltai, David Wells, 2017/08/12)
+ </li>
+
+ <li>
+ Changed: Triangulation::get_manifold() will now return a FlatManifold instead of
+ a StraightBoundary in the case that no manifold description has been attached to
+ a provided manifold ID.
+ <br> (Luca Heltai, David Wells, 2017/08/12)
+ </li>
+
+ <li>
+ Removed: Some old functionality has been removed from LogStream:
+ <ul>
+ <li>The reproducible test functionality has been removed.
+ This includes <code>test_mode()</code>, <code>threshold_double()</code>,
+ and <code>threshold_float()</code>. Use numdiff, or other tools that can
+ do output comparison with small numerical differences instead.</li>
+ <li>The <code>log_cerr()</code> function has been removed.
+ <li>The timing mechanism has been removed. This includes
+ <code>timestamp()</code>, <code>log_execution_time()</code> and
+ <code>log_time_differences()</code>. Use the Timer, TimerOutput and
+ TimerOutput::Scope classes instead.</li>
+ <li>LogStream now defaults to write to std::cout instead of
+ std::cerr</li>
+ </ul>
+ <br>
+ (Matthias Maier, 2017/08/10)
+ </li>
+
+ <li>
+ Changed: DataOutBase (and derived classes) no longer sets floating point
+ output precision of ostreams.
+ <br>
+ (Matthias Maier, 2017/08/09)
+ </li>
+
+ <li>
+ Changed: The types::boundary_id and types::material_id types have been changed
+ from unsigned char to unsigned int.
+ <br>
+ (Jean-Paul Pelteret, 2017/08/07)
+ </li>
+
+ <li>
+ Deprecated: A number of classes have been deprecated in favor of the
+ LinearOperator concept:
+ <ul>
+ <li>PointerMatrix, PointerMatrixAux
+ </ul>
+ Use the LinearOperator class instead, see the module on
+ @ref LAOperators "linear operators" for more details.
+ <br>
+ (Matthias Maier, 2017/07/14)
+ </li>
+
+ <li>
+ Changed: In 1D, MappingQGeneric now considers a cell to have multiple manifolds if the manifold attached to the cell does not match one of the manifolds attached to a face (i.e., vertex).
+ <br>
+ (David Wells, 2017/07/10)
+ </li>
+
+ <li>
+ Changed: The SynchronousIteartors::iterators member variable has been
+ made private, as mentioned in the changelog of the previous
+ release. It can be accessed via SynchronousIterators::operator*(),
+ however.
+ <br>
+ (Wolfgang Bangerth, 2017/07/11)
+ </li>
+
+ <li>
+ Changed: The TableIndices class had a single constructor that just
+ took as many indices as one wanted, and padded any unassigned indices
+ with numbers::invalid_unsigned_int. This invited mistakes and indeed
+ led to difficult to track down errors.
+ <br>
+ This constructor is therefore now deprecated, and has been replaced by
+ a series of constructors with between one and five arguments that can
+ be used for objects of type TableIndices<1> to TableIndices<5>.
+ <br>
+ (Wolfgang Bangerth, 2017/07/10)
+ </li>
+
+ <li>
+ Changed: In 1D, the face values calculated by <code>MappingManifold</code> now use the manifold attached to the relevant vertex instead of the manifold on the current face.
+ <br>
+ (David Wells, 2017/07/08)
+ </li>
+
+ <li>
+ Changed: Timer::print_data doesn't restrict its output to the first MPI process
+ anymore but leaves such a choice to the stream given.
+ <br>
+ (Daniel Arndt, 2017/06/27)
+ </li>
+
+ <li>
+ Changed: The restart_parameter member variable of
+ TrilinosWrappers::SolverGMRES::AdditionalData has been removed.
+ This value is now stored as gmres_restart_parameter in the base class
+ TrilinosWrappers::SolverBase::AdditionalData.
+ <br>
+ (Jean-Paul Pelteret, 2017/06/26)
+ </li>
+
+ <li>
+ Changed: The deprecated data in SolverCG::AdditionalData
+ and SolverGMRES::AdditionalData::compute_eigenvalues have been removed.
+ Use the respective connect_* member functions instead.
+ <br>
+ (Daniel Arndt, 2017/06/12)
+ </li>
+
+ <li>
+ Changed: The deprecated member functions add(), normalize(), conjugate(),
+ abs(), sadd(), equ() and mult() in the vector classes have been removed.
+ <br>
+ (Daniel Arndt, 2017/06/12)
+ </li>
+
+ <li>
+ Deprecated: The ParameterHandler::print_parameters_section() function
+ has been deprecated.
+ <br>
+ (Wolfgang Bangerth, 2017/06/07)
+ </li>
+
+ <li>
+ Changed: Versions of PETSc prior to 3.3.0 are no longer supported.
+ <br>
+ (David Wells, 2017/06/03)
+ </li>
+
+ <li>
+ Changed: The FiniteElement::clone() function and all of its
+ implementations in derived classes now return a std::unique_ptr rather
+ than a plain pointer to a finite element object. User-implemented
+ finite element classes need to be adjusted accordingly.
+ <br>
+ (Wolfgang Bangerth, 2017/06/01)
+ </li>
+
+ <li>
+ Changed: The deprecated function SparsityTools::reorder_Cuthill_McKee()
+ acting on a SparsityPattern object has been removed.
+ Use the one acting on a DynamicSparsityPattern instead.
+ <br>
+ (Daniel Arndt, 2017/05/15)
+ </li>
+
+ <li>
+ Changed: The deprecated functions BlockSparseMatrixEZ::n_rows()
+ and BlockSparseMatrixEZ::n_cols() have been removed.
+ Use BlockSparseMatrixEZ::m() and BlockSparseMatrixEZ::n() instead.
+ <br>
+ (Daniel Arndt, 2017/05/14)
+ </li>
+
+ <li>
+ Changed: The deprecated function Utilities::System::job_supports_mpi()
+ has been removed. Use Utilities::MPI::job_supports_mpi() instead.
+ <br>
+ (Daniel Arndt, 2017/05/14)
+ </li>
+
+ <li>
+ Removed: The deprecated serial Trilinos vector classes have been removed.
+ <br>
+ (Daniel Arndt, 2017/05/08)
+ </li>
+
+ <li>
+ Removed: The deprecated serial PETSc vector classes have been removed.
+ <br>
+ (David Wells, 2017/05/06)
+ </li>
+
+ <li>
+ Changed: The deprecated member functions in the classes
+ TrilinosWrappers::BlockVector, TrilinosWrappers::MPI::BlockVector,
+ TrilinosWrappers::Vector and TrilinosWrappers::MPI::Vector
+ have been removed.
+ <br>
+ (Daniel Arndt, 2017/05/05)
+ </li>
+
+ <li>
+ Changed: The deprecated version of Manifold::get_new_point() that took
+ an argument of type Quadrature has been removed. Use the other variant
+ of that function instead. The same has been done to all
+ implementations of that interface in derived classes.
+ <br>
+ (Wolfgang Bangerth, 2017/05/05)
+ </li>
+
+ <li>
+ Changed: The deprecated typedef
+ FEFieldFunction::ExcPointNotAvailableHere has been removed. Use
+ VectorTools::ExcPointNotAvailableHere instead.
+ <br>
+ (Wolfgang Bangerth, 2017/05/04)
+ </li>
+
+ <li>
+ Changed: The deprecated variant of
+ GridTools::get_face_connectivity_of_cells() has been removed. Use the
+ other variant instead.
+ <br>
+ (Wolfgang Bangerth, 2017/05/04)
+ </li>
+
+ <li>
+ Changed: The deprecated constructors of MappingQEulerian
+ and MappingQ1Eulerian have been removed. Use the other constructor
+ of each class instead.
+ <br>
+ (Wolfgang Bangerth, 2017/05/04)
+ </li>
+
+ <li>
+ Changed: The deprecated function FEValuesBase::transform()
+ has been removed. It only forwarded the call to the Mapping object
+ used by the FEValuesBase object. Use the corresponding function of the
+ mapping instead.
+ <br>
+ (Wolfgang Bangerth, 2017/05/04)
+ </li>
+
+ <li>
+ Changed: The deprecated member variables @p supports_distributed_data
+ that was present in all vector classes has been removed. If you needed
+ this functionality, use the type trait is_serial_vector instead.
+ <br>
+ (Wolfgang Bangerth, 2017/04/30)
+ </li>
+
+ <li>
+ Changed: The deprecated functions DoFHandler::get_tria() and
+ hp::DoFHandler::get_tria() have been removed. Use
+ DoFHandler::get_triangulation() and
+ hp::DoFHandler::get_triangulation() instead.
+ <br>
+ (Wolfgang Bangerth, 2017/04/25)
+ </li>
+
+ <li>
+ Changed: The deprecated functions DataOutInterface::write_pvd_record()
+ and DataOutBase::write_visit_record() have been removed. Use the
+ corresponding functions in namespace DataOutBase.
+ <br>
+ (Wolfgang Bangerth, 2017/04/25)
+ </li>
+
+ <li>
+ Changed: The deprecated function FEValuesBase::get_normal_vectors()
+ that returned a vector of Point objects has been removed. Its
+ replacement, FEValuesBase::get_all_normal_vectors() has now itself
+ been deprecated, and we have created a new function
+ FEValuesBase::get_normal_vectors() that returns a vector of
+ Tensor<1,dim> objects. The net effect is that the function with the
+ old name has simply gotten a new return type.
+ <br>
+ (Wolfgang Bangerth, 2017/04/25)
+ </li>
+
+ <li>
+ Removed: DataPostprocessor had member functions
+ <code>compute_derived_quantities_*()</code> that had previously
+ already been deprecated. These have now been removed.
+ <br>
+ (Wolfgang Bangerth, 2017/04/24)
+ </li>
+
+ <li>
+ Removed: The ParameterHandler::read_input() function and friends have
+ been removed. They were already deprecated in the previous release.
+ <br>
+ (Wolfgang Bangerth, 2017/04/21)
+ </li>
+
+ <li>
+ Changed: It was previously allowed to copy one FESystem object to
+ another via the copy constructor. There are probably few reasons to do
+ so, but they complicated the design of data structures. Consequently,
+ it is now no longer allowed to copy such objects.
+ <br>
+ (Wolfgang Bangerth, 2017/04/17)
+ </li>
+
+ <li>
+ Removed: The FETools::compute_node_matrix() variant that takes two
+ arguments has been removed. It was previously already deprecated. Use
+ the variant with just one argument instead.
+ <br>
+ (Wolfgang Bangerth, 2017/04/16)
+ </li>
+
+ <li>
+ Changed: The <code>AssertGlobalIndexRange</code> macro has been removed: the expansion of this macro involved an undeclared template and always generates compiler errors if used.
+ <br>
+ (David Wells, 2017/04/13)
+ </li>
+
+ <li>
+ Removed: A number of deprecated classes have been removed in favor of the
+ new LinearOperator concept:
+ <ul>
+ <li>BlockDiagonalMatrix
+ <li>InverseMatrixRichardson
+ <li>IterativeInverse
+ <li>MeanValueFilter
+ <li>ProductMatrix
+ <li>ProductSparseMatrix
+ <li>ScaledMatrix
+ <li>SchurMatrix
+ <li>ShiftedMatrix
+ <li>ShiftedMatrixGeneralized
+ <li>TransposeMatrix
+ </ul>
+ Use the LinearOperator class instead, see the module on
+ @ref LAOperators "linear operators" for more details.
+ <br>
+ (Matthias Maier, 2017/04/06 - 2018/05/03)
+ </li>
+
+ <li>
+ Removed: The FiniteElement::interpolate() function and all of its
+ implementations in derived classes has been removed. It was
+ previously already deprecated. Use
+ FiniteElement::convert_generalized_support_point_values_to_nodal_values()
+ instead.
+ <br>
+ (Wolfgang Bangerth, 2017/04/05)
+ </li>
+
+ <li>
+ Removed: The deprecated MPI communicator and the constructor which used it were
+ removed from the MatrixFree::AdditionalData class.
+ <br>
+ (Denis Davydov, 2017/03/26)
+ </li>
+
+ <li>
+ Removed: The deprecated CMake flag <code>DEAL_II_CXX11_FLAG</code> has been
+ removed.
+ <br>
+ (David Wells, 2017/03/23)
+ </li>
+
+ <li>
+ Changed: deal.II now requires a compiler supporting (very nearly) the entire C++11 standard. The minimal version of GCC supported is now 4.8.
+ <br>
+ (David Wells, 2017/03/23)
+ </li>
+
+</ol>
+
+
+<!-- ----------- GENERAL IMPROVEMENTS ----------------- -->
+
+<a name="general"></a>
+<h3>General</h3>
+
+<ol>
+
+ <li>
+ New: The MatrixFree framework has been reworked to also support face integrals
+ in DG. The new function MatrixFree::loop() takes three function pointers for
+ workers on cells, interior faces and boundary faces. The loop can perform the
+ data exchange with MPI and is also parallelized with threads taking into
+ account the face dependencies. The new class FEFaceEvaluation implements the
+ respective evaluation and access routines for face terms.
+ <br>
+ (Katharina Kormann, Martin Kronbichler, 2018/04/27)
+ </li>
+
+ <li>
+ New: Triangulation now uses std::unique_ptr to store Manifolds, and duplicates the Manifolds when
+ Triangulation::set_manifold() is called. This allows the construction of the Manifold objects
+ to be independent of the Triangulation. In particular, it will be possible to associate
+ to the Triangulation reasonable default Manifold descriptors, that will be copied
+ around together with the Triangulation itself.
+ <br>
+ (Luca Heltai, 2018/04/06)
+ </li>
+
+ <li>
+ Changed: The bundled version of Intel Threading Building Blocks has been updated to 2018 U2.
+ <br> (David Wells, 2018/03/02)
+ </li>
+
+ <li>
+ Improved: The manifold smoothing algorithms applied in the Triangulation class
+ and MappingQGeneric have been changed from the old Laplace-style smoothing to
+ a transfinite interpolation that linearly blends between the descriptions on
+ the faces around a cell. The old transformation introduced boundary layers
+ inside cells that prevented convergence rates from exceeding 3.5 in the global
+ L2 errors on typical settings. This change also considerably improves mesh
+ quality on settings where curved descriptions are only applied to the boundary
+ rather than the whole volume.
+ <br>
+ (Martin Kronbichler, 2017/12/04)
+ </li>
+
+ <li>
+ New: Add ScaLAPACKMatrix and ProcessGrid wrappers for high-performance dense linear
+ algebra routines for parallel distributed memory machines.
+ <br>
+ (Denis Davydov, Benjamin Brands, 2017/11/20)
+ </li>
+
+ <li>
+ New: The new ParticleHandler class can store and organize a collection of particles,
+ and provide information about their properties. It is currently limited to parallel
+ distributed computations and specific applications, but will be extended over time.
+ <br>
+ (Rene Gassmoeller, 2017/11/10)
+ </li>
+
+ <li>
+ New: The majority of deal.II classes that deal with solution vectors
+ are now also instantiated for complex-valued vectors. In other words,
+ complex-valued vectors should now be supported at the same level as
+ real-valued vectors.
+ <br>
+ (Wolfgang Bangerth, 2017/11/08)
+ </li>
+
+ <li>
+ New: The new namespace Rol contains an adaptor class that provides
+ the implementation of the ROL::Vector interface.
+ The Trilinos package, Rapid Optimization Library (ROL), can solve unconstrained
+ and constrained optimization problems, and optimization problems under
+ uncertainty.
+ <br>
+ (Vishal Boddu 2017/11/02)
+ </li>
+
+ <li>
+ New: Using the Physics::Notation::Kelvin class, it is possible to store and
+ retrieve tensors and symmetric tensors in or from a compressed format.
+ <br>
+ (Jean-Paul Pelteret, 2017/10/16)
+ </li>
+
+ <li>
+ New: The function distribute_mg_dofs has been written for a parallel::shared::Triangulation. This allows for geometric multigrid computations on an adaptively refined mesh using a shared triangulation with the possibility of a user defined partitioning of the active and level cells.
+ <br>
+ (Conrad Clevenger, 2017/10/10)
+ </li>
+
+ <li>
+ New: Added support for the KINSOL solver of the SUNDIALS
+ library. KINSOL is a solver for nonlinear algebraic systems.
+ It includes a Newton-Krylov solver as well as Picard and
+ fixed point solvers, both of which can be accelerated with
+ Anderson acceleration.
+ <br>
+ (Luca Heltai, 2017/09/28)
+ </li>
+
+ <li>
+ New: Added support for the ARKode solver of the SUNDIALS
+ library. ARKode is a solver library that provides
+ adaptive-step time integration of the initial value problem
+ for systems of stiff, nonstiff, and multi-rate systems of
+ ordinary differential equations (ODEs) given in linearly
+ implicit form.
+ <br>
+ (Luca Heltai, 2017/09/27)
+ </li>
+
+ <li>
+ New: There is now support for the storage of Particles and their
+ properties in the new namespace Particles.
+ <br>
+ (Rene Gassmoeller, 2017/09/22)
+ </li>
+
+ <li>
+ New: A new ParameterAcceptor class has been added to the library.
+ The class is intended to be used as a base class for any class
+ that wants to handle parameters using the ParameterHandler class.
+ If you derive all your classes from ParameterAcceptor, and declare
+ your parameters either with parse/declare_parameters methods or
+ via the ParameterAcceptor::add_parameter() method, then the declaring
+ and parsing of your parameter files will be automatically managed
+ by the ParameterAcceptor::initialize() function.
+ <br>
+ (Luca Heltai, 2017/09/20)
+ </li>
+
+ <li>
+ New: Added support for the Open Asset Import Library (Assimp)
+ (http://assimp.sourceforge.net/). This library can be used
+ to read about 40 different 3D graphics formats, used in 3D
+ modelers (such as Blender, Maya, etc.). Some of these formats
+ contain mesh information, that in turn can be read
+ into deal.II Triangulation<2,3> objects.
+ <br>
+ (Luca Heltai, 2017/09/16)
+ </li>
+
+ <li>
+ New: A new GridTools::Cache class
+ allows caching of some expensive data of the
+ Triangulation class, computed generally using
+ functions in GridTools.
+ <br>
+ (Luca Heltai, 2017/09/14)
+ </li>
+
+ <li>
+ New: A new SUNDIALS::IDA class has been added that interfaces
+ the SUNDIALS IDA library (https://computation.llnl.gov/projects/sundials)
+ This class can be used to solve differential algebraic equations
+ using IDA (an implicit differential algebraic equation solver, that
+ supports variable step and variable order BDF schemes).
+ <br>
+ (Luca Heltai, 2017/09/12)
+ </li>
+
+ <li>
+ Improved: The support for non-Lagrangian elements with generalized support
+ points has been vastly improved. FESystem::get_generalized_support_point()
+ now returns a list of unique generalized support points for the finite
+ element system. In order to do interpolation a function
+ FiniteElement::convert_generalized_support_points_to_dof_values() can be
+ used. This interface is implement for a wide variety of base classes and
+ FESystem. TODO
+ <br> (Matthias Maier, Luca Heltai, 2017/08/31)
+ </li>
+
+ <li>
+ New: A new KDTreeDistance class has been added that interfaces
+ the nanoflann library (https://github.com/jlblancoc/nanoflann).
+ This class can be used to extract nearest neighbour information
+ on collection of points, query for the closest points to a target
+ point or all points contained within a given distance.
+ <br>
+ (Luca Heltai, 2017/08/13)
+ </li>
+
+ <li>
+ New: A new MeshWorker::mesh_loop() function has been added
+ that performs the same tasks of the MeshWorker::loop() function
+ without forcing the users to adhere to a specific interface.
+ <br>
+ (Luca Heltai, 2017/08/12)
+ </li>
+
+ <li>
+ New: The eigenvectors of a rank-2 symmetric tensor can now be computed using one
+ of three approaches through the eigenvectors() function. The three algorithms
+ that have been implemented are:
+ 1. The QL algorithm with implicit shifting.
+ 2. A hybrid algorithm that preferentially uses an analytical algorithm
+ and falls back to the QL algorithm if the calculations are deemed
+ inaccurate.
+ 3. The Jacobi algorithm.
+ <br>
+ (Joachim Kopp, Jean-Paul Pelteret, Ester Comellas, 2017/07/27)
+ </li>
+
+ <li>
+ New: The eigenvalues of a rank-2 symmetric tensor can now be computed using an
+ analytical approach via the eigenvalues() function.
+ <br>
+ (Jean-Paul Pelteret, Ester Comellas, 2017/07/27)
+ </li>
+
+ <li>
+ New: The new namespace Patterns::Tools contains
+ utilities that can be used to convert from complicated types
+ to strings and vice versa. These tools have been put to use
+ in the method ParameterHandler::add_parameter() that allows
+ users to perform in one single call the operations
+ ParameterHandler::declare_parameter(),
+ ParameterHandler::get() and to convert the string to a valid
+ value stored in the variable that is given as a parameter to
+ ParameterHandler::add_parameter().
+ <br>
+ (Luca Heltai, 2017/07/20)
+ </li>
+
+ <li>
+ New: The cmake configuration now supports unity builds with the option <code>-DDEAL_II_UNITY_BUILD=ON</code>. This option speeds up the build by about 10 to 25%.
+ <br> (David Wells, 2017/07/20)
+ </li>
+
+ <li>
+ New: The hp::DoFHandler class can now work with shared triangulations
+ of type parallel::shared::Triangulation.
+ <br>
+ (Wolfgang Bangerth, 2017/07/17)
+ </li>
+
+ <li>
+ New: SolverFIRE implements FIRE (Fast Inertial Relaxation Engine) for solving
+ the problem of minimization of a given objective function.
+ <br>
+ (Vishal Boddu, Denis Davydov 2017/07/11)
+ </li>
+
+ <li>
+ New: A new manifold class TransfiniteInterpolationManifold implementing an
+ interpolation from a curved boundary description to the interior has been
+ added. This class enables high-order convergence rates of more than three in
+ the power of the mesh size for situations where a curved manifold can only be
+ prescribed to the boundary but not in a whole volume.
+ <br>
+ (Martin Kronbichler, Luca Heltai, 2017/06/01)
+ </li>
+
+</ol>
+
+
+<!-- ----------- SPECIFIC IMPROVEMENTS ----------------- -->
+
+<a name="specific"></a>
+<h3>Specific improvements</h3>
+
+<ol>
+
+ <li>
+ New: Gmsh::create_triangulation_from_boundary_curve is a new method that constructs a grid from an
+ OpenCASCADE TopoDS_Edge object. It offers the reverse functionality of the method
+ OpenCASCADE::create_curves_from_triangulation_boundary().
+ <br>
+ (Luca Heltai, 2018/05/03)
+ </li>
+
+ <li>
+ New: NonMatching::create_coupling_sparsity_pattern and NonMatching::create_coupling_mass_matrix now have an
+ overloaded version that takes an additional GridTools::Cache, instead of
+ building it inside the functions. In the process, NonMatching::create_coupling_sparsity_pattern
+ gained also an additional ConstraintMatrix argument to reflect the same argument list of
+ its companion function NonMatching::create_coupling_mass_matrix.
+ <br>
+ (Luca Heltai, 2018/05/02)
+ </li>
+
+ <li>
+ New: Utilities::MPI::create_group allows using the functionality provided by
+ MPI_Comm_create_group to be used also for a non-MPI-3.0-conforming MPI
+ dependency.
+ <br>
+ (Daniel Arndt, 2018/04/28)
+ </li>
+
+ <li>
+ New: There are new functions FEEvaluation::gather_evaluate() and
+ FEEvaluation::integrate_scatter() that combine the vector access through
+ FEEvaluation::read_dof_values() and FEEvaluation::evaluate() as well as
+ FEEvaluation::integrate() and
+ FEEvaluation::distribute_local_to_global(), respectively. This allows to
+ write somewhat more compact code and is also more efficient in the case
+ of FEFaceEvaluation where equivalent functions exists.
+ <br>
+ (Katharina Kormann, Martin Kronbichler, 2018/04/27)
+ </li>
+
+ <li>
+ New: The function MatrixFree::cell_loop takes an optional boolean
+ argument that enables the class to zero vectors within the loop for
+ better cache locality, clearing only that part of the vector that will
+ be accessed soon.
+ <br>
+ (Katharina Kormann, Martin Kronbichler, 2018/04/27)
+ </li>
+
+ <li>
+ New: The new field
+ MatrixFree::AdditionalData::cell_vectorization_categories allows to
+ control the way batches of cells are formed in MatrixFree by assigning
+ different numbers to different parts in the domain.
+ <br>
+ (Katharina Kormann, Martin Kronbichler, 2018/04/27)
+ </li>
+
+ <li>
+ New: The class FEEvaluation can now be constructed for only a subset of
+ the components inside an FESystem, picking e.g. the pressure part
+ outside of a Taylor-Hood element.
+ <br>
+ (Katharina Kormann, Martin Kronbichler, 2018/04/27)
+ </li>
+
+ <li>
+ New: FECollection gained an equality comparison operator. Both FiniteElement
+ and FECollcetion have a non-equality comparison operator now.
+ <br>
+ (Daniel Arndt, 2018/04/25)
+ </li>
+
+ <li>
+ New: Added missing implementation of MappingFEField::get_vertices.
+ <br>
+ (Luca Heltai, 2018/04/24)
+ </li>
+
+ <li>
+ Updated: deal.II is now compatible with PETSc version 3.9.0, SLEPC version
+ 3.9.0
+ <br>
+ (Matthias Maier, 2018/04/23)
+ </li>
+
+ <li>
+ New: GridTools::minimal_cell_diameter and GridTools::maximal_cell_diameter now take an optional Mapping
+ argument, that allows one to compute minimal and maximal cell diameters of deformed grids.
+ <br>
+ (Luca Heltai, 2018/04/23)
+ </li>
+
+ <li>
+ Fixed: GridTools::distributed_compute_point_locations now returns the correct
+ maps values (third component of the output tuple). Added a test to check it.
+ <br>
+ (Giovanni Alzetta, 2018/04/23)
+ </li>
+
+ <li>
+ New: Add direct solvers (Cholesky and LU factorization) to solve problems on the
+ GPU
+ <br>
+ (Bruno Turcksin, 2018/04/23)
+ </li>
+
+ <li>
+ New: Utilities::System::get_current_vectorization_level() returns the currently used vectorization support in string format.
+ <br>
+ (Timo Heister, 2018/04/21)
+ </li>
+
+ <li>
+ Changed: In accordance with dealii::DoFHandler, hp::DoFHandler stores a copy
+ of the FECollection instead of a pointer.
+ <br>
+ (Daniel Arndt, 2018/04/21)
+ </li>
+
+ <li>
+ Add default constructor and member function `initialize` to hp::DoFHandler,
+ making the interface consistent with DoFHandler.
+ <br>
+ (Ce Qin, 2018/04/20)
+ </li>
+
+ <li>
+ New: Cell weighting can now be taken into account by the Metis partitioner. This can be done directly
+ using the new GridTools::partition_triangulation() function that accepts a vector of cell weights,
+ or by adding the appropriate signal to the triangulation itself (Triangulation::Signals::cell_weight).
+ <br>
+ (Jean-Paul Pelteret, 2018/04/17)
+ </li>
+
+ <li>
+ Changed: GridTools::distributed_compute_point_locations now takes as input the
+ global description of the manifold using bounding boxes.
+ <br>
+ (Giovanni Alzetta, 2018/04/16)
+ </li>
+
+ <li>
+ New: Introduced Triangulation::reset_manifold(), as a substitute for Triangulation::set_manifold()
+ with only one argument. The set_manifold() method with one argument only was used to reset the manifold
+ object. This method is now deprecated, in favor of the new, more explicative, method.
+ An additional Triangulation::reset_all_manifolds() method has been added to remove all manifold
+ objects from the triangulation.
+ <br>
+ (Luca Heltai, 2018/04/14)
+ </li>
+
+ <li>
+ New: GridTools::map_boundary_to_manifold_ids() allows you to set manifold ids on the
+ boundary according to a given map of boundary to manifold ids.
+ <br>
+ (Luca Heltai, 2018/04/13)
+ </li>
+
+ <li>
+ Fixed: Ensure that numbers::NumberTraits and its corresponding operations are
+ well defined for all supported auto-differentiable numbers.
+ <br>
+ (Jean-Paul Pelteret, 2018/04/12)
+ </li>
+
+ <li>
+ Fixed: The SymmetricTensor class was previously not instantiated for
+ auto-differentiable numbers.
+ <br>
+ (Jean-Paul Pelteret, 2018/04/12)
+ </li>
+
+ <li>
+ Fixed: When using diagonal SymmetricTensors with automatic-differentiable numbers, computations
+ using the eigenvalue() and eigenvector() functions would return correct values of the
+ eigenvalues/vectors. However, the derivatives of these values/vectors were incorrect as
+ the sensitivities of the eigenvalues/vectors with respect to one another was not encoded
+ in the returned result. Therefore, under these specific conditions the returned result is now
+ a more coarse approximation for the eigenvalues/vectors but with the trade-off that a
+ meaningful approximation of the derivative of the result can now be computed.
+ <br>
+ (Jean-Paul Pelteret, 2018/04/12)
+ </li>
+
+ <li>
+ Fixed: The Tensor class was previously not instantiated for
+ auto-differentiable numbers.
+ <br>
+ (Jean-Paul Pelteret, 2018/04/12)
+ </li>
+
+ <li>
+ Fixed: The Tensor::invert() function would previously not work with some Sacado
+ number types. This has now been fixed.
+ <br>
+ (Jean-Paul Pelteret, 2018/04/12)
+ </li>
+
+ <li>
+ Fixed: Some compile-times errors would previously appear for some arithmetic functions
+ when using Sacado::Fad::DFad types (e.g. Physics::Elasticity::Kinematics::F_iso() ).
+ By defining the ProductType Sacado expression templates, this issue is now avoided.
+ <br>
+ (Jean-Paul Pelteret, 2018/04/12)
+ </li>
+
+ <li>
+ New: FEValuesExtractors::Tensor now supports calculation of gradients.
+ <br>
+ (Denis Davydov, 2018/04/12)
+ </li>
+
+ <li>
+ New: The two new functions Polynomials::jacobi_polynomial_value() and
+ Polynomials::jacobi_polynomial_roots() provide a user-visible
+ implementation of Jacobi polynomials. This functionality has previously only
+ been available internally in the library.
+ <br>
+ (Martin Kronbichler, 2018/04/06)
+ </li>
+
+ <li>
+ New: Patterns::Tools::to_string() and Patterns::Tools::to_value() simplify the conversion to and from
+ strings of arbitrarily complex types.
+ <br>
+ (Luca Heltai, 2018/04/06)
+ </li>
+
+ <li>
+ New: Extend GridGenerator::extrude_triangulation to using exact slicing z-axis
+ values and reimplement the exsiting GridGenerator::extrude_triangulation using
+ the newly developed overload.
+ <br>
+ (Weixiong Zheng, 2018/04/05)
+ </li>
+
+ <li>
+ New: There is now a function Utilities::dynamic_unique_cast() that does for
+ `std::unique_ptr` objects what `dynamic_cast` does for regular pointers.
+ <br>
+ (Wolfgang Bangerth, 2018/04/03)
+ </li>
+
+ <li>
+ Improved: VectorTools::get_position_vector() now supports parallel triangulations.
+ <br>
+ (Denis Davydov, 2018/04/01)
+ </li>
+
+ <li>
+ New: Multigrid classes obtained the new signals
+ mg::Signals::transfer_to_mg,
+ mg::Signals::transfer_to_global,
+ mg::Signals::coarse_solve,
+ mg::Signals::restriction,
+ mg::Signals::prolongation,
+ mg::Signals::pre_smoother_step,
+ mg::Signals::post_smoother_step
+ that functions can be connected to.
+ <br>
+ (Daniel Arndt, Timo Heister, 2018/03/31)
+ </li>
+
+ <li>
+ Fixed: The VectorTools::integrate_difference() function allows users
+ to provide a weight function that can also serve as a component mask
+ to select individual components of the solution vector for error
+ computation. For components not selected, such a mask would then
+ simply be zero.
+ <br>
+ In some cases, the solution vector contains NaN numbers, for example
+ when one uses the FE_FaceQ element for certain components of the
+ solution vector and uses a quadrature formula for error evaluation
+ that has quadrature points in the interior of the cell. For any
+ "regular" solution component for which the component mask has a zero
+ weight, the value of that component will be multiplied by zero and
+ consequently does not add anything to the error computation. However,
+ if the NaNs of a FE_FaceQ are multiplied with zero weights, the result
+ is still a NaN, and adding it to the values times weights of the other
+ components results in NaNs -- in effect rendering it impossible to get
+ any information out of the VectorTools::integrate_difference()
+ function if one of the finite elements involved is FE_FaceQ.
+ <br>
+ This is now fixed by simply skipping vector components for which the
+ weight vector is zero. This has the same result as before for all
+ "normal" situations, but also properly skips the NaN case outlined
+ above.
+ <br>
+ (Wolfgang Bangerth, 2018/03/29)
+ </li>
+
+ <li>
+ Fixed: Threads::Thread<T> and Threads::Task<T> objects can now also be
+ used when @p T is a type that is only move-constructable or movable,
+ but not necessarily copy-constructible or copyable. Consequently, one
+ can now also call functions that return such objects on tasks and
+ threads. In particular, this is relevant for functions that return
+ std::unique_ptr objects that have this property.
+ <br>
+ (Wolfgang Bangerth, 2018/03/28)
+ </li>
+
+ <li>
+ Fixed: LinearAlgebra::distributed::Vector::compress(VectorOperation::insert) now flashes
+ ghost part of the vector in Release mode.
+ <br>
+ (Denis Davydov, 2018/03/17)
+ </li>
+
+ <li>
+ Fixed: GridTools::minimal_cell_diameter() and GridTools::maximal_cell_diameter()
+ return the maximal respectively minimal cell diameter over the whole mesh for
+ parallel::distributed::Triangulation object, too.
+ <br>
+ (Daniel Arndt, 2018/03/25)
+ </li>
+
+ <li>
+ New: Added a third test variant to the testsuite driver: For a test
+ consisting of a test.prm.in (and a test.output) file the test.prm.in file
+ will be configured/preprocessed to a test.prm file. This is done with the
+ CMake macro CONFIGURE_FILE that replaces all strings \@VARIABLE\@ with the
+ contents of the corresponding CMake variable. This is useful in particular
+ to conveniently substitute \@SOURCE_DIR\@ with the full source directory path
+ of the test.
+ <br>
+ (Matthias Maier, 2018/03/21)
+ </li>
+
+ <li>
+ Fixed: Previously, it was not possible to iterate over the local range
+ of rows of PETSc matrix objects because one would have to call
+ `matrix.end(row)` where `row` is the last locally owned row, and that
+ triggered an assertion because this end iterator is also the begin
+ iterator of the next row -- which is not locally owned any more.
+ <br>
+ This is now fixed.
+ <br>
+ (Feimi Yu, Wolfgang Bangerth, 2018/03/20)
+ </li>
+
+ <li>
+ Fixed: The SparsityPattern::copy_from() variant that takes a
+ FullMatrix argument was previously of quadratic complexity in the
+ number of nonzero entries per row. This is now fixed, and the function
+ is now linear.
+ <br>
+ (Ben Shields, Wolfgang Bangerth, 2018/03/20)
+ </li>
+
+ <li>
+ Fixed: FETools::get_interpolation_difference_matrix() used to not
+ clear content of the matrix passed as argument, but instead just add
+ to it. This resulted in wrong output, but is now fixed.
+ <br>
+ (Wolfgang Bangerth, 2018/03/18)
+ </li>
+
+ <li>
+ New: Add LAPACKFullMatrix<number>::set(const size_type, const size_type, const number)
+ to set an element of the matrix.
+ <br>
+ (Denis Davydov, 2018/03/17)
+ </li>
+
+ <li>
+ Fixed: FullMatrix::residual(), FullMatrix::add_col(), and FullMatrix::add_row()
+ now work correctly with rectangular matrices.
+ <br> (David Wells, 2018/03/17)
+ </li>
+
+ <li>
+ New: JSON files which are written out by the
+ parameter handler can be read in again with the
+ function ParameterHandler::parse_input_from_json().
+ <br>
+ (Menno Fraters, 2018/03/12)
+ </li>
+
+ <li>
+ New: The testsuite can be run using valgrind via
+ 'ctest -S ../tests/run_memorycheck.cmake'.
+ <br>
+ (Daniel Arndt, 2018/03/11)
+ </li>
+
+ <li>
+ New: The Utilities::dealii_version_string() function returns a string
+ representation of the deal.II version being used.
+ <br>
+ (Wolfgang Bangerth, 2018/03/09)
+ </li>
+
+ <li>
+ Fixed: Copying a Trilinos::MPI::Vector to a local deal.II Vector using
+ operator=() resulted in only a partial copy of data to the local vector. In
+ addition, the copied elements were offset incorrectly on each process.
+ Similar held for copying a Trilinos::MPI::BlockVector to a local deal.II
+ BlockVector. This has been fixed and now works as expected.
+ <br>
+ (Jean-Paul Pelteret, 2018/03/07)
+ </li>
+
+ <li>
+ New: LAPACKFullMatrix::compute_inverse_svd_with_kernel allows to
+ set an expected kernel size for an inverse singular value decomposition.
+ <br>
+ (Daniel Arndt, 2018/03/07)
+ </li>
+
+ <li>
+ New: The ParameterAcceptorProxy class allows you to wrap a class that provides a static member
+ declare_parameters and a member parse_parameters into a ParameterAcceptor subclass.
+ <br>
+ (Luca Heltai, 2018/03/06)
+ </li>
+
+ <li>
+ New: NonMatching::create_coupling_sparsity_pattern and NonMatching::create_coupling_mass_matrix functions
+ to handle L2 projections between arbitrary non-aligned grids.
+ <br>
+ (Luca Heltai, 2018/03/05)
+ </li>
+
+ <li>
+ Fixed: GridTools::distort_random works with
+ parallel::shared::Triangulation objects.
+ <br>
+ (Daniel Arndt, 2018/03/05)
+ </li>
+
+ <li>
+ New: A template class LinearIndexIterator has been added with the intent of
+ using it to generalize iterators over contiguously stored data.
+ <br> (David Wells, 2018/03/01)
+ </li>
+
+ <li>
+ Changed: The GridRefinement::hyper_sphere() function used to have two
+ template arguments (`dim` and `spacedim`), but it really only existed
+ if <code>dim == spacedim-1</code>. Consequently, it now has lost its
+ `dim` template argument and has only retained `spacedim`.
+ <br>
+ (Wolfgang Bangerth, 2018/01/25)
+ </li>
+
+ <li>
+ New: TransposeTable (the base class of LAPACKFullMatrix and ScaLAPACKMatrix) now
+ has a random access iterator implementation similar to the one provided by
+ SparseMatrix.
+ <br> (David Wells, 2018/02/25)
+ </li>
+
+ <li>
+ New: A top level target 'expand_all_instantiations' generates all .inst files.
+ <br>
+ (Timo Heister, Daniel Arndt, 2018/02/20)
+ </li>
+
+ <li>
+ New: LAPACKFullMatrix: make operators *= and /= use Lapack function,
+ LAPACKFullMatrix::add() uses BLAS 1 routine instead of handwritten loops
+ <br>
+ (Benjamin Brands, 2018/02/20)
+ </li>
+
+ <li>
+ Changed: The GridOut::write_mesh_per_processor_as_vtu function now
+ only includes processor info in the .vtu filename and writes a .pvtu file
+ when using a <code>parallel::Triangulation</code>.
+ <br>
+ (Conrad Clevenger, 2018/02/19)
+ </li>
+
+ <li>
+ New: Add a new class CUDAWrappers::SparseMatrix, i.e., wrappers for cuSPARSE csr
+ sparse matrix. The matrix is copied from deal.II own's SparseMatrix and copied
+ to the device.
+ <br>
+ (Bruno Turcksin, 2018/02/18)
+ </li>
+
+ <li>
+ New: Add LAPACKFullMatrix<number>::Tmmult(LAPACKFullMatrix<number> &, const LAPACKFullMatrix<number> &, const Vector<number> &, const bool) const
+ to do a triple matrix product with a diagonal matrix in the middle. Add
+ LAPACKFullMatrix::scale_rows() to scale rows via a given vector. Make
+ LAPACKFullMatrix::Tmmult() and LAPACKFullMatrix::mTmult() use Xsyrk if A==B.
+ <br>
+ (Denis Davydov, 2018/02/14)
+ </li>
+
+ <li>
+ New: add parallel::distributed::BlockVector::mmult(BlockVector &, const FullMatrixType &, const NumberType, const NumberType) const
+ and parallel::distributed::BlockVector::multivector_inner_product_with_metric(const FullMatrixType &, const BlockVector &V, const bool) const
+ to operate on multivectors with a metric tensor.
+ <br>
+ (Denis Davydov, 2018/02/10)
+ </li>
+
+ <li>
+ New: The new polynomial class Polynomials::HermiteLikeInterpolation is a
+ modification of the Hermite polynomials with good conditioning of
+ interpolation for all degrees, as opposed to the
+ Polynomials::HermiteInterpolation class.
+ <br>
+ (Anian Fuchs, Martin Kronbichler, 2018/02/09)
+ </li>
+
+ <li>
+ Extend VectorTools::project() function with MatrixFree quadrature data to
+ optionally take the finite element component index.
+ <br>
+ (Denis Davydov, 2018/02/07)
+ </li>
+
+ <li>
+ New: Added routines to perform addition, multiplication and scaling for ScaLAPACKMatrix
+ <br>
+ (Benjamin Brands, 2018/02/07)
+ </li>
+
+ <li>
+ Fixed: MGTransferMatrixFree::restrict() and MGTransferMatrixFree::prolongate()
+ would produce a segmentation fault when used with multi-component systems for
+ polynomial degrees larger than 10. This is now fixed.
+ <br>
+ (Martin Kronbichler, 2018/01/30)
+ </li>
+
+ <li>
+ New: Add AssertCusparse macro to assert the error code of cuSPARSE function
+ <br>
+ (Bruno Turcksin, 2018/01/29)
+ </li>
+
+ <li>
+ New: There are new overloads of make_array_view for Tensor, SymmetricTensor,
+ LAPACKFullMatrix, C-style array and Vector.
+ <br>
+ (Daniel Arndt, 2018/01/25)
+ </li>
+
+ <li>
+ New: Tensor::begin_raw, Tensor::end_raw, SymmetricTensor::begin_raw
+ and SymmetricTensor::end_raw provide access to the underlying storage for Tensor
+ and SymmetricTensor.
+ <br>
+ (Daniel Arndt, 2018/01/25)
+ </li>
+
+ <li>
+ New: Add save/load functions for ScaLAPACKMatrix to save/load distributed matrix to/from disc using HDF5. If HDF is configured with MPI, parallel I/O is used to save/load the matrix.
+ <br>
+ (Benjamin Brands, 2018/01/25)
+ </li>
+
+ <li>
+ New: Added Utilities::MPI::gather wrapper and tests to gather objects from all to one MPI process.
+ <br>
+ (Benjamin Brands, 2018/01/25)
+ </li>
+
+ <li>
+ Improved: The implementation of the SolverQMRS iteration has been renewed to
+ perform much faster and to be adaptable to left and right side preconditioning
+ of the system matrix.
+ <br>
+ (Ingo Kligge, 2018/01/23)
+ </li>
+
+ <li>
+ New: New function GridTools::distributed_compute_point_locations ; similarly to GridTools::compute_point_locations , given
+ a vector of points, it returns vectors containing them, their reference position and the process owning them as it works
+ with shared and distributed meshes.
+ <br>
+ (Giovanni Alzetta, 2018/01/19)
+ </li>
+
+ <li>
+ Fixed: In some situations,
+ DoFTools::locally_owned_dofs_per_subdomain() returned a vector of the
+ wrong size. Specifically, this happened if the processor with the
+ highest subdomain id owned no degrees of freedom. This is now fixed.
+ <br>
+ (Jean-Paul Pelteret, Wolfgang Bangerth, 2018/01/18)
+ </li>
+
+ <li>
+ Fixed: In FE_Enriched element, avoid evaluating quadrature points if no dofs are
+ assigned. This happens when FE_Nothing is used together with other FE
+ (i.e. FE_Q) as enrichments in FE_Enriched constructor.
+ <br>
+ (Nivesh Dommaraju, 2018/01/15)
+ </li>
+
+ <li>
+ New: Enhanced Raviart-Thomas finite element FE_RT_Bubbles,
+ allows for local elimination of a vector variable in
+ multipoint flux mixed finite element methods and similar.
+ <br>
+ (Eldar Khattatov, 2018/01/11)
+ </li>
+
+ <li>
+ New: Enhanced Raviart-Thomas polynomial space PolynomialsRT_Bubbles
+ consisting of RT_k + curls bubbles.
+ <br>
+ (Eldar Khattatov, 2018/01/09)
+ </li>
+
+ <li>
+ Fixed: The DataOut::write_vtu output pretended to write double precision data,
+ while in reality the data was first converted to float and then written as
+ double. This was fixed by writing all data (including vertex positions) as
+ single precision float and adjusting the output types accordingly.
+ <br>
+ (Rene Gassmoeller, 2018/01/04)
+ </li>
+
+ <li>
+ New: Implementing CylindricalManifold::push_forward_gradient allows to compute
+ normal vectors for boundaries described by CylindricalManifold objects.
+ <br>
+ (Daniel Arndt, 2018/01/04)
+ </li>
+
+ <li>
+ Fixed: In parallel computations, the DoFRenumbering::hierarchical()
+ function created DoF indices that were dependent on the previous DoF
+ indices owned by each processor. This was not intended: the new DoF
+ indices were supposed to only depend on the order of cells, not any
+ previous numbering. This is now fixed.
+ <br>
+ (Wolfgang Bangerth, 2017/12/31)
+ </li>
+
+ <li>
+ New: There is now a function VectorizedArray::streaming_store() that
+ stores the content of a vectorized array into another array which bypasses the
+ CPU's caches on supported architectures using _mm_stream_pd() intrinsics. This
+ operation is useful because it can avoid the read-for-ownership memory access
+ on large arrays and directly write to the destination for streaming
+ stores. However, it can also be detrimental to performance in case the store
+ would fit into caches. This new function is not used within the library
+ because only the final user code knows the properties of hardware and whether
+ a particular store pattern is so large that it will not fit into caches and
+ thus benefit from this optimization.
+ <br>
+ (Martin Kronbichler, 2017/12/27)
+ </li>
+
+ <li>
+ Fixed: implement missing instantiation of TrilinosWrappers::SparsityPattern::copy_from().
+ <br>
+ (Timo Heister, 2017/12/22)
+ </li>
+
+ <li>
+ Improved: SparseMatrix::mmult(..) is now using the
+ DynamicSparsityPattern::compute_mmult_pattern(..) function to create
+ the sparsity pattern of the final matrix C.
+ <br> (Christoph Goering, 2017/12/22)
+ </li>
+
+ <li>
+ New: Added QSimplex, QTrianglePolar, QDuffy, and QSplit classes to perform quadratures
+ on reference simplices, on their affine transformations, and on hyper cubes
+ split by a given point.
+ <br>
+ (Luca Heltai, 2017/12/21)
+ </li>
+
+ <li>
+ New: add LAPACK_WITH_64BIT_BLAS_INDICES configure option and introduce
+ types::blas_int to support 64bit BLAS indices.
+ <br>
+ (Denis Davydov, 2017/12/21)
+ </li>
+
+ <li>
+ New: add LinearAlgebra::distributed::BlockVector::norm_sqr() and
+ LinearAlgebra::distributed::Vector::norm_sqr() that return square of the l2 norm.
+ <br>
+ (Denis Davydov, 2017/12/21)
+ </li>
+
+ <li>
+ New: LAPACKFullMatrix::remove_row_and_column() to remove certain row and column
+ of the matrix.
+ <br>
+ (Denis Davydov, 2017/12/20)
+ </li>
+
+ <li>
+ Fixed: parallel::distributed::Triangulation::add_periodicity missed to
+ update the ghost_owners in the NumberCache member variable.
+ <br>
+ (Daniel Arndt, Sambit Das, 2017/12/11)
+ </li>
+
+ <li>
+ New: DynamicSparsityPattern::compute_mmult_pattern(left, right) with two arguents of either
+ a DynamicSparsityPattern or a SparsityPattern; or any combination of those.
+ The result is the pattern which is obtained by multiplying the two sparse matrices on
+ the given sparsity patterns.
+ <br>
+ (Christoph Goering, 2017/12/19)
+ </li>
+
+ <li>
+ New: LAPACKFullMatrix::rank1_update(const number, const Vector<number> &) performs
+ a rank-1 update of a matrix.
+ <br>
+ (Denis Davydov, 2017/12/17)
+ </li>
+
+ <li>
+ New: Add move constructor for TrilinosWrappers::SparseMatrix and
+ TrilinosWrappers::SparsityPattern
+ <br>
+ (Bruno Turcksin, 2017/12/10)
+ </li>
+
+ <li>
+ New: Add Vector::grow_or_shrink() and LAPACKFullMatrix::grow_or_shrink()
+ to (partly) keep the previous values upon resizing.
+ <br>
+ (Denis Davydov, 2017/12/16)
+ </li>
+
+ <li>
+ Fixed: parallel::distributed::Triangulation::communicate_locally_moved_vertices
+ treats periodic faces correctly now.
+ <br>
+ (Daniel Arndt, Sambit Das, 2017/12/11)
+ </li>
+
+ <li>
+ New: Add Jupyter Notebook explaining how to use the python wrappers.
+ <br>
+ (Bruno Turcksin, 2017/12/10)
+ </li>
+
+ <li>
+ Improved: DoFTools::extract_hanging_node_dofs works for
+ parallel::shared::Triangualtion and parallel::distributed::Triangulation
+ and reports locally relevant DoFs.
+ <br>
+ (Daniel Arndt, 2017/12/21)
+ </li>
+
+ <li>
+ New: Now opencascade also works for spacedim == 2.
+ <br>
+ (Luca Heltai, 2017/12/08)
+ </li>
+
+ <li>
+ New: Improve support of triangular matrices in LAPACKFullMatrix wrappers.
+ Add LAPACKFullMatrix::solve() to solve a system of equations either when
+ the matrix is factorized (Cholesky/LU) or triangular.
+ <br>
+ (Denis Davydov, 2017/12/07)
+ </li>
+
+ <li>
+ New: Created a new method OpenCASCADE::Utilities::create_curves_from_triangulation_boundary
+ that smoothly interpolates the boundary of two dimensional triangulations into a vector of
+ OpenCASCADE TopoDS_Edge closed curves, representing the connected components of the boundary.
+ <br>
+ (Dirk Peschka, Luca Heltai, 2017/12/05)
+ </li>
+
+ <li>
+ Fixed: SparsityPattern::print_svg(...) has the right size for the
+ white rectangle so there is a small margin between the first and last
+ row/column of the printed matrix.
+ <br>
+ (Christoph Goering, 2017/12/05)
+ </li>
+
+ <li>
+ New: Add color_sparsity_pattern function to color a graph represented by SparsityPattern Object.
+ The function uses coloring function from ZOLTAN library.
+ <br>
+ (Nivesh Dommaraju, 2017/12/04)
+ </li>
+
+ <li>
+ New: GridGenerator::extract_boundary_mesh now correctly extracts also Manifold information.
+ <br>
+ (Luca Heltai, Dirk Peschka, 2017/12/04)
+ </li>
+
+ <li>
+ Fixed: Manifold::normal_vector() used to pick two directions that are almost
+ linearly dependent quite often, which resulted in very bad accuracy of the
+ normal vectors. This has been fixed. The downstream use of this function on
+ curved geometries in VectorTools::compute_no_normal_flux_constraints() has now
+ become much more accurate and robust.
+ <br>
+ (Martin Kronbichler, 2017/12/02)
+ </li>
+
+ <li>
+ Improved: SphericalManifold::get_new_points now computes a lot
+ of information outside of the loop over all points in get_new_point,
+ which saves a significant amount of time for spherical geometries.
+ <br>
+ (Rene Gassmoeller, 2017/12/01)
+ </li>
+
+ <li>
+ Fixed: MappingQGeneric::transform_real_to_unit_cell() with degree 1 would
+ previously fail for Cartesian meshes with certain combinations of roundoff
+ errors. This is now fixed.
+ <br>
+ (Martin Kronbichler, 2017/12/01)
+ </li>
+
+ <li>
+ New: Added CellId::serialize function and a test for it using pack/unpack
+ <br>
+ (Giovanni Alzetta, 2017/11/28)
+ </li>
+
+ <li>
+ New: Added BoundingBox::serialize function and a test for it using pack/unpack functions
+ <br>
+ (Giovanni Alzetta, 2017/11/24)
+ </li>
+
+ <li>
+ Extend: partition_triangulation with options for choosing between METIS or ZOLTAN partitioners.
+ METIS (the original partitioner) is the default.
+ <br>
+ (Nivesh Dommaraju, 2017/11/23)
+ </li>
+
+ <li>
+ New: Added random_value<T>() and random_point<dim>() in tests.h, to simplify and unify our way to generate random numbers and points.
+ <br>
+ (Luca Heltai, 2017/11/21)
+ </li>
+
+ <li>
+ Fixed: Added a tolerance inside GridTools::find_active_cell_around_point to errors with boundary points and a test with such points.
+ <br>
+ (Giovanni Alzetta, 2017/11/21)
+ </li>
+
+ <li>
+ Fixed: Added convert_generalized_support_point_values_to_dof_values into
+ FE_FaceQ and FE_TraceQ. This is needed by VectorTools::interpolate
+ <br>
+ (Praveen Chandrashekar, 2017/11/19)
+ </li>
+
+ <li>
+ Fixed: ConvergenceTable::evaluate_convergence_rates now also supports values
+ and keys of type 'unsigned long long int' as used for types::global_dof_index
+ with 64 bit integers enabled.
+ <br>
+ (Martin Kronbichler, 2017/11/19)
+ </li>
+
+ <li>
+ New: Add Utilities::pack and Utilities::unpack, to serialize and unserialize arbitrary
+ objects that support boost::serialization/deserialization.
+ <br>
+ (Luca Heltai, 2017/11/18)
+ </li>
+
+ <li>
+ New: Utilities::MPI::all_gather and Utilities::MPI::some_to_some functions have been
+ added to perform general collective communications between processors.
+ <br>
+ (Giovanni Alzetta, Luca Heltai, 2017/11/18)
+ </li>
+
+ <li>
+ Fixed: The function GridRefinement::refine_and_coarsen_fixed_number
+ no longer produces an EXC_BAD_ACCESS exception when either of the
+ arguments top_fraction or bottom_fraction are set to 1.0.
+ <br>
+ (Oliver Sutton, 2017/11/17)
+ </li>
+
+ <li>
+ Changed: The specializations of the scalar_product function for Sacado::Fad::DFad
+ numbers were redundant and have been removed.
+ <br>
+ (Jean-Paul Pelteret, 2017/11/17)
+ </li>
+
+ <li>
+ New: ArrayView has a data() member function making it more similar to the
+ standard containers.
+ <br>
+ (Daniel Arndt, 2017/11/17)
+ </li>
+
+ <li>
+ New: Math operations for some automatically differentiable numbers have been
+ extended. We also import some math functions for these number types into the
+ standard namespace. This gives full compatibility with the Tensor and
+ SymmetricTensor classes, and facilitates the integration of these number types
+ into existing code.
+ <br>
+ (Jean-Paul Pelteret, 2017/11/16)
+ </li>
+
+ <li>
+ Changed: Core functions in the FEValues and FEValuesViews classes have been
+ updated to allow the use of certain automatically differentiable numbers to
+ represent degree-of-freedom values.
+ <br>
+ (Jean-Paul Pelteret, 2017/11/16)
+ </li>
+
+ <li>
+ New: In parallel, the starting indices of
+ DoFRenumbering::Cuthill_McKee() can now also be locally active
+ indices. They no longer need to be locally owned DoF indices.
+ <br>
+ (Wolfgang Bangerth, 2017/11/16)
+ </li>
+
+ <li>
+ Fixed and improved: The GridTools::compute_point_locations() now always return the correct number of cells. The new algorithm is also significantly faster.
+ <br>
+ (Giovanni Alzetta, 2017/11/15)
+ </li>
+
+ <li>
+ New: Given a vector of points, the GridTools::guess_point_owner() function uses bounding boxes describing the mesh to guess the processes that own these points. A test for the function has been added.
+ <br>
+ (Giovanni Alzetta, 2017/11/13)
+ </li>
+
+ <li>
+ Fixed: The VectorTools::interpolate_boundary_values() function that
+ takes a hp::MappingCollection argument was declared, but not
+ instantiated, and could consequently not be called. This is now fixed.
+ <br>
+ (Wolfgang Bangerth, 2017/11/12)
+ </li>
+
+ <li>
+ New: TrilinosWrappers::DirectSolver::solve() with two
+ LinearAlgebra::distributed::Vector arguments now re-uses the factorization of
+ a matrix set in the TrilinosWrappers::DirectSolver::initialize() call.
+ <br>
+ (Martin Kronbichler, 2017/11/10)
+ </li>
+
+ <li>
+ Modified: Function Functions::FEFieldFunction::compute_point_locations now calls GridTools::compute_point_locations
+ Modified: Function GridTools::compute_point_locations now accepts a cell hint (a test for this hint has been added)
+ <br>
+ (Giovanni Alzetta, 2017/11/06)
+ </li>
+
+ <li>
+ Fixed: The algorithm in Manifold::normal_vector could
+ cause division-by-zero errors for special cases. This
+ was fixed.
+ <br>
+ (Rene Gassmoeller, 2017/11/03)
+ </li>
+
+ <li>
+ New: A uniform interface to automatically differentiable numbers that will
+ be supported by the deal.II library has been implemented. A corresponding
+ set of type traits classes that help query information about these numbers
+ has also been implemented.
+ <br>
+ (Jean-Paul Pelteret, 2017/11/03)
+ </li>
+
+ <li>
+ Improved: Both Sundials-2.7.0 and Sundials-3.0.0 are supported.
+ <br>
+ (Daniel Arndt, 2017/11/03)
+ </li>
+
+ <li>
+ Fixed: ChartManifold now implements the method
+ Manifold::get_intermediate_point().
+ <br>
+ (Martin Kronbichler, 2017/11/02)
+ </li>
+
+ <li>
+ Improved: SphericalManifold::get_new_point uses a Newton-type
+ optimization algorithm instead of a simple averaging.
+ <br>
+ (Daniel Arndt, 2017/11/02)
+ </li>
+
+ <li>
+ Fixed: The spherical manifold used to do a division
+ by zero inside of SphericalManifold::get_new_point()
+ if the new point was exactly at the center of the
+ manifold. This is fixed now.
+ <br>
+ (Rene Gassmoeller, 2017/10/31)
+ </li>
+
+ <li>
+ New: Added GridTools::exchange_local_bounding_boxes function and tests to exchange
+ vectors of bounding boxes and gather them in every process.
+ <br>
+ (Giovanni Alzetta, 2017/10/30)
+ </li>
+
+ <li>
+ Fixed: The treatment of inhomogeneous boundary conditions in VectorTools::project
+ has been fixed.
+ <br>
+ (Daniel Arndt, 2017/10/30)
+ </li>
+
+ <li>
+ Improved: The step-37 tutorial program now describes how to deal with
+ inhomogeneous Dirichlet boundary values with the matrix-free framework in the
+ results section of the tutorial.
+ <br>
+ (Martin Kronbichler, 2017/10/29)
+ </li>
+
+ <li>
+ Fixed: The member variable FEEvaluation::dofs_per_cell and the static variable
+ FEEvaluation::tensor_dofs_per_cell only returned the number of degrees of
+ freedom per scalar component also for vector-valued evaluators, rather than
+ returning the number accumulated over all components in the evaluator. This is
+ now fixed.
+ <br>
+ (Martin Kronbichler, 2017/10/28)
+ </li>
+
+ <li>
+ New: Created a new Patterns::Tuple class, that allows parsing arbitrary tuples
+ of objects in parameter files.
+ <br>
+ (Luca Heltai, 2017/10/26)
+ </li>
+
+ <li>
+ New: Removed a typo in QTelles and added a new singular integration test.
+ <br>
+ (Nicola Giuliani, 25/10/2017
+ </li>
+
+ <li>
+ New: Add LAPACKFullMatrix<number>::add (const number a, const LAPACKFullMatrix<number> &A)
+ <br>
+ (Denis Davydov, 2017/10/25)
+ </li>
+
+ <li>
+ Fixed: The computation of the inverse jacobians in the
+ MappingCartesian class was broken. It would trigger an
+ assertion at runtime complaining that only an assignment
+ with zero is allowed. This is fixed now.
+ <br>
+ (Rene Gassmoeller, 2017/10/24)
+ </li>
+
+ <li>
+ New: The function
+ LinearAlgebra::distributed::Vector::copy_locally_owned_data_from() can copy
+ the locally owned range in a parallel vector without considering the ghost
+ entries which might be different between the two vectors.
+ <br>
+ (Martin Kronbichler, 2017/10/24)
+ </li>
+
+ <li>
+ Added: Function GridTools::compute_point_locations and a test for it. The function uses the recently added Cache to improve performance.
+ <br>
+ (Giovanni Alzetta, 2017/10/24)
+ </li>
+
+ <li>
+ Added: Test for Functions::FEFieldFunction::compute_point_locations
+ <br>
+ (Giovanni Alzetta, 2017/10/23)
+ </li>
+
+ <li>
+ New: DoFHandler::renumber_dofs() for multigrid levels is now implemented for
+ parallel::distributed::Triangulation for the special case that the numbering
+ does not change over processor boundaries.
+ <br>
+ (Martin Kronbichler, 2017/10/20)
+ </li>
+
+ <li>
+ New: Added BoundingBox::get_neighbor_type() which returns the neighboring relation between two bounding boxes. Added the function GridTools::compute_mesh_predicate_bounding_box() which returns a vector of BoundingBoxes covering the cells for which a given predicate is true.
+ <br>
+ (Giovanni Alzetta, 2017/10/20)
+ </li>
+
+ <li>
+ Changed: The <code>enum</code> VectorOperation is now declared in its own header instead of the header for Vector.
+ <br>
+ (David Wells, 2017/10/20)
+ </li>
+
+ <li>
+ New: MatrixFreeOperators::Base now also stores the diagonal of the operator that
+ shall be populated in derived class in compute_diagonal() method. The read access
+ is provided by MatrixFreeOperators::Base::get_matrix_diagonal().
+ <br>
+ (Denis Davydov, 2017/10/19)
+ </li>
+
+ <li>
+ New: A new version of GridTools::find_active_cell_around_point()
+ has been added that exploits a GridTools::Cache object.
+ <br>
+ (Luca Heltai, 2017/10/18)
+ </li>
+
+ <li>
+ New: The class Utilities::MPI::Partitioner can now handle the MPI import and
+ export calls that were previously hidden in the vector class. This allows to
+ use MPI communication of integers besides the previously supported floating
+ point data.
+ <br>
+ (Martin Kronbichler, 2017/10/17)
+ </li>
+
+ <li>
+ New: The class Utilities::MPI::Partitioner now supports handling only a
+ selection of ghost indices within a larger ghost set. Use this feature by
+ adding a second, larger, IndexSet to Partitioner::set_ghost_indices().
+ <br>
+ (Martin Kronbichler, 2017/10/17)
+ </li>
+
+ <li>
+ Fixed: The transformation operation for rank-2 and rank-4 (non-symmetric) tensors
+ in the Physics::Transformations was incorrectly implemented.
+ This has now been fixed.
+ <br>
+ (Jean-Paul Pelteret, 2017/10/17)
+ </li>
+
+ <li>
+ New: Add LAPACKFullMatrix::trace() to calculate trace of a matrix.
+ <br>
+ (Denis Davydov, 2017/10/09)
+ </li>
+
+ <li>
+ New: FiniteElement::get_sub_fe() allows you to return a contained FiniteElement based on a ComponentMask.
+ <br>
+ (Timo Heister, 2017/10/07)
+ </li>
+
+ <li>
+ Fixed: It was previously not possible to create objects of type Table
+ with elements that are not copyable or copy constructible. An example
+ of such a type is `std::unique_ptr`. This has now been fixed.
+ <br>
+ (Wolfgang Bangerth, 2017/10/02)
+ </li>
+
+ <li>
+ New: MGTransferBlockMatrixFree allows to use a separate DoFHandler
+ for each block. The required interface is supported by PreconditionMG.
+ <br>
+ (Daniel Arndt, 2017/10/01)
+ </li>
+
+ <li>
+ New: Add Utilities::MPI::sum() for LAPACKFullMatrix objects.
+ <br>
+ (Denis Davydov, 2017/09/04)
+ </li>
+
+ <li>
+ New: Add LinearAlgebra::distributed::BlockVector<Number>::multivector_inner_product()
+ to perform inner product between each block of the two block vectors.
+ <br>
+ (Denis Davydov, 2017/09/30)
+ </li>
+
+ <li>
+ Fixed: One of the functions GridTools::find_active_cell_around_point()
+ supports an additional `mapping` argument. This mapping was used
+ to actually transform points from the real to the reference space,
+ but somewhere in the algorithm we look for the `closest_vertex` to
+ the target point. Such search was done ignoring if the `mapping`
+ actually changes the location of the vertices. This is now fixed,
+ and the internal function that looks for the closest vertex now
+ takes into account the `mapping` transformation.
+ <br>
+ (Luca Heltai, 2017/09/27)
+ </li>
+
+ <li>
+ Changed: Split TensorProductMatrixSymmetricSum into base and derived class.
+ Added a template specialization for TensorProductMatrixSymmetricSum
+ in case of having a VectorizedArray as arithmetic type.
+ In addition, TensorProductMatrixSymmetricSum is now able to handle
+ distinct 1D matrices in each tensor dimension.
+ <br>
+ (Julius Witte, 2017/09/27)
+ </li>
+
+ <li>
+ New: Add MGTransferMatrixFree::interpolate_to_mg() to transfer fine-level
+ solution to a multi-grid vector
+ <br>
+ (Denis Davydov, 2017/09/27)
+ </li>
+
+ <li>
+ New: Extend MappingQEulerian to work with multi-grid vectors.
+ <br>
+ (Denis Davydov, 2017/09/27)
+ </li>
+
+ <li>
+ Fixed: The hp version of DoFTools::make_flux_sparsity_pattern() with masks for
+ DoF couplings now works with non-primitive FE spaces, similarly to its non-hp version.
+ The hp version of VectorTools::project_boundary_values() is modified to work properly with Hdiv
+ conforming finite elements.
+ <br>
+ (Eldar Khattatov, 2017/09/26)
+ </li>
+
+ <li>
+ New: Extend LAPACKFullMatrix to provide (i) Cholesky factorization (and use it for inversion);
+ (ii) an estimate of the reciprocal condition number; (iii) l1_norm(),
+ linfty_norm() and frobenius_norm().
+ <br>
+ (Denis Davydov, 2017/09/26)
+ </li>
+
+ <li>
+ New: There are new signals in the Triangulation class
+ that signal the beginning and end of a parallel::distributed
+ refinement and serialization. This allows to connect functions
+ that should be called uniquely once before and after
+ refinement and serialization for parallel distributed
+ Triangulations (something not possible with the existing
+ signals).
+ <br>
+ (Rene Gassmoeller, 2017/09/25)
+ </li>
+
+ <li>
+ Changed: The new methods ArrayView::cbegin() and ArrayView::cend() return
+ const_iterators and are const themselves. ArrayView::begin() and
+ ArrayView::end() return (non-const) iterators and are const themselves.
+ <br>
+ (Daniel Arndt, Julius Witte, 2017/09/24)
+ </li>
+
+ <li>
+ New: Added two methods to the class BoundingBox. The first, merge_with(BoundingBox) merges the current BoundingBox with BBox. The second, volume(), returns the volume (dim-dimensional measure) of the current BoundingBox
+ <br>
+ (Giovanni Alzetta, 2017/09/22)
+ </li>
+
+ <li>
+ New: A GridTools::find_closest_vertex() has been added
+ that takes a map of index-vertex position and a target
+ point, and returns the index of the closest point in
+ the map.
+ <br>
+ (Luca Heltai, 2017/09/19)
+ </li>
+
+ <li>
+ New: A GridTools::extract_used_vertices() has been added
+ that returns a map of index-vertex position, using an
+ optional Mapping<dim,spacedim> object to compute the
+ vertex locations.
+ <br>
+ (Luca Heltai, 2017/09/18)
+ </li>
+
+ <li>
+ New: A new GridIn::read_assimp() function allows to
+ read in a file in one of the (40) formats supported by Assimp.
+ <br>
+ (Luca Heltai, 2017/09/16)
+ </li>
+
+ <li>
+ New: Added the base class BoundingBox. The BoundingBox is constructed from a std::pair of points in real space, ordered following the convention bottom-left, top-right.
+ The class has the method BoundingBox::point_inside(Point<spacedim> p) which checks for the presence of a point inside it.
+ <br>
+ (Giovanni Alzetta, 2017/09/15)
+ </li>
+
+ <li>
+ Fixed: The destructor of TimerOutput::Scope will now always exit the subsection
+ it entered in its constructor, instead of just exiting the last subsection that
+ was created in the provided TimerOutput object. This fixes timing output
+ measurements for multithreaded applications and cases where subsections are
+ nested.
+ <br>
+ (David Wells, 2017/09/14)
+ </li>
+
+ <li>
+ New: FiniteElement and FESystem have move constructors.
+ <br>
+ (Daniel Arndt, 2017/09/11)
+ </li>
+
+ <li>
+ New: There is now a conversion constructor that converts std::vector
+ objects to ArrayView objects.
+ <br>
+ (Wolfgang Bangerth, 2017/09/11)
+ </li>
+
+ <li>
+ New: Add more Python wrappers to generate meshes and to flatten a Triangulation.
+ <br>
+ (Bruno Turcksin, 2017/09/10)
+ </li>
+
+ <li>
+ New: The newly implemented FiniteElement::operator^ allows in combination
+ with the new variadic template constructor or the new std::initializer_list
+ constructor for FESystem to construct
+ FESystem objects using syntax like
+ @code
+ FESystem<dim, spacedim> fe_system1 ({FiniteElementType1^n1,
+ FiniteElementType2^n2});
+ FESystem<dim, spacedim> fe_system2 (FiniteElementType1^n3,
+ FiniteElementType2^n4);
+ @endcode
+ <br>
+ (Daniel Arndt, 2017/09/05)
+ </li>
+
+ <li>
+ New: Add Utilities::MPI::sum() for FullMatrix objects.
+ <br>
+ (Denis Davydov, 2017/09/04)
+ </li>
+
+ <li>
+ Changed: The various overloads for Threads::new_thread() and
+ Threads::new_task() taking from 0 to 9 parameters have been replaced
+ by two variadic template versions.
+ <br>
+ (Daniel Arndt, 2017/09/01)
+ </li>
+
+ <li>
+ New: The new DataPostprocessorTensor can help visualize tensor-valued
+ quantities.
+ <br>
+ (Wolfgang Bangerth, 2017/08/30)
+ </li>
+
+ <li>
+ New: The DataPostprocessorVector class now has an extensive example of
+ its use.
+ <br>
+ (Wolfgang Bangerth, 2017/08/29)
+ </li>
+
+ <li>
+ Changed: DoFHandler::get_finite_element(unsigned int) has been removed again in
+ favor of equipping DoFHandler::get_fe() with a (defaulted) unsigned int
+ parameter. hp::DoFHandler::get_finite_element(unsigned int) has been renamed to
+ hp::DoFHandler::get_fe(unsigned int).
+ <br>
+ (Daniel Arndt, 2017/08/25)
+ </li>
+
+ <li>
+ New: Extend Point::distance_square() to work with VectorizedArray numbers.
+ <br>
+ (Denis Davydov, 2017/08/24)
+ </li>
+
+ <li>
+ Fixed: On Vector::add(..), a pointer to the first element of a std::vector
+ is gotten by std::vector::data() instead of using the "&v[0]" idiom, which
+ results in an undefined behaviour.
+ <br>
+ (Tulio Ligneul, 2017/08/23)
+ </li>
+
+ <li>
+ Fixed: It turns out that it was not possible to copy an invalid
+ operator, i.e., the following code would yield an exception:
+ @code
+ typename DoFHandler<dim>::active_cell_iterator invalid_1;
+ typename DoFHandler<dim>::active_cell_iterator invalid_2;
+ invalid_1 = invalid_2; // resulted in an error
+ @endcode
+ This made no sense, and has now been fixed.
+ <br>
+ (Wolfgang Bangerth, 2017/08/23)
+ </li>
+
+ <li>
+ New: The struct is_base_of_all is a generalization of std::is_base_of
+ to template parameter packs and tests if all classes in the parameter pack
+ have a given class as base class or are this class.
+ <br>
+ (Daniel Arndt, 2017/08/21)
+ </li>
+
+ <li>
+ New: The constructors for hp::FECollection taking a fixed number of
+ FiniteElement objects as argument were replaced by a variadic
+ template constructor taking an arbitrary number of objects.
+ <br> (Daniel Arndt, 2017/08/20)
+ </li>
+
+ <li>
+ New: DoFHandler::get_fe() and hp::DoFHandler::get_fe()
+ have been deprecated in favor of DoFHandler::get_finite_element(),
+ DoFHandler::get_fe_collection(), hp::DoFHandler::get_finite_element()
+ and hp::DoFHandler::get_fe_collection() that share a common signature each.
+ <br>
+ (Daniel Arndt, 2017/08/19)
+ </li>
+
+ <li>
+ New: Add MGTransferBlockMatrixFree which allows using geometric multi-grids with
+ LinearAlgebra::distributed::BlockVector<Number> where each block uses the same
+ index space of degrees of freedom.
+ <br>
+ (Denis Davydov, 2017/08/18)
+ </li>
+
+ <li>
+ Fixed: The non-member invert() function operating on SymmetricTensors has
+ been generalized for all number types.
+ <br>
+ (Wolfgang Bangerth, Jean-Paul Pelteret, 2017/08/17)
+ </li>
+
+ <li>
+ New: An additional non-member operator*() function, performing a single
+ contraction between a symmetric and normal tensor of arbitrary rank, has been
+ added to the SymmetricTensor class.
+ <br>
+ (Matthias Maier, Jean-Paul Pelteret, 2017/08/17)
+ </li>
+
+ <li>
+ Fixed: The following non-member functions operating on SymmetricTensors have
+ been generalized for all number types:
+ - scalar_product()
+ - double_contract()
+ - invert() for rank-4 symmetric tensors
+ - operator*() performing a double contraction between two symmetric tensors.
+ - operator*() performing a single contraction of a symmetric tensor with a
+ rank-1 tensor.
+ <br>
+ (Jean-Paul Pelteret, 2017/08/17)
+ </li>
+
+ <li>
+ Fixed: The Tensor::l1_norm() and Tensor::linfty_norm() functions have now been
+ generalized for all number types.
+ <br>
+ (Jean-Paul Pelteret, 2017/08/17)
+ </li>
+
+ <li>
+ Improved: The CMake CUDA detection and configure has been completely
+ rewritten. CUDA support now requires CMake version 3.9 or newer.
+ <br>
+ (Matthias Maier, 2017/08/08)
+ </li>
+
+ <li>
+ Fixed: ConsecutiveControl now asserts that check() is being called for zeroth
+ iteration.
+ <br>
+ (Denis Davydov, 2017/08/16)
+ </li>
+
+ <li>
+ Fixed: Constructing an IndexSet from an Epetra_Map generated the wrong size.
+ <br>
+ (Timo Heister, 2017/08/15)
+ </li>
+
+ <li>
+ Deprecated: types_are_equal has been deprecated in favor of std::is_same.
+ <br> (David Wells, 2017/08/14)
+ </li>
+
+ <li>
+ Deprecated: constraint_and_return_value has been deprecated
+ in favor of std::enable_if.
+ <br> (Daniel Arndt, 2017/08/14)
+ </li>
+
+ <li>
+ New: A new version of GridTools::find_active_cell_around_point()
+ has been added that exploits local maps constructed
+ using standard GridTools utilities.
+ <br>
+ (Rene Gassmoeller, Luca Heltai, 2017/08/13)
+ </li>
+
+ <li>
+ New: GridTools::exchange_cell_data_to_ghosts() to exchange ghost data.
+ <br>
+ (Timo Heister, 2017/08/12)
+ </li>
+
+ <li>
+ New: All of the FEValuesViews classes now have a set of functions
+ named get_function_*_from_local_dof_values that return the function
+ values, gradients etc. from a local vector of degree-of-freedom
+ values. They also now contain a data structure called OutputType
+ that that provides the output type for the product of the value
+ and derivatives of basis functions of the view and any number type.
+ <br>
+ (Jean-Paul Pelteret, Luca Heltai, 2017/08/10)
+ </li>
+
+ <li>
+ Deprecated: internal::bool2type and int2type has been depreated
+ in favor of std::intergral_constant.
+ <br>
+ (Daniel Arndt, 2017/08/10)
+ </li>
+
+ <li>
+ Fixed: Creation of coverage information via
+ compiling with 'DEAL_II_SETUP_COVERAGE=ON'
+ and 'ctest -S ../tests/run_coverage.cmake' works again.
+ <br>
+ (Matthias Maier, Daniel Arndt, 2017/08/09)
+ </li>
+
+ <li>
+ Improved: ConstraintMatrix now has a member function
+ ConstraintMatrix::get_lines() that returns a range object that allows
+ iteration over all constraint entries.
+ <br>
+ (Matthias Maier, 2017/08/08)
+ </li>
+
+ <li>
+ Changed: ConstraintMatrix::ConstraintLine is now a public member class
+ definition.
+ <br>
+ (Matthias Maier, 2017/08/08)
+ </li>
+
+ <li>
+ New: MappingQGeneric uses tensorized evaluation for maybe_update_Jacobians,
+ maybe_compute_q_points and maybe_update_jacobian_grads in case
+ the Quadrature object represents a tensor product of identical
+ one-dimensional quadrature formulas.
+ <br>
+ (Daniel Arndt, 2017/08/04)
+ </li>
+
+ <li>
+ New: Quadrature has a (defaulted) move assignment operator.
+ <br>
+ (Daniel Arndt, 2017/08/04)
+ </li>
+
+ <li>
+ New: Add Utilities::LinearAlgebra::chebyshev_filter() to apply Chebyshev filter of a
+ given degree.
+ <br>
+ (Denis Davydov, 2017/08/02)
+ </li>
+
+ <li>
+ New: Add Utilities::LinearAlgebra::lanczos_largest_eigenvalue() to estimate the largest
+ eigenvalue of a symmetric linear operator using k-steps of Lanczos algorithm.
+ <br>
+ (Denis Davydov, 2017/08/01)
+ </li>
+
+ <li>
+ Fixed: DiagonalMatrix<VectorType> can now be used as a linear operator.
+ <br>
+ (Denis Davydov, 2017/08/01)
+ </li>
+
+ <li>
+ New: Extend pArpack solver to cover mode 1 (standard eigenvalue problem) and
+ mode 2 (generalized eigenvalue problem without spectral transformation).
+ <br>
+ (Denis Davydov, 2017/08/01)
+ </li>
+
+ <li>
+ New: Quadrature::is_tensor_product() returns if the corresponding quadrature
+ formula can be represented as a tensor product and the quadrature points are
+ sorted lexicographically. The corresponding 1D objects can be queried using
+ Quadrature::get_tensor_basis().
+ <br>
+ (Daniel Arndt, 2017/07/26)
+ </li>
+
+ <li>
+ Fixed: DataOutBase::write_hdf5_parallel() can also be used in case deal.II
+ and HDF5 are not compiled with MPI support.
+ <br>
+ (Daniel Arndt, 2017/07/26)
+ </li>
+
+ <li>
+ Fixed: The FunctionParser class demonstrated an incompatibility with
+ (very) old versions of the Threading Building Blocks used in
+ deal.II. This is now worked around.
+ <br>
+ (Alberto Sartori, Wolfgang Bangerth, 2017/07/26)
+ </li>
+
+ <li>
+ Initialization of Chebyshev smoother: Make initial guess robust with
+ respect to number of processors by operating on the global index.
+ <br>
+ (Niklas Fehn, 2017/07/25)
+ </li>
+
+ <li>
+ Fixed: MappingQGeneric::transform_real_to_unit_cell had a bug where, for certain
+ parallelograms, a problem with subtracting nearly equal floating point numbers
+ ruined most of the digits of accuracy in the coordinate transformation.
+ <br> (Giovanni Di Ilio, David Wells, Jean-Paul Pelteret, 2017/07/25)
+ </li>
+
+ <li>
+ New: There is now a function ConstraintMatrix::copy_from() that allows
+ copying objects of type ConstraintMatrix.
+ <br>
+ (Wolfgang Bangerth, 2017/07/27)
+ </li>
+
+ <li>
+ Fixed: The ghost layer computation for the case when periodic boundary
+ conditions were set on all boundaries in 3D missed some cells leading to a
+ deadlock when used on 43 MPI ranks or more. This is now fixed.
+ <br>
+ (Martin Kronbichler, 2017/07/20)
+ </li>
+
+ <li>
+ New: DataOutBase now supports writing zero-dimensional
+ data in a higher spatial dimension (e.g. vertices, quadrature points, particles)
+ for a number of output formats (vtu,vtk,gnuplot,hdf5). A consequence of the
+ change is that HDF5 now in general supports output for dim<spacedim.
+ <br>
+ (Rene Gassmoeller, 2017/07/18)
+ </li>
+
+ <li>
+ Improved: linear_operator gained an overload that directly takes a
+ LinearOperator as exemplar object to directly copy the
+ reinit_(domain|range)_vector functions from.
+ <br>
+ (Matthias Maier, 2017/07/14)
+ </li>
+
+ <li>
+ New: Adding the functions FE_FaceQ::hp_vertex_dof_identities(),
+ FE_FaceQ::hp_line_dof_identities() and FE_FaceQ::hp_quad_dof_identities()
+ allows FE_FaceQ to be used in combination with a hp::DoFHandler.
+ <br>
+ (Samuel Imfeld, Daniel Arndt, 2017/07/11)
+ </li>
+
+ <li>
+ New: A new class TensorProductMatrixSymmetricSum that represents a tensor
+ product of a mass and derivative matrix has been added. It implements both the
+ matrix-vector operation (TensorProductMatrixSymmetricSum::vmult()) as well as
+ the inverse operation (TensorProductMatrixSymmetricSum::apply_inverse())
+ operation in tensorial form with optimal complexity of
+ <tt>size<sup>dim+1</sup></tt> operations. The inverse operation uses the fast
+ diagonalization method.
+ <br>
+ (Martin Kronbichler, 2017/07/11)
+ </li>
+
+ <li>
+ Fixed: The DoFHandler::n_boundary_dofs() and
+ hp::DoFHandler::n_boundary_dofs() functions did not take into account
+ that a one-dimensional triangulation may consist of more than one
+ segment (and then may have more than two vertices on the
+ boundary). This is now fixed.
+ <br>
+ (Wolfgang Bangerth, 2017/07/10)
+ </li>
+
+ <li>
+ New: MGConstrainedDoFs object now stores information for periodicity
+ constraints which is used during the multigrid transfer by
+ MGTransferMatrixFree and MGTransferPrebuilt.
+ <br>
+ (Conrad Clevenger, Martin Kronbichler, 2017/07/08)
+ </li>
+
+ <li>
+ Changed: The DoFRenumbering::compute_component_wise() function used to
+ take two template arguments that denote iterator types, one for the
+ begin and one for the end iterator. This has been changed: It now only
+ takes an iterator type argument for the begin iterator, and the end
+ iterator is automatically casted to that same type.
+ <br>
+ (Wolfgang Bangerth, 2017/07/08)
+ </li>
+
+ <li>
+ New: The DoFRenumbering::component_wise() function was available for
+ all dimensions and space dimensions for regular DoFHandler objects,
+ but only for dimension == space_dimension for hp::DoFHandler. This is
+ now fixed.
+ <br>
+ (Wolfgang Bangerth, 2017/07/07)
+ </li>
+
+ <li>
+ Fixed: TrilinosWrappers::PreconditionBlock* classes now work correctly if one of the processors does not own any rows.
+ <br>
+ (Timo Heister, 2017/07/04)
+ </li>
+
+ <li>
+ Deprecated: The ParpackSolver::Shift class has been deprecated.
+ <br>
+ (Matthias Maier, 2017/07/03)
+ </li>
+
+ <li>
+ New: The determinant of a LAPACKMatrix can now be computed via a
+ call to LAPACKMatrix::determinant().
+ <br>
+ (Jean-Paul Pelteret, 2017/07/02)
+ </li>
+
+ <li>
+ Fixed: FullMatrix::left_invert() and FullMatrix::right_invert() no longer
+ fail when the matrix is square.
+ <br>
+ (Andreas Kergassner, Jean-Paul Pelteret, 2017/07/02)
+ </li>
+
+ <li>
+ Fixed: FullMatrix::determinant() is now implemented for square matrices
+ of size greater than 3. In this case, it is computed through the
+ LU decomposition of the matrix using LAPACK.
+ <br>
+ (Andreas Kergassner, Jean-Paul Pelteret, 2017/07/02)
+ </li>
+
+ <li>
+ Changed: The complete_index_set() function now returns a compressed
+ version of the IndexSet that contains all indices.
+ <br>
+ (Wolfgang Bangerth, 2017/06/24)
+ </li>
+
+ <li>
+ New: The Timer class now has new functions Timer::get_total_data(),
+ Timer::print_total_data, Timer::last_wall_time, Timer::cpu_time and
+ Timer::last_cpu_time() to access information about the total run as
+ well as the last lap.
+ <br>
+ (Daniel Arndt, 2017/06/23)
+ </li>
+
+ <li>
+ Deprecated: The static member variables DoFHandler::invalid_dof_index
+ and hp::DoFHandler::invalid_dof_index are now deprecated. Use
+ numbers::invalid_dof_index instead.
+ <br>
+ (Wolfgang Bangerth, 2017/06/20)
+ </li>
+
+ <li>
+ New: Patterns::Map now accepts a new optional parameter,
+ that allows to specify also the separator between
+ key-value pairs.
+ <br>
+ (Luca Heltai, 2017/06/14)
+ </li>
+
+ <li>
+ New: Utilities::split_string_list() now has a
+ version that allows to pass a string instead of a
+ character. With this it is possible to split on
+ double chars, for example: "alpha ;; beta ;; gamma".
+ <br>
+ (Luca Heltai, 2017/06/14)
+ </li>
+
+ <li>
+ Fixed: The passing of additional settings to
+ TrilinosWrappers::SolverBase from derived solvers
+ was never completed. This has now been corrected.
+ <br>
+ (Julian Andrej, Jean-Paul Pelteret, 2017/06/14)
+ </li>
+
+ <li>
+ Fixed: Patterns derived from PatternBase now return
+ std::unique_ptr<PatternBase> in their clone() and
+ create() functions.
+ <br>
+ (Luca Heltai, 2017/06/12)
+ </li>
+
+ <li>
+ Changed: ParameterHandler::print_parameters() was at times looking at
+ individual bits instead of just the declared values
+ of ParameterHandler::OutputStyle. This presumably allowed for calling that
+ function with a combination of the OutputStyle flags, for reasons that no
+ longer seem particularly relevant nor obvious.
+ <br>
+ This possibility has now been removed from the current implementation of
+ the function, but is for the moment retained for the (deprecated) function
+ ParameterHandler::print_parameters_section().
+ <br>
+ (Wolfgang Bangerth, 2017/06/09)
+ </li>
+
+ <li>
+ Fixed: The ParameterHandler::print_parameters() function
+ used the previously set fill character of the output stream, but it
+ should have filled with spaces instead. This is now fixed.
+ <br>
+ (Wolfgang Bangerth, 2017/06/07)
+ </li>
+
+ <li>
+ Fixed: FullMatrix::print_formatted() and LAPACKFullMatrix::print_formatted
+ would previously print NaN values as zero. This is now fixed.
+ <br>
+ (Simon Sticko, Martin Kronbichler, 2017/06/08)
+ </li>
+
+ <li>
+ Initialization of Chebyshev smoother: project vector onto space of vectors
+ with zero mean which is necessary in some cases where the matrix is singular.
+ Rename variable is_initialized -> eigenvalues_are_initialized
+ in order to improve code readability.
+ <br>
+ (Niklas Fehn, 2017/06/07)
+ </li>
+
+ <li>
+ Improved: The multigrid smoothers now provide an additional apply() method that
+ specializes the smoothing for the case the input vector is set to zero. This
+ method is used in the Multigrid class and saves one matrix-vector product,
+ which can speed up the multigrid algorithm by up to 10 percent, depending on
+ the cost of the smoother.
+ <br>
+ (Martin Kronbichler, 2017/06/07)
+ </li>
+
+ <li>
+ Changed: The ParameterHandler::print_parameters() function is now
+ @p const, as one would expect it to be.
+ <br>
+ (Wolfgang Bangerth, 2017/06/07)
+ </li>
+
+ <li>
+ New: Added a new polynomial class IntegratedLegendreSZ. This implements
+ the integrated Legendre polynomials described in the 2006 PhD thesis
+ of Sabine Zaglmayr.
+ <br>
+ (Ross Kynch, 2017/06/06)
+ </li>
+
+ <li>
+ New: A function TriaAccessor::real_to_unit_cell_affine_approximation that
+ computes an approximation to a point in unit coordinates has been added.
+ <br>
+ (Martin Kronbichler, 2017/06/05)
+ </li>
+
+ <li>
+ Improved: CylindricalManifold is now really using cylindrical coordinates
+ instead of taking an average in space coordinates.
+ <br>
+ (Daniel Arndt, 2017/06/05)
+ </li>
+
+ <li>
+ Deprecated: The ParameterHandler::print_parameters_section() function
+ has been deprecated.
+ <br>
+ (Wolfgang Bangerth, 2017/06/02)
+ </li>
+
+ <li>
+ New: The ConeBoundary class now has a member function ConeBoundary::normal_vector().
+ <br> (Anne Glerum, 2017/05/30)
+ </li>
+
+ <li>
+ Fixed: DataOutInterface::set_flags() was broken when passed an object
+ of type DataOutBase::GnuplotFlags. This is now fixed.
+ <br>
+ (Wolfgang Bangerth, 2017/05/30)
+ </li>
+
+ <li>
+ New: deal.IIFeatureConfig.cmake will contain detailed information about
+ feature configuration and is installed along with other CMake files.
+ These variables can be loaded by calling INCLUDE(\${DEAL_II_FEATURE_CONFIG}).
+ This is useful when users want to link in additional parts of dependencies, not
+ required by deal.II (i.e. filesystem library from Boost package).
+ <br>
+ (Denis Davydov and Matthias Maier, 2017/05/29)
+ </li>
+
+ <li>
+ Removed: The build_tests category of tests has been removed. Build tests
+ now compile all configurable example steps as part of the regular build
+ stage.
+ <br>
+ (Matthias Maier, 2017/04/06)
+ </li>
+
+ <li>
+ New: There is a new header, <tt>lac/trilinos_index_access.h</tt>, that provides
+ index and size functions for some common Trilinos objects that work correctly for
+ both 32 and 64 bit code.
+ <br> (David Wells, 2017/05/10)
+ </li>
+
+ <li>
+ New: Add method to access timing data from TimerOutput from code.
+ <br>
+ (Jonathan Robey, 2017/05/22)
+ </li>
+
+ <li>
+ New: Added a GridTools::regularize_corner_cells function that
+ detects if the boundary cells of a mesh at corner positions
+ (with dim adjacent faces on the boundary) need to be split into
+ cells with smaller angles.
+ <br> (Luca Heltai, Martin Kronbichler, 2017/05/18)
+ </li>
+
+ <li>
+ New: Add a new class ConsecutiveControl which returns SolverControl::State::success
+ if and only if a certain positive number of consecutive iterations satisfy the
+ specified tolerance.
+ <br>
+ (Denis Davydov, 2017/05/17)
+ </li>
+
+ <li>
+ New: The vertex (and face) iterator for dimension 1 triangulations now implements
+ the get_manifold method.
+ <br> (David Wells, 2017/05/10)
+ </li>
+
+ <li>
+ New: Add support for matrix-free operator application on GPU using CUDA.
+ Constraints (Dirichlet boundary conditions, hanging nodes, etc.) cannot be
+ applied.
+ <br>
+ (Bruno Turcksin and Karl Ljungkvist, 2017/05/10)
+ </li>
+
+ <li>
+ New: TrilinosWrappers::MPI::BlockMatrix can now return its MPI_Comm via
+ get_mpi_communicator() and its range and domain indices via
+ locally_owned_range_indices() and locally_owned_domain_indices()
+ relying on the information of the TrilinosWrappers::MPI::Matrix
+ object it is based on.
+ <br>
+ (Daniel Arndt, 2017/05/09)
+ </li>
+
+ <li>
+ New: ConstraintMatrix::distribute_local_to_global can now also assemble to
+ rectangular matrices where rows and columns are described by different
+ ConstraintMatrix objects.
+ <br>
+ (Martin Kronbichler, 2017/05/04)
+ </li>
+
+ <li>
+ Changed: The PETScWrappers::MPI::Vector class always corresponds to a PETSc
+ vector with type <code>mpi</code>, even when empty.
+ <br> (David Wells, 2017/03/29)
+ </li>
+
+ <li>
+ New: TriaAccessor::enclosing_ball() computes and return a pair of Point
+ and double corresponding to the center and the radius of a reasonably small
+ enclosing ball of the TriaAccessor object.
+ <br>
+ (Vishal Boddu, Denis Davydov 2017/04/26)
+ </li>
+
+ <li>
+ Fixed: Copying Patterns::List or Patterns::Map objects previously led
+ to memory corruption. This is now fixed.
+ <br>
+ (Wolfgang Bangerth, 2017/04/25)
+ </li>
+
+ <li>
+ New: Add Point<dim,Number>::distance_square() which calculates the squared
+ Euclidean distance.
+ <br>
+ (Denis Davydov, 2017/04/24)
+ </li>
+
+ <li>
+ New: The ParameterHandler::parse_input() function and friends now make
+ a guarantee that if a parameter value does not match its pattern, or
+ an associated action throws an exception, that the enclosing
+ ParameterHandler object will be reset to the same subsection level
+ it was in before ParameterHandler::parse_input() was called.
+ <br>
+ (Wolfgang Bangerth, 2017/04/21)
+ </li>
+
+ <li>
+ Changed: We no longer support Visual Studio 2013 because it
+ lacks important c++11 features like constexpr. It is now possible
+ to use MSVC 2017 in addition to MSVC 2015.
+ <br>
+ (Timo Heister, 2017/04/20)
+ </li>
+
+ <li>
+ New: The new function ParameterHandler::add_action() allows to
+ register actions that should be performed when a parameter
+ is read from somewhere. This allows, in particular, initializing
+ member variables that store parameter values without having to
+ explicitly call ParameterHandler::get(),
+ ParameterHandler::get_integer(), or similar functions.
+ <br>
+ (Wolfgang Bangerth, 2017/04/16)
+ </li>
+
+ <li>
+ Fixed: The MeshWorker framework can also be used in case dim != spacedim.
+ <br>
+ (Daniel Arndt, 2017/04/16)
+ </li>
+
+ <li>
+ Changed: The PointValueHistory class still used the old, deprecated
+ interface for DataPostprocessor objects in that variant of the
+ PointValueHistory::evaluate_field() function that takes such an
+ object. This is now fixed: it uses
+ DataPostprocessor::evaluate_scalar_field() and
+ DataPostprocessor::evaluate_vector_field(), like all other
+ users of the DataPostprocessor class.
+ <br>
+ (Wolfgang Bangerth, 2017/04/16)
+ </li>
+
+ <li>
+ Fixed: FETools::extrapolate also works for BlockVector types.
+ <br>
+ (Daniel Arndt, 2017/04/13)
+ </li>
+
+ <li>
+ Fixed: When initializing a LinearAlgebra::distributed::Vector and omitting
+ zeroing the entries, ghost entries were left undefined, leading to use of
+ invalid memory when calling compress() without a previous zero_out_ghosts()
+ also when the local range was completely valid. This is now fixed.
+ <br>
+ (Martin Kronbichler, 2017/04/12)
+ </li>
+
+ <li>
+ New: Augment python interface of Point: add operators to modify point, a
+ function to compute the distance between points, and functions to compute norms.
+ <br>
+ (Bruno Turcksin, 2017/04/11)
+ </li>
+
+ <li>
+ New: There is now a function TableHandler::declare_entry() that
+ creates a column of a table without actually putting a value into it.
+ <br>
+ (Wolfgang Bangerth, 2017/04/11)
+ </li>
+
+ <li>
+ New: There is now a function TableHandler::start_new_row() that fills
+ all entries of the current row (if any) that hadn't been filled, and
+ thus starts a new row of the table.
+ interface.
+ <br>
+ (Wolfgang Bangerth, 2017/04/09)
+ </li>
+
+ <li>
+ New: The class FESystem now implements
+ the
+ FiniteElement::convert_generalized_support_point_values_to_dof_values()
+ interface.
+ <br>
+ (Wolfgang Bangerth, Matthias Maier, 2017/08/31)
+ </li>
+
+ <li>
+ New: The classes FE_Q, FE_DGQ, and FE_DGQArbitraryNodes now implement
+ the
+ FiniteElement::convert_generalized_support_point_values_to_dof_values()
+ interface.
+ <br>
+ (Wolfgang Bangerth, 2017/04/05)
+ </li>
+
+ <li>
+ New: The FEEvaluation::read_dof_values and
+ FEEvaluation::distribute_local_to_global now use dedicate gather (AVX2,
+ AVX-512) and scatter (AVX-512) instructions for faster vector access if those
+ are available.
+ <br>
+ (Martin Kronbichler, 2017/03/24)
+ </li>
+
+ <li>
+ New: The tensor product kernels used by FEEvaluation have gained a faster
+ variant for evaluating gradients derived from spectral identities. This
+ improves performance of the Laplace operator evaluation by 10-20% in the
+ computation-bound case.
+ <br>
+ (Martin Kronbichler, 2017/03/24)
+ </li>
+
+ <li>
+ New: DoFTools::extract_dofs_with_support_contained_within() returns a set of
+ degrees of freedom whose support is entirely contained within the cells for
+ which the predicate returns true.
+ <br>
+ (Denis Davydov, 2017/03/24)
+ </li>
+
+ <li>
+ New: GridTools::compute_bounding_box() computes a bounding box of a subdomain
+ whose active cells conform to a given predicate.
+ GridTools::compute_active_cell_layer_within_distance() computes a collection
+ of active cells that are within a given distance from
+ predicate subdomain.
+ GridTools::compute_ghost_cell_layer_within_distance() computes a collection
+ of active cells that are within a given distance from
+ locally owned active cells.
+ <br>
+ (Vishal Boddu, Denis Davydov 2017/03/23)
+ </li>
+
+ <li>
+ Extend: The two overloaded functions GridTools::find_active_cell_around_point() now take an optional custom mask for vertices
+ to narrow down the search for surrounding cells.
+ <br>
+ (Vishal Boddu, 2017/03/22)
+ </li>
+
+</ol>
+
+*/