Reference documentation for deal.II version 9.5.0
\(\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 3.0.0 and 3.1.0

This is the list of changes made between the deal.II releases listed above. All entries are signed with the names of the author.

General

  1. New: All identifiers that the C++ standard (see this page for the public draft – the standard itself is not available online for copyright reasons) mandates to be in namespace std:: are correctly prefixed by the namespace name. While previous gcc compilers accepted these names also without the prefix, gcc 3.0 will require them, as do some commercial compilers.
    (WB 2001/01/16)

  2. New: In multithreading mode, the compile flags now also have _REENTRANT defined. If this flag is defined, then the standard Unix headers also declare reentrant versions (with suffix _r) of many functions.
    (WB 2000/09/20)

  3. New: Major and minor version numbers of the deal.II library are now passed to the compiler as preprocessor variables DEAL_2_MAJOR and DEAL_2_MINOR. Their present values are 3 and 1, respectively. Variables of the same name are also available in Makefiles.
    (WB 2000/09/18)

  4. New: the step-9 example program is now ready, showing several advanced programming techniques in deal.II.
    (WB 2000/07/18)

  5. Changed: deal.II now uses the kdoc2 program to generate the API documentation. This makes up for much nices documentation and also works better than the previous kdoc1. A copy of kdoc2 is provided within the deal.II source tree.
    (WB 2000/06/28)

  6. Changed: when compiling files, the output generated by the make program now indicates also whether we are compiling for multithread mode, besides the information whether the file is compiled for debug or optimized mode.
    (Ralf Hartmann 2000/06/26)

  7. Fixed: the common/scripts/make_dependencies.pl script that sets up the dependencies for the make files had a problem when the path to the library included special characters such as ‘+’. This is now fixed.
    (WB 2000/06/15)

  8. New: the configure script now checks whether the getrusage function is properly declared (this function is used in the timer class). The problem is that on SunOS 4.x, this function exists, but is not declared in the right file (although it is listed in the man pages). We then have to declare it ourselves.
    (WB 2000/06/14)

  9. New: the configure script now enforces the compiler flags -ansi -pedantic when compiling in debug mode. This should force us to write more standard compliant code. (Since the ACE library is not standards conforming, the -ansi flag is not used when multithreading is requested.)
    (WB 2000/06/14)

  10. Improved: the configure script is now used to select the compiler options. Previously, selection of compiler options was done both in configure as well as in the global options Makefile common/Make.global_options.
    (WB 2000/06/02)

  11. Improved: Dependence on the files forward_declarations.h has been widely removed to improve compilation time
    (GK 2000/05/24)

  12. Fix: configure now uses config.guess to determine the operating system and hardware platform.
    (GK 2000/04/05)

  13. Changed: License is now deal.II Public License, restricting commercial use more explicitly.
    (WB/RH/GK)

base

  1. Improved: exceptions ExcIO and ExcOutOfMemory are defined globally now.
    (GK 2000/12/07)

  2. Improved: ParameterHandler now has a function log_parameters which allows output of all parameters to a log file.
    (GK 2000/12/07)

  3. New: almost all classes that store data now have a function memory_consumption that returns an estimate of the amount of memory (in bytes) used up by this class. Supporting functions to compute the size of STL vectors and other objects can be found the MemoryConsumption namespace.
    (WB 2000/11/27)

  4. New: Class FunctionDerivative computes finite difference approximations of a directional derivative of a Function.
    (GK 2000/11/13)

  5. New: The DataOutBase and DataOutBase::Patch classes have been changed so as to allow output of objects that have an other dimension than the surrounding space, for example writing faces instead of cells (this might be useful to write only external faces in 3d computations).
    (WB 2000/09/07)

  6. New: There is a new distance function in the Point class that calculates the distance between two points.
    (Ralf Hartmann 2000/09/06)

  7. New: Timer now uses the system function getrusage (RUSAGE_CHILDREN, .) that is need in multithreading. But still the Timer class does not yet work in multithreading, as getrusage with flag RUSAGE_CHILDREN gives always 0 (at least on Solaris7).
    (Ralf Hartmann 2000/08/25)

  8. New: There are now a set of functions outer_product that for the outer product of tensors.
    (WB 2000/07/23)

  9. New: The classes Patterns::Integer and Patterns::Double now allow that a range may be specified in which the parameter shall be. Furthermore, instead of a class, Patterns is now a namespace, so it can be reopened in case you want to write another pattern class and want to put it into the same namespace.
    (WB 2000/07/21)

  10. New: classes QMilne and QWeddle for closed Newton-Cotes-formulæ of orders 7 and 9, respectively.
    (GK 2000/07/07)

  11. New: There is now a function invert (Tensor<2,dim>) that returns the inverse of a tensor of rank 2.
    (WB 2000/04/14)

  12. New multithreading scheme is implemented.
    (WB 2000/04/13)

  13. Improved: Subscriptor prints the real class name if a subscribed object is deleted.
    (GK 2000/04/12)

lac

  1. Fixed: SparseILU had two bugs which are now fixed.
    (Oliver Rheinbach, 2001/02/02)

  2. Improved: block classes have a variable number of blocks now, not a template parameter.
    (GK 2000/12/07)

  3. New: BlockDiagonalMatrix is a template that generates a matrix with multiple copies of the same block on the diagonal.
    (GK 2000/12/07)

  4. Improved: Krylov-space solvers do not use the function residual anymore. This allows easier implementation of new matrix classes. SolverGMRES now also counts the first iteration step. Finally, all solvers inherit a Subscriptor.
    (GK 2000/12/07)

  5. New: There are now functions SparsityPattern::symmetrize and SparseMatrix::symmetrize that generate a symmetric matrix from a non-symmetric one.
    (WB 2000/12/02)

  6. New: almost all classes that store data now have a function memory_consumption that returns an estimate of the amount of memory (in bytes) used up by this class.
    (WB 2000/11/27)

  7. New: SparseMatrix<number>::n_actually_nonzero_elements returns the number of entries that are actually nonzero.
    (Ralf Hartmann 2000/11/22)

  8. Fixed: unlike announced in the docs, the FullMatrix::norm2 function did not return the Frobenius norm of a matrix, but its square. This is fixed now.
    (GK 2000/08/28)

  9. Improved: PreconditionBlockSOR::Tvmult() is implemented.
    (GK 2000/07/07)

  10. Improved: The breakdown criterion of SolverBicgstab can be changed by the use of SolverBicgstab::AdditionalData.
    (GK 2000/07/07)

  11. New: SolverRichardson has a transposed solver Tsolve(...). It uses the functions Tvmult(...) of the provided matrix and preconditioner.
    (GK 2000/07/07)

  12. Improved: FullMatrix::invert now inverts matrices of all sizes. If there is no hardcoded inversion, gauss_jordan() is used implicitly.
    (GK 2000/06/30)

  13. New: For recognizing a diverging solver before the maximum number of steps is reached, SolverControl returns failure also if the residual increases over the start residual by a specific factor. This factor is given to the SolverControl object by the set_failure_criterion function. After calling the latter function, checking of this additional failure criterion may again be disabled by calling clear_failure_criterion.
    (Ralf Hartmann 2000/06/26)

  14. Improved: The interface of preconditioner classes has changed. Preconditioners are now considered linear operators like matrices: they have members vmult and Tvmult instead of the old operator(). This will allow the implementation of further non-symmetric solvers.
    (GK 2000/06/20)

  15. New: there is now a function SparseMatrix::el that does mostly the same as SparseMatrix::operator(), but returns a zero if elements of the matrix are accessed that are not in the sparsity pattern. Thus, the new function allows to actually traverse rows or columns of the matrix without taking care of the sparsity pattern, while SparseMatrix::operator() should be used to write algorithms more efficiently.
    (WB 2000/06/02)

  16. Fix: SparsityPattern::print_gnuplot wrote rows and columns exchanged. Since most matrices have symmetric sparsity patterns, this has gone unnoticed by now.
    (WB 2000/05/30)

  17. Fix: the FullMatrix::Tvmult function suffered from the same problems as the FullMatrix::Tmmult function. This is now fixed as well.
    (WB 2000/05/26)

  18. New: Class PreconditionBlockJacobi.
    (GK 2000/05/24)

  19. New: SolverControl has an interface to ParameterHandler, defining and reading parameters from a file automatically.
    (GK 2000/05/24)

  20. New: BlockIndices: Class that manages the conversion of global indices into a block vector/matrix/... to the indices local to each of the blocks.
    (WB 2000/05/08)

  21. New: BlockSparsityPattern and BlockSparseMatrix: Classes that represent matrices that are composed of sparse matrices.
    (WB 2000/05/08)

  22. Fix: the FullMatrix::mmult and FullMatrix::Tmmult code don't resize their output argument any more, as this is not common style in the library. Furthermore, FullMatrix::Tmmult was utterly broken.
    (WB 2000/05/08)

  23. Change: the matrix_norm functions of sparse and full matrices are renamed to matrix_norm_square, since they in fact return the square of the norm. This should avoid confusion in some cases.
    (WB 2000/05/05)

  24. Fix: the `‘copy-like’' constructor of SparsityPattern that copies another object and adds some off-diagonals had a bug that caused an exception in some cases. This is now fixed.
    (WB 2000/05/04)

  25. New: SwappableVector: Class that allows to swap out the data of a vector to disk and reload it later on. It also has a function to preload the data before its use in a separate thread if the library is configured for multi-threading.
    (WB 2000/05/03)

  26. New: there are now functions Vector::swap and BlockVector::swap, as well as global functions swap(u,v) that exchange the data of two vectors without needing a temporary vector and without copying around data. Their run-time is therefore independent of the length of the vectors.
    (WB 2000/05/02)

  27. Fix: SolverCG counts steps properly.
    (GK 2000/04/25)

  28. Change: the solver classes in LAC lost their first template argument. Their names are now SolverXX<VECTOR>, where XX denotes the name of the solver (e.g. CG, GMRES, etc). Furthermore, the inheritance from Solver was made private to reflect the logical structure.
    (GK 2000/04/25)

  29. New: EigenInverse implements inverse iteration by Wieland.
    (GK 2000/04/20)

  30. New: EigenPower implements power method by von Mises
    (GK 2000/04/19)

  31. New: PreconditionBlockSOR::set_omega allows to change the relaxation parameter.
    (GK 2000/04/12)

  32. New: SolverXX: There is a virtual function print_vectors called in every step. It is void in the solver itself but can be used to print intermediate iteration vectors.
    (GK 2000/04/05)

deal.II

  1. Extend: DoFTools::extract_boundary_dofs now allows to also specify which boundary conditions shall be considered.
    (WB 2000/12/04)

  2. New: some arguments of the functions DoFHandler::n_boundary_dofs, DoFTools::extract_boundary_dofs, and DoFTools::map_dof_to_boundary_indices are changed from list to set, since that resembles more closely the purpose of the parameter, and makes computations slightly faster.
    (WB 2000/12/04)

  3. New: almost all classes that store data now have a function memory_consumption that returns an estimate of the amount of memory (in bytes) used up by this class.
    (WB 2000/11/27)

  4. New: The ConstraintMatrix::add_entries function add several constraints at once.
    (WB 2000/10/26)

  5. New: The DoFRenumbering::random function renumbers degrees of freedom in a random way.
    (WB 2000/10/22)

  6. New: The TriaAccessor now has a function point_inside that checks whether a certain point is inside a given cell.
    (Thomas Richter 2000/10/12)

  7. New: The FiniteElement has got two new functions transform_unit_to_real_cell and transform_real_to_unit_cell . They allow to transform points from reference (unit) cell to real cell and visa versa. transform_real_to_unit_cell involves a Newton iteration and works for all dimensions and all mappings used to transform from unit to real cell.
    (Ralf Hartmann 2000/10/12)

  8. Extended: The Triangulation class can handle boundary information in 3d as well (i.e. lines and quads in 3d with special material IDs).
    (Michael Stadler 2000/10/11)

  9. Extended: The GridIn class can now read 3D UCD data, including boundary information (i.e. lines and quads in 3d with special material IDs).
    (Michael Stadler 2000/10/11)

  10. New: The GridRefinement::refine_and_coarsen_optimize function implements an alternative way to flag cells for refinement and coarsening.
    (Thomas Richter 2000/10/10)

  11. Extended: The GridIn::delete_unused_vertices function now eliminates vertices from the input that are not referenced by any of the cells in the input file. This makes is simpler to delete some cells from the input file by hand, without the need to update the vertex lists, which can be tiring as several cells usually use each vertex. All functions in the GridIn reading grids in several input files call this function before passing the data to the triangulation object.
    (WB 2000/09/26)

  12. New: The GridIn class can now read the basics of grids in DB Mesh format.
    (WB 2000/09/26)

  13. Extended: The KellyErrorEstimator class is now able to estimate errors for several solution vectors at the same time, provided they live on the same DoFHandler object.
    (WB 2000/09/11)

  14. New: The DataOut_Faces class allows to output faces instead of cells. This might be handy for 3d computations if one is only interested in surface plots, or cuts through the domain.
    (WB 2000/09/07)

  15. Removed: The DataOut_Old class has finally gone for good. It was already deprecated in version 3.0, and has been superceded for a long time by the framework of classes around DataOutBase and DataOut.
    (WB 2000/09/07)

  16. New: There is now a function DoFHandler::n_boundary_dofs that takes the list of selected boundary indicators as a list of values, rather than the usual map of pairs of boundary indicators and function object pointers.
    (WB 2000/08/25)

  17. Changed: The map_dof_to_boundary_index functions have been moved from the DoFHandler to the DoFTools class, in order to further remove code from the big classes which is necessarily needed there.
    (WB 2000/08/25)

  18. New: there is now a class DataOutRotation that can be used to output data which has been computed exploiting rotational symmetry, on the original domain. Thus, the output is of one dimension higher than the computation was, where the computed solution is rotated around the axis of symmetry.
    (WB 2000/08/14)

  19. New: class HalfHyperShellBoundary and GridGenerator::half_hyper_shell generate a half shell, useful for computations with a shell domain and rotational symmetry.
    (WB 2000/08/08)

  20. Changed: The functions Triangulation::refine, Triangulation::coarsen, Triangulation::refine_and_coarsen_fixed_fraction, and Triangulation::refine_and_coarsen_fixed_number have been moved from the triangulation class to a separate class GridRefinement as they are not intricately bound to the triangulation but rather form a distinct class of functions that flag cells for refinement or coarsening based on error indicators.
    (WB 2000/07/28)

  21. New: DataOut::clear_input_data_references clears all reference to input data vectors and to the DoFHandler. This function may be useful after the patches have been built, to release memory as early as possible, in this case before the output is actually written.
    (WB 2000/07/26)

  22. New: class DerivativeApproximation approximates the norm of the gradient or second derivative of a finite element field on each cell from finite difference approximations.
    (WB 2000/04/14 and 2000/07/23)

  23. Fix: Add a missing assertions in FEValuesBase::get_function_*. If an ExcAccessToUninitializedField is now thrown then probably an update_values or update_gradients is missing in the UpdateFlags of a used FEValues. Adding this assertion uncovered several other errors which are now also fixed; these errors were dormant, since the values of finite elements are always computed for the presently available Lagrange elements, but would have been activated once there are other classes of elements.
    (Ralf Hartmann 2000/07/20)

  24. New: Class DoFRenumbering now has functions for cell-wise downstream renumbering for discontinuous elements. The parameters of the function sort_selected_dofs_back have been switched to match the interfaces of all other functions in this class.
    (GK 2000 Jour de Bastille)

  25. New: Function VectorTools::compute_mean_value() integrates the mean value of one component of a finite element function.
    (GK 2000/07/12)

  26. New: The new function get_face of FEFaceValues and FESubfaceValues returns an iterator of the present face. This is the face, for that the FE(Sub)FaceValues object was reinited the last time.
    (Ralf Hartmann 2000/06/26)

  27. New: classes FEDG_Px implement complete polynomial spaces of degree x on quadrilaterals. Since they have less degrees of freedom than FEDG_Qx, there is no continuous version for these elements. Implementation for P4 and 3D is still incomplete.
    (GK 2000/06/20)

  28. Fix: slight bug in DataOut::build_patches in multithreaded mode fixed.
    (Ralf Hartmann, 2000/05/29)

  29. New: class FETools performs interpolations and extrapolations of discrete functions from one FiniteElement to another FiniteElement. It also provides the local interpolation matrices that interpolate on each cell. Furthermore it provides the interpolation difference matrix id-Ih that is needed for evaluating (id-Ih)z for e.g. the dual solution z.

    Removed: The obsolete MatrixCreator::create_interpolation_matrix function is now removed.

    (Ralf Hartmann 2000/05/26)

  30. New: DoFTools::make_flux_sparsity_pattern can be optimized by providing two coefficient matrices.
    (GK 2000/05/25)

  31. Improved: VectorTools::integrate_difference allows for vector-valued weight functions. L1 and Linfinity norms are calculated correctly.
    (GK 2000/05/25)

  32. Changed: FE_DGx::restriction is not an interpolation any more but a local projection which is more reasonable for DG elements.
    (Ralf Hartmann 2000/05/22)

  33. Changed: enum MeshSmoothing is moved into the Triangulation class.
    (Ralf Hartmann 2000/05/18)

  34. New: Triangulation<dim>::patch_level_1 is a new mesh smoothing. A mesh of patch level 1 consists of patches, i.e. they consists of cells that are all refined at least once.

    Changed: As follows from the existence of this new smoothing, maximum_smoothing will include this smoothing.

    (Ralf Hartmann 2000/05/18)

  35. Changed: the MatrixTools::apply_boundary_values now uses a much faster algorithm when working on matrices with symmetric sparsity patterns. On the other hand, it does no more eliminate whole rows when a matrix has a non-symmetric sparsity pattern, or if the user (through a new flag) tells the function that this is not necessary, for example if the matrix itself is non-symmetric.

    For symmetric sparsity patterns, the algorithm now eliminates each boundary value in O(m*log(m)) steps instead of O(N*log(m)), where N=number of rows of the matrix, and m=number of entries per row. Note that m is roughly constant, irrespective of N, so the old algorithm became slower with finer grids, while the new one is O(1) for each boundary degree of freedom.

    (John Burnell, WB 2000/05/17)

  36. New: many functions are now templatized on the data type of the vector they take or return. They thus now support Vector<float>, but also BlockVector<...>. An incomplete and growing list of functions that were treated in this way is:

    • DoFAccessor::get_dof_values,
    • DoFAccessor::set_dof_values,
    • DoFAccessor::get_interpolated_dof_values,
    • DoFAccessor::set_dof_values_by_interpolation,
    • FEValues::get_function_values,
    • FEValues::get_function_grads,
    • FEValues::get_function_2nd_derivatives,
    • MatrixTools::apply_boundary_values,
    • Several functions in ConstraintMatrix.


    (WB 2000/05/16 and later)

  37. Changed: The computation of the Jacobian matrices in the FEValues class is now done more efficiently. The speedup is in the range of a factor of 40 for 3D.
    (John Burnell, WB 2000/05/16)

  38. Change: DoFTools::make_hanging_node_constraints () does not use the user flags any more, and can thus run in parallel more than once.
    (WB 2000/05/15)

  39. Extended: DoFTools::make_sparsity_pattern () now accepts a template parameter as sparsity pattern. This allows to use this function for the usual SparsityPattern, or for BlockSparsityPattern arguments.
    (WB 2000/05/15)

  40. New: DoFTools::extract_hanging_node_dofs () identifies nodes that will be constrained by hanging node constraints.
    (WB 2000/05/12)

  41. New: DoFRenumbering::sort_selected_dofs_back () sorts selected degrees of freedom to the end of the index range.
    (WB 2000/05/12)

  42. Change: the return value of DoFHandler::max_couplings_between_dofs () is bounded by DoFHandler::n_dofs().
    (Ralf Hartmann 2000/05/11)

  43. New: FEValuesBase::get_cell () returns present cell.
    (Ralf Hartmann 2000/05/11)

  44. Fix: FESystem::reinit() generated an exception if update_support_points was set.
    (WB 2000/05/10)

  45. New: IntergridMap::get_{source,destination}_grid functions return the grids for which the map was created.
    (WB 2000/04/19)

  46. Fix: in three space dimensions, the triangulation class over-estimated the necessary amount of memory needed upon refinement and allocated too much.
    (WB 2000/04/19)

  47. New: DoFTools::extract_boundary_dofs finds all degrees of freedom which are at the boundary and belong to specified components.
    (WB 2000/04/17)

  48. New: DoFTools::compute_intergrid_constraints allows to use different discretization grids for different variables.
    (WB 2000/04/15)

  49. New: DataOut::clear_data_vectors allows to re-use an object without deleting the DoFHandler.
    (GK 2000/04/05)

  50. New: class DoFPrintSolverStep prints intermediate vectors of a solver as finite element functions using DataOut.
    (GK 2000/04/05)