Reference documentation for deal.II version GIT relicensing-397-g31a1263477 2024-04-16 03:30:02+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.0 and 5.1

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 call MGTransferBlock::build_matrices and to the same function in derived classes receaves a DoFHandler as an additional argument. It is needed to prebuild the transfer between vectors and multigrid vectors, since the loop over all cells is to slow.
    (GK 2004/08/27)

  2. Changed: Previously, parallel PETSc matrices only took the sizes of the matrix and the number of rows to be stored locally as arguments. They chose the partitioning of columns to be the same as that for the rows. However, this does not work for non-quadratic parallel matrices, and leads to very hard to find errors. Therefore, all constructors and reinit functions of the parallel sparse matrix classes now take an additional argument indicating the partitioning of columns of the matrix.
    (WB 2004/06/02)

General

  1. New: Support of shared libraries under Cygwin / Windows systems. Shared libraries are used as default. To use, make sure the library path is included in your PATH environment variable.
    (Ralf B. Schulz, 2004/12/20)

  2. Fixed: Examples do not use obsolete classes QGaussN anymore.
    (GK 2004/12/18)

  3. Fixed: Configuration scripts were changed to allow any file suffix for shared and static libraries to allow in the future the creation of dlls under cygwin.
    (Ralf B. Schulz, 2004/12/17)

  4. New: Configuration now detects the Intel Fortran compiler and can set compilation flags accordingly.
    (WB 2004/11/04)

  5. Extended: deal.II 5.0.0 didn't work with the PETSc release 2.2.1 (which came out after we released version 5.0.0). This should now be fixed: deal.II can be linked against both PETSc 2.2.0 and 2.2.1.
    (WB 2004/10/07)

  6. Improved: The documentation generated by Doxygen now states the header file defining a class. Furthermore, all deal.II exceptions are listed as classes and will soon be found in the module Exceptions.
    (GK 2004/09/16)

  7. New: configuration option –with-umfpack for using the UMFPack version and enabling the class SparseDirectUMFPACK, both included by Wolfgang.
    Deal.II comes with its own copy of the UMFPACK library, courtesy of its author. In order to use, follow the steps listed here. Note that UMFPACK comes with its own license; to use UMFPACK, please read the ReadMe file and make sure that you agree with its license.
    (GK 2004/08/25)

  8. Fixed: None of the formulas in the step-8 tutorial program web page were visible. This is now fixed.
    (WB 2004/06/29)

base

  1. New: The MultithreadInfo class now also detects multiple processors on Mac OS X.
    (Helmut Müller 2004/11/29)

  2. New: The TableHandler::write_tex now accepts the additional boolean argument with_header which is set to true by default and tells the function whether to add the latex header and footer (i.e. the \documentclass{...}, \begin{document} and \end{document} stuff) to the table.
    In addition to this, there are two new members in the above class: TableHandler::tex_set_table_caption and TableHandler::tex_set_table_label to add a caption and a label to the tex generated table.
    (Luca Heltai 2004/10/29)

  3. Fixed: DataOutBase::write_tecplot for dim=2 and spacedim=3 sometimes did not write the variable name z when only outputting faces of cells. This is now fixed.
    (RH 2004/10/29)

  4. New: a class template VectorSlice allows access to consecutive portions of a vector.
    (GK 2004/09/16)

  5. New: The classes TableIndices<N> and Table<N,T> are now implemented also for N=7. The Table<N,T> class represents an N-dimensional array and might replace the N-times-nested-use of the std::vector class.
    (RH 2004/08/13)

  6. New: Class TableIndices now has operators that check for equality and inequality of objects.
    (WB 2004/07/28)

  7. New: A class PointerComparison for comparing pointers that may or may not be of the same type.
    (WB 2004/06/22)

  8. Removed: The ParameterHandler class contained a remnant from back in 1997 when it was modeled after a similar class in DiffPack: it had a status flag that one could obtain via the ok function. It was never really used for anything, and has thus finally been removed. The ok is consequently gone as well.
    (WB 2004/06/06)

  9. New: An object of the new ConditionalOStream class allows to print to an output stream depending on a condition, which is active or not. This is particular useful for parallel computations when only one process should print to standard output, while in all other processes we simply want output suppressed.
    (RH 2004/05/26)

lac

  1. Fixed: PETSc had changed some of its interfaces in version 2.2.1, which prevented deal.II from working with it (it couldn't be compiled at all). We have added checks that make sure that it can now again be compiled with PETSc versions 2.1.6, 2.2.0, and 2.2.1.
    (WB 2004/10/07)

  2. New: A class PreconditionLU which provides a wrapper to the complete LU decomposition preconditioner of PETSc. Furthermore a class SolverPreOnly was implemented. It is a wrapper for the PETSc solver type KSPPREONLY, which only applies the preconditioner. In conjunction with PreconditionLU this provides a simple direct solver, which could be used for small to medium sized problems on a single processor machine.
    (Oliver Kayser-Herold 2004/07/27)

  3. Improved: VectorTools::point_difference used to use an algorithm to find the cell the given point is in that was linear in the total number of active cells. It has been rewritten to use GridTools::find_active_cell_around_point which is only logarithmic in its complexity.
    (WB 2004/07/07)

  4. Fixed: Block matrix iterators could get into all kind of interesting (and invalid) states when some of the blocks had empty rows. In this common case, we would frequently skip elements when looping over the elements of a block matrix. These cases should now be fixed.
    (WB 2004/07/07)

  5. Removed: Block matrix iterators used to have a function it->index() that returned something like the position within a row. However, this was fragile, and has been removed. If you want an ordering of elements within a row, use the operator < to compare iterators.
    (WB 2004/07/07)

  6. Improved: The PETScWrappers::SolverGMRES::AdditionalData class now takes an additional flag indicating the use of left or right preconditioning.
    (RH 2004/06/24)

  7. Improved: The SparseDirectMA27 class can now handle float as well as double input matrices and vectors.
    (WB 2004/06/23)

  8. Fixed: The SparseMatrix::vmult-type functions vmult, Tvmult, vmult_add, and Tvmult_add take two different template arguments for input and output vectors, but were only instantiated in case the arguments were the same, and could also not be compiled if they weren't. Both problems are now fixed.
    (WB 2004/06/22)

  9. Improved: The CompressedSparsityPattern class used one of the C++ standard containers to store the column indices of nonzero entries in a sparse matrix. This proved to be inefficient since it requires the allocation of 20 bytes each time an element was added, which for large matrices can be millions of times. The new storage format uses a more compact data structure, and a cache that requires memory allocation only every 8 additions, on average. This should significantly reduce the total amount of memory required as well as memory fragmentation. It also cuts run-time for element addition by more than half.
    (WB 2004/06/21)

  10. Fixed: CompressedSparsityPattern::max_entries_per_row() ignored the first row and thus sometimes returned a value that was too low. This is now fixed.
    (WB 2004/06/21)

  11. Fixed: BlockSparseMatrix::clear() did not do what it was supposed to do: it emptied the individual blocks and removed them, but it still kept the number of blocks unchanged. Subsequent accesses to these blocks, or to their information yielded segmentation faults.
    (WB 2004/06/02)

  12. New: Block matrices and vectors have been factored into abstract base classes and concrete implementation classes. While the previous classes still exist in all their functionality, this allowed us to now also have block matrices and vectors for PETSc sequential and parallel objects.
    (WB 2004/06/02)

  13. New: Vector and block vector classes had a commented out template constructor constructing such a vector from a vector object with a different template argument, for example constructing a Vector<double> from a Vector<float>. This constructor has been commented out a long time ago due to a compiler bug in which the explicit keyword on template constructors was ignored, a fact that is dangerous since it may lead the compiler to generate temporaries without our ado. This bug is now detected during configuration time of the library, and these constructors are available whenever the compiler does not contain this bug.
    (WB 2004/06/02)

  14. New: In analogy to the PETSc vector classes, the PETSc matrix classes now also have member functions local_range, in_local_range, and local_size.
    (WB 2004/06/02)

  15. New: Parallel PETSc matrix and vector classes now have member functions get_mpi_communicator that returns the MPI communicator object these objects operate on.
    (WB 2004/06/02)

  16. Changed: The PETSc linear solver classes now take a constant, rather than a nonconstant reference to the MPI communicator to be used. This prevents some unnecessary compiler problems in conjunction with the new get_mpi_communicator function.
    (WB 2004/06/02)

  17. New: Parallel and sequential PETSc sparse matrix classes can now be initialized (via either constructor or reinit functions) with a compressed sparsity pattern object, allowing for more efficient preallocation of nonzero entries.
    (WB 2004/06/02)

deal.II

  1. Improved: GeometryInfo has two new fields unit_normal_direction and unit_normal_orientation, indicating the direction of the unit normal vector for each face of the reference cell.
    (GK 2004/12/18)

  2. Fixed: In rare cases of 3d meshes with a certain topology, we triggered an assertion in TriaAccessor::neighbor_child_on_subface. It turns out that the code actually computes the correct answer, but the assertion had a condition that doesn't always have to be satisfied. This bogus assertion is now fixed.
    (WB 2004/11/12)

  3. Fixed: The GridGenerator::cylinder function in 3d assigned the wrong boundary value to the top and bottom part of the cylinder if the half length of the cylinder was not equal to 1. This is now fixed.
    (Ralf Schulz 2004/10/27)

  4. Improved: Now the FE_Q class supports hanging node constraints for elements of arbitrary polynomial degree also in 3D.
    (Oliver Kayser-Herold 2004/10/21)

  5. Fixed: The StraightBoundary<3>::get_new_point_on_quad did not work on general grids. This is now fixed.
    (RH 2004/10/15)

  6. Improved: The CylinderBoundary represented the hull of a circular tubes along the x-axis. It is now extended to allow for circular tubes also along the y- and z-axis.
    (RH 2004/10/15)

  7. Fixed: The ConstraintMatrix class had some algorithms that were linear in the number of constraints. Since these functions had to be called for each constraint, this resulted in a quadratic behavior. To make things worse, these algorithms traversed large memory blocks leading to a vast number of cache misses which made them really slow. This is now fixed: the algorithm is O(1) and should only access single elements in memory, and one 3d testcase is now a full 5 per cent faster on about 10 minutes runtime.
    (WB 2004/10/04)

  8. New: The GridOut::write_gnuplot function now supports curved boundaries also for dim==3.
    (RH 2004/09/20)

  9. Fixed: The documentation of the Triangulation class mentioned that no places in the library use or touch the user pointers. That is wrong, the SolutionTransfer class actually does. This is now properly documented.
    (WB 2004/09/15)

  10. Fixed: The DerivativeApproximation::approximate_second_derivative function produced wrong results ("not a number", or an exception instead of "zero") if the field it was given was constant. This is now fixed.
    (WB 2004/08/05)

  11. New: The MatrixTools::apply_boundary_values that works on block matrices and vectors is now templatized over the number type, i.e. it also works for float matrices and vectors.
    (WB 2004/06/22)

  12. New: The new FEValuesBase::get_cell function returns the current cell, i.e. the latest cell the FEValues object was reinited with.
    (RH 2004/06/22)

  13. Changed: The MatrixTools::local_apply_boundary_values function used to set the diagonal entries of boundary nodes to one. This is a really bad choice, and the algorithm we use now is much better. There are still a few problems when using this function for matrices that will be solved as a Schur complement; there is nothing we can do in that function in these cases, since we are lacking fundamental pieces of information, but the cases where this applies and the strategies to work with this problem anyway are now well documented in the documentation of the MatrixTools class.
    (WB 2004/06/07)

  14. Fixed: The GridGenerator::cylinder_shell function generated cells were all inside-out, i.e. had negative Jacobians. In usual finite element computations this simply leads to all components of the linear system being negated, so it is not harmful. It is fixed now anyway.
    (WB 2004/06/07)