![]() |
deal.II version GIT relicensing-3321-g4b434670a0 2025-05-16 17:40:00+00:00
|
This is the list of changes made since the last release of deal.II. All entries are signed with the names of the authors.
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.
Changed: Given that the MatrixOut class now allows to create "sparse" representations (see the "Minor changes" section of this page), the default for what kind of output is being produced has now also been changed to create this "sparse" output, rather than the traditional "dense" output. You can switch back to the traditional way in which zero matrix entries are also represented in the visualization output using the MatrixOut::Options::create_sparse_plot variable.
(Wolfgang Bangerth, 2025/04/21)
Changed: deal.II now requires Trilinos version 13.2.
(Timo Heister, 2025/03/21)
Changed: Every deal.II header file includes the deal.II header deal.II/base/config.h
that contains some basic configuration information such as what deal.II version is being used, whether deal.II was configured with Trilinos/PETSc/... support, etc. In turn, config.h
included deal.II/base/types.h
and deal.II/base/numbers.h
, making the contents of these latter two files available throughout deal.II. For conceptual reasons, for example to support C++20 modules in the long run, the deal.II/base/config.h
file must stand separate from the rest of the deal.II header files. As a consequence, it can no longer have includes for other deal.II header files (namely, deal.II/base/types.h
and deal.II/base/numbers.h
as mentioned above), and no longer does so now. If your code requires knowledge of the contents of deal.II/base/types.h
and deal.II/base/numbers.h
, you will have to explicitly include these files like you do with any other deal.II header file already.
(Wolfgang Bangerth, 2024/01/16)
Updated: We now require Boost version 1.74 or newer.
(Matthias Maier, 2025/01/30)
Changed: The function FETools::compute_face_embedding_matrices() used to take its second argument as a fixed-size (C-style) array of matrices of size GeometryInfo<dim>::max_children_per_face
. This has been changed to be an object of type ArrayView<FullMatrix<number>>
to allow for storage of that array in other ways, say as an object of type std::vector<FullMatrix<double>>
. To convert old code, you may have to explicitly call the function with its template arguments, say as FETools::compute_face_embedding_matrices<dim,double,spacedim(...)
or to convert the second argument from its actual type to the ArrayView object by wrapping it in a call to make_array_view().
(Wolfgang Bangerth, 2024/01/16)
Changed: The header file deal.II/grid/tria.h
used to automatically include the header file deal.II/grid/tria_description.h
that declares classes such as CellData and SubCellData. But this led to a circular set of inclusions because deal.II/grid/tria_description.h
also included deal.II/grid/tria.h
, something that C++ allows but that leads to other problems. As a consequence, deal.II/grid/tria.h
now no longer includes deal.II/grid/tria_description.h
. If your program uses the CellData, SubCellData, or similar classes previously declared in deal.II/grid/tria_description.h
, then you may want to explicitly include deal.II/grid/cell_data.h
(for the CellData and SubCellData classes) or deal.II/grid/tria_description.h
(for the classes in namespace TriaDescription) in your program. The file deal.II/grid/cell_data.h
is new. As a consequence, if you need to ensure that your code compiles with both deal.II 9.6 and 9.7, you can't directly include it. However, deal.II/grid/tria_description.h
now includes it, so a backward compatible solution is to only include that file, even if you only need the CellData and SubCellData classes but not the ones in namespace TriaDescription.
(Wolfgang Bangerth, 2024/05/16)
Changed: The SolverControl, ReductionControl, and IterationNumberControl classes have constructors that take two boolean flags log_history
and log_result
. The first of these represents whether each time these classes are asked to evaluate progress of an iterative solver, it should output information about the current number of the iteration and the current residual to the deallog
object. The latter flag determines whether this kind of output should be generated once the solver has been determined to have either succeeded or failed, i.e., at the end of the iteration. By default, these flags were set to false
and true
, respectively. Creating and formatting this kind of output turns out to be surprisingly expensive. This is a nuisance because by default, the deallog
variable (via the constructor arguments of the LogStream class) is instructed to simply ignore whatever information is sent to it, rather than putting the output onto the screen or into a log file. As a consequence, the defaults of the constructor arguments of the three classes mentioned above have been changed from false
and true
to false
and false
. If you have instructed deallog
to pass information given to it to the screen or into an output file, you can always explicitly also set the constructor arguments of SolverControl, ReductionControl, or IterationNumberControl objects to retain the previous behavior.
(Wolfgang Bangerth, 2025/01/21)
Changed: Mapping::transform_points_real_to_unit_cell() used to designate points for which it could not successfully find reference coordinates by setting the first vector component to std::numeric_limits<double>::infinity()
. Unfortunately, on some platforms, the use of infinities leads to dramatically slower code execution. As a consequence, we now use the (finite) value std::numeric_limits<double>::lowest()
(somewhere around -1e308
) to denote invalid values.
(Wolfgang Bangerth, 2024/12/17)
Updated: The interface of Rol::VectorAdaptor class now uses ROL::Ptr
. It is a shared pointer wrapper for either Teuchos::RCP
or std::shared_ptr
, and can be specified while configuring Trilinos. See Trilinos/packages/rol/cmake/BuildOptions.cmake
for details.
(Marc Fehling, 2024/11/28)
Changed: The minimum version for Trilinos has been bumped to 12.14.1.
(Marc Fehling, 2024/11/28)
Changed: FEInterfaceValues::normal() has been renamed FEInterfaceValues::normal_vector().
(Peter Munch, 2024/11/23)
Changed: The deprecated entries Text and ShortText in OutputStyle have been removed.
(Peter Munch, 2024/08/21)
Changed: The minimum version of p4est compatible with deal.II has been increased to 2.2.
(David Wells, 2024/08/15)
Removed: The CMake option DEAL_II_COMPILE_EXAMPLES
has been removed. As a consequence, examples will no longer be compiled if DEAL_II_COMPONENT_EXAMPLES
is set to true.
You can use the testsuite to compile all examples at once. First, set up the setup_tests_examples
target, i.e., with make setup_tests_examples
. Then compile and run the examples with ctest -R examples
.
(Marc Fehling, 2024/08/12)
Changed: The configuration option DEAL_II_WITH_COMPLEX_VALUES that enables support for linear algebra classes to be used with std::complex is now disabled by default.
(Timo Heister, 2024/08/11)
Removed: All support for CUDAWrappers and CUDA-related macros have been removed. GPU support is provided through Kokkos.
(Daniel Arndt, 2024/08/11)
Removed: Deprecations from the 9.5 release have been removed. See https://github.com/dealii/dealii/pull/17444 for details.
(Daniel Arndt, 2024/08/07)
Removed: step 52 has been removed. step-86 provides an alternative tutorial on time-stepping approaches.
(Daniel Arndt, 2024/07/28)
Deprecated: The classes SolutionTransfer and parallel::distributed::SolutionTransfer have been unified to SolutionTransfer. The class now supports both serial and parallel meshes. The class has lost some functions: the function SolutionTransfer::interpolate() that takes the input vector as well as the less frequently used functions SolutionTransfer::prepare_for_pure_refinement() and SolutionTransfer::refine_interpolate(). Please use the other functions to accomplish the same functionality. For the time being, the old implementation has been moved to the Legacy
namespace. The old parallel::distributed::SolutionTransfer has been now early deprecated.
(Pasquale Claudio Africa, Bruno Blais, Peter Munch, 2024/01/03)
New: Re-introduced an interface for the MUMPS (Multifrontal Massively Parallel Sparse Direct Solver) library. MUMPS support had been removed in 2015, since we opted for its use through Trilinos and PETSc. As part of the dealii-X project, we plan to integrate the new features of MUMPS (i.e., CUDA support, currently under development) within deal.II, enabling its use with native deal.II objects and classes.
(Luca Heltai, Martin Kronbichler, Alfredo Buttari, 2025/04/02)
Added support for the PSBLAS library: Parallel Sparse BLAS. A library of distributed sparse linear algebra with support for GPU and Multithread acceleration. Part of the PSCToolkit: Parallel Sparse Computation Toolkit.
(Luca Heltai, 2025/03/12)
Updated: deal.II now bundles TaskFlow 3.10 to support parallel computations.
(Wolfgang Bangerth, 2025/01/18)
New: GridIn::read_vtk() was extended to read vtk meshes with field data defined at the cells, to enable importing and use of cell related data beyond a material ID or Manifold ID. The imported field data can be accessed using a new function get_cell_data(), which returns a map with a key containing the field data identifier and a vector containing the field data values associated with the cell indices of the imported mesh.
(Vaishnavi Kale, Marc Secanell, Mohamad Ghadban and Mayank Sabharwal, 2024/12/11)
New: The step-93 tutorial program shows how to use nonlocal dofs in the deal.II framework, in the context of a simple optimization problem.
(Sam Scheuerman, Wolfgang Bangerth, 2024/11/06)
Changed: The SmartPointer
class has been renamed to ObserverPointer, since this name is a much better reflection of the purpose of this class. The documentation of the class has also been updated significantly to better explain what the class does. Correspondingly, the Subscriptor
class has been renamed to EnableObserverPointer, since that is what the class actually does.
(Wolfgang Bangerth, 2024/09/09)
Fixed: The AffineConstraints::make_consistent_in_parallel() function made sure that constraints for a degree of freedom stored on different processes were the same, but they were occasionally wrong. This has now been fixed.
(Wolfgang Bangerth, 2024/08/30)
Fix: Ensure that undefined parameters within nested JSON subnodes trigger proper exception handling when using ParameterHandler::parse_input_from_json() with skip_undefined set to false. Previously, the exception ExcEntryUndeclared was only thrown when undefined parameters appeared at the top level of the parameter file. This fix extends the check to nested subnode entries as well.
(Magdalena Schreter-Fleischhacker, 2025/05/08)
Fixed: FETools::extrapolate previously failed to correctly compress ghost values on MPI simulations with distributed triangulation and LinearAlgebra::distributed vectors, due to the different behaviours of the compress(insert) operation on Petsc/Trilinos and LinearAlgebra::distributed vectors. This is now fixed.
(Guilhem Poy, 2025/05/08)
Changed: When the SUNDIALS::KINSOL solver fails to converge, it returns an error. In the past, deal.II then aborted the program (in debug mode), but there are cases where KINSOL's failure can make legitimate sense, and where a user program could catch the error and re-start, perhaps from a better chosen starting point. As a consequence, the behavior has been changed: Instead of aborting the program, SUNDIALS::KINSOL now throws an exception (in both debug and release mode) that can be caught and processed by user code.
(Simon Wiesheier, Wolfgang Bangerth, 2025/05/06)
Added: 1D matrices: mass, laplace, ghost penalty. FullMatrix::kronecker_product.
(Micha Wichrowski, 2025/05/01)
Improved: The MappingQEulerian class now supports the use of higher order mappings for the underlying undeformed geometry. This for example allows for higher accuracy in models with curved boundaries.
(Rene Gassmoeller, 2025/04/29)
New: Fifth- and sixth order Runge–Kutta schemes have been added.
(Peter Munch, 2025/04/28)
Fix: Add explicit instantiation for TpetraWrappers::BlockSparseMatrix::reinit (std::vector<IndexSet>, BlockDynamicSparsityPattern, MPI_Comm, bool) to fix missing symbol error when initializing Tpetra block matrices from distributed sparsity patterns.
(Qingyuan Shi, 2025/04/27)
New: MatrixOut now allows to create "sparse" representations of matrices by setting the MatrixOut::Options::create_sparse_plot variable.
(Wolfgang Bangerth, 2025/04/18)
Changed: Flexible GMRES can be viewed as a special case of the MPGMRES algorithm. Consequently, the SolverFGMRES class is now derived from SolverMPGMRES and its solve method now supports the function signature solve(A, x, b, preconditioner_1, preconditioner_2, ...)
(Wyatt Smith, Matthias Maier, 2025/04/10)
New: Added a new class SolverMPGMRES that implements a variant of the GMRES algorithm allowing for the use of multiple preconditioners at once. For more details, see [105].
(Wyatt Smith, Matthias Maier, 2025/04/10)
New: FE_Simplex_Poly now implements FiniteElement::face_to_cell_index(), enabling periodicity for derived classes, with restrictions similar to the implementation in FE_Q_Base. Additionally, GridGenerator::hyper_rectangle_with_simplicies() now accepts an additional boolean argument which, in 3D, breaks each cubical cell into six tetrahedra instead of five. This mesh meets the restrictions of FE_Simplex_Poly::face_to_cell_index().
(Kyle Schwiebert, 2025/04/04)
Fixed: DoFTools::map_dofs_to_support_points() did not work when there were cells in the mesh that had no degrees of freedom (e.g., because the cell's finite element was FE_Nothing). This is now fixed.
(Davit Gyulamiryan, Wolfgang Bangerth, 2025/03/23)
Fixed: The geometry subdivided_hyper_L could not be generated using grid_generator_from_name. This has been fixed by adding this geometry case in said function. A test has also been added.
(Bruna Campos, 2025/03/20)
New: Portable::FEEvaluation::get_current_cell_index() and Portable::FEEvaluation::get_matrix_free_data() allow querying the current Portable::MatrixFree::Data object and the current cell index respectively.
(Daniel Arndt, Timo Heister, 2025/03/19)
New: The bundled version of Kokkos has been upgraded to 4.5.1.
(Wolfgang Bangerth, 2025/03/10)
Fixed: The particle generator function 'probabilistic_locations' could under certain conditions cause a division by zero if the user-provided probability density function evaluated to 0 everywhere in a local domain, but not globally. This has been fixed.
(Rene Gassmoeller, 2025/02/28)
Improved: A default expression can now be use when declaring a ParsedFunction. This change allows for a default value different than zero which wasn't previously possible.
(Olivier Gaboriault, 2025/02/28)
New: Matrix-Free now can build data structures for ghosted cells. The functionality can be accessed by AdditionalData::store_ghost_cells. (Micha Wichrowski, 2025/01/30)
Improved: Local operation classes of the portable matrix-free infrastructure do not need n_dofs_1d anymore.
(Peter Munch, 2024/01/28)
Fixed: When checking whether a particle is in a specific cell, ParticleHandler always assumed that the cell is a quadrilateral or hexahedron. This is of course correct if the mesh only contains such cells, but is wrong if you are working on simplex or mixed meshes and sometimes led to putting particles into the wrong cells. This is now fixed.
(Wolfgang Bangerth, Bruno Blais, 2025/01/27)
New: There function GridGenerator::hyper_ball() now also works for dim=2
, spacedim=3
, where it creates a two-dimensional disk embedded in three-dimensional space.
(Wolfgang Bangerth, 2025/01/23)
Deprecated: The functions IndexSet::pop_front() and IndexSet::pop_back() are now deprecated. An IndexSet should be seen as a set, not an ordered collection, and so speaking of "front" and "back" is not well defined.
(Wolfgang Bangerth, 2025/01/23)
Deprecated: The functions ReferenceCell::unit_tangential_vectors() and ReferenceCell::unit_normal_vectors() were poorly renamed, given the plural (when they only returned a single vector) and the use of the word "unit" when they return information about faces. As a consequence, these functions have been renamed to ReferenceCell::face_tangent_vector() and ReferenceCell::face_normal_vector(), and the old names are now deprecated.
(Wolfgang Bangerth, 2025/01/23)
New: There are now functions FiniteElement::shape_function_belongs_to() that allow testing whether a given shape function corresponds to a vector component described by a FEValuesExtractors object.
(Wolfgang Bangerth, 2024/12/18)
Deprecated: The function parallel::transform() has been deprecated.
(Wolfgang Bangerth, 2024/12/18)
New: Configuration and CI job for pre-commit. The tool pre-commit can install hooks into the local git repo. These will be run on every call to git commit and perform some quick checks on the changeset. The CI job runs these checks on the whole codebase.
(Jan Philipp Thiele, 2024/11/27)
Improved: The function FEInterfaceValues::quadrature_point() has been added.
(Peter Munch, 2024/11/23)
New: FiniteElement::get_local_dof_sparsity_pattern() can be used to provide the coupling between DoFs within a cell and is used in make_sparsity_pattern() to generate matrices with fewer nonzero entries depending on the element. FE_Q_iso_Q1 now provides this coupling information.
(Timo Heister, Luca Heltai, 2024/11/20)
Deprecated: The Utilities::MPI::ConsensusAlgorithms::Payload base class has been deprecated. It used to serve as an interface class for the algorithms in namespace Utilities::MPI::ConsensusAlgorithms, but we have since come up with ways of formulating these algorithms in terms of function objects that are more flexible than the base class/virtual function interface now deprecated.
(Wolfgang Bangerth, 2024/11/12)
New: The cmake configuration system now allows enabling interprocedural and link-time optimization by the compiler. These kinds of optimization often result in substantially faster executables because they allow the compiler to see a bigger part of the whole program when optimizing. To enable interprocedural and link-time optimization, pass the -DDEAL_II_USE_LTO=ON
flag to cmake when configuring the library.
(Wolfgang Bangerth, 2024/09/24)
Improved: The orthogonalization done within SolverGMRES and SolverFGMRES for the deal.II vectors would previously lead to data access pattern that are unfriendly to data prefetchers on modern CPUs. This has been addressed by implementing a suitable loop blocking.
(Martin Kronbichler, 2024/11/01)
Improved: DoFRenumbering::matrix_free_data_locality() now also works for elements that are not FE_Q, simply using the ordering of the degrees of freedom on the cells.
(Martin Kronbichler, 2024/11/01)
Improved: The new function Utilities::MPI::compute_index_owner_and_requesters() allows to compute index owners but also returns the requesters for locally owned indices.
(Peter Munch, 2024/10/15)
Improved: The new function LAPACKFullMatrix::get_state() allows to query the current state of LAPACKFullMatrix, which allows to decide which method (e.g., LAPACKFullMatrix::solve() vs. LAPACKFullMatrix::vmult()) to use.
(Peter Munch, 2024/10/15)
Improved: FunctionFromFunctionObjects can now accept a single function within which individual components need to be handled.
(Peter Munch, 2024/10/15)
Fixed: FESystem now works correctly with cubic FE_SimplexP elements.
(David Wells, 2024/10/15)
Improved: The deal_ii_invoke_autopilot CMake macro gained support for multi-configuration generators.
(Matthias Maier, 2024/10/12)
Improved: TableHandler now correctly outputs Integers if TableHandler::set_scientific() is set.
(Peter Munch, 2024/10/05)
Improved: The class ScalarFunctionFromFunctionObject can now also handle time-dependent functions.
(Peter Munch, 2024/09/26)
Improved: Added AlignedVector::insert(), which works the same way as std::vector::insert().
(David Wells, 2024/09/26)
New: Utilities::MPI::NoncontiguousPartitioner::export_to_ghosted_array() can now handle multiple components.
(Peter Munch, 2024/09/25)
Improved: MGTransferMF now also supports FE_DGP.
(Peter Munch, Nils Margenberg, 2024/09/24)
New: The constructors of the classes within namespace FEValuesExtractors are now all marked as constexpr
. As a consequence, FEValuesExtractors objects can now also be constexpr
.
(Wolfgang Bangerth, 2024/09/24)
New: The new functions get_normal_hessian() and submit_normal_hessian() for FEFaceEvaluation implement second derivatives in normal direction for the matrix-free framework.
(Maximilian Bergbauer, Andreas Koch, 2024/09/18)
Patched: GridTools::transform() now supports 3D anisotropically refined grids. Note that FEValues still do not support hanging node constraints for anisotropically refined grids.
(Robin Hiniborch, 2024/09/10)
Fixed: Triangulation::get_boundary_ids() does not return duplicates when dim == 1
any more.
(David Wells, 2024/09/06)
Fix: Add the missing compressed = false
in TpetraWrappers::Vector::add() function to ensure distributed Tpetra vector with writable nonlocal entries will always be non-compressed after any entry addition.
(Qingyuan Shi, 2024/08/28)
New: The new setting OutputStyle::KeepOnlyChanged allows to print only changed parameters with ParameterHandler::print_parameters().
(Peter Munch, 2024/08/22)
Fixed: Previously, FiniteElement::has_generalized_support_points() and FiniteElement::has_face_support_points() returned false for the FE_Nothing element. Now, FE_Nothing::has_generalized_support_points() and FE_Nothing::has_face_support_points() correctly return true, as the empty arrays returned by FE_Nothing::get_generalized_support_points() and FE_Nothing::get_unit_face_support_points() accurately describe the support points of the element (i.e., they don't have any, as there are no degrees of freedom).
(Oreste Marquis, 2024/08/21)
New: deal.II now contains a python script to indent ParameterHandler .prm files. The script is located in contrib/utilities/prm_tools.py and can be used to update .prm file in-place or write the output into a new file.
(Rene Gassmoeller, 2024/08/21)
New: The TaskResult::emplace_object() function sets the value of a TaskResult object to a specific value without requiring running a function on a separate task.
(Wolfgang Bangerth, 2024/08/21)
Improved: DataOut now also supports cubic output of simplices.
(Peter Munch, 2024/08/14)
New: FESystem::compare_for_domination() now accepts two FESystem objects with different number of base elements.
(Mohamad Ghadban, 2024/08/20)
Fixed: The FiniteElement::has_support_points() function is poorly named because it does not return whether an element has support points, but whether it implements the FiniteElement::get_unit_support_points() function correctly. Because of this misunderstanding, it returned false
for the FE_Nothing element. This is now fixed: FE_Nothing::has_support_points() now returns true
, because the empty array returned by FE_Nothing::get_unit_support_points() correctly describes the support points the element has (namely: it does not have any, as there are no degrees of freedom).
(Wolfgang Bangerth, 2024/08/20)
Fixed: Objects of type FEFaceEvaluation can now be collected in an std::vector.
(Martin Kronbichler, John Coughlin, 2024/08/19)
Changed: The concepts::is_vector_space_vector now also requires the vector class to provide a function VectorType::get_mpi_communicator() -> MPI_Comm
, which returns the underlying MPI communicator or, if a sequential vector, MPI_COMM_SELF
.
(Martin Kronbichler, David Wells, 2024/08/19)
Improved: MappingFE now supports the case that not all geometric objects of a cell have the same manifold id.
(Peter Munch, 2024/08/16)
Improved: The classical Gram–Schmidt orthonormalization in SolverGMRES now uses SIMD-optimized routines also for Vector and BlockVector.
(Martin Kronbichler, 2024/08/16)
New: Added SparseVanka::Tvmult() and SparseVanka::clear() SparseVanka can now be passed to MGSmootherPrecondition to be used as a multigrid smoother.
(Chayapol Chaoveeraprasit, 2024/08/14)
Improved: Portable::MatrixFree now supports FESystem(FE_Q, n_components) with arbitrary number of components.
(Peter Munch, Daniel Arndt, 2024/08/14)
New: Added support for magic_enum.hpp. Now PatternsTools::Convert<T> works also when T is an enum type.
(Luca Heltai, 2024/08/12)
New: deal.II contributions are now automatically checked for typos using the 'typos' software.
(Rene Gassmoeller, 2024/08/12)
New: Parameter entries in the ParameterHandler class can now be marked as deprecated using the function 'mark_as_deprecated'. If deprecated parameters are found in a parameter file an exception of type 'ExcEncounteredDeprecatedEntries' is thrown that can be caught in the calling code, or if ignored will emit an error message.
(Rene Gassmoeller, 2024/08/11)
New: The new functions DoFTools::extract_rigig_body_modes and DoFTools::extract_level_rigig_body_modes allow you to extract translational and rotational modes, need to set up AMG for solving elasticity problems.
(Marco Feder, Peter Munch, Richard Schussnig, 2024/08/10)
New: Apply the 'dealii' namespace import change to step-49 and step-50, ensuring consistency with the other tutorial programs.
(Lóránt Hadnagy, 2024/08/08)
Fixed: MatrixFreeTools::compute_matrix() now correctly handles the case that individual components are requested.
(Peter Munch, 2024/08/04)
Fixed: MatrixFreeTools::compute_diagonal() used to use first_selected_component also for accessing (block) vectors. This has been fixed.
(Peter Munch, Nils Much, 2024/07/30)
Fix: Corrected pointer iteration range in VectorBase::mean_value() and VectorBase::lp_norm() in PETScWrappers namespace to proper handle distributed PETSc vectors. Now pointers obtained via VecGetArrayRead() iterate only over locally_owned_size(), and results are correctly aggregated across processes.
(Qingyuan Shi, 2024/08/01)
New: Symmetrize fourth order tensors based on required symmetry type - major or minor
(Vinayak, 2024/07/31)
New: TrilinosWrappers::SolverDirect can now also be used for a matrix of type Epetra_Operator and vectors of type Epetra_MultiVector. In addition, FullMatrix objects can be used as multi vectors.
(Peter Munch, 2024/07/31)
New: Uniformly apply the practice of importing the 'dealii' namespace only within the StepXX namespace across all tutorial programs, except for step-49 and step-50. These steps will be handled separately to ensure proper integration and testing.
(Lóránt Hadnagy, 2024/07/30)
New: VectorTools::interpolate() can now also used on multigrid levels.
(Peter Munch, Richard Schussnig, 2024/07/26)
Deprecated: ObserverPointer is clearly documented as not owning the object it points to. Yet, ObserverPointer::clear() deletes the object pointed to, thereby assuming that the ObserverPointer object actually owns the object. This must surely be confusing. As a consequence the function is now deprecated.
(Wolfgang Bangerth, 2024/07/25)
New: Made mapping
variables const
in example files.
(Lóránt Hadnagy, 2024/07/25)