--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2017 - 2022 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.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+/**
+@page changes_between_9_3_3_and_9_4_0 Changes between Version 9.3.3 and 9.4.0
+
+<p>
+This is the list of changes made between the release of deal.II version
+9.3.3 and that of 9.4.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>
+ Changed: For ParameterHandler::OutputStyle::JSON or
+ ParameterHandler::OutputStyle::ShortJSON, the function
+ ParameterHandler::print_parameters() demangles now the
+ parameters before printing the output. Users do not
+ need to demangle the output themselves anymore.
+ <br>
+ (Magdalena Schreter, Peter Munch, 2022/05/25)
+ </li>
+
+ <li>
+ Improved: GridTools::get_coarse_mesh_description() no longer returns subcell data
+ corresponding to default values (i.e., when the manifold_id is
+ numbers::flat_manifold_id and when the boundary_id is
+ numbers::internal_face_boundary_id). By skipping this data, which is not required by
+ Triangulation::create_triangulation(), the total amount of data returned by this
+ function is significantly lowered (and, therefore, so is the cost of creating a new
+ Triangulation from the output).
+ <br>
+ (David Wells, 2022/05/09)
+ </li>
+
+ <li>
+ Changed: All functions `n_nonzero_elements()`, which are members of the
+ SparseMatrix and SparsityPattern family of classes from PETSc and
+ Trilinos, now always return `std::uint64_t` instead of
+ types::global_dof_index.
+ <br>
+ (Marc Fehling, 2022/04/04)
+ </li>
+
+ <li>
+ Changed: To be able to guarantee correctness of
+ the application of constraints in MatrixFree, we
+ require that users call AffineConstraints::close()
+ before calling MatrixFree::reinit() if AffineConstraints
+ objects are passed that are not empty. One can check
+ if an AffineConstraints object is closed with the
+ new function AffineConstraints::is_closed().
+ <br>
+ (Peter Munch, 2022/03/08)
+ </li>
+
+ <li>
+ Fixed: Callback functions attached to any weighted load balancing signal
+ of parallel::distributed::Triangulation objects now need to handle cells
+ with CELL_INVALID status explicitely.
+ <br>
+ If a cell gets refined, only the first child has the CELL_REFINE status,
+ while all other children are CELL_INVALID.
+ <br>
+ (Marc Fehling, 2022/02/25)
+ </li>
+
+ <li>
+ Changed: For weighted load balancing with parallel::distributed::Triangulation
+ objects, an intial weight of `1000` will no longer be assigned to each cell.
+ <br>
+ The old signal Triangulation::Signals::cell_weight has been deprecated.
+ Please use the new signal Triangulation::Signals::weight instead.
+ <br>
+ You can invoke the old behavior by connecting a function to the new
+ signal that returns the base weight like this:
+ @code{.cc}
+ triangulation.signals.weight.connect(
+ [](const typename parallel::distributed::Triangulation<dim>::cell_iterator &,
+ const typename parallel::distributed::Triangulation<dim>::CellStatus)
+ -> unsigned int { return 1000; });
+ @endcode
+ (Marc Fehling, 2022/02/25)
+ </li>
+
+ <li>
+ Updated: Spurious inclusions of the header files `deal.II/grid/grid_tools.h`
+ and `deal.II/grid/grid_tools_cache.h` from other headers of deal.II have been
+ removed. User codes relying on this implicit inclusion will need to add the
+ respective include files.
+ <br>
+ (Martin Kronbichler, 2022/02/22)
+ </li>
+
+ <li>
+ Deprecated: We have introduced new versions of
+ DoFTools::extract_locally_active_dofs(),
+ DoFTools::extract_locally_active_level_dofs(),
+ DoFTools::extract_locally_relevant_dofs(), and
+ DoFTools::extract_locally_relevant_level_dofs().
+ These versions return the index sets directly.
+ The old versions have been early deprecated.
+ <br>
+ (Peter Munch, 2022/02/23)
+ </li>
+
+ <li>
+ Changed: The function MatrixFreeTools::compute_diagonal()
+ does not initialize the output vector anymore. Users
+ need to call MatrixFree:initialize_dof_vector() themselves.
+ This change is required to be able to also support block
+ vectors.
+ <br>
+ (Magdalena Schreter, Peter Munch, 2022/02/01)
+ </li>
+
+ <li>
+ Changed: The two algorithms in the ConsensusAlgorithms namespace
+ (along with their base class) required a callback function that
+ correctly sized the buffer into which the answer to a request was to
+ be written. These algorithms have been rewritten in ways that make
+ this no longer necessary, and they now correctly size these buffers
+ themselves. As a consequence, the ConsensusAlgorithms::Process class
+ no longer has the `prepare_for_answer()` function, and the
+ ConsensusAlgorithms::AnonymousProcess class no longer has a
+ corresponding member variable; in the latter case, the constructor of
+ the class also no longer takes an argument to this effect.
+ <br>
+ (Wolfgang Bangerth, Peter Munch, 2022/01/18)
+ </li>
+
+ <li>
+ Updated: The header inclusions of several files in the `deal.II/matrix_free`
+ subfolder have been cleaned up to make the library more maintainable. As a
+ result, some headers are no longer implicitly included and a user code might
+ need to add the respective include file.
+ <br>
+ (Martin Kronbichler, 2021/11/30)
+ </li>
+
+ <li>
+ Renamed: The namespace Functions::LevelSet has been renamed to
+ Functions::SignedDistance.
+ <br>
+ (Peter Munch, 2021/10/19)
+ </li>
+
+ <li>
+ Changed: For parallel::distributed::Triangulation, vertices will no longer
+ be communicated automatically to p4est in debug mode. Please set the
+ corresponding flag
+ parallel::distributed::Triangulation::Settings::communicate_vertices_to_p4est
+ while constructing your triangulation object.
+ <br>
+ (Marc Fehling, 2021/10/13)
+ </li>
+
+ <li>
+ Changed: The 3D implementation of GridTools::rotate() with an integer
+ for a Cartesian coordinate direction has been superseded by the version
+ that accepts unit vectors as rotation axes. Further,
+ Physics::Transformations::Rotations::rotation_matrix_3d() now requires
+ a Tensor<1,3> object instead of a Point<3> as an axis.
+ <br>
+ (Marc Fehling, 2021/10/11)
+ </li>
+
+ <li>
+ Updated: deal.II now requires ginkgo version 1.4.0 or newer
+ (Fabian Castelli, 2021/09/01)
+ </li>
+
+ <li>
+ Deprecated: The Tensor and SymmetricTensor classes had functions
+ `begin_raw()` and `end_raw()` that suggested that the elements of
+ these objects are stored in arrays and consequently could be accessed
+ consecutively through iterators. While they are indeed stored
+ contiguously in memory, they are not part of an array and, as a
+ consequence, C++ does not actually allow this kind of access. The
+ functions have therefore been deprecated and will be removed in due
+ time.
+ <br>
+ As a consequence, the `make_array_view()` functions that allow turning
+ a Tensor or SymmetricTensor into an ArrayView object have now also
+ been deprecated.
+ <br>
+ (Wolfgang Bangerth, 2021/08/19)
+ </li>
+
+ <li>
+ Changed: The DiagonalMatrix objects set up by MatrixFreeOperators::Base and
+ its inheriting classes no set ghost entries.
+ <br>
+ (David Wells, 2021/08/17)
+ </li>
+
+ <li>
+ Deprecated: Many of the member functions of the FEInterfaceValues class, as well
+ as the FEInterfaceViews::Scalar and FEInterfaceViews::Vector classes, that are
+ used to compute jumps and averages of shape function-related quantities have
+ been renamed in such a way that they are more expressive about what they
+ compute.
+ <br>
+ (Jean-Paul Pelteret, 2021/07/31)
+ </li>
+
+ <li>
+ Changed: MatrixFreeOperators::MassOperator now computes its true diagonal (and
+ not a lumped mass matrix) as its diagonal.
+ <br>
+ (David Wells, 2021/07/29)
+ </li>
+
+ <li>
+ Deprecated: The autopartition parameter has been removed from
+ parallel::DistributedTriangulationBase::load() and all inheriting
+ classes.
+ <br>
+ (Marc Fehling, 2021/07/24)
+ </li>
+
+ <li>
+ Changed: Custom repartitioning via Triangulation::Signals::cell_weight
+ is no longer part of parallel::distributed::Triangulation::load(). If
+ desired, call parallel::distributed::Triangulation::repartition()
+ manually after load().
+ <br>
+ (Marc Fehling, 2021/07/23)
+ </li>
+
+ <li>
+ Changed: The class MappingQ now applies a high-order mapping to a cells in the
+ mesh, not just the ones touching the boundary. This makes the class completely
+ equivalent to the previous class MappingQGeneric. All functionality in the
+ latter class has been integrated into the MappingQ class. This avoids errors
+ with curved manifolds in the interior of the domain, where MappingQ could lead
+ to gaps or overlaps in the computational domain. In case the slightly better
+ performance of using MappingQ1 in interior cells is desired,
+ hp::MappingCollection can be used to replicate the old behavior.
+ <br>
+ (Martin Kronbichler, 2021/07/10)
+ </li>
+
+ <li>
+ Updated: FE_RaviartThomasNodal now uses a different polynomial space to allow
+ for a simpler use for faces in non-standard orientation. The new polynomials
+ are anisotropic tensor products of Lagrange polynomials on the points of a
+ Gauss--Lobatto quadrature formula. This change leads to different entries in
+ the matrices and constraints, for example, but as the resulting polynomial
+ space spans the same polynomials, no change in accuracy should be expected.
+ <br>
+ (Martin Kronbichler, Katharina Kormann, Konrad Simon, 2021/06/12)
+ </li>
+
+ <li>
+ Removed: The PETSc Eisenstat preconditioner wrapper, which has never worked
+ correctly in parallel, has been removed.
+ <br>
+ (David Wells, 2021/06/11)
+ </li>
+
+ <li>
+ Removed: The deprecated exception ParameterHandler::ExcInvalidEntryForPatternXML
+ and the deprecated overload of SparsityTools::gather_sparsity_pattern()
+ have been removed.
+ <br>
+ (Daniel Arndt, 2021/06/07)
+ </li>
+
+ <li>
+ Removed: The deprecated member function
+ TriangulationBase::compute_vertices_with_ghost_neighbors() has been removed.
+ <br>
+ (Daniel Arndt, 2021/06/07)
+ </li>
+
+ <li>
+ Removed: The deprecated constructors for FESeries::Fourier and
+ FESeries::Legendre have been removed.
+ <br>
+ (Daniel Arndt, 2021/06/07)
+ </li>
+
+ <li>
+ Removed: The deprecated specializations of VectorTools::integrate_difference()
+ and VectorTools::project_boundary_values_curl_conforming() have been removed.
+ <br>
+ (Daniel Arndt, 2021/06/04)
+ </li>
+
+ <li>
+ Removed: The deprecated overloads of
+ FETools::lexicographic_to_hierarchic_numbering() and
+ FETools::hierarchic_to_lexicographic_numbering() have been removed.
+ <br>
+ (Daniel Arndt, 2021/06/03)
+ </li>
+
+ <li>
+ Removed: The deprecated member variable VectorizedArray::n_array_elements has
+ been removed.
+ <br>
+ (Daniel Arndt, 2021/06/03)
+ </li>
+
+ <li>
+ Removed: The deprecated member function CellAccessor::active() has been removed.
+ <br>
+ (Daniel Arndt, 2021/06/03)
+ </li>
+
+ <li>
+ Removed: The deprecated member functions DataOut::first_cell() and DataOut::next_cell()
+ have been removed.
+ <br>
+ (Daniel Arndt, 2021/06/02)
+ </li>
+
+ <li>
+ Changed: Trilinos support in deal.II requires both deal.II and Trilinos to be
+ configured with MPI support.
+ <br>
+ (Daniel Arndt, 2021/06/02)
+ </li>
+
+ <li>
+ Removed: The deprecated build_matrices() member functions
+ in various multigrid transfer classes have been removed.
+ <br>
+ (Daniel Arndt, 2021/06/01)
+ </li>
+
+ <li>
+ Removed: The deprecated versions of DoFTools::count_dofs_per_component()
+ and DoFTools::count_dofs_per_block() have been removed.
+ <br>
+ (Daniel Arndt, 2021/06/01)
+ </li>
+
+ <li>
+ Removed: The deprecated overloads for DoFTools::extract_hanging_node_dofs(),
+ and DoFTools::extract_dofs() have been removed.
+ <br>
+ (Daniel Arndt, 2021/05/28)
+ </li>
+
+ <li>
+ Removed: Deprecated parallel::CellWeights member functions have been removed.
+ <br>
+ (Daniel Arndt, 2021/05/27)
+ </li>
+
+ <li>
+ Removed: The overloads in CUDAWrappers::FEEvaluation that take a local dof index
+ or a quadrature point as arguement have been removed.
+ Use the ones that don't use these arguments in their interface instead.
+ <br>
+ (Daniel Arndt, 2021/05/26)
+ </li>
+
+ <li>
+ Removed: The deprecated parallel::Triangulation class has been removed.
+ Use parallel::TriangulationBase instead.
+ <br>
+ (Daniel Arndt, 2021/05/26)
+ </li>
+
+ <li>
+ Removed: The deprecated member field
+ MatrixFree::AdditionalData::level_mg_handler.
+ <br>
+ (Peter Munch, 2021/05/25)
+ </li>
+
+ <li>
+ Removed: The deprecated
+ parallel::distributed::CellDataTransfer::CoarseningStrategies struct has been removed.
+ Use AdaptationStrategies::Coarsening instead.
+ <br>
+ (Daniel Arndt, 2021/05/25)
+ </li>
+
+ <li>
+ Removed: The deprecated member functions
+ DoFHandler::locally_owned_dofs_per_processor(),
+ DoFHandler::n_locally_owned_dofs_per_processor(), and
+ DoFHandler::n_locally_owned_mg_dofs_per_processor() have been removed.
+ <br>
+ (Daniel Arndt, 2021/05/24)
+ </li>
+
+ <li>
+ Deprecated: The template arguments of the following classes have been
+ changed to avoid the legacy argument `DoFHandlerType`:
+ <ul>
+ <li> `SolutionTransfer<dim, VectorType, DoFHandlerType> -> SolutionTransfer<dim, VectorType, spacedim>`
+ <li> `parallel::distributed::SolutionTransfer<dim, VectorType, DoFHandlerType> -> parallel::distributed::SolutionTransfer<dim, VectorType, spacedim>`
+ <li> `Functions::FEFieldFunction<dim, DoFHandlerType, VectorType> -> Functions::FEFieldFunction<dim, VectorType, spacedim>`
+ <li> `DataOut<dim, DoFHandlerType> -> DataOut<dim, spacedim>`
+ <li> `DataOut_DoFData<DoFHandlerType, patch_dim, patch_space_dim> -> DataOut_DoFData<dim, patch_dim, spacedim, patch_spacedim>`
+ <li> `DataOutFaces<dim, DoFHandlerType> -> DataOutFaces<dim, spacedim>`
+ <li> `DataOutRotation<dim, DoFHandlerType> -> DataOutRotation<dim, spacedim>`
+ </ul>
+ Please change your code accordingly.
+ <br>
+ If for some reason, you need a code that is compatible with deal.II
+ 9.3 and the subsequent release, a Legacy namespace has been introduced
+ with aliases of these classes with their original interface. You can
+ make the following substitutions to your code for each of the affected
+ classes:
+ <ul>
+ <li>X → Legacy::X
+ </ul>
+ To perform this substitution automatically, you may use a *search and
+ replace* script like the following made for the *bash* shell:
+ @code{.sh}
+ classes=(SolutionTransfer parallel::distributed::SolutionTransfer Functions::FEFieldFunction DataOut DataOut_DoFData DataOutFaces DataOutRotation)
+ for c in \${classes[@]}; do
+ find /path/to/your/code -type f -exec sed -i -E "/(\w\${c}|\${c}[^<]|Particles::\${c}|distributed::\${c}|^\s*(\/\/|\*))/! s/\${c}/Legacy::\${c}/g" {} \;
+ done
+ @endcode
+ (Marc Fehling, 2020/11/21)
+ </li>
+
+</ol>
+
+
+<!-- ----------- GENERAL IMPROVEMENTS ----------------- -->
+
+<a name="general"></a>
+<h3>General</h3>
+<ol>
+
+ <li>
+ New: The namespace Utilities::MPI::LargeCount provides functionality
+ to do MPI operations with more than 2^31 number of objects.
+ <br>
+ (Timo Heister, Sean Ingimarson, Penfei Jia, Jiaqi Zhang, 2022/05/29)
+ </li>
+
+ <li>
+ New: Several classes have been added to the NonMatching namespace for using cut
+ finite element methods (CutFEM):
+ <ul>
+ <li>
+ MeshClassifier identifies how active cells and faces are located relative
+ to the zero contour of a level set function, by associating one of the
+ values of the enum LocationToLevelSet: {inside, outside, intersected}, with
+ each cell/face.
+ </li>
+ <li>
+ QuadratureGenerator creates immersed quadrature rules over the 3 regions of
+ a BoundingBox defined by the sign of a level set function.
+ FaceQuadratureGenerator creates the same type of quadratures but over a
+ face of a BoundingBox. DiscreteQuadratureGenerator and
+ DiscreteFaceQuadratureGenerator create the same type of quadratures over a
+ cell/face when the level set function lies in a finite element space.
+ </li>
+ <li>
+ FEImmersedSurfaceValues is a FEValues-like class for evaluating real space
+ values based on an ImmersedSurfaceQuadrature, i.e., for integrating over
+ the zero contour in a cell.
+ </li>
+ <li>
+ NonMatching::FEValues simplifies assembling by creating dealii::FEValues
+ and FEImmersedSurfaceValues objects initialized with the 3 different
+ immersed quadratures of a cell. Analogously, NonMatching::FEInterfaceValues
+ creates dealii::FEInterfaceValues objects initialized with immersed
+ quadrature rules over a face.
+ </li>
+ </ul>
+ <br>
+ (Simon Sticko, Maximilian Bergbauer, Martin Kronbichler, 2022/05/29)
+ </li>
+
+ <li>
+ New: Added support for the CGAL library (www.cgal.org). The following features
+ are supported:
+ <ul>
+ <li>Conversion from deal.II to CGAL point types and viceversa</li>
+ <li>Conversion from deal.II cell types to CGAL::Surface_mesh and viceversa</li>
+ <li>Conversion from deal.II Triangulation to CGAL::Surface_mesh and viceversa</li>
+ <li>Insertion of deal.II points in CGAL triangulation types</li>
+ <li>Conversion from CGAL::Triangulation_2 to Triangulation<dim, 2></li>
+ <li>Conversion from CGAL::Triangulation_3 to Triangulation<dim, 3></li>
+ <li>Conversion from CGAL::Surface_mesh or CGAL::Polyhedron_3 to Triangulation<2, 3></li>
+ </ul>
+ <br>
+ (Marco Feder, Luca Heltai, 2022/04/26)
+ </li>
+
+ <li>
+ New: Added a new function DoFRenumbering::support_point_wise()
+ which renumbers DoFs so that DoFs with identical support points
+ are now numbered adjacently.
+ <br>
+ (David Wells, 2021/03/11)
+ </li>
+
+ <li>
+ New: A tutorial, Step-85, which shows how to use functionality in the
+ NonMatching namespace to solve a PDE with the cut finite element method,
+ when the domain is described by a level set function.
+ <br>
+ (Simon Sticko, 2022/01/07)
+ </li>
+
+ <li>
+ New: Geometry GridGenerator::pipe_junction() creates an intersection of
+ arbitrary truncated cones in 3D. It can be used to generate T-pipes,
+ Y-pipes, corner pieces and other fittings.
+ <br>
+ (Marc Fehling, Maximilian Bergbauer, Peter Munch, Martin Kronbichler, 2021/12/01)
+ </li>
+
+ <li>
+ New: The step-49 tutorial now has an extended section about generating meshes from Gmsh with a more interesting example.
+ <br>
+ (Timo Heister, Sean Ingimarson, 2021/10/08)
+ </li>
+
+ <li>
+ New: Added an interface to p4est_search.h (>=v2.2) to find the MPI
+ rank of cells owning remote points without communication. This
+ works in the special (but not uncommon) case that no nontrivial
+ manifold is attached to the triangulation, i.e., the triangulation
+ has only FlatManifold attached to it.
+ <br>
+ (Konrad Simon, 2021/09/24)
+ </li>
+
+ <li>
+ New: The tutorial program step-82 (local discontinuous Galerkin method
+ for the bi-Laplacian problem) has been added.
+ <br>
+ (Diane Guignard, 2021/09/17)
+ </li>
+
+ <li>
+ Added: Evaluation and integration of hessians both on cells and on faces is now
+ available in the matrix-free framework.
+ <br>
+ (Maximilian Bergbauer, Martin Kronbichler, Peter Munch, 2021/09/06)
+ </li>
+
+ <li>
+ New: VTU files have traditionally been used for visualization
+ purposes, but more recently they have also been used for more general
+ postprocessing tasks since they can easily be imported into Python,
+ for example. By setting the DataOutBase::VtkFlags::physical_units
+ variable and attaching such a flags object to a DataOut,
+ Particles::DataOut, or MatrixOut object, one can now specify the
+ physical units associated with variables that are written into VTU
+ files, so that they can be parsed by scripts that do further
+ postprocessing.
+ <br>
+ (Wolfgang Bangerth, 2021/07/09)
+ </li>
+
+ <li>
+ Improved: DataOut_DoFData and the derived classes create internally
+ a copy of vectors attached via add_data_vector() and are now
+ responsible for updating ghost values so that users do not
+ need to call update_ghost_values() and potentially zero_out_ghost_values().
+ <br>
+ (Peter Munch, Magdalena Schreter, 2021/05/27)
+ </li>
+
+ <li>
+ New: The new postprocessing class DataOutResample is similar to
+ DataOut but allows to interpolate the result onto a second
+ triangulation.
+ <br>
+ (Peter Munch, Martin Kronbichler, Magdalena Schreter, 2021/06/08)
+ </li>
+
+ <li>
+ Improved: The internal particle handler storage structure has been reworked to
+ allow for significantly faster particle sorting and iteration as well as for
+ future improvements and extensions.
+ <br>
+ (Rene Gassmoeller, Bruno Blais, Martin Kronbichler, Peter Munch, 2021/06/06)
+ </li>
+
+</ol>
+
+
+<!-- ----------- SPECIFIC IMPROVEMENTS ----------------- -->
+
+<a name="specific"></a>
+<h3>Specific improvements</h3>
+<ol>
+
+ <li>
+ Fixed: VectorTools::project can now be instantiated for complex numbers, bypassing undefined operations when compiling the parallel code path with MatrixFree evaluators.
+ <br>
+ (Pascal Kraft, Martin Kronbichler, 2022/05/30)
+ </li>
+
+ <li>
+ Fixed: Several I/O routines are now handling large files/requests
+ correctly. This includes Triangulation::save(), Triangulation::load(),
+ DataOutInterface::write_vtu_in_parallel().
+ <br>
+ +(Timo Heister, Sean Ingimarson, Penfei Jia, Jiaqi Zhang, 2022/05/29)
+ </li>
+
+ <li>
+ New: PreconditionChebyshev can now also estimate eigenvalues with the power
+ method, rather than the Lanczos algorithm underlying the SolverCG
+ estimation. This is useful for matrices that are slightly non-symmetric such
+ that the eigenvalue estimate of SolverCG breaks down, but not too much so that
+ the Chebyshev iteration is still a useful iteration.
+ <br>
+ (Martin Kronbichler, 2022/05/23)
+ </li>
+
+ <li>
+ New: The Utilities::pack() and Utilities::unpack() functions are now
+ optimized for the rather common case where the argument is of type
+ `std::vector<T>` where `T` is a type that can be copied bit by bit
+ (using `memcpy()`).
+ <br>
+ (Wolfgang Bangerth, 2022/05/05)
+ </li>
+
+ <li>
+ Improved: The thread-local storage in FunctionParser has been reworked to avoid
+ extra locking and unlocking calls. This makes evaluations of simple expressions
+ about three times faster.
+ <br>
+ (David Wells, 2022/05/16)
+ </li>
+
+ <li>
+ New: We added the possibility to average the contributions to a DoF from
+ different cells in parallel::distributed::SolutionTransfer. For this purpose,
+ set the corresponding flag in the constructor.
+ <br>
+ (Peter Munch, Magdalena Schreter, 2022/05/14)
+ </li>
+
+ <li>
+ New: The hdf5 DataOut now correctly supports very
+ large output files with more than 2 billion nodes/vertices.
+ <br>
+ (Sean Ingimarson, Timo Heister, Jiaqi Zhang, 2022/05/10)
+ </li>
+
+ <li>
+ New: The class SolverCG now supports the interleaving of vector operations
+ with the matrix-vector product. The prerequisite is an associated `MatrixType`
+ class to provide a `vmult` class with two `std::function` objects to specify
+ the operation before and after the matrix-vector product, and a
+ `PreconditionerType` class that provides either a function `apply` to apply
+ the preconditioner action on a single element or and `apply_to_subrange(const
+ unsigned int, const unsigned int) const` that can selectively apply the
+ precondition on a part of a vector. For optimal performance, the matrix and
+ preconditioner types need to agree on suitable sizes for the sub-ranges.
+ <br>
+ (Dmytro Sashko, Martin Kronbichler, Peter Munch, 2022/05/09)
+ </li>
+
+ <li>
+ New: The class SolverFlexibleCG implements a flexible variant of the conjugate
+ gradient method that runs the so-called Polak-Ribiere update formula instead
+ of the default Fletcher-Reeves formula of SolverCG.
+ <br>
+ (Martin Kronbichler, 2022/05/06)
+ </li>
+
+ <li>
+ New: There is now a function ReferenceCell::get_midpoint_quadrature()
+ that generalizes QMidpoint.
+ <br>
+ (Wolfgang Bangerth, 2022/05/05)
+ </li>
+
+ <li>
+ New: There are now functions ReferenceCell::volume() and
+ ReferenceCells::barycenter() that compute what their names suggest for
+ the various kinds of reference cells deal.II supports.
+ <br>
+ (Wolfgang Bangerth, 2022/05/04)
+ </li>
+
+ <li>
+ New: MGConstrainedDoFs now has a function add_boundary_indices()
+ to add boundary indices on levels.
+ <br>
+ (Jiaqi Zhang, 2021/05/02)
+ </li>
+
+ <li>
+ Changed: Improved: The internal indexing in FESystem::fill_fe_values() has been
+ improved and is now about twice as fast.
+ <br>
+ (David Wells, 2022/04/30)
+ </li>
+
+ <li>
+ New: The class DataPostprocessors::BoundaryIds can be used to
+ visualize the boundary indicators used in a mesh.
+ <br>
+ (Wolfgang Bangerth, 2022/04/27)
+ </li>
+
+ <li>
+ Improved: The step-44 tutorial now uses FE_DGP elements to discretize the
+ pressure and dilatation fields, rather than FE_DGPMonomial. This improves
+ the condition number of the linear system, necessitating fewer iterations
+ to compute its iterative inverse.
+ <br>
+ (Jean-Paul Pelteret, 2022/04/26)
+ </li>
+
+ <li>
+ Fixed: The build process now works well with MPI option on Windows systems.
+ If configured properly, this allows exploring the capability of distributed computing
+ on Windows system with deal.II.
+ <br>
+ (Daniel Sun, 2022/04/26)
+ </li>
+
+ <li>
+ New: There is a new function DoFRenumbering::matrix_free_data_locality() that
+ re-orders the indices of the unknowns in a DoFHandler to give optimal data
+ locality of pre- and post-operations in matrix-free loops.
+ <br>
+ (Martin Kronbichler, Peter Munch, Alexander Roschlaub, Dmytro Sashko, 2022/04/21)
+ </li>
+
+ <li>
+ Added: New function enable_abort_on_exception.
+ <br>
+ (Pasquale Claudio Africa, 2022/04/20)
+ </li>
+
+ <li>
+ New: FEInterfaceValues now has functions get_*_function_values() to evaluate solution
+ values across cell faces, such as the jump in (or average of) values,
+ gradients, and Hessians.
+ <br>
+ (Jiaqi Zhang, 2022/04/11)
+ </li>
+
+ <li>
+ Fixed: Renumbering of the support points of `FE_RaviartThomasNodal`, which previously had x and z coordinates switched for the second component with `dim=3`.
+ <br>
+ (Niklas Wik, 2022/04/04)
+ </li>
+
+ <li>
+ Changed: The bundled version of muParser has been updated to version 2.3.3.
+ <br>
+ (David Wells, 2022/03/28)
+ </li>
+
+ <li>
+ Fixed: deal.II, compiled with the bundled copy of muParser, can now be
+ safely linked alongside other projects which use a separate copy of muParser.
+ <br>
+ (David Wells, 2022/03/25)
+ </li>
+
+ <li>
+ Fixed: The functions in DoFRenumbering now work correctly (they do not deadlock)
+ when a processor has zero locally owned degrees of freedom.
+ <br>
+ (David Wells, 2022/03/23)
+ </li>
+
+ <li>
+ Improved: MeshWorker::CopyData gains a new template argument for the scalar
+ type, which allows the collected local matrix or vector contributions to be
+ stored as types other than `double`.
+ <br>
+ (Jean-Paul Pelteret, 2022/03/14)
+ </li>
+
+ <li>
+ New: Add new wrappers ArborXWrappers::SphereIntersectPredicate and
+ ArborXWrappers::SphereNearestPredicate to perform geometrical search on spheres
+ using ArborX.
+ <br>
+ (Bruno Turcksin, 2022/03/11)
+ </li>
+
+ <li>
+ New: There is now a function ReferenceCell::contains_point() that
+ provides the generalized equivalent of a function in the GeometryInfo
+ class that will eventually be deprecated.
+ type.
+ <br>
+ (Wolfgang Bangerth, 2022/03/05)
+ </li>
+
+ <li>
+ Improved: The Utilities::MPI::broadcast() has been optimized for
+ types that are natively supported by MPI.
+ <br>
+ (Francesco Andreuzzi, Wolfgang Bangerth, 2022/03/04)
+ </li>
+
+ <li>
+ New: There is now a template variable Utilities::MPI::is_mpi_type that
+ can be used to query whether a data type is a natively supported MPI
+ type.
+ <br>
+ (Wolfgang Bangerth, 2022/03/01)
+ </li>
+
+ <li>
+ Changed: We now require the MPI library to support at least the MPI 3.0 standard.
+ <br>
+ (Pengfei Jia, Matthias Maier, Timo Heister, 2022/02/28)
+ </li>
+
+ <li>
+ New: The template variable Utilities::MPI::mpi_type_id_for_type
+ provides information about the `MPI_Datatype` that corresponds to a
+ given type. This information is necessary in all MPI calls where one
+ needs to provide an `MPI_Datatype` to identify the kinds of objects
+ stored in a send or receive buffer.
+ <br>
+ (Wolfgang Bangerth, 2022/02/27)
+ </li>
+
+ <li>
+ Fixed: We can now load certain msh files generated by Gmsh that contain some cells with inverted volume.
+ <br>
+ (Sean Ingimarson, Timo Heister, 2022/02/26)
+ </li>
+
+ <li>
+ Improved: The asserts in parallel::distributed::SolutionTransfer have
+ been improved. Before this change, an assert has been only called
+ in the parallel case for distributed vectors for cells neighboring
+ interprocess boundaries. Now, we check for all DoFs that the
+ contributions from all cells have the same values. This condition
+ might be not given if the solution has high gradients at hanging
+ nodes.
+ <br>
+ (Peter Munch, Magdalena Schreter, 2022/02/25)
+ </li>
+
+ <li>
+ Fixed: ParsedConvergenceTable::difference() was not working. This is now fixed.
+ <br>
+ (Luca Heltai, 2022/02/22)
+ </li>
+
+ <li>
+ Fixed: The function parallel::distributed::copy_triangulation() used to
+ copy the reference to the attached SolutionTransfer instance, which resulted
+ in calling the same SolutionTransfer instance multiple times if the
+ triangulation and the new triangulation are refined/coarsened independently.
+ This has been fixed.
+ <br>
+ (Ivo Dravins, Peter Munch, 2022/02/22)
+ </li>
+
+ <li>
+ Fixed: GridOut::write_msh() with gmsh api now works also with non standard combinations of boundary and manifold ids.
+ <br>
+ (Luca Heltai, 2022/02/20)
+ </li>
+
+ <li>
+ Fixed: NonMatching::create_coupling_sparsity_pattern() and
+ NonMatching::create_coupling_mass_matrix() were not working properly with
+ hanging node constraints.
+ <br>
+ (Luca Heltai, 2022/02/18)
+ </li>
+
+ <li>
+ New: AffineConstraints::add_entries_local_to_global() now supports also the case
+ where columns don't use the same constraints as rows.
+ <br>
+ (Luca Heltai, 2022/02/18)
+ </li>
+
+ <li>
+ Added: The DEAL_II_QUERY_GIT_INFORMATION() CMake macro now also records the
+ date and time of the commit in the CMake variable GIT_TIMESTAMP.
+ <br>
+ (Matthias Maier, 2022/02/06)
+ </li>
+
+ <li>
+ New: GridGenerator::generate_from_name_and_argument() now supports also GridGenerator::hyper_ball_balanced()
+ <br>
+ (Luca Heltai, 2022/02/17)
+ </li>
+
+ <li>
+ Fixed: Patterns::Tools::Convert now supports also std::array types.
+ <br>
+ (Luca Heltai, 2022/02/16)
+ </li>
+
+ <li>
+ New: Add new DistributedTree class based on ArborX. This class performs multiple
+ kinds of geometric search on distributed objects: intersection of bounding boxes
+ and intersection of bounding boxes with points. This class is the distributed
+ equivalent of ArborXWrappers::BVH.
+ <br>
+ (Bruno Turcksin, 2022/02/15)
+ </li>
+
+ <li>
+ Fixed: BlockDynamicSparsityPattern in step-55 will be initialized with
+ the correct IndexSet for locally relevant dofs.
+ <br>
+ (Marc Fehling, 2022/02/10)
+ </li>
+
+ <li>
+ Fixed: GridGenerator::hyper_ball_balanced() now works correctly with nonzero
+ centers.
+ <br>
+ (David Wells, 2022/02/09)
+ </li>
+
+ <li>
+ New: The FE_Nothing class can now return its (empty) constant modes.
+ DoFTools::extract_constant_modes can now work with DoFHandlers that
+ contain FE_Nothing.
+ <br>
+ (Sebastian Proell, 2022/02/07)
+ </li>
+
+ <li>
+ Improved: To be consistent with the FEValues classes, one can now
+ loop over all DoF and quadrature-point indices in a
+ range-based loop with the help of the new functions dof_indices() and
+ quadrature_point_indices().
+ <br>
+ (Peter Munch, 2022/02/06)
+ </li>
+
+ <li>
+ Changed: The minimum CMake version required to configure and build deal.II
+ has been raised to 3.3.0.
+ <br>
+ (Matthias Maier, 2022/02/06)
+ </li>
+
+ <li>
+ Improved: In MatrixFreeTools::compute_diagonal a template argument VectorType
+ has been introduced to be applicable for arbitrary vector types.
+ <br>
+ (Magdalena Schreter, Peter Munch, 2022/02/02)
+ </li>
+
+ <li>
+ New: Added support for hessians to FE_NedelecSZ
+ <br>
+ (Sebastian Kinnewig, 2022/01/28)
+ </li>
+
+ <li>
+ New: FE_Nedelec<2> now includes the function get_embedding_dofs(),
+ which permits direct identification of DoF indices between two
+ realizations of the FE_Nedelec cell.
+ <br>
+ (Jake Harmon, 2022/01/25)
+ </li>
+
+ <li>
+ Fixed: MappingQ::transform_points_real_to_unit_cell has been made more robust,
+ correcting an unsuitable initial guess for the Newton iteration to compute the
+ inverse transformation in the case of bilinear/trilinear cells.
+ <br>
+ (Bruno Blais, Martin Kronbichler, 2022/01/22)
+ </li>
+
+ <li>
+ New: MeshWorker::ScratchData and MeshWorker::CopyData now have hp-capabilities.
+ Creation of a ScratchData object with an hp::FECollection and hp::QCollection
+ enables those capabilities. A few specialized MeshWorker::ScratchData::reinit()
+ were added to support face integration where the integration rule and mapping
+ differs on either side of an interface. Additionally, some
+ MeshWorker::CopyData::reinit() methods have been implemented to cater for the
+ change in number of degrees-of-freedom between cells iterated over during
+ assembly.
+ <br>
+ (Jean-Paul Pelteret, 2022/01/09)
+ </li>
+
+ <li>
+ Fixed: GridGenerator::convert_hypercube_to_simplex_mesh() now correctly copies
+ line manifold ids in 3D.
+ <br>
+ (David Wells, 2022/01/07)
+ </li>
+
+ <li>
+ Changed: The step-43 tutorial program used `Amg_preconditioner` and
+ `Mp_preconditioner` to denote the preconditioners for the top left and
+ bottom right block of a mixed-Laplace matrix. These variable names
+ were taken from step-31/step-32 where they made sense, but in the
+ current context, the names do not reflect what is in the corresponding
+ matrix blocks. They have been renamed to `top_left_preconditioner` and
+ `bottom_right_preconditioner`, respectively.
+ <br>
+ (Wolfgang Bangerth, 2022/01/07)
+ </li>
+
+ <li>
+ Fixed: Serializing empty sparsity patterns ran into a segmentation
+ fault. This is now fixed.
+ <br>
+ (Lucas Myers, Wolfgang Bangerth, 2022/01/05)
+ </li>
+
+ <li>
+ Fixed: deal.II has been updated to support the new OneAPI api interface
+ introduced by the Intel Threading Building Blocks Library. Note that the
+ threading support of the matrix-free backend will be disabled in this case:
+ For now, the MatrixFree::AdditionalData::tasks_parallel_scheme control has
+ no effect and simply defaults to the serial loop.
+ <br>
+ (Wolfgang Bangerth, Matthias Maier, 2022/01/06)
+ </li>
+
+ <li>
+ Fixed: The FEInterfaceValues class is now made compatible with filtered
+ iterators. Specifically, it is now possible to call FEInterfaceValues::reinit()
+ with the active `cell` being a filtered iterator and the type returned by
+ `cell->neighbor()` being some other non-filtered iterator type.
+ <br>
+ (Simon Sticko, Jean-Paul Pelteret, 2022/01/05)
+ </li>
+
+ <li>
+ Improved: The class PreconditionRelaxation has been refactored.
+ Similarly to PreconditionChebyshev, it can be now used
+ stand-alone and users can attach their own preconditioners.
+ Furthermore, users can specify multiple iteration steps,
+ which is particularly useful if PreconditionRelaxation is
+ used as smoother in a multigrid algorithm.
+ <br>
+ (Peter Munch, 2022/01/01)
+ </li>
+
+ <li>
+ New: More "getter" functions have been added to MeshWorker::ScratchData,
+ facilitating the construction of other FEValues-type objects with some of
+ the same objects as those used in a ScratchData instance.
+ <br>
+ (Jean-Paul Pelteret, 2021/12/31)
+ </li>
+
+ <li>
+ Fixed: The SparseDirectUMFPACK class had a bug where it did not
+ correctly set up the data passed to the UMFPACK package if (i) the
+ matrix is a block matrix, and (ii) the elements are
+ complex-valued. This is now fixed.
+ <br>
+ (Kuljit S. Virk, 2021/12/30)
+ </li>
+
+ <li>
+ New: The IteratorFilters::BoundaryIdEqualTo and IteratorFilters::ManifoldIdEqualTo
+ filtered iterator predicates have been added to help select cell faces that
+ have, respectively, one or more specified boundary ID(s) and manifold ID(s).
+ <br>
+ (Jean-Paul Pelteret, 2021/12/30)
+ </li>
+
+ <li>
+ Fixed: GridGenerator::flatten_triangulation() did not copy information
+ on the manifold ids of interior faces and edges. This is now fixed.
+ <br>
+ (Wolfgang Bangerth, 2021/12/27)
+ </li>
+
+ <li>
+ Fixed: GridGenerator::flatten_triangulation() did not copy information
+ of edges of three-dimensional triangulations, even though it copied
+ information from faces. This is now fixed.
+ <br>
+ (Wolfgang Bangerth, 2021/12/26)
+ </li>
+
+ <li>
+ Changed: The step-60 tutorial now works also with non-zero Dirichlet BCs and non-zero right-hand side
+ <br>
+ (Marco Feder, 2021/12/24)
+ </li>
+
+ <li>
+ New: Build also a docker image with root user, to be used in github actions directly.
+ <br>
+ (Luca Heltai, 2021/12/24)
+ </li>
+
+ <li>
+ Deprecated: The Threads::new_thread() functions have been
+ deprecated. These functions return a Threads::Thread object, which is
+ a class that had previously been deprecated, and should no longer be
+ used: use the `std::thread` or `std::jthread` classes and related
+ functionality instead.
+ <br>
+ (Wolfgang Bangerth, 2021/12/23)
+ </li>
+
+ <li>
+ Fixed: The matrix-free FEFaceEvaluation would produce wrong results in case
+ hanging nodes were present on faces with non-standard orientation. This is now
+ fixed.
+ <br>
+ (Martin Kronbichler, 2021/12/20)
+ </li>
+
+ <li>
+ Fixed: IndexSet::subtract_set would previously run in quadratic complexity in
+ the number of ranges. This is now fixed.
+ <br>
+ (Martin Kronbichler, 2021/12/13)
+ </li>
+
+ <li>
+ New: GridOut::write_msh() now also works for triangular and tetrahedral meshes.
+ <br>
+ (Wolfgang Bangerth, 2021/12/06)
+ </li>
+
+ <li>
+ New: The DataPostprocessorInputs::CommonInputs class now also
+ stores the face number that is currently being worked on when
+ using a DataOutFaces object. This allows accessing face-related
+ data like the boundary id from a DataPostprocessor.
+ <br>
+ (Wolfgang Bangerth, 2021/12/03)
+ </li>
+
+ <li>
+ Changed: The function TrilinosWrappers::Vector::is_non_negative() now also works in parallel.
+ <br>
+ (Justin O'Connor, 2021/12/02)
+ </li>
+
+ <li>
+ Fixed: MatrixFreeOperators::CellwiseInverseMassMatrix with template argument
+ `-1` for the polynomial degree now chooses the pre-compiled code with fast
+ tensor-product algorithms if available, rather than a slower general-purpose
+ code.
+ <br>
+ (Martin Kronbichler, 2021/11/29)
+ </li>
+
+ <li>
+ New: Namespace Physics::VectorRelations features functions to compute
+ angles between (spatial) vectors.
+ <br>
+ (Marc Fehling, 2021/11/29)
+ </li>
+
+ <li>
+ New: The SD::BatchOptimizer::copy_from() function can be used to duplicate the
+ data from one batch optimizer instance to another.
+ <br>
+ (Jean-Paul Pelteret, 2021/11/27)
+ </li>
+
+ <li>
+ Fixed: The step-22 tutorial now uses FEValuesExtractors also for the right-hand side
+ <br>
+ (Marco Feder, 2021/11/23)
+ </li>
+
+ <li>
+ New: Utilities::MPI::create_mpi_data_type_n_bytes() helps with large MPI communication and IO.
+ <br>
+ (Timo Heister, 2021/11/17)
+ </li>
+
+ <li>
+ New: In the same spirit as provided by the C++20
+ [range adaptors](https://en.cppreference.com/w/cpp/ranges) feature, it is now
+ possible to "filter" ranges over the active cells of Triangulation
+ and DoFHandler objects.
+ <br>
+ This allows to replace:
+ @code
+ DoFHandler<dim> dof_handler;
+ ...
+ for (const auto &cell : dof_handler.active_cell_iterators())
+ {
+ if (cell->is_locally_owned())
+ {
+ fe_values.reinit (cell);
+ ...do the local integration on 'cell'...;
+ }
+ }
+ @endcode
+ by:
+ @code
+ DoFHandler<dim> dof_handler;
+ ...
+ for (const auto &cell :
+ dof_handler.active_cell_iterators() | IteratorFilters::LocallyOwnedCell())
+ {
+ fe_values.reinit (cell);
+ ...do the local integration on 'cell'...;
+ }
+ @endcode
+ Here, the `operator|` is to be interpreted in the same way as is done in
+ the [range adaptors](https://en.cppreference.com/w/cpp/ranges) feature
+ that is part of [C++20](https://en.wikipedia.org/wiki/C%2B%2B20). It has
+ the same meaning as the `|` symbol on the command line: It takes what is
+ on its left as its inputs, and filters and transforms to produce some
+ output. In the example above, it "filters" all of the active cell iterators
+ and removes those that do not satisfy the predicate -- that is, it produces
+ a range of iterators that only contains those cells that are both active
+ and locally owned.
+ <br>
+ (Wolfgang Bangerth, 2021/11/03)
+ </li>
+
+ <li>
+ New: The GridOut::write_gnuplot() function can now deal with
+ tetrahedral meshes, as well as with wedges and pyramids.
+ <br>
+ (Wolfgang Bangerth, 2021/11/15)
+ </li>
+
+ <li>
+ New: The GridIn::read_comsol_mphtxt() function adds the ability to
+ read `.mphtxt` files generated by COMSOL.
+ <br>
+ (Wolfgang Bangerth, 2021/11/15)
+ </li>
+
+ <li>
+ New: The new class Functions::SignedDistance::Ellipsoid computes
+ a signed distance function for ellipsoids. It is implemented for 1D and
+ 2D ellipsoids (ellipses).
+ <br>
+ (Nils Much, 2021/11/05)
+ </li>
+
+ <li>
+ New: One can now output simplex, pyramid, and wedge cells in GNUPLOT
+ format via DataOut and other classes that are based on DataOutBase and
+ call DataOutBase::write_gnuplot().
+ <br>
+ (Wolfgang Bangerth, 2021/11/03)
+ </li>
+
+ <li>
+ Changed: The DataOutBase::write_deal_II_intermediate() function had a
+ bug when outputting data that corresponds to cells other than
+ hypercubes. This is now fixed. In the process, the format version for
+ this function's output has been incremented from 3 to 4, which also
+ includes changing the order in which vertices are outputted.
+ <br>
+ The DataOutReader class was also updated to match the new output
+ format.
+ <br>
+ (Wolfgang Bangerth, 2021/10/25)
+ </li>
+
+ <li>
+ New: The ReferenceCell class now has input and output operators (`>>`
+ and `<<`).
+ <br>
+ (Wolfgang Bangerth, 2021/10/25)
+ </li>
+
+ <li>
+ Fixed: GridIn::read_unv() can now ignore any sections before 2411. In other
+ words, the unv file can start with any number sections (before 2411) as long as
+ they have a proper format (must begin and end with a "-1").
+ <br>
+ (Vachan Potluri, 2021/10/22)
+ </li>
+
+ <li>
+ New: There is now a function ReferenceCell::vertex() that returns the
+ coordinates of a vertex of a reference cell.
+ <br>
+ (Wolfgang Bangerth, 2021/10/13)
+ </li>
+
+ <li>
+ Fixed: The DataOutFaces class can now also be used with simplex
+ meshes. It previously aborted with exceptions.
+ <br>
+ (Wolfgang Bangerth, 2021/10/13)
+ </li>
+
+ <li>
+ Improved: PreconditionChebyshev can now run the vector updates on a part of
+ the vector for better data locality. The prerequisite is an associated
+ `MatrixType` class to provide a `vmult` class with two `std::function` objects
+ to specify the operation before and after the matrix-vector product.
+ <br>
+ (Martin Kronbichler, 2021/10/12)
+ </li>
+
+ <li>
+ Fixed: The KellyErrorEstimator for 1D can now handle the hp case.
+ <br>
+ (Fabian Castelli, 2021/10/12)
+ </li>
+
+ <li>
+ Fixed: Deleted duplicate occurrence of VectorTools::interpolate_boundary_values()
+ in setup_dofs() of step-45.
+ <br>
+ (Raghunandan Pratoori, 2021/10/11)
+ </li>
+
+ <li>
+ Changed: The 3D implementation of GridTools::rotate() now accepts unit
+ vectors as rotation axes.
+ <br>
+ (Marc Fehling, 2021/10/11)
+ </li>
+
+ <li>
+ New: VectorizedArray can now be constructed from an initializer list.
+ <br>
+ (Peter Munch, 2021/10/08)
+ </li>
+
+ <li>
+ Fixed: The FEPointEvaluation class always evaluated a solution starting at the component 0 of the selected vector-valued base element, even if a different component was selected by the caller. This has been fixed to correctly start evaluating at the selected component.
+ <br>
+ (Rene Gassmoeller, 2021/10/01)
+ </li>
+
+ <li>
+ Fixed: The payload for Trilinos-based linear operators is now able to use its
+ own type as an examplar operator. This means that one can now use linear
+ operators based on Trilinos matrices as exampler operators when initializing
+ a LinearOperator for a Trilinos preconditioner.
+ <br>
+ (Wenyu Lei, Jean-Paul Pelteret, 2021/09/12)
+ </li>
+
+ <li>
+ Fixed: ParticleHandler::insert_particles() runs into a deadlock in parallel
+ when a processor is not inserting any particles. This is now fixed.
+ <br>
+ (Sebastian Fuchs, 2021/08/31)
+ </li>
+
+ <li>
+ Fixed: There was a bug in the default constructor of
+ TimeStepping::EmbeddedExplicitRungeKutta(). Some parameters were left
+ uninitialized which triggered a segmentation fault when calling
+ `evolve_one_time_step()`.
+ <br>
+ (Praveen Chandrashekar, Bruno Turcksin, 2021/08/30)
+ </li>
+
+ <li>
+ Changed: For 1d cells, the following code did not compile:
+ @code
+ for (const auto &face : cell->face_iterators())
+ if (face->at_boundary())
+ {
+ face->set_boundary_id(1);
+ }
+ @endcode
+ That was because, unlike in the 2d and 3d case, the class that
+ describes the faces of 1d cells had a `set_boundary_id()` function
+ that was not marked as `const`. This has now been fixed by adding the
+ `const` specification for this function, along with the one on the
+ `set_all_boundary_ids()` function.
+ <br>
+ (Wolfgang Bangerth, Tyler Anderson, 2021/08/21)
+ </li>
+
+ <li>
+ New: The hp::FECollection::hp_vertex_dof_identities() function (and
+ related functions for lines and quads) allows for the computation of
+ multiway computations of DoF indentities in the hp-context.
+ <br>
+ (Wolfgang Bangerth, 2021/08/20)
+ </li>
+
+ <li>
+ New: There is now an overload for
+ Particles::ParticleAccessor::set_properties() that takes a Tensor
+ as argument. It is used in step-19.
+ <br>
+ (Wolfgang Bangerth, 2021/08/19)
+ </li>
+
+ <li>
+ Fixed: Exceptions thrown via `AssertThrow` did not have a stacktrace
+ attached to them, unlike exceptions thrown with `Assert`. This is now
+ fixed.
+ <br>
+ (Wolfgang Bangerth, Paras Kumar, 2021/08/20)
+ </li>
+
+ <li>
+ Fixed: It was not possible to default-construct objects of type
+ `DoFHandler::face_iterator` for `dim==1`. As a consequence, one
+ could also not call `cell->face_iterators()` for the cells of 1d
+ DoFHandler objects. This is now fixed.
+ <br>
+ (Wolfgang Bangerth, Tyler Anderson, 2021/08/19)
+ </li>
+
+ <li>
+ New: MeshWorker::ScratchData is now able to evaluate the jumps in, and averages
+ of, finite element functions and their derivatives across an interface.
+ <br>
+ (Jean-Paul Pelteret, 2021/08/14)
+ </li>
+
+ <li>
+ New: FEInterfaceViews now has functions get_*_function_values() and
+ get_*_function_values_from_local_dof_values() to evaluate solution
+ values across cell faces, such as the jump in (or average of) values,
+ gradients, and Hessians. With these functions, FEInterfaceValues
+ can now be used with automatic differentiation.
+ <br>
+ (Jiaqi Zhang, 2021/08/11)
+ </li>
+
+ <li>
+ New: The functions FEFaceValuesBase::face_number(), FEInterfaceValues::get_cell()
+ and FEInterfaceValues::face_number() have been implemented to provide
+ introspection as to which entities these objects have been initialized for.
+ <br>
+ (Jean-Paul Pelteret, 2021/08/06)
+ </li>
+
+ <li>
+ New: The function FEInterfaceValues::dof_indices() has been added to make
+ writing range-based for loops over all local interface degrees of freedom much
+ simpler.
+ <br>
+ (Jean-Paul Pelteret, 2021/08/05)
+ </li>
+
+ <li>
+ New: Diagnostic functions AffineConstraints::n_identities() and
+ AffineConstraints::n_inhomogeneities() to analyse your constraints.
+ <br>
+ (Marc Fehling, 2021/08/04)
+ </li>
+
+ <li>
+ Fixed: Use tolerances consistently in RemotePointEvaluation,
+ VectorTools::point_values(), and GridTools::distributed_compute_point_locations().
+ <br>
+ (Peter Munch, Magdalena Schreter, 2021/07/31)
+ </li>
+
+ <li>
+ New: QWitherdenVincentSimplex now implements even-order rules
+ in addition to the standard Gauss-like odd-order rules.
+ <br>
+ (David Wells, 2021/07/29)
+ </li>
+
+ <li>
+ Fixed: AlignedVector objects for which
+ AlignedVector::replicate_across_communicator() had previously been
+ called, could not be move-constructed or move-assigned: The resulting
+ object was usable, but destruction of the target object led to memory
+ errors that aborted the program. This is now fixed. As a side effect
+ of the patch, memory consumption of AlignedVector objects has also
+ been shrunk for the most common case where
+ AlignedVector::replicate_across_communicator() has not actually been called.
+ <br>
+ (Wolfgang Bangerth, 2021/07/28)
+ </li>
+
+ <li>
+ New: The new function TableBase::clear() allows to
+ empty a Table object.
+ <br>
+ (Jiaqi Zhang, 2021/07/21)
+ </li>
+
+ <li>
+ Fixed: MappingFEField now works with simplex faces correctly.
+ <br>
+ (David Wells, 2021/07/19)
+ </li>
+
+ <li>
+ New: Added a class QIteratedSimplex for building composite simplex quadrature rules.
+ <br>
+ (David Wells, 2021/07/15)
+ </li>
+
+ <li>
+ New: ParticleAccessor::get_local_index() is a new function returning particle
+ indices local to each MPI process, which is useful for direct access into
+ arrays with temporary results associated to particles.
+ <br>
+ (Martin Kronbichler, 2021/07/06)
+ </li>
+
+ <li>
+ Fixed: step-34 had a minor memory leak whereby the function
+ `get_singular_quadrature()` allocated some memory the
+ first time it was called, and then never released it. This is now
+ fixed. Separately, this function was not thread-safe, and now it is.
+ <br>
+ (Wolfgang Bangerth, 2021/07/03)
+ </li>
+
+ <li>
+ New: When calling `cell->vertex_dof_index(...)` on a DoFHandler that
+ uses the hp capability, then one needed to provide the last argument
+ indicating what the active fe index is. But for cells, there can only
+ be one active fe index, so leaving the last argument at its default
+ value is now interpreted as using the active fe index of the cell. The
+ argument still needs to be provided if the `vertex_dof_index()`
+ function is called on faces, edges, or vertices.
+ <br>
+ (Wolfgang Bangerth, 2021/07/02)
+ </li>
+
+ <li>
+ New: The new function Triangulation::n_global_coarse_cells() allows to
+ query the global number of coarse cells. This function is particularly useful
+ for parallel::fullydistributed::Triangulation, since in this case the coarse
+ cells might differ on each process.
+ <br>
+ (Peter Munch, 2021/06/26)
+ </li>
+
+ <li>
+ New: The new unified function MGTwoLevelTransfer::reinit() selects automatically
+ if MGTwoLevelTransfer::reinit_geometric_transfer() or
+ MGTwoLevelTransfer::reinit_polynomial_transfer() is needed.
+ <br>
+ (Peter Munch, 2021/06/23)
+ </li>
+
+ <li>
+ New: The new function CellAccessor::is_ghost_on_level() allows to
+ check if a cell is a ghost cell on a multigrid level.
+ <br>
+ (Peter Munch, 2021/06/23)
+ </li>
+
+ <li>
+ Improved: i) Standardized the format of the references in the file
+ doc/doxygen/references.bib using in particular the convention
+ "M. Mo" or "R.B. Kellogg" for names and the full name for journals.
+ ii) Fixed the display of some titles (e.g., upper case for proper noun).
+ iii) Added an URL entry for the references with a DOI.
+ <br>
+ (Diane Guignard, 2021/06/22)
+ </li>
+
+ <li>
+ Fixed: The Gauss-like rules implemented by QGaussSimplex now integrate
+ 2 * n_points_1D - 1 degree polynomials exactly.
+ <br>
+ (David Wells, 2021/06/22)
+ </li>
+
+ <li>
+ Fixed: The step-21 program called a function that was disabled on
+ Microsoft Windows to work around a bug in the Microsoft Visual Studio
+ compiler. This is now fixed and the program should run successfully
+ again on Windows.
+ <br>
+ (Wolfgang Bangerth, 2021/06/08)
+ </li>
+
+ <li>
+ Fixed: MappingQCache::get_vertices() would previously always return the actual
+ vertices, ignoring a possible displacement that is possible with this
+ class. This is now fixed.
+ <br>
+ (Martin Kronbichler, 2021/06/07)
+ </li>
+
+ <li>
+ Improved: An assert has been added in the constructor of
+ FEPointEvaluation to prevent accessing non-existing components.
+ <br>
+ (Judith Pauen, 2021/06/05)
+ </li>
+
+ <li>
+ New: The new function Utilities::MPI::reduce() allows to reduce
+ arbitrary types with a user-specified binary operation.
+ <br>
+ (Peter Munch, 2021/05/27)
+ </li>
+
+ <li>
+ New: Fixed a bug in clear user data for standard Triangulation.
+ <br>
+ (Nicola Giuliani, 2021/05/25)
+ </li>
+
+ <li>
+ Addes conformity tests for several vector elements
+ in 2D/3D as well as minor fixes for 2d Nedelec and
+ Raviart-Thomas to make them work on non-standard meshes.
+ <br>
+ (Konrad Simon, 2021/05/08)
+ </li>
+
+ <li>
+ New: The class MGTransferMatrixFree::build() now also
+ accepts an optional function for initializing the internal level vectors.
+ This is useful if one uses the transfer operators in the context of
+ smoothers that are built around MatrixFree objects.
+ <br>
+ (Peter Munch, 2021/03/09)
+ </li>
+
+ <li>
+ New: You can now perform range-based iterations on hp::FECollecion, hp::QCollection,
+ and hp::MappingCollection objects.
+ <br>
+ (Peter Munch, 2021/10/27)
+ </li>
+
+</ol>
+
+*/