The deal.II news page
Author: the deal.II authors <authors@dealii.org>
Keywords: deal.II

## Changes between versions 3.2.0 and 3.3.0

This is a quite extensive list of changes made between versions 3.2.0 and 3.3.0 of deal.II. It is subdivided into changes made to the three sub-libraries base, lac, and deal.II, as well as changes to the general infrastructure, documentation, etc.

### General

1. New: Output for Tecplot has been added. It can be used by choosing output format «tecplot».
   (Benjamin Shelton Kirk 2002/01/29)

2. New: configuration detects whether the compiler has the include file `<ostream>`. Most files in the library then include this file over `<iostream>` to save compile time.
   (WB 2002/01/25)

3. Fixed: All example and test programs as well as a number of large applications have been checked against the memory checker "purify". Only three memory leaks were found and fixed. We believe that no major leaks exist in the library any more.
   (WB 2001/12/07)

4. New: Output for OpenDX has been added. It can be used by choosing output format «dx» (not yet for grid output). The data format is very basic now, but it is planned to improve this to make use of the excellent capabilites of OpenDX.

   Additionally, a directory `contrib/dx` has been added, containing visual programs for OpenDX. Programs for the existing output of data as a single vector are found in the subdirectory `single`.
   (GK 2001/12/07)

5. Fixed: Previously, the $(INCLUDE) variable in Makefiles included the values of the $INCLUDE environment variable. This is not desirable, since the compiler evaluates that variable anyway and the Makefile variable has `-I` prefixed to all paths while the environment variable has not.
   (WB 2001/11/29)

6. Removed: the option to generate printable documentation was removed. Since this comprised approximately 2000 pages and since we believe that the online documentation is rather good, this is probably no big loss.
   (WB 2001/11/29)

7. New: example program step-12. Discontinuous Galerkin discretization.
   (RH 2001/11/21)

8. New: deal.II now uses a file `config.h` for most global preprocessor defines, instead of an overly long list of compiler flags given on the command line.
   (WB 2001/10/27)

9. Changed: If available, the library now uses the C++ standard classes `istringstream` and `ostringstream` over the old classes `i/ostrstream`. The ./configure script finds out whether the new classes exist, or whether the backward compatibility classes are to be used.
   (WB 2001/10/25)

10. New: the ./configure script now recognizes gcc3.1 (i.e. presently prereleases of it) and sets compilation flags accordingly.
    (WB 2001/10/25)

### base

1. Fixed: For Mac OS X, the file `base/source/log.cc` needed to include `sys/time.h` in addition to `sys/resource.h`.
   (Alexis Herault, WB 2002/01/28)

2. Fixed: Private definitions of the copy constructor and assignment operator of the `ParameterHandler` class are now included in order to inhibit the (unintentional) use of default copy constructors.
   (RH 2002/01/22)

3. Improved: The cut-off functions `Functios::CutOffFunctionLinfty`, `Functios::CutOffFunctionW1`, and `Functios::CutOffFunctionCinfty` can be vector-valued now and optionally only a single componente can be selected.
   (GK 2002/01/10)

4. New: the `deal_II_exceptions::set_additional_assert_output` function allows to set additional output to be printed upon triggering an `Assert()` call. This is helpful for parallel applications where you only see the text of the message but do not know from which cluster node it stems.
   (WB 2002/01/10)

5. Changed: when an assertion fails in the `Assert()` function, the program is usually aborted. Don't abort it any more if there is an active C++ exception somewhere since we would lose its message if we aborted the program. In that case only report the error and write out an indication why we do not abort the program any more. On the other hand, also suppress output of further failed `Assert()` calls, since they often are follow-ups of the first one.
   (WB 2002/01/09)

6. New: `ExcFileNotOpen` can be used after initializing an `fstream` object. This allows to avoid some cryptic `ExcIO`s.
   (GK 2001/12/18)

7. Changed: The `OutputStyle` enum used to indicate the output format has been moved into the `ParameterHandler` class.
   (WB 2001/11/30)

8. Fixed: In the `ParameterHandler` class, we leaked 8 or 12 bytes of memory per declared parameter. This is now fixed.
   (WB 2001/11/28)

9. New: `Functions::CutOffFunctionCinfty`, `Functions::CutOffFunctionW1`, and `Functions::CutOffFunctionLinfty` implement functions with support in an arbitrary ball and differentiability as indicated by their name
   (GK 2001/10/24)

10. Fixed: The `DataOutBase::EpsFlags` class forgot to declare the reverse grey scale function as one possible input for the color function for the `ParameterHandler` class. This is now possible.
    (WB 2001/10/10)

### lac

1. Improved: all sparsity pattern classes have a function `exists`, allowing you to check whether a certain index pair has been allocated in the pattern.
   (GK 2002/02/01)

2. Fixed: Allocation of temporary vectors in `FilteredMatrix::allocate_tmp_vector` is now faster since it does no more copy the value of the template vector.
   (WB 2001/11/22)

3. Fixed: The `FilteredMatrix::allocate_tmp_vector` function had a bug with block vectors.
   (WB 2001/11/22)

4. Improved: reinit function of `Vector` and `BlockVector` allows use of a vector with different number type.
   (GK 2001/11/21)

5. Fixed: when checking for convergence in linear solvers in `SolverControl::check`, we first checked whether the maximal iteration count was reached, and only then whether the target residual was achieved. In cases, where the target residual was only reached in the very last allowed iteration, this led to a failure notice of the linear solver, rather than to a success message. This is now fixed.
   (WB 2001/11/19)

6. New: the `SparseDirectMA27/47` classes now provide access to Mutex locks for external synchronisation.
   (WB 2001/11/14)

7. Fixed: an error in the definition of the `SolverMinRes::solve` function prevented its compilation under some circumstances.
   (WB 2001/11/14)

8. Fixed: upon breakdown, the `SolverBicgstab` forgot to increment the iteration counter for the breakdown cycle. This is now fixed.
   (WB 2001/11/14)

9. Improved: class `SolverGMRES` accepts a parameter in `AdditionalData`, allowing for right preconditioning.
   (GK 2001/11/09)

10. Fixed: class `SparsityPattern` can handle rows of length zero now. For quadratic matrices, these rows are changed to length one, since a diagonal element must be stored.
    (GK 2001/10/11)

11. New: The `BlockVector` now has a full-fledged random access iterator type, working in exactly the same way as the iterators of the C++ standard containers.
    (WB 2001/09/28)

12. New: `Vector`::`operator *` is now templatized, allowing for scalar products of vectors with different underlying types.
    (WB 2001/09/27)

### deal.II

1. Changed: The classes `FEQ1`-`FEQ4`, `FEDG_Q1` `FEDG_Q4` as well as the files with their definitions, `fe/fe_lib.lagrange.h` and `fe/fe_lib.dg.h` ceased to exist. They had been left in for backward compatibility in an earlier version, but their existence is more confusing than helpful. Please change your code to use the classes `FE_Q` and `FE_DGQ`, respectively.
   (GK 2002/02/01)

2. New: The `FilteredIterator` class provides a view on ranges of iterators by iterating over only those objects that satisfy a certain predicate.
   (WB 2002/01/07)

3. Improved: It is now possible to read in unconnected domains through the `GridIn` class, since renumbering the cells now also works for these domains.
   (Michael Stadler 2001/12/14)

4. Improved: Both functions `VectorTools`::`compute_mean_value` take ingoing and outgoing vector types as template arguments. This allows applying them to `BlockVector`.
   (GK 2001/12/07)

5. New: `GridGenerator` has a function `cylinder` for cylinders in three space dimensions. Accoridngly, a class `CylinderBoundary` has been created.
   (GK 2001/12/07)

6. New: `FiniteElement`::`has_support_on_face` allows to check whether a shape function has non-zero values on a certain face of a cell.
   (GK 2001/12/04)

7. Changed: The `IteratorState` enum used to indicate the state in which an iterator can be is now enclosed in a namespace of the same name, to take its members out of the global namespace. When using one of these members, you now have to prefix it by `IteratorState::`.
   (WB 2001/11/30)

8. Changed: The `NormType` enum used to indicate the norm the `VectorTools::integrate_difference` function shall integrate is moved from the global namespace into the `VectorTools` class. You therefore have to prefix the members of this enum by the respective class name.
   (WB 2001/11/29)

9. Fixed: The functions `Mapping::transform_unit_to_real_cell` leaked some memory. This is now fixed.
   (RH, WB 2001/11/28)

10. Fixed: The `DoFHandler` class had a memory leak. This is now fixed. Likewise for the `MGDoFHandler` class.
    (WB 2001/11/28)

11. Fixed: The `GridRefinement::refine` function failed when the threshold was zero. This is now fixed.
    (RH 2001/11/26)

12. Fixed: The `MappingQ::transform_real_to_unit_cell` function failed on a very unusual cell. This is now fixed.
    (RH 2001/11/26)

13. New: The new `CellAccessor::neighbor_of_coarser_neighbor` function returns where to find the present cell from a coarser neighbor.
    (RH 2001/11/21)

14. Fixed: The `GridRefinement::refine_fixed_fraction` function sometimes had problems when indicators vary over several orders of magnitude, due to roundoff. This is now fixed.
    (WB 2001/11/05)

15. New: `DoFTools::extract_subdomain_dofs` selects those degrees of freedom which are located on cells with a specified subdomain id.
    (WB 2001/10/27)

16. New: Cells now have an additional property subdomain_id which can be used in parallel computations to identify which cells are handled on which processor. These flags are read and set using the functions `cell->subdomain_id()` and `cell->set_subdomain_id(new_id)`. The subdomain ids are unsigned integers, so should be sufficiently large also for larger numbers of subdomains.
    (WB 2001/10/27)

17. Fixed: the `GridGenerator::hyper_rectangle` function was broken in 3d.
    (WB 2001/10/26)

18. Improved: Both functions `DataOut_DoFData`::`add_data_vector` accepts `BlockVector` as argument.
    (GK 2001/10/12)

19. Improved: Both functions `VectorTools`::`integrate_difference` take ingoing and outgoing vector types as template arguments. This allows applying them to `BlockVector` and of outputting a vector of doubles suitable for `DataOut`.
    (GK 2001/10/12)

20. Fixed: Functions creating sparsity patterns for DG elements in `DoFTools` get the pattern type as template argument, too..
    (GK 2001/10/01)

21. Fixed: the iterator category template base class of grid iterators was incorrectly set.
    (WB 2001/09/28)

Last update $Date: 2006-07-13 09:12:08 -0400 (Thu, 13 Jul 2006) $