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

## Changes between versions 3.3.0 and 3.4.0

This is a quite extensive list of changes made between versions 3.3.0 and 3.4.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.

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), BK (Benjamin S. Kirk).

### General

1. Deprecated: The functions `FEValuesBase::get_shape_values`, `FEValuesBase::get_shape_grads`, and `FEValuesBase::get_shape_2nd_derivatives` are now deprecated as they expose too much of the internal data structure of their class, and interfere with plans for the extension of this and related classes. The functions still exist in this release of the library, but will be removed in the next version. Use the `FEValuesBase::shape_value` and alike functions as a replacement.
   For more information, read this mail.
   (WB 2002/06/03)

2. Added: The `configure` script now recognizes Intel's ECC compiler when run on Itanium systems with this compiler present. The ECC compiler is similar to the ICC compiler but it acccepts some different options.
   (BK 2002/05/22)

3. New: The step-14 example program demonstrates duality based error estimators and some more software design concepts.
   (WB 2002/05/05)

4. New: In all previous versions, deal.II used the ACE (Adaptive Communications Environment) library to support cross-platform threading facilities. While this is still supported, the default way is now to use the POSIX threading functions that are available on many systems. The relieves you from the need of installing a huge library of which the most part is not used anyway. However, if you use ACE for other reasons, then it is still supported. For installation instructions, see the ReadMe file.
   (WB 2002/04/30)

5. Changed: The Makefiles for the library are now truly parallel. To this end, the automatic generation of the files `forward_declarations.h` in the various directories had to be changed. They will now be generated automatically at the end of the targets `all`, `debug` and `optimized`. They will not be generated while building a single library. In this case, `make forward` can be used to build them manually.
   I introduced separate targets for the generation of the optimized versions only.
   (GK 2002/04/17)

6. New: The step-13 example program tells you something about software design things for finite element programs.
   (WB 2002/04/16)

7. Changed: Due to problems with undeclared functions and general compatibility concerns, `-ansi` is now no more part of the compile flags for gcc.
   (WB 2002/04/16)

8. Fixed: Explicit specializations of member templates are now conforming to the C++ standard. While most compilers accepted the previous form, Sun's Forte compiler wants a strictly conforming one.
   (WB 2002/03/25)

9. Fixed: For gcc versions that used `ostrstream` instead of `ostringstream`, it was necessary to append a final `std::ends` when piping text into the string stream. This was not previously conditionalized, but done for old and new classes.
   (WB 2002/03/13)

10. Changed: The configure machinery has been revamped significantly.
    (WB 2002/03/08)

11. Added: The top-level Makefile now supports "optimized" as a target that builds only optimized versions of the `base`, `lac`, `1d`, `2d`, and `3d` libraries.
    (BK 2002/02/19)

12. Changed: The build system was entirely revised. Object files in debug mode now have the suffix `.g.o` instead of `.go`. All object files from the subdirectories are now placed into the `/lib` top-level directory, rather than in library directories in the individual subdirs.
    (WB 2002/02/11)

### base

1. New: The `vector2d` row accessor classes now have member functions `begin` and `end` which allow iterating over the elements of a row of such an object.
   (WB 2002/05/30)

2. New: The `Legendre` and `LagrangeEquidistant` classes now have static member functions `generate_complete_basis` which returns an array of polynomial objects spanning the complete space up to a specified order in 1d. This may be used to generate the respective polynomial spaces in higher space dimensions.
   (WB 2002/05/27)

3. Changed: The `Polynomial` and `LagrangeEquidistant` classes have lost their default constructor, as that did not make much sense anyway.
   (WB 2002/05/27)

4. Fixed: When forward declaring the `Tensor` class, we now also forward declare its partial specialization for a rank one tensor. Not doing so confused Sun's Forte compiler.
   (WB 2002/03/22)

5. Fixed: The class `TensorFunction` now uses local types `value_type` and `gradient_type` as return values of its member functions. This works around a bug in Sun's Forte C++ compilers.
   (WB 2002/03/20)

6. Improved: The `AssertThrow` macro now uses `__builtin_expect` if the compiler supports this. This indicates to the compiler that we expect the condition to be true and that throwing an exception is a rare case. By this information, the compiler can help the branch prediction unit of modern processors to better predict which direction a branch will take.
   (WB 2002/03/13)

7. New: The `vector2d` class now not only allows access to elements through the `operator()(unsingned int,unsigned int)` (i.e. matrix or Fortran style access), but also through nested brackets via an `operator[]` (i.e. like to a two-dimensional C-style array).
   (WB 2002/03/08)

8. Changed: The function `MultithreadInfo`:: `get_n_cpus` now reports the proper number of CPUs when running on Silicon Graphics.
   (BK 2002/02/19)

9. Changed: The quite logorrhoeic function name `TensorProductPolynomials`::`n_tensor_product_polynomials` was changed to `n` to be compliant wth the new class `PolynomialSpace`.
   (GK 2002/02/11)

10. New: The class `PolynomialSpace` implements the space of polynomials at most a certain degree in arbitrary space dimensions.
    (GK 2002/02/11)

11. New: The function `DataOutBase`:: `write_tecplot_binary` has been added. This function will write Tecplot binary files if the Tecplot API is detected by ./configure. To use this feature be sure that the environment variable TECHOME points to a valid Tecplot installation and that the files $TECHOME/include/TECIO.h and $TECHOME/lib/tecio.a exist. The name of the file to be written is specified through the `DataOutBase` ::`TecplotFlags`. `tecplot_binary_file_name` variable. If the API is not available this code simply calls the existing ASCII output function.
    (BK 2002/02/11)

### lac

1. Improved: `SolverGMRES` allocates basis vectors only, when they are needed. Therefore, it is safe now to ask for a basis larger than the expected number of iteration steps. On the other hand, memory allocation failures may occur during the iteration now.
   (GK 2002/05/24)

2. New: Function `SparsityPattern::matrix_position` is the inverse function for `SparsityPattern::operator()`.
   (WB 2002/02/13)

3. New: Functions `SparsityPattern::copy_from` and `SparseMatrix::copy_from` allow to copy a full matrix into a sparse matrix.
   (WB 2002/02/06)

### deal.II

1. New: The `GeometryInfo` class now provides two methods, `unit_cell_vertex` and `vertices_adjacent_to_line`, that reveal something about the placement and numbering of vertices on the uni cell.
   (GK 2002/05/29)

2. New: The `GridOut::` `write_dx` function is now implemented. It allows to write the mesh (cells and faces) with some additional information that may be useful once in a while.
   (GK 2002/05/02)

3. Fixed: The `IteratorState::IteratorState` enum is now called `IteratorState::IteratorStates`. This works around a bug in Sun's Forte C++ compilers which can't handle members of namespaces with the same name as the enclosing namespace.
   (WB 2002/03/20)

4. Fixed: In 3d, the function `DoFTools::make_hanging_node_constraints` contained an assertion that failed erroneously for finite elements that do not have degrees of freedom on vertices. This is now fixed.
   (WB 2002/02/21)

5. Fixed: `TriaAccessor<3,3>::measure` sometimes computed a negative value. This is now fixed.
   (WB 2002/02/21)

6. New: Finite element family with complete polynomial spaces for discontinuous Galerkin: `FE_DGP`
   (GK 2002/02/11)

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