--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2017 - 2023 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_4_0_and_9_5_0 Changes between Version 9.4.0 and 9.5.0
+
+<p>
+This is the list of changes made between the release of deal.II version
+9.4.0 and that of 9.5.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: The SUNDIALS::KINSOL, SUNDIALS::ARKode, and SUNDIALS::IDA
+ interfaces used to use callbacks through which users provide
+ information to these solvers. If user code encountered errors, this
+ was indicated via integer return codes -- a zero return value
+ indicating success.
+ This is not in line with how C++ typically operates; in C++ errors are
+ typically indicated via exceptions. The interfaces to the libraries
+ above have been changed to now use exceptions instead, and this
+ convention has been documented in a glossary entry on
+ @ref GlossUserProvidedCallBack "user provided callback".
+ <br>
+ (Wolfgang Bangerth, 2023/05/31)
+ </li>
+
+ <li>
+ Changed: The integrate() function of FEPointEvaluation now multiplies the submitted
+ entities internally with a JxW value to represent a proper integration like in FEEvaluation.
+ The old behavior (where the entities are only multiplied with the test functions and summed up)
+ is available through the new function test_and_sum().
+ <br>
+ (Maximilian Bergbauer, 2023/05/29)
+ </li>
+
+ <li>
+ Deprecated: All vector classes had member functions called `import()`
+ to copy elements from a source into the current vector. Unfortunately,
+ `import` is a
+ [keyword (of sorts) in C++20](https://en.cppreference.com/w/cpp/keyword/import).
+ While not strictly necessary because we do not use the name in a
+ context where it would be recognized as a keyword, it is useful to
+ avoid the name nonetheless, if only to avoid confusing readers and
+ IDEs. As a consequence, these functions have been renamed to
+ `import_elements()`. The old name remains for now, but is deprecated.
+ <br>
+ (Wolfgang Bangerth, 2023/05/23)
+ </li>
+
+ <li>
+ Extensive rework of CUDAWrappers::MatrixFree and CUDAWrappers::FEEvaluation.
+ <br>
+ (Bruno Turcksin, 2023/05/11)
+ </li>
+
+ <li>
+ Changed: The get_mpi_communicator() methods no longer return references to MPI_Comm.
+ They all now return the MPI_Comm by value.
+ <br>
+ (Stefano Zampini, 2023/04/12)
+ </li>
+
+ <li>
+ Removed: The docker image with root user has been removed.
+ <br>
+ If you would like to use the docker image in the context of github actions,
+ you can use the regular image and override the default user like this:
+ ```
+ container:
+ image: dealii/dealii:master-focal
+ options: --user root
+ ```
+ (Marc Fehling, 2023/04/09)
+ </li>
+
+ <li>
+ Removed: The CUDAWrappers::MatrixFee::AdditionalData::ParallelizationScheme
+ parameter has been removed.
+ <br>
+ (Bruno Turcksin, 2023/03/30)
+ </li>
+
+ <li>
+ Updated: deal.II no longer exports the -fPIC/-fpic compiler flags for
+ compiling relocatable, position independent code. This should have minimal
+ impact on user projects because CMake is handling the -fPIC/-fpic
+ automatically. But for some less common scenarios in user projects (e.g.,
+ object targets) it might be necessary to set the POSITION_INDEPENDENT_CODE
+ target property in CMake.
+ <br>
+ (Matthias Maier, 2023/03/29)
+ </li>
+
+ <li>
+ Changed: The default behavior of the hdf5 output is changed from "not compressed" to "compressed" (default compression_level: best_speed).
+ <br>
+ (Christoph Schmidt, 2023/03/24)
+ </li>
+
+ <li>
+ Updated: deal.II now requires CMake version 3.13.4 or later.
+ <br>
+ (Matthias Maier, 2023/01/26)
+ </li>
+
+ <li>
+ Fixed: The function ParameterHandler::add_parameter() used to
+ call the internal action. Within that step, the action
+ converts the default value to a string and back afterwards.
+ This can lead to round-off errors so that the default
+ values might change in the case of floating-point numbers.
+ The action is not called any more during ParameterHandler::add_parameter(),
+ fixing the problem.
+ <br>
+ (Peter Munch, Magdalena Schreter, 2022/12/11)
+ </li>
+
+ <li>
+ Removed: A number of obscure CMake configuration options have been removed:
+ <code>DEAL_II_PREFER_STATIC_LINKAGE</code>,
+ <code>DEAL_II_STATIC_EXECUTABLE</code>,
+ <code>DEAL_II_SETUP_DEFAULT_COMPILER_FLAGS</code>.
+ <br>
+ (Matthias Maier, 2022/12/02)
+ </li>
+
+ <li>
+ Removed: The build system no longer generates pkg-config files.
+ <br>
+ (Matthias Maier, 2022/11/30)
+ </li>
+
+ <li>
+ Removed: The <code>deal.IIFeatureConfig.cmake</code> configuration file
+ has been removed. This file used to contain a record of all
+ <code>FEATURE_[suffix]</code> variables for a given external library.
+ Said information is now exported via interface targets in CMake.
+ <br>
+ (Matthias Maier, 2022/11/30)
+ </li>
+
+ <li>
+ Changed: We introduced a stronger datatype for FE indices:
+ <ul>
+ <li> Instead of unsigned int, we now use types::fe_index for FE indices throughout the library.
+ <li> For invalid FE indices, we no longer use numbers::invalid_unsigned_int, but numbers::invalid_fe_index.
+ </ul>
+ This affects interfaces to a lot of functions. Most of them are backwards compatible via implicit conversion.
+ Functions that do not fall in that category are listed below and might need your attention.
+ Some of them have been deprecated, some are replaced because we imagine them only being used internally.
+ <ul>
+ <li> DoFHandler::set_active_fe_indices() (deprecated)
+ <li> DoFHandler::get_active_fe_indices() (deprecated)
+ </ul>
+ Further, the serialization of parallel::distributed::Triangulation objects is also affected by this change
+ as we write FE indices to disk. Thus, the version in the serialization metafile has been bumped to `5`.
+ <br>
+ (Marc Fehling, 2022/10/27)
+ </li>
+
+ <li>
+ Removed: The base class of SparsityPattern, SparsityPatternBase, has been removed.
+ <br>
+ (David Wells, 2022/09/22)
+ </li>
+
+ <li>
+ Updated: The version of the vtu output has been increased to 2.2
+ if high-order output is requested.
+ This is necessary to fix visualization issues in Paraview.
+ <br>
+ (Peter Munch, Magdalena Schreter, 2022/09/18)
+ </li>
+
+ <li>
+ Changed: The function DoFHandler::get_active_fe_indices() now returns
+ the result vector. The previous version that writes into the argument
+ as well as DoFTools::get_active_fe_indices() have been deprecated.
+ <br>
+ (Marc Fehling, 2022/08/20)
+ </li>
+
+ <li>
+ Moved: The functions in Utilities::Trilinos have been moved to a separate header,
+ base/trilinos_utilities.h.
+ <br>
+ (David Wells, 2022/08/16)
+ </li>
+
+ <li>
+ Changed: The oldest supported version of PETSc has been increased from 3.3.0
+ to 3.7.0.
+ <br>
+ (David Wells, 2022/07/27)
+ </li>
+
+ <li>
+ Removed: The deprecated QTrapez, ParticleHandler::locally_relevant_ids(),
+ and Arkode::reinit_vector have been removed.
+ <br>
+ (Daniel Arndt, 2022/06/29)
+ </li>
+
+ <li>
+ Removed: The deprecated member function CellId::to_cell() has been removed.
+ <br>
+ (Daniel Arndt, 2022/06/28)
+ </li>
+
+ <li>
+ Removed: The deprecated header file lac/parallel_block_vector.h
+ has been removed.
+ <br>
+ (Daniel Arndt, 2022/06/27)
+ </li>
+
+ <li>
+ Removed: The deprecated classes ConstantFunction and ZeroFunction
+ have been removed.
+ <br>
+ (Daniel Arndt, 2022/06/24)
+ </li>
+
+ <li>
+ Removed: The deprecated member functions DoFHandler::initialize() and
+ DoFHandler::set_fe() have been removed.
+ <br>
+ (Daniel Arndt, 2022/06/24)
+ </li>
+
+ <li>
+ Removed: The deprecated member functions of QProjector not using a ReferenceCell
+ object have been removed.
+ <br>
+ (Daniel Arndt, 2022/06/24)
+ </li>
+
+ <li>
+ Removed: The deprecated functions MatrixFree::n_macro_cells(),
+ MatrixFree::get_hp_cell_iterator(), MatrixFree::n_components_filled(),
+ MatrixFree::get_dof_handler(), and
+ MatrixFree::reinit() with default Mapping argument have been removed.
+ <br>
+ (Daniel Arndt, 2022/06/22)
+ </li>
+
+ <li>
+ Removed: The deprecated constructors for SparseVanka and SparseBlockVanka
+ have been removed.
+ <br>
+ (Daniel Arndt, 2022/06/22)
+ </li>
+
+ <li>
+ Removed: The deprecated LinearAlgebra::CUDAWrappers::atomicAdd_wrapper
+ has been removed.
+ <br>
+ (Daniel Arndt, 2022/06/22)
+ </li>
+
+ <li>
+ Rotated: The list of incompatible changes has been rotated.
+ <br>
+ (Matthias Maier, 2022/06/16)
+ </li>
+
+ <li>
+ Removed: The previously deprecated class hp::DoFHandler has been
+ removed, and with it all functions and classes that required the
+ template parameter DoFHandlerType.
+ <br>
+ From now on, use the standard DoFHandler. All hp-functionality has been
+ integrated to this one.
+ <br>
+ (Marc Fehling, Peter Munch, 2022/05/24)
+ </li>
+
+ <li>
+ Changed: All GridIn functions now remove unused vertices and will attempt to fix
+ pyramids and wedges with negative volumes.
+ <br>
+ (David Wells, 2022/05/25)
+ </li>
+
+ <li>
+ Removed: Deprecated constructors for PETScWrappers::MPI::SparseMatrix,
+ a deprecated overload for PETScWrappers::MatrixBase::add and a deprecated
+ constructor for PETScWrappers::MPI::Vector have been removed.
+ <br>
+ (Daniel Arndt, 2020/04/21)
+ </li>
+
+</ol>
+
+
+<!-- ----------- GENERAL IMPROVEMENTS ----------------- -->
+
+<a name="general"></a>
+<h3>General</h3>
+<ol>
+
+ <li>
+ New: Added support for the VTK library (https://vtk.org/).
+ <br>
+ (Pasquale Africa, 2023/05/24)
+ </li>
+
+ <li>
+ New: The new function distributed_compute_intersection_locations() computes
+ intersections on parallel::distributed::Triangulations using CGAL. It
+ returns a new class DistributedComputeIntersectionLocationsInternal which
+ stores the found intersections and relevant information about communication.
+ The class contains a helper function
+ convert_to_distributed_compute_point_locations_internal() to produce
+ DistributedComputePointLocationsInternal without an additional
+ (possibly expensive) search of points and can therefore be used to
+ initialize RemotePointEvaluation.
+ <br>
+ (Johannes Heinz, 2023/05/18)
+ </li>
+
+ <li>
+ Changed: Several parts of the library involve interfacing with
+ external libraries by way of user-defined callback functions. Specific
+ examples are the interfaces to the SUNDIALS solvers (e.g., the
+ SUNDIALS::KINSOL class). These interfaces typically required using the
+ convention for error reporting defined by the underlying library -- in
+ the case of SUNDIALS, for example, callbacks needed to return zero in
+ case of success, a negative value for an irrecoverable error, and a
+ positive value for a recoverable error.
+ This approach does not scale across the many interfaces we have. As a
+ consequence, we standardized how callbacks should behave, as
+ documented in @ref GlossUserProvidedCallBack "this glossary entry".
+ The interfaces in SUNDIALS::KINSOL and SUNDIALS::ARKode have been
+ changed correspondingly.
+ <br>
+ (Wolfgang Bangerth, 2023/05/08)
+ </li>
+
+ <li>
+ New: Add a two level transfer operator between non-nested multigrid levels for CG and DG.
+ <br>
+ (Marco Feder, Johannes Heinz, Peter Munch, Martin Kronbichler, 2023/04/26)
+ </li>
+
+ <li>
+ New: Add wrappers to the non-linear solver SNES (PETScWrappers::NonLinearSolver ) and
+ the ode integrator TS (PETScWrappers::TimeStepper) from the PETSc library.
+ <br>
+ (Stefano Zampini, 2023/04/22)
+ </li>
+
+ <li>
+ New: Kokkos is now a required dependency.
+ <br>
+ (Daniel Arndt, 2022/10/26)
+ </li>
+
+ <li>
+ New: Add a wrapper to the non-linear solver NOX from the
+ Trilinos library.
+ <br>
+ (Peter Munch, Vladimir Ivannikov, 2022/10/02)
+ </li>
+
+</ol>
+
+
+<!-- ----------- SPECIFIC IMPROVEMENTS ----------------- -->
+
+<a name="specific"></a>
+<h3>Specific improvements</h3>
+<ol>
+
+ <li>
+ Fixed: With some compilers, calling Threads::Task::Task() with a
+ function object that ends with an exception lead to a segmentation
+ fault. This is now fixed.
+ <br>
+ (Wolfgang Bangerth, 2023/06/26)
+ </li>
+
+ <li>
+ Fixed: Originally, the LAPACK in /source/lac/lapack_full_matrix.cc directly
+ printed errors to the console. This is fixed by using the AssertThrow mechanism
+ to explicitly display various error messages based on the error values that are
+ consistent with the LAPACK manual.
+ <br>
+ (Tao Jin, 2023/06/20)
+ </li>
+
+ <li>
+ Fixed: The numbering applied within FEPointEvaluation did not work correctly
+ for multiple components and when used with first_selected_component!=0 for
+ certain FiniteElement types, leading to wrong results. This is now fixed.
+ <br>
+ (Johannes Heinz, Peter Munch, 2023/06/11)
+ </li>
+
+ <li>
+ Fixed: DoFCellAccessor::distribute_local_to_global() now works with std:: iterators.
+ <br>
+ (Johannes Heinz, 2022/06/06)
+ </li>
+
+ <li>
+ New: All parallel BlockVector classes now have a reinit function that takes
+ collections of Utilities::MPI::Partitioner objects as an argument. This
+ affects TrilinosWrappers::MPI::BlockVector, PETScWrappers::MPI::BlockVector,
+ and LinearAlgebra::distributed::BlockVector. The interface is compatible.
+ <br>
+ (Marc Fehling, 2023/06/02)
+ </li>
+
+ <li>
+ Improved: Make it possible to fill JxW in NonMatching::MappingInfo from quadratures which contain JxW as weights.
+ <br>
+ (Johannes Heinz, 2023/06/01)
+ </li>
+
+ <li>
+ Fixed: Patterns::pattern_factory now parses lists of lists correctly.
+ <br>
+ (Daniel Arndt, 2023/05/16)
+ </li>
+
+ <li>
+ Changed: The KINSOL wrapper used to copy vectors to/from deal.II format
+ to/from a native SUNDIALS format. These copies are no longer made.
+ <br>
+ (Sebastian Proell, 2023/05/15)
+ </li>
+
+ <li>
+ Fixed: step-77 contained a bug where the residual was not
+ zeroed out before assembly.
+ <br>
+ (Sebastian Proell, 2023/05/14)
+ </li>
+
+ <li>
+ Changed: MPI communicators (of type `MPI_Comm`) are now treated as
+ trivially copyable POD types throughout the library. This means that
+ we store and pass them by value instead of by reference.
+ <br>
+ (Timo Heister, 2023/05/08)
+ </li>
+
+ <li>
+ New: The new class ScopeExit is useful in ensuring that cleanup code
+ is always run, regardless of how a function is left.
+ <br>
+ (Wolfgang Bangerth, 2023/05/05)
+ </li>
+
+ <li>
+ New: Added new nonlinear solver class NonlinearSolverSelector.
+ <br>
+ (Sean Ingimarson, 2023/05/01)
+ </li>
+
+ <li>
+ New: FEInterfaceValues::reinit() sometimes had trouble automatically
+ determining which quadrature or mapping object to use in the hp
+ context. There are now two more rules that help determine which
+ objects to use, as described in detail in the documentation.
+ <br>
+ (Wolfgang Bangerth, 2023/04/25)
+ </li>
+
+ <li>
+ Fixed: Consider the following scenario: You initialize a DoFHandler with a
+ parallel::distributed::Triangulation, and afterwards you want to create the
+ Triangulation by calling Triangulation::create_triangulation() that takes a
+ TriangulationDescription::Description as an argument. This caused an issue
+ as the active FE tables of the DoFHandler have not been properly updated
+ during the creation of the Triangulation. This is fixed now by treating the
+ resulting Triangultion as a 'fresh' one by triggering Triangulation::Signals::create
+ at the end of Triangulation::create_triangulation(), which in turn
+ reinitializes the DoFHandler.
+ <br>
+ (Marc Fehling, 2023/04/21)
+ </li>
+
+ <li>
+ Fixed: ParameterAcceptor::clear() had issues with 'use after free'.
+ <br>
+ (Luca Heltai, 2023/04/20)
+ </li>
+
+ <li>
+ Fixed: Mesh files in COMSOL's `.mphtxt` format are often created on
+ Windows and then read using deal.II on Unix. Windows uses a different
+ line ending style than Linux, and this led to error messages that were
+ impossible to understand because the different line ending style is
+ not visible in most editors. This is now fixed: The
+ GridIn::read_comsol_mphtxt() function also accepts Windows line
+ endings.
+ <br>
+ (Wolfgang Bangerth, 2023/04/20)
+ </li>
+
+ <li>
+ Fixed: In FEInterfaceValues::reinit(), if `q_index` is not explicitly
+ given but none of the two adjacent elements dominates the other, one
+ used to get a rather obscure error. The error now produced points at
+ the actual problem, and a much expanded discussion of what is going
+ wrong is provided in the documentation of the function.
+ <br>
+ (Simon Sticko, Wolfgang Bangerth, 2023/04/13)
+ </li>
+
+ <li>
+ Deprecated: The DoFTools::map_dofs_to_support_points() function family
+ had functions that returned what they computed via a non-const
+ reference argument `support_points` of type `std::map`. These
+ overloads are now deprecated and replaced by functions that return the
+ map via a regular `return` value.
+ <br>
+ (Wolfgang Bangerth, 2023/04/07)
+ </li>
+
+ <li>
+ New: Added Functions::SignedDistance::ZalesakDisk()
+ to compute the signed distance function of Zalesak's disk.
+ <br>
+ (Magdalena Schreter, Simon Sticko, Peter Munch, 2023/04/06)
+ </li>
+
+ <li>
+ Fixed: In grid_out.cc VtkFlags with default settings were passed to the
+ write_vtu method instead of the available vtu_flags. Thus, a
+ compression_level that has been set was simply ignored. This has been
+ fixed in #14983 by passing the available vtu_flags to the method.
+ <br>
+ (Christoph Schmidt, 2023/04/05)
+ </li>
+
+ <li>
+ New: Added Functions::SignedDistance::Rectangle() and BoundingBox::signed_distance()
+ to compute the signed distance function of a rectangle.
+ <br>
+ (Magdalena Schreter, Peter Munch, 2023/03/31)
+ </li>
+
+ <li>
+ Changed: The default `compression_level` for vtu output is changed from `best_compression` to `best_speed`.
+ <br>
+ (Christoph Schmidt, 2023/03/28)
+ </li>
+
+ <li>
+ New: Added an ArrayView::empty() function.
+ <br>
+ (Maximilian Bergbauer, 2023/03/21)
+ </li>
+
+ <li>
+ New: Added functionality to the matrix-free CellwiseInverseMassMatrix
+ operator for coupling (dyadic) coefficients. `fill_inverse_JxW_values`
+ and `CellwiseInverseMassMatrixImplFlexible` have been extended.
+ Internal interfaces for the coefficients now use ArrayView instead
+ of AlignedVector.
+ <br>
+ (Bugrahan Temur, 2023/03/15)
+ </li>
+
+ <li>
+ Fixed: There was no instance of GridTools::collect_periodic_faces() with
+ MeshType = parallel::shared::Triangulation<1,1>. But the function works with the
+ template parameter as well. Thus, it should be instantiated.
+ <br>
+ (Nils Schween, 2023/03/14)
+ </li>
+
+ <li>
+ New: LAPACKFullMatrix now provides two new functions,
+ LAPACKFullMatrix::get_right_eigenvectors() and
+ LAPACKFullMatrix::get_left_eigenvectors(), to return eigenvectors after calls
+ to LAPACKFullMatrix::compute_eigenvalues().
+ <br>
+ (Martin Kronbichler, 2023/03/09)
+ </li>
+
+ <li>
+ New: Provide overloads for `make_array_view` for `AlignedVector`.
+ <br>
+ (Sebastian Proell, 2023/03/06)
+ </li>
+
+ <li>
+ Fixed: It was previously possible to assign scalar values to
+ Tensor and VectorizedArray objects that were temporaries -- say in expressions
+ such as
+ ```
+ VectorizedArray<...> my_function();
+ ...
+ my_function() = 1.234;
+ ```
+ This does not make any sense: What `my_function()` returns is a
+ temporary object, and assigning a value to it has no consequences
+ because the temporary object dies at the end of the line. Whatever the
+ programmer intended to do here was almost certainly a mistake.
+ As a consequence, this is now prohibited and the compiler will produce
+ an error when trying to do this.
+ <br>
+ (Wolfgang Bangerth, 2023/03/05)
+ </li>
+
+ <li>
+ Fixed: SolverCG used with matrices and preconditioners that support
+ interleaving of the vector updates with the matrix-vector product (e.g. with
+ certain matrix-free operators) sometimes performed the final update to the
+ result vector `x` with a wrong coefficient. This could affect the returned
+ solution for coarse tolerances far away from convergence. This is now fixed.
+ <br>
+ (Martin Kronbichler, 2023/02/26)
+ </li>
+
+ <li>
+ Fixed: When used with the linear-polynomial MappingQCache(1),
+ FEValues::reinit() could previously trigger CellSimilarity in case the
+ underlying mesh was affine, but the deformed state described via MappingQCache
+ was not. This is now fixed.
+ <br>
+ (Martin Kronbichler, 2023/02/22)
+ </li>
+
+ <li>
+ New: Implement `VectorTools::add_constant` that adds a constant
+ to a given component of a finite element solution.
+ <br>
+ (Timo Heister, 2023/02/17)
+ </li>
+
+ <li>
+ New: The function ReferenceCell::face_vertex_location() allows
+ translating between the vertices of faces of cells and the coordinate
+ system of the cell itself.
+ <br>
+ (Wolfgang Bangerth, 2023/02/09)
+ </li>
+
+ <li>
+ Fixed: Fix GridTools::find_all_active_cells_around_point() to return the correct cells
+ if the requested point is located on a cell edge adjacent to neighbor cells at different
+ refinement levels.
+ <br>
+ (Peter Munch, Magdalena Schreter, 2023/02/07)
+ </li>
+
+ <li>
+ Fixed: The DerivativeForm class had a constructor that took an array
+ of elements via the type
+ `Tensor<order, spacedim, Tensor<1, dim,Number>>`.
+ This should have been
+ `Tensor<1, spacedim, Tensor<order, dim, Number>>`, and it is now fixed.
+ <br>
+ (Robin Goermer, Wolfgang Bangerth, 2023/02/01)
+ </li>
+
+ <li>
+ New: The function IndexSet::get_index_vector() returns a vector
+ with all indices that are part of an index set.
+ <br>
+ (Wolfgang Bangerth, 2023/01/26)
+ </li>
+
+ <li>
+ Improved: Mapping can now return vertices on a face of a cell.
+ <br>
+ (Johannes Heinz, 2023/01/25)
+ </li>
+
+ <li>
+ Fixed: When outputting hexahedral meshes in AVS Explorer's UCD file format,
+ cells were written with an inverted vertex order. While they were shown
+ correctly, these cells had negative volume. This has now been fixed.
+ <br>
+ (Nils Margenberg, 2023/01/22)
+ </li>
+
+ <li>
+ Improved: Introduce a function that only checks if Bounding Boxes are overlapping.
+ Fixed: If a 1D BBox is completely contained in another one, it was not recognized as mergeable neighbor.
+ <br>
+ (Johannes Heinz, 2022/07/07)
+ </li>
+
+ <li>
+ New: The function ReferenceCell::contains_points() is now implemented
+ for all reference cell kinds (it had been missing for wedges and
+ pyramids before).
+ <br>
+ (Wolfgang Bangerth, 2023/01/11)
+ </li>
+
+ <li>
+ New: There are now overloads of the make_array_view() function for objects of
+ type std::array.
+ <br>
+ (Wolfgang Bangerth, 2023/01/09)
+ </li>
+
+ <li>
+ Deprecated: The functions ReferenceCell::compute_orientation() and
+ ReferenceCell::permute_according_orientation() have been deprecated. Use
+ ReferenceCell::get_orientation_index() and
+ ReferenceCell::reorient_based_on_orientation_index() instead.
+ <br>
+ (Wolfgang Bangerth, 2023/01/09)
+ </li>
+
+ <li>
+ New: Writing graphical output in VTU format now uses a workflow that
+ uses multiple threads where possible, substantially increasing the
+ speed with which functions such as DataOut::write_vtu() work.
+ <br>
+ (Wolfgang Bangerth, 2022/12/30)
+ </li>
+
+ <li>
+ Improved: The FEInterfaceValues values public interface has been extended
+ further to support hp-FEM. Functions have been added to report if the class has
+ been initialized with hp support, and to get the underlying
+ hp::MappingCollection, hp::FECollection and hp::QCollection. The various
+ FEInterfaceValues::reinit() methods now accept indices to indicate which
+ quadrature rule, mapping (and, in some cases, finite elements) should be used to
+ compute values across the interface.
+ <br>
+ (Jean-Paul Pelteret, 2022/12/28)
+ </li>
+
+ <li>
+ New: ScratchData now has support for hp finite elements on interfaces.
+ <br>
+ (Jean-Paul Pelteret, 2022/12/23)
+ </li>
+
+ <li>
+ New: Allow the construction of a deal.II PETSc matrices from a PETSc Mat.
+ <br>
+ (Stefano Zampini, 2022/12/21)
+ </li>
+
+ <li>
+ New: Expose PETScWrappers::MPI::BlockVector as a PETSc VecNest vector, and make sure the mpi communicator is always
+ queried from the internal vec object.
+ <br>
+ (Stefano Zampini, 2022/12/21)
+ </li>
+
+ <li>
+ New: PETScWrappers:BlockSparseMatrix now is also a PETSc MATNEST type.
+ <br>
+ (Stefano Zampini, 2022/12/20)
+ </li>
+
+ <li>
+ Fixed: Small fixes to commnicator handling in PETSc classes. Move from
+ GetArray to GetArrayRead (threadsafe version).
+ <br>
+ (Stefano Zampini, 2022/12/20)
+ </li>
+
+ <li>
+ New: LinearAlgebra::distributed::BlockVector::reinit now accepts
+ a vector of Utilities::MPI::Partitioner objects.
+ <br>
+ (Marc Fehling, 2022/12/20)
+ </li>
+
+ <li>
+ Improved: FEInterfaceValues objects can now also be constructed using hp-collections.
+ <br>
+ (Marco Feder, 2022/12/20)
+ </li>
+
+ <li>
+ Fixed: Add default MPI getter for PETSc Mat objects, that queries the underlying PETSc type.
+ <br>
+ (Stefano Zampini, 2022/12/13)
+ </li>
+
+ <li>
+ Fixed: PETSc has no concept of ownership, but only shared ownership. Vec and Mat objects are
+ reference counted, and automatically cleaned when no longer used. We do not need to keep track
+ of ownership manually.
+ <br>
+ (Stefano Zampini, 2022/12/13)
+ </li>
+
+ <li>
+ Improved: The function GridTools::rotate()
+ can now also handle Triangulation objects with
+ dim=1 and spacedim=2.
+ <br>
+ (Peter Munch, 2022/12/08)
+ </li>
+
+ <li>
+ New: SolverGMRES and SolverFGMRES now also support classical
+ Gram-Schmidt orthonormalization
+ alongside to the existing modified Gram-Schmidt algorithm. This
+ algorithm allows to reduce the cost of vector operations in terms of
+ communication latency and memory transfer significantly.
+ <br>
+ (Peter Munch, Martin Kronbichler, 2022/12/08)
+ </li>
+
+ <li>
+ Fixed: The residual assembly in step-77 contained a bug that prevented
+ the correct residual from being computed. This is now fixed.
+ <br>
+ (Stefano Zampini, 2022/12/06)
+ </li>
+
+ <li>
+ Improved: The history of linear residuals norms inside classes SolverControl and
+ ReductionControl is now cleared at the first step of the solution.
+ <br>
+ (Vladimir Ivannikov, 2022/12/05)
+ </li>
+
+ <li>
+ New: TrilinosWrappers::MPI::Vector and PETScWrappers::MPI::Vector now both have
+ reinit functions that take a Utilities::MPI::Partitioner as an argument, so
+ their interface is compatible to LinearAlgebra::distributed::Vector.
+ <br>
+ (Marc Fehling, 2022/12/05)
+ </li>
+
+ <li>
+ Improved: The quick_tests mechanism has been redesigned. Quick tests are
+ now part of the regular deal.II testsuite. This means they can be
+ configured via the <code>setup_tests_quick_tests</code> target, and run via
+ invoking ctest from the build directory. The <code>test</code> target will
+ now ensure that the library is fully compiled and quick tests are
+ configured prior to running all quick tests.
+ <br>
+ (Matthias Maier, 2022/11/29, 2022/12/10)
+ </li>
+
+ <li>
+ New: There is now a new function Threads::TaskGroup::return_values() that waits
+ for all tasks in a task group and returns a vector of their returned objects.
+ <br>
+ (Wolfgang Bangerth, 2022/11/29)
+ </li>
+
+ <li>
+ Changed: All SparsityPattern classes now inherit from a new class SparsityPatternBase
+ which provides an API for efficiently adding new entries. As a consequence of this change,
+ the majority of templates over the sparsity pattern type have been removed.
+ <br>
+ (David Wells, 2022/11/25)
+ </li>
+
+ <li>
+ New: Add utility function Utilities::MPI::scatter.
+ <br>
+ (Magdalena Schreter, Peter Munch, 2022/11/24)
+ </li>
+
+ <li>
+ Improved: The deal.II CMake project configuration and the
+ deal_II_invoke_autopilot() CMake macro that is used in user projects now
+ always export the <code>compile_commands.json</code> file used for various
+ tooling (such as completion backends like clangd).
+ <br>
+ (Matthias Maier, 2022/11/24)
+ </li>
+
+ <li>
+ Improved: Added capability in the particle handler to generate ghost particles
+ in ghost cells close to periodic boundary conditions.
+ <br>
+ (Bruno Blais, Audrey Collard-Daigneault, 2022-11-18)
+ </li>
+
+ <li>
+ Changed: The constructors of the various solver classes in the PETScWrappers namespace
+ used to take an `MPI_Comm` argument. This has now been changed: There
+ is a new set of constructors that no longer take this argument, and
+ the old constructors have been deprecated. In practice, the solvers
+ now use the same MPI communicator as the matrix give to the `solve()`
+ function.
+ <br>
+ (Wolfgang Bangerth, 2022/11/16)
+ </li>
+
+ <li>
+ New: PreconditionChebyshev now also supports
+ James Lottes
+ s fourth-kind Chebyshev.
+ <br>
+ (Martin Kronbichler, Peter Munch, 2022/11/12)
+ </li>
+
+ <li>
+ Workaround: The testsuite CMake macros now generate a top-level target
+ compile_test_executables in user projects that can be used to force the
+ compilation of all test executables. This works around an issue with the
+ ninja build system that concurrent invocation of tests
+ (via <code>ctest -jN</code>) that build executables will fail when calling
+ back into cmake. As a workaround it is now possible to first build all
+ executables first via <code>ninja compile_test_executables</code> and then
+ run tests in parallel with <code>ctest -jN</code>.
+ <br>
+ (Matthias Maier, 2022/11/11)
+ </li>
+
+ <li>
+ Improved: FEImmersedSurfaceValues can now be constructed using a MappingFEField.
+ <br>
+ (Marco Feder, 2022/10/31)
+ </li>
+
+ <li>
+ New: A new overload for MatrixFree::loop allows
+ to specify a pre- and post-operation, similar
+ to MatrixFree::cell_loop.
+ <br>
+ (Sebastian Proell, 2022/10/11)
+ </li>
+
+ <li>
+ New: We now instruct doxygen to build the documentation with multiple
+ threads, substantially reducing the amount of time it takes to
+ complete this step.
+ <br>
+ (Wolfgang Bangerth, 2022/10/04)
+ </li>
+
+ <li>
+ New: The GridTools::MarchingCubeAlgorithm supports now also 1D.
+ <br>
+ (Magdalena Schreter, Peter Munch, 2022/09/23)
+ </li>
+
+ <li>
+ Fixed: On very coarse meshes, with very particular manifolds, e.g., polar manifolds,
+ cylindrical manifolds, Manifold<3, 3>::normal_vector may return a zero vector.
+ This is fixed now.
+ <br>
+ (Timo Heister, Luca Heltai, Jiaqi Zhang, 2022/09/20)
+ </li>
+
+ <li>
+ New: The new function CGALWrappers::compute_intersection_of_cells computes
+ the intersection between two (affine) cells starting from the location of the
+ vertices. The intersection is described by a vector of arrays, where each array
+ identifies a simplex of the sub-tassellation of the intersection.
+ <br>
+ (Marco Feder, Johannes Heinz, 2022/09/20)
+ </li>
+
+ <li>
+ Fixed: The function GridTools::internal::distributed_compute_point_locations()
+ now projects reference points outside of a cell (but within a tolerance) onto
+ the unit cell. This enables the use of FE_Q_iso_Q1 in
+ Utilities::MPI::RemotePointEvaluation.
+ <br>
+ (Peter Munch, Magdalena Schreter, 2022/09/12)
+ </li>
+
+ <li>
+ Improved: The functions VectorTools::point_values()/::point_gradients() and
+ the class Utilities::MPI::RemotePointEvaluation now allow to specify the first
+ component to be selected. The feature is used in the class DataOutResample
+ to output multi-component solutions.
+ <br>
+ (Peter Munch, Magdalena Schreter, 2022/09/12)
+ </li>
+
+ <li>
+ Improved: The vector operations in SolverIDR::solve() have been revised for
+ performance. The new implementation should show a speedup in case the
+ matrix-vector product and preconditioner are not much more expensive than the
+ vector operations. Furthermore, the usage of temporary vectors has been
+ reduced by two.
+ <br>
+ (Martin Kronbichler, 2022/09/12)
+ </li>
+
+ <li>
+ New: Functions DoFHandler::get_future_fe_indices() and
+ DoFHandler::set_future_fe_indices() that store and recover future FE
+ indices on a DoFHandler. They can also be used to transfer future FE
+ indices between different DoFHandler objects.
+ <br>
+ (Marc Fehling, 2022/08/20)
+ </li>
+
+ <li>
+ New: The CellAccessor::as_dof_handler_iterator() function can be used
+ to convert from a Triangulation active cell iterator to a DoFHandler active cell
+ iterator, or from an active cell iterator of one DoFHandler to that of another
+ DoFHandler.
+ <br>
+ (Jean-Paul Pelteret, 2022/07/15)
+ </li>
+
+ <li>
+ Improved: Refinement and coarsening flags are now
+ communicated in parallel::shared::Triangulation.
+ <br>
+ (Peter Munch, 2022/07/12)
+ </li>
+
+ <li>
+ New: The new class MatrixFreeTools::ElementActivationAndDeactivationMatrixFree
+ is a wrapper around MatrixFree designed to deal with
+ DoFHandler objects involving cells without degrees of freedom, i.e.,
+ cells using FENothing as element type. The class helps to implement the
+ "element birth and death technique".
+ <br>
+ (Peter Munch, Sebastian Proell, 2022/07/09)
+ </li>
+
+ <li>
+ New: Implement `DataOut::write_deal_II_intermediate_in_parallel()`
+ that writes a combined file from all MPI ranks using MPI I/O of the
+ internal patches and a corresponding
+ `DataOutReader::read_whole_parallel_file()` to read them back in.
+ <br>
+ (Timo Heister, 2022/07/07)
+ </li>
+
+ <li>
+ Improved: The function GridGenerator::merge_triangulations() can now copy boundary ids to remaining boundary faces.
+ <br>
+ (Johannes Heinz, 2022/07/07)
+ </li>
+
+ <li>
+ New: There are now functions Utilities::MPI::isend() and
+ Utilities::MPI::irecv() that can send and receive arbitrary objects to
+ and from other processes, and that handle all of the setting up and
+ tearing down of MPI objects and temporary buffers.
+ <br>
+ (Wolfgang Bangerth, 2022/07/07)
+ </li>
+
+ <li>
+ Improved: The function VectorTools::point_values() can now handle
+ cell-data vectors.
+ <br>
+ (Peter Munch, 2022/07/06)
+ </li>
+
+ <li>
+ Added the missing explicit instantiations of DoFTools::distribute_cell_to_dof_vector
+ for problems with non-zero codim (dim != spacedim)
+ <br>
+ (Ahmad Shahba, 2022/07/06)
+ </li>
+
+ <li>
+ Fixed: MappingCartesian used to throw exceptions in debug mode when checking if
+ small cells in a large domain size are actually aligned to coordinate axes.
+ This is fixed now.
+ <br>
+ (Rene Gassmoeller, 2022/07/04)
+ </li>
+
+ <li>
+ Fixed: The function find_active_cell_around_point() now skips cells without any marked vertices.
+ <br>
+ (Johannes Heinz, 2022/06/28)
+ </li>
+
+ <li>
+ New: The PetscWrappers::PreconditionBDDC preconditioner has been implemented. It requires a special matrix type (IS), which is initialized with the new function PetscWrappers::reinit.
+ <br>
+ (Nicolas Barnafi, 2022/05/10)
+ </li>
+
+</ol>
+
+*/