Reference documentation for deal.II version GIT relicensing-214-g6e74dec06b 2024-03-27 18:10:01+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
Changes between Version 5.1 and 5.2

This is the list of changes made between the deal.II releases listed above. All entries are signed with the names of the author. Regular contributor's names are abbreviated by WB (Wolfgang Bangerth), GK (Guido Kanschat), RH (Ralf Hartmann).

Incompatibilities

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.

  1. Changed: The way boundary constraints were handled in the step-17 tutorial program was conceptually flawed. We tried to eliminate boundary nodes locally on the cell level, and hanging node constraints subsequently when transferring into the global matrix. However, this doesn't work in general: the elimination of hanging node constraints could re-populate rows and columns that had already been vacated during boundary node elimination. At the end of a long thought process, we came to the conclusion that it is impossible to revert the traditional order of operations: first eliminate all hanging node constraints, then eliminate all boundary nodes. This leads to a situation where the MatrixTools::local_apply_boundary_values function is not very useful any more, except for the special case where there are no hanging nodes. The step-17 example program has therefore been changed to use the MatrixTools::apply_boundary_values function again, though hanging node elimination still happens during transfer into the global matrix.
    (WB 2005/05/05)

  2. Changed: The class MGCoarseGridLACIteration lost two template arguments. Since the matrix and preconditioner are now stored in form of PointerMatrix objects, handling of the class is much simpler, in particular when exchanging preconditioners.
    (GK 2005/05/03)

  3. Changed: The template argument of BlockMatrixArray was changed to number, equal to the same argument of the used BlockVector. Furthermore, its constructor requires an additional argument of type VectorMemory<Vector<number> > providing space for auxiliary vectors. Since the entries are now of type PointerMatrixBase, even matrices with blocks of different types can be constructed.
    (GK 2005/03/21)

  4. Changed: The GeometryInfo::vertices_adjacent_to_line function has been renamed to GeometryInfo::line_to_cell_vertices to be named analogous to the face_to_cell_vertices, face_to_cell_lines and child_to_cell_coordinates functions.
    (RH 2005/03/14)

  5. Changed: the file multigrid/mg_dof_tools.h was renamed to multigrid/mg_tools.h in order to match the name of the class contained.
    (GK 2005/03/09)

  6. Changed: DoFTools::make_flux_sparsity_pattern, MGTools::make_flux_sparsity_pattern and similar functions in these classes do not receive arguments of type FullMatrix<double> anymore. Instead, they get a Table<2,DoFTools::Coupling>, which contains more meaningful enums.
    (GK 2005/03/09)

  7. Changed: Multigrid::Multigrid receives an argument determining the type of multigrid cycle instead of the minimum and maximum levels. The latter were rarely used anyway and can be modified by set_minlevel() and set_maxlevel()
    (GK 2005/03/09)

General

  1. New: The step-19 tutorial demonstrates handling of parameters from a parameter file, as well as some simple techniques for merging output from parallel computations.
    (WB 2005/09/09)

  2. Fixed: The linking of PETSc libraries into the static libpetsc.g.a and libpetsc.a libraries (located in deal.II/lib) has now been fixed.
    (RH 2005/08/26)

  3. New: The step-18 example program shows how to solve a quasi-static elasticity problem with moving meshes, and this all in parallel.
    (WB 2005/08/11)

  4. Changed: The files deal.II/include/grid/geometry_info.h and deal.II/source/grid/geometry_info.cc have been moved to base/include/base and base/source, respectively. A redirection header file has been left in the old location for compatibility.
    (GK, 2005/07/19)

  5. Changed: Cygwin has problems linking against deal.II DLLs if you link against more than one dimension dependent library. The linker might issue error messages about multiple defined symbols. This is now detected, and the linker is forced to ignore these errors. However, if you accidentally defined symbols twice you might have a hard time debugging now... In this case remove the -Xlinker –allow-multiple-definition flag from Make.global_options.
    (Ralf B. Schulz, 2005/07/13)

  6. Changed: Under Cygwin, linking against LAPACK and UMFPACK did not work. This is now fixed in the Makefiles. Changes only affect Cygwin.
    (Ralf B. Schulz, 2005/07/02)

  7. New: The latest version of UMFPACK, version 4.4, has been imported.
    (WB, 2005/06/30)

  8. Fixed: The documentation pages did not contain information about the Threads::spawn functions. This is now fixed.
    (WB, 2005/05/12)

  9. Fixed: The step-17 example program had a stupid mistake in that it initializes the pcout variable with an uninitialized value of mpi_communicator. While this seems to have worked for some older MPI implementations, this is no longer the case on some other systems. It is now fixed.
    (WB, 2005/04/18)

  10. New: If there are references to other example programs in any of the step-XX programs, then they will now show up as crosslinks in the HTML version for simpler navigation of the tutorial.
    (WB, 2005/04/04)

  11. New: The configuration script can now enable special optimizations for x86-like processors if called with the –with-cpu=... option. This can decrease computation time by up to 30% on certain systems. The configuration flag has already existed for PowerPC64 processors, but was not documented. Documentation has been added.
    (Ralf B. Schulz, 2005/03/10)

  12. Fixed: When compiling shared libraries on CygWin systems, warnings concerning the -fPIC option were issued by the compiler. This is now fixed. Also, configure now issues a message at the end that you should include the DLL-path in your .bash_profile file on these systems.
    (Ralf B. Schulz, 2005/03/10)

  13. Fixed: On certain systems running CygWin, a call to socket functions like gethostname() could cause deal.II to hang. The reason seems to be that the call disables long double computations which revert to just double precision. This then leads to an endless loop in computing weights for quadrature points because the convergence criterion cannot be reached with simple double precision. This is now fixed by disabling the call to gethostname() on these systems. A new preprocessor variable, DEAL_II_BROKEN_SOCKETS has been added to base/config.h which is defined on affected systems.
    (Ralf B. Schulz, WB, 2005/03/02)

  14. Fixed: The step-16 example program wasn't listed in the navigation bar of the tutorial section, although it was in the table of contents. This is fixed now.
    (WB, 2005/02/09)

base

  1. New: Class PathSearch allows to find a file in a sequence of directories and by appending suffixes. The class generates the complete file name including directory prefix and suffix such that it can be used for subsequently opening the file.
    (GK, 2005/09/14)

  2. Extended: The ParameterHandler class now does a much better job generating output in the print_parameters() function if parameters have documentation strings attached to them. See the step-19 example program output for this.
    (WB, 2005/09/12)

  3. New: There is now a namespace Utilities that contains functions that are not particularly specific to finite element codes, but are needed in various contexts of application programs anyway.
    (WB, 2005/08/11)

  4. Changed: ParameterHandler::get_bool() only accepted "true" or "false" as boolean values, now it also considers "yes" and "no" as "true" and "false", respectively.
    (Ralf B. Schulz, 2005/07/19)

  5. Removed: The write_multigrid flag in DataOutBase::DXFlags has been removed, since it wasn't used anywhere.
    (WB, 2005/07/14)

  6. New: A function deal_II_exceptions::disable_abort_on_exception now allows to disable program abortion when an assertion fails. This is used in regression tests.
    (Ralf B. Schulz, 2005/07/13)

  7. Improved: The QProjector now has functions project_to_face and project_to_subface returning a Quadrature object
    (GK, 2005/07/12)

  8. Changed: The ParameterHandler::print_parameters function now puts two newlines between regular entries and subsection listings for better readability.
    (WB, 2005/07/05)

  9. Changed: The ParameterHandler::print_parameters function now omits printing subsections if they and the contained sub-subsections contain no entries.
    (WB, 2005/07/05)

  10. Changed: Some of the dimension independent functions in the DataOutInterface class have been moved into the DataOutBase class that does not depend on any dimension template parameters. Since the latter is a base class of the former, there should be no problems for application programs.
    (WB, 2005/07/01)

  11. Fixed: Several of the functions in class ConstantFunction did not check whether the component handed to them was valid. In essence, even a scalar function could be evaluated for component 42, and the function ignored how many components it was declared to have. This is now fixed.
    (WB, 2005/06/30)

  12. Changed: The functions in class ExceptionBase have been renamed to conform to our coding conventions that function names be all lower-case with words separated by underscores. This is technically an incompatible change, since these functions were publicly visible, but were usually hidden behind macros and not used anywhere explicitly in the library; we hope that this also holds for external code.
    (WB, 2005/06/30)

  13. New: The GNU C library supports access to the call stack. For systems using this library, the ExceptionBase class now uses these functions to outputs the callstack when the exception is created.
    (Ralf B. Schulz, 2005/06/30)

  14. Improved: The class Quadrature has a new constructor generating the dim-dimensional tensor product of a one-dimensonal formula directly.
    (GK, 2005/06/10)

  15. New: The class Polynomials::RaviartThomas implements Raviart-Thomas polynomials of arbitrary order in 2d and 3d.
    (GK, 2005/05/30)

  16. New: The Polynomials::Lagrange class allows generation of Lagrange interpolation polynomials for arbitrary point sets. In order to get better interpolation for higher order polynomials, QGaussLobatto has been added to produce interpolation point sets clustering at the boundary of a cell (weights are not computed yet).
    (GK, 2005/05/30)

  17. New: The QAnisotropic class allows generation of quadrature rules of different order in each space dimension.
    (GK, 2005/05/24)

  18. New: The Tensor classes now have member functions that compute the Frobenius norm and its square. There are also global operator* functions that compute the contraction over a pair of indices of tensors.
    (WB, 2005/04/06)

  19. New: The DataOutBase class now allows to write data in a new intermediate format that basically dumps the raw information available in patches.
    (WB, 2005/04/05)

  20. New: The DataOutReader class allows to read data back in from a file into which it has been written using intermediate format. From there, it can then be converted into any of the supported graphics formats.
    (WB, 2005/04/05)

  21. New: There is now a operator >> (std::istream &in, Point<dim> &p), a function that had apparently been missing for a long time already.
    (WB, 2005/04/05)

  22. New: The new function double_contract contracts two tensors of rank 4 and 2 into a tensor of rank 2, by contracting over two indices at the same time.
    (WB, 2005/03/29)

  23. New: The new function TableIndicesBase::sort allows to sort the indices in ascending order. This is useful for cases where the order of indices is irrelevant (for example in symmetric tables).
    (WB, 2005/03/29)

  24. New: There is a new class SymmetricTensor that provides storage and operations for symmetric tensors.
    (WB, 2005/03/28)

  25. New: Class Subscriptor receives a text argument allowing to identify the violating pointer more easily. The additional feature is being incorporated into SmartPointer constructors throughout the library.
    (GK, 2005/03/16)

  26. New: Class FunctionParser. Wrapper class for the fparser library (see https://warp.povusers.org/FunctionParser/).
    (Luca Heltai, 2005/03/07).

  27. Fixed: The class MultipleParameterLoop::UserClass had only virtual abstract functions but no virtual destructor. This caused warnings with some compilers, and is generally bad practice anyway. This is now fixed. The same holds with respect to the class DataOutInterface.
    (WB, 2005/02/20)

lac

  1. New: The new function PetscWrappers::VectorBase::set allows to set several vector elements at once.
    (WB, 2005/08/10)

  2. New: There are now functions PetscWrappers::MatrixBase::clear_row and clear_rows that allow to set the elements of a row of a matrix to zero, without having to traverse the individual elements.
    (WB, 2005/08/10)

  3. Fixed: SparsityPattern::block_write neither wrote the number of columns of the pattern, nor the flag for optimizing the diagonal, and SparsityPattern::block_read did not attempt to read this data. Both is fixed now.
    (GK, 2005/06/24)

  4. Improved: SparseDirectUMFPACK now has the complete interface of a preconditioner class. Therefore, it can be used in iterative solvers and in multigrid smoothers.
    (GK, 2005/05/10)

  5. Fixed: The PETSc matrix iterators had trouble when some rows of a matrix were empty. This has now been mostly fixed.
    (WB, 2005/05/02)

  6. Fixed: The PETScWrappers::MPI::SparseMatrix class had functions that allow to take a pre-existing sparsity pattern as the basis for entry allocation. These functions had an option to allow pre-setting these entries in the underlying data structures, but this option was disabled by default because of unresolved questions about its effectiveness. This has now been fixed: The code now properly initializes these elements, and makes the resulting matrix much faster to use.
    (WB, 2005/04/04)

  7. New: The ProductSparseMatrix implements the product of two rectangular sparse matrices with the same value_type
    (GK, 2005/03/11)

  8. New: The PreconditionRichardson implements a Richardson preconditioner.
    (GK, 2005/03/10)

  9. Fixed: The BlockSparseMatrix class had no local typedef value_type like all other classes, which made it a little awkward to use in some places. This has now been fixed.


    (WB, 2005/03/03)

  10. Fixed: The PETScWrappers::MatrixBase class documented that adding or setting a value that hasn't been in the sparsity pattern before will lead to an exception being thrown. This is of course wrong: PETSc allocates matrix entries dynamically, as needed. The documentation is now fixed.
    (WB, 2005/03/03)

  11. New: The SparseMatrix iterators had no operator >, only an operator <. The missing operator is now implemented. The same holds for the FullMatrix class.
    (WB, 2005/03/01)

  12. Fixed: The SparseMatrix iterators could not be compared using operator <: the compiler complained that a private member was accessed. This is now fixed.
    (WB, 2005/03/01)

deal.II

  1. Removed: The class FiniteElementBase has been removed and all its functions are now in FiniteElement.
    (GK, 2005/08/25)

  2. New: class DoFTools now has two functions compute_row_length_vector, one for equations and one for systems. These give a much finer estimate for the size of the sparsity pattern required than DoFHandler::max_couplings_between_dofs. This is particularly true for systems with few couplings.
    (GK, 2005/08/24)

  3. Remove: Due to the reimplementation of the 3d reordering algorithm in GridReordering two years ago, the CellData::rotate function got obsolete. CellData::rotate is now removed.
    (RH, 2005/08/09)

  4. Fixed: It was possible to compare iterators into different DoFHandler objects for equality and inequality as long as the underlying triangulation object was the same. This doesn't make much sense, however, and even sometimes declared to iterators equal if only they had the same triangulation, refinement level, and index. Comparing iterators into different containers is now completely disallowed.
    (WB, 2005/08/08)

  5. New: The DataOutStack::add_data_vector function now also allows to give only a single name even if the data is vector-valued. It then makes up names for the individual components by adding numbers to the name, just like the DataOut class already does for a long time.
    (WB, 2005/07/29)

  6. New: The DataOutStack class can now also be used to stack two-dimensional time or parameter dependent data into a 3d output.
    (WB, 2005/07/25)

  7. New: Function FETools::compute_face_embedding_matrices allows for automatic computation of embedding matrices on faces under the sole assumption that the coarse grid space is embedded into the fine grid space. In particular, no interpolation points are required.

    Using this function, constraint matrices can be computed in a general way.
    (GK, 2005/07/14)

  8. Improved: All GridIn::read_* functions now call GridReordering::invert_all_cells_of_negative_grid. This way, also misoriented grids are represented in the right orientation within deal.II.
    (RH 2005/07/06)

  9. Improved: Triangulation<3>::create_triangulation now checks that all cells have positive volume. If not, an exception is thrown. In that case use the GridReordering::invert_all_cells_of_negative_grid function, see below, to fix this.
    (RH 2005/07/06)

  10. New: There is now a GridReordering::invert_all_cells_of_negative_grid function implemented in 3d which checks if some/all cells have negative volumes. If all cell have negative volume then the whole grid is reoriented. An assertion is thrown if only a subset of cells have negative volumes, as then the grid might be broken.
    (RH 2005/07/06)

  11. New: There is now a new GridTools::cell_measure function. However, it is mostly for internal use. Use cell->measure() instead.
    (RH 2005/07/06)

  12. Improved: cell->measure() used to give the absolute value of the cell measure. It now gives the measure with the correct sign. This is useful to find wrongly oriented cells in 3d with negative volumes.
    (RH 2005/07/05)

  13. Improved: The class FiniteElementData now stores information on the Sobolev space a finite element space conforms with.
    (GK 2005/06/29)

  14. New: Added function FiniteElementBase::component_to_system_index which was referred to in the documentation, but was missing.
    (Ralf B. Schulz, 2005/06/30)

  15. Improved: The function DoFTools::count_dofs_per_component and its counterpart in MGTools got an additional argument. This argument allows to count the degrees of freedom of nonprimitive vector valued elements only once, instead of in every component. Although this argument defaults to the previous behavior, it had to be put into the argument list ahead of target_component in order to make use of default arguments more efficiently. The old order of arguments can still be used through a wrapper function.
    (GK 2005/06/22)

  16. Improved: The GeometryInfo::child_cell_on_face, face_to_cell_vertices and face_to_cell_lines now have an additional face_orientation argument, which has no effect in 2d and which defaults to true (standard orientation) in 3d. Now these functions return the right values also for the case of non-standard oriented faces in 3d. This avoids several awful pieces of code including questioning face_orientation and using child_switch_tables.
    (RH, 2005/06/16)

  17. Changed: The method FETools::lexicographic_to_hierarchic_numbering now takes a FiniteElementData instead of a FE_Q object. Now this function can also be called by the FE_Q constructor which avoids code duplication.
    (RH, 2005/06/13)

  18. New: The method create_mass_matrix in class MatrixCreator can now handle vector valued finite elements. A similar change was applied to create_right_hand_side and create_boundary_right_hand_side in VectorTools. These two changes now make the project function work also for Raviart-Thomas elements and other vector valued FEs. This is very useful, if some initial conditions have to be specified.
    (Oliver Kayser-Herold, 2005/06/03)

  19. New: The DataOut class now supports Eulerian Mappings. If a solution is computed on a deformed mesh, the output file generated by the DataOut now shows the solution also on the deformed mesh. This is an option and requires the mapping to be specified as additional parameter to build_patches.
    (Oliver Kayser-Herold, 2005/05/31)

  20. New: The MappingQ1Eulerian class can now cope with different vector types for the Euler vector. This is useful if it should be used with the PETSc wrapper classes. The desired vector type can be specified as template parameter.
    (Oliver Kayser-Herold, 2005/05/31)

  21. New: The FE_RaviartThomasNodal implements Raviart-Thomas elements using function values in Gauss quadrature points on edges and in the interior for its node values. The implementation is restricted to Cartesian mesh cells right now, but works in 2D and 3D.
    (GK, 2005/05/30)

  22. Improved: The Mapping::transform_* functions accept VectorSlice instead of Vector, thus allowing more flexibility.
    (GK, 2005/05/24)

  23. New: The MatrixTools::apply_boundary_values function now also works for PETSc sequential and parallel matrices.
    (WB, 2005/05/05)

  24. Improved: The function GridIn::read now searches for files using the mechanism provided by the class PathSearch. Furthermore, a library of input meshes has been started in lib/meshes.
    (GK, 2005/05/03)

  25. Fixed: The DataOut class did not work properly if the DataOut::first_cell and DataOut::next_cell functions were overloaded and cell data was to be output; in that case, data from the wrong cells was written out. This is now fixed. In contrast to this, nodal data was never affected.
    (WB, 2005/04/20)

  26. Improved: By employing the new GeometryInfo::line_to_cell_vertices, GeometryInfo::face_to_cell_vertices and GeometryInfo::face_to_cell_lines functions the Triangulation::create_triangulation functions are now implemented independent of given conventions for the numbering of vertices, lines and faces.
    (RH, 2005/03/11)

  27. New: The new GeometryInfo::line_to_cell_vertices function maps line vertex numbers to cell vertex numbers.
    (RH, 2005/03/11)

  28. New: The new GeometryInfo::face_to_cell_lines function maps face line numbers to cell line numbers.
    (RH, 2005/03/11)

  29. New: The new GeometryInfo::face_to_cell_vertices function maps face vertex numbers to cell vertex numbers.
    (RH, 2005/03/11)

  30. Fixed: There was a bug in the KellyErrorEstimator class that resulted in assertions being thrown when run with multithreading enabled. This is now fixed.
    (WB, 2005/03/10)

  31. Changed: The Triangulation<2>::execute_refinement function has been re-implemented to accommodate future developments. This change results in different ordering and indexing of lines and vertices. This leads to a change in the ordering of vertices in output files generated by GridOut for refined grids.
    (RH, 2005/03/09)

  32. Fixed: The class MGDoFHandler had trouble when it encountered a triangulation that had unused vertices, something that happens when one coarsens an existing triangulation. In that case, it would throw unjustified exceptions. This is now fixed.
    (WB, 2005/03/01)

  33. Fixed: The class Triangulation::RefinementListener had only virtual abstract functions but no virtual destructor. This caused warnings with some compilers, and is generally bad practice anyway. This is now fixed.
    (WB, 2005/02/22)

  34. New: Function FETools::compute_embedding_matrices allows for automatic computation of embedding matrices under the sole assumption that the coarse grid space is embedded into the fine grid space. In particular, no interpolation points are required.
    (GK, 2005/02/08)

  35. Fixed: Several wrong assertions in the Raviart-Thomas finite element class have been fixed, that were triggered when integrating face terms.
    (Oliver Kayser-Herold, 2005/01/24; WB, 2005/01/31)