--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
+ "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html>
+ <head>
+ <link href="../../screen.css" rel="StyleSheet" title="deal.II Homepage" media="screen">
+ <link href="../../print.css" rel="StyleSheet" title="deal.II Homepage" media="print">
+ <title>The deal.II news page</title>
+ <meta name="author" content="Wolfgang Bangerth, Guido Kanschat, and others">
+ <meta name="keywords" content="deal.II"></head>
+
+<body>
+<h2>Changes after Version 3.0</h2>
+<h3>General</h3>
+<ol>
+ <li> <p>
+ New: the <code class="program">step-9</code> example program is
+ now ready, showing several advanced programming techniques in
+ <acronym>deal.II</acronym>.
+ <br>
+ (WB 2000/07/18)
+ </p>
+
+ <li> <p>
+ Changed: <acronym>deal.II</acronym> now uses the
+ <code class="program">kdoc2</code> program to generate the API
+ documentation. This makes up for much nices documentation and
+ also works better than the previous <code class="program">kdoc1</code>.
+ A copy of <code class="program">kdoc2</code> is provided within
+ the <acronym>deal.II</acronym> source tree.
+ <br>
+ (WB 2000/06/28)
+ </p>
+
+ <li> <p>
+ Changed: when compiling files, the output generated by the
+ <code class="program">make</code> program now indicates also
+ whether we are compiling for multithread mode, besides the
+ information whether the file is compiled for debug or optimized
+ mode.
+ <br>
+ (Ralf Hartmann 2000/06/26)
+ </p>
+
+ <li> <p>
+ Fixed: the
+ <code class="program">common/scripts/make_dependencies.pl</code>
+ 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.
+ <br>
+ (WB 2000/06/15)
+ </p>
+
+ <li> <p>
+ New: the <code class="program">configure</code> script now
+ checks whether the <code>getrusage</code> 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.
+ <br>
+ (WB 2000/06/14)
+ </p>
+
+ <li> <p>
+ New: the <code class="program">configure</code> script now
+ enforces the compiler flags <code>-ansi -pedantic</code> when
+ compiling in debug mode. This should force us to write more
+ standard compliant code. (Since the ACE library is not
+ standards conforming, the <code>-ansi</code> flag is not used
+ when multithreading is requested.)
+ <br>
+ (WB 2000/06/14)
+ </p>
+
+ <li> <p>
+ Improved: the <code class="program">configure</code> script is
+ now used to select the compiler options. Previously, selection
+ of compiler options was done both in
+ <code class="program">configure</code> as well as in the global
+ options Makefile
+ <code class="program">common/Make.global_options</code>.
+ <br>
+ (WB 2000/06/02)
+ </p>
+
+ <li> <p>
+ Improved: Dependence on the files
+ <code class="file">forward_declarations.h</code> has been widely
+ removed to improve compilation time
+ <br>
+ (GK 2000/05/24)
+ </p>
+
+
+ <li> <p>
+ Fix: <code class="program">configure</code> now uses
+ <code class="program">config.guess</code> to determine the
+ operating system and hardware platform.
+ <br>
+ (GK 2000/04/05)
+ </p>
+
+</ol>
+
+<h3>base</h3>
+
+<ol>
+ <li> <p>
+ New: There are now a set of functions
+ <code class="member">outer_product</code> that for the outer
+ product of tensors.
+ <br>
+ (WB 2000/07/23)
+ </p>
+
+ <li> <p>
+ New: The classes
+ <code class="class">Patterns::Integer</code>
+ and <code class="class">Patterns::Double</code> now allow that
+ a range may be specified in which the parameter shall
+ be. Furthermore, instead of a class,
+ <code class="class">Patterns</code> 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.
+ <br>
+ (WB 2000/07/21)
+ </p>
+
+ <li> <p>
+ New: classes <code class="class">QMilne</code> and <code
+ class="class">QWeddle</code> for closed Newton-Cotes-formulæ of
+ orders 7 and 9, respectively.
+ <br>
+ (GK 2000/07/07)
+ </p>
+
+ <li> <p>
+ New: There is now a function <code class="member">invert
+ (Tensor<2,dim>)</code> that returns the inverse of a tensor of
+ rank 2.
+ <br>
+ (WB 2000/04/14)
+ </p>
+
+ <li> <p>
+ New multithreading scheme is implemented.
+ <br>
+ (WB 2000/04/13)
+ </p>
+
+ <li> <p>
+ Improved: <code class="class">Subscriptor</code> prints the
+ real class name if a subscribed object is deleted.
+ <br>
+ (GK 2000/04/12)
+ </p>
+</ol>
+
+
+
+<h3>lac</h3>
+
+<ol>
+
+ <li> <p>
+ Improved: <code class="class">PreconditionBlockSOR</code><code
+ class="member">::Tvmult(...)</code> is implemented.
+ <br>
+ (GK 2000/07/07)
+ </p>
+
+ <li> <p>
+ Improved: The breakdown criterion of <code
+ class="class">SolverBicgstab</code> can be changed by the use
+ of <code class="class">SolverBicgstab::AdditionalData</code>.
+ <br>
+ (GK 2000/07/07)
+ </p>
+
+ <li> <p>
+ New: <code class="class">SolverRichardson</code> has a
+ transposed solver <code class="member">Tsolve(...)</code>. It
+ uses the functions <code class="member">Tvmult(...)</code> of
+ the provided matrix and preconditioner.
+ <br>
+ (GK 2000/07/07)
+ </p>
+
+ <li> <p>
+ Improved: <code class="class">FullMatrix</code><code
+ class="member">::invert(...)</code> now inverts matrices of all
+ sizes. If there is no hardcoded inversion, <code
+ class="member">gauss_jordan()</code> is used implicitly.
+ <br>
+ (GK 2000/06/30)
+ </p>
+
+ <li> <p>
+ New: For recognizing a diverging solver before the maximum
+ number of steps is reached,
+ <code class="class">SolverControl</code> returns
+ <code class="member">failure</code> also if the residual
+ increases over the start residual by a specific factor. This
+ factor is given to the <code class="class">SolverControl</code>
+ object by the <code class="member">set_failure_criterion</code>
+ function. After calling the latter function, checking of this
+ additional failure criterion may again be disabled by calling
+ <code class="member">clear_failure_criterion</code>.
+ <br>
+ (Ralf Hartmann 2000/06/26)
+ </p>
+
+ <li> <p>
+ Improved: The interface of preconditioner classes has changed.
+ Preconditioners are now considered linear operators like
+ matrices: they have members <code class="member">vmult</code>
+ and <code class="member">Tvmult</code> instead of the old <code
+ class="member">operator()</code>. This will allow the
+ implementation of further non-symmetric solvers.
+ <br>
+ (GK 2000/06/20)
+ </p>
+
+ <li> <p>
+ New: there is now a function
+ <code class="member">SparseMatrix::el</code> that does mostly
+ the same as <code class="member">SparseMatrix::operator()</code>,
+ 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
+ <code class="member">SparseMatrix::operator()</code> should be
+ used to write algorithms more efficiently.
+ <br>
+ (WB 2000/06/02)
+ </p>
+
+ <li> <p>
+ Fix:
+ <code class="member">SparsityPattern::print_gnuplot</code>
+ wrote rows and columns exchanged. Since most matrices have
+ symmetric sparsity patterns, this has gone unnoticed by now.
+ <br>
+ (WB 2000/05/30)
+ </p>
+
+ <li> <p>
+ Fix: the
+ <code class="member">FullMatrix::Tvmult</code> function
+ suffered from the same problems as the
+ <code class="member">FullMatrix::Tmmult</code> function. This
+ is now fixed as well.
+ <br>
+ (WB 2000/05/26)
+ </p>
+
+ <li> <p>
+ New: Class <code class="class">PreconditionBlockJacobi</code>.
+ <br>
+ (GK 2000/05/24)
+ </p>
+
+ <li> <p>
+ New: <code class="class">SolverControl</code> has an interface
+ to <code class="class">ParameterHandler</code>, definining and
+ reading parameters from a file automatically.
+ <br>
+ (GK 2000/05/24)
+ </p>
+
+ <li> <p>
+ New: <code class="class">BlockIndices</code>: Class that
+ manages the conversion of global indices into a block
+ vector/matrix/... to the indices local to each of the blocks.
+ <br>
+ (WB 2000/05/08)
+ </p>
+
+ <li> <p>
+ New: <code class="class">BlockSparsityPattern</code> and
+ <code class="class">BlockSparseMatrix</code>: Classes that
+ represent matrices that are composed of sparse matrices.
+ <br>
+ (WB 2000/05/08)
+ </p>
+
+ <li> <p>
+ Fix: the
+ <code class="member">FullMatrix::mmult</code> and
+ <code class="member">FullMatrix::Tmmult</code> code don't
+ resize their output argument any more, as this is not common
+ style in the library. Furthermore,
+ <code class="member">FullMatrix::Tmmult</code> was utterly
+ broken.
+ <br>
+ (WB 2000/05/08)
+ </p>
+
+ <li> <p>
+ Change: the <code class="member">matrix_norm</code> functions
+ of sparse and full matrices are renamed to
+ <code class="member">matrix_norm_square</code>, since they in
+ fact return the square of the norm. This should avoid confusion
+ in some cases.
+ <br>
+ (WB 2000/05/05)
+ </p>
+
+ <li> <p>
+ Fix: the ``copy-like'' constructor of
+ <code class="class">SparsityPattern</code> that copies another
+ object and adds some off-diagonals had a bug that caused an
+ exception in some cases. This is now fixed.
+ <br>
+ (WB 2000/05/04)
+ </p>
+
+ <li> <p>
+ New: <code class="class">SwappableVector</code>: 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.
+ <br>
+ (WB 2000/05/03)
+ </p>
+
+ <li> <p>
+ New: there are now functions <code class="member">Vector::swap</code>
+ and <code class="member">BlockVector::swap</code>, as well as
+ global functions <code class="member">swap(u,v)</code> 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.
+ <br>
+ (WB 2000/05/02)
+ </p>
+
+ <li> <p>
+ Fix: <code class="class">SolverCG</code> counts steps properly.
+ <br>
+ (GK 2000/04/25)
+ </p>
+
+ <li> <p>
+ Change: the solver classes in LAC lost their first template
+ argument. Their names are now
+ <code class="class">SolverXX<VECTOR></code>, where
+ <code class="class">XX</code> denotes the name of the solver
+ (e.g. CG, GMRES, etc). Furthermore, the
+ inheritance from <code class="class">Solver</code> was made private
+ to reflect the logical structure.
+ <br>
+ (GK 2000/04/25)
+ </p>
+
+ <li> <p>
+ New: <code class="class">EigenInverse</code> implements inverse
+ iteration by Wieland.
+ <br>
+ (GK 2000/04/20)
+ </p>
+
+ <li> <p>
+ New: <code class="class">EigenPower</code> implements power
+ method by von Mises
+ <br>
+ (GK 2000/04/19)
+ </p>
+
+ <li> <p>
+ New: <code class="member">PreconditionBlockSOR::set_omega</code>
+ allows to change the relaxation parameter.
+ <br>
+ (GK 2000/04/12)
+ </p>
+
+ <li> <p>
+ New: <code class="class">SolverXX</code>: There is a virtual function
+ <code>print_vectors</code> called in every step. It is void in the
+ solver itself but can be used to print intermediate iteration
+ vectors.
+ <br>
+ (GK 2000/04/05)
+ </p>
+</ol>
+
+
+
+<h3>deal.II</h3>
+
+<ol>
+ <li> <p>
+ Changed: The functions
+ <code class="member">Triangulation::refine</code>,
+ <code class="member">Triangulation::coarsen</code>,
+ <code
+ class="member">Triangulation::refine_and_coarsen_fixed_fraction</code>,
+ and
+ <code
+ class="member">Triangulation::refine_and_coarsen_fixed_number</code>
+ have been moved from the triangulation class to a separate
+ class <code class="class">GridRefinement</code> 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.
+ <br>
+ (WB 2000/07/28)
+ </p>
+
+ <li> <p>
+ New: <code class="member">DataOut::clear_input_data_references</code>
+ clears all reference to input data vectors and to the <code
+ class="class">DoFHandler</code>. 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.
+ <br>
+ (WB 2000/07/26)
+ </p>
+
+ <li> <p>
+ New: <code class="class">class DerivativeApproximation</code>
+ approximates the norm of the gradient or second derivative of a
+ finite element field on each cell from finite difference
+ approximations.
+ <br>
+ (WB 2000/04/14 and 2000/07/23)
+ </p>
+
+ <li> <p>
+ Fix: Add a missing assertions in <code
+ class="member">FEValuesBase::get_function_*</code>. If an <code
+ class="class">ExcAccessToUninitializedField</code> is now thrown
+ then probably an <code class="member">update_values</code> or
+ <code class="member">update_gradients</code> is missing in the
+ <code class="class">UpdateFlags</code> of a used <code
+ class="class">FEValues</code>. 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.
+ <br>
+ (Ralf Hartmann 2000/07/20)
+ </p>
+
+ <li> <p>
+ New: Class <code class="class">DoFRenumbering</code> now has
+ functions for cell-wise downstream renumbering for
+ discontinuous elements. The parameters of the function <code
+ class="member">sort_selected_dofs_back</code> have been
+ switched to match the interfaces of all other functions in this
+ class.
+ <br>
+ (GK 2000 Jour de Bastille)
+ </p>
+
+ <li> <p>
+ New: Function <code class="class">VectorTools</code><code
+ class="member">::compute_mean_value</code> integrates the mean
+ value of one component of a finite element function.
+ <br>
+ (GK 2000/07/12)
+ </p>
+
+ <li> <p>
+ New: The new function <code class="member">get_face</code>
+ of <code class="class">FEFaceValues</code> and <code
+ class="class">FESubfaceValues</code> returns an iterator of the
+ present face. This is the face, for that the <code
+ class="class">FE(Sub)FaceValues</code> object was reinited
+ the last time.
+ <br>
+ (Ralf Hartmann 2000/06/26)
+ </p>
+
+ <li> <p>
+ New: classes <code class="class">FEDG_Px</code> implement
+ complete polynomial spaces of degree <em>x</em> on
+ quadrilaterals. Since they have less degrees of freedom than
+ <code class="class">FEDG_Qx</code>, there is no continuous
+ version for these elements. Implementation for P4 and 3D is
+ still incomplete.
+ <br>
+ (GK 2000/06/20)
+ </p>
+
+ <li> <p>
+ Fix: slight bug in
+ <code class="member">DataOut::build_patches</code>
+ in multithreaded mode fixed.
+ <br>
+ (Ralf Hartmann, 2000/05/29)
+ </p>
+
+ <li> <p>
+ New: class <code class="class">FETools</code> performs
+ interpolations and extrapolations of discrete functions from one
+ <code class="class">FiniteElement</code> to another <code
+ class="class">FiniteElement</code>. It also provides the local
+ interpolation matrices that interpolate on each
+ cell. Furthermore it provides the interpolation difference
+ matrix id-I<sub>h</sub> that is needed for evaluating
+ (id-I<sub>h</sub>)z for e.g. the dual solution z.
+ </p>
+
+ <p>
+ Removed: The obsolete
+ <code class="member">MatrixCreator::create_interpolation_matrix</code>
+ function now removed.
+ </p>
+
+ <p>
+ (Ralf Hartmann 2000/05/26)
+ </p>
+
+ <li> <p>
+ New: <code class="member">DoFTools::make_flux_sparsity_pattern</code>
+ can be optimized by providing two coefficient matrices.
+ <br>
+ (GK 2000/05/25)
+ </p>
+
+ <li> <p>
+ Improved: <code class="member">VectorTools::integrate_difference</code>
+ allows for vector-valued weight functions. L<sup>1</sup> and
+ L<sup>infinity</sup> norms are calculated correctly.
+ <br>
+ (GK 2000/05/25)
+ </p>
+
+ <li> <p>
+ Changed: <code class="member">FE_DGx::restriction</code> is
+ not an interpolation any more but a local projection which is
+ more reasonable for DG elements.
+ <br>
+ (Ralf Hartmann 2000/05/22)
+ </p>
+
+ <li> <p>
+ Changed: enum
+ <code class="class">MeshSmoothing</code> is moved into the
+ <code class="class">Triangulation</code> class.
+ <br>
+ (Ralf Hartmann 2000/05/18)
+ </p>
+
+ <li> <p>
+ New: <code class="member">Triangulation<dim>::patch_level_1</code>
+ 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.
+ </p>
+
+ <p>
+ Changed: As follows from the existence of this new smoothing,
+ <code class="member">maximum_smoothing</code> will include this
+ smoothing.
+ </p>
+
+ <p>
+ (Ralf Hartmann 2000/05/18)
+ </p>
+
+ <li> <p>
+ Changed: the
+ <code class="member">MatrixTools::apply_boundary_values</code>
+ 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.
+ </p>
+
+ <p>
+ 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.
+ </p>
+
+ <p>
+ (John Burnell, WB 2000/05/17)
+ </p>
+
+ <li> <p>
+ New: many functions are now templatized on the data type of the
+ vector they take or return. They thus now support
+ <code class="class">Vector<float></code>, but also
+ <code class="class">BlockVector<...></code>. An
+ incomplete and growing list of functions that were treated in
+ this way is:
+ <ul>
+ <li>
+ <code class="member">DoFAccessor::get_dof_values</code>,
+ <li>
+ <code class="member">DoFAccessor::set_dof_values</code>,
+ <li>
+ <code class="member">DoFAccessor::get_interpolated_dof_values</code>,
+ <li>
+ <code class="member">DoFAccessor::set_dof_values_by_interpolation</code>,
+ <li>
+ <code class="member">FEValues::get_function_values</code>,
+ <li>
+ <code class="member">FEValues::get_function_grads</code>,
+ <li>
+ <code class="member">FEValues::get_function_2nd_derivatives</code>,
+ <li>
+ <code class="member">MatrixTools::apply_boundary_values</code>,
+ <li>
+ Several functions in <code class="class">ConstraintMatrix</code>.
+ </ul>
+ <br>
+ (WB 2000/05/16 and later)
+ </p>
+
+ <li> <p>
+ Changed: The computation of the Jacobian matrices in the
+ <code class="class">FEValues</code> class is now done more
+ efficiently. The speedup is in the range of a factor of 40 for
+ 3D.
+ <br>
+ (John Burnell, WB 2000/05/16)
+ </p>
+
+ <li> <p>
+ Change: <code class="member">DoFTools::make_hanging_node_constraints ()</code>
+ does not use the user flags any more, and can thus run in
+ parallel more than once.
+ <br>
+ (WB 2000/05/15)
+ </p>
+
+ <li> <p>
+ Extended: <code class="member">DoFTools::make_sparsity_pattern ()</code>
+ now accepts a template parameter as sparsity pattern. This
+ allows to use this function for the usual
+ <code class="class">SparsityPattern</code>, or for
+ <code class="class">BlockSparsityPattern</code> arguments.
+ <br>
+ (WB 2000/05/15)
+ </p>
+
+ <li> <p>
+ New: <code class="member">DoFTools::extract_hanging_node_dofs ()</code>
+ identifies nodes that will be constrained by hanging node constraints.
+ <br>
+ (WB 2000/05/12)
+ </p>
+
+ <li> <p>
+ New: <code class="member">DoFRenumbering::sort_selected_dofs_back ()</code>
+ sorts selected degrees of freedom to the end of the index
+ range.
+ <br>
+ (WB 2000/05/12)
+ </p>
+
+ <li> <p>
+ Change: the return value of
+ <code class="member">DoFHandler::max_couplings_between_dofs ()</code>
+ is bounded by <code class="member">DoFHandler::n_dofs()</code>.
+ <br>
+ (Ralf Hartmann 2000/05/11)
+ </p>
+
+ <li> <p>
+ New: <code class="member">FEValuesBase::get_cell ()</code>
+ returns present cell.
+ <br>
+ (Ralf Hartmann 2000/05/11)
+ </p>
+
+ <li> <p>
+ Fix: <code class="member">FESystem::reinit()</code> generated
+ an exception if <code class="member">update_support_points</code>
+ was set.
+ <br>
+ (WB 2000/05/10)
+ </p>
+
+ <li> <p>
+ New: <code class="member">IntergridMap::get_{source,destination}_grid</code>
+ functions return the grids for which the map was created.
+ <br>
+ (WB 2000/04/19)
+ </p>
+
+ <li> <p>
+ Fix: in three space dimensions, the triangulation class
+ over-estimated the necessary amount of memory needed upon
+ refinement and allocated too much.
+ <br>
+ (WB 2000/04/19)
+ </p>
+
+ <li> <p>
+ New: <code class="member">DoFTools::extract_boundary_dofs</code>
+ finds all degrees of freedom which are at the boundary and belong to
+ specified components.
+ <br>
+ (WB 2000/04/17)
+ </p>
+
+ <li> <p>
+ New: <code class="member">DoFTools::compute_intergrid_constraints</code>
+ allows to use different discretization grids for different
+ variables.
+ <br>
+ (WB 2000/04/15)
+ </p>
+
+ <li> <p>
+ New: <code class="member">DataOut::clear_data_vectors</code>
+ allows to re-use an object without deleting the <code
+ class="class">DoFHandler</code>.
+ <br>
+ (GK 2000/04/05)
+ </p>
+
+ <li> <p>
+ New: <code class="class">class DoFPrintSolverStep</code> prints
+ intermediate vectors of a solver as finite element functions using
+ <code class="class">DataOut</code>.
+ <br>
+ (GK 2000/04/05)
+ </p>
+
+</ol>
+
+<hr>
+Last update $Date$
+
+</body>
+</html>