deal.II version GIT relicensing-2330-gf6dfc6c370 2025-01-06 13:10: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: 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)
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: 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)
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)
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: 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)