--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2013 - 2014, 2014 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+/**
+@page changes_between_8_1_and_8_2 Changes between Version 8.1 and 8.2
+
+<p>
+This is the list of changes made between the release of deal.II version
+8.1.0 and that of 8.2.0. All entries are signed with the names of the
+authors.
+</p>
+
+
+
+<!-- ----------- INCOMPATIBILITIES ----------------- -->
+
+<a name="incompatible"></a>
+<h3 style="color:red">Incompatibilities</h3>
+
+<p style="color:red">
+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.
+</p>
+
+<ol>
+ <li> Removed: The base class to the iterative linear solvers, Solver,
+ received a SolverControl object upon construction and had a member
+ function <code>control()</code> that returned a reference to the
+ object previously passed in. The class now no longer stores such
+ a reference, and consequently, the function has been removed.
+ <br>
+ (Wolfgang Bangerth, 2014/10/24)
+ </li>
+
+ <li> Removed: The constructor of the Utilities::MPI::MPI_InitFinalize
+ class used to interpret a last argument equal to numbers::invalid_unsigned_int
+ as "<i>create as many threads as there are processor cores on the current
+ system</i>" for each MPI process. If there were multiple MPI processes on a
+ given node, this would lead to (sometimes massive) overallocation of resources
+ because <i>every</i> MPI process would create as many threads as there are cores.
+ This has now been changed: an argument equal to numbers::invalid_unsigned_int
+ is now interpreted as "<i>subdivide the available cores between all MPI
+ processes running on the current system and let each process create as many
+ threads as cores were allocated to it</i>".
+ <br>
+ (Wolfgang Bangerth, 2014/09/16)
+ </li>
+
+ <li> Removed: CMake's configure phase no longer calls back into testsuite
+ subprojects. If a build directory is reconfigured the testsuite has to be
+ regenerated by hand using <code>make regen_tests</code>.
+ <br>
+ (Matthias Maier, 2014/07/16)
+ </li>
+
+ <li> Removed: Class PointerMatrixBase (and, consequently, the various
+ classes derived from it) had comparison operators that were intended to
+ work generically for any kind of derived class. However, the implementation
+ used a scheme that was not robust enough to handle the various situations
+ that derived classes implemented and, consequently, was not always correct.
+ These operators were not previously used inside the library and, likely,
+ were not widely used in applications either. They have now been removed.
+ <br>
+ (Wolfgang Bangerth, 2014/02/15)
+ </li>
+
+ <li> The change from functionparser to muparser introduced a small number of
+ incompatibilities: units, use_degress, and recursion with 'eval' are no
+ longer supported. Comparing for equality is done using '==' instead of '='.
+ <br>
+ (Timo Heister, 2014/02/10)
+ </li>
+
+ <li> Changed: The various classes generating graphical output, such
+ as DataOut or DataOutStack, are all derived from a common interface
+ class DataOutInterface which, in turn was derived from DataOutBase
+ through <i>private</i> inheritance. Because we frequently also
+ access the (public) members of this private base class this has tripped
+ up most every compiler we know of at one point or another. Furthermore,
+ because DataOutBase was a class that only defined static member functions
+ and had not member variables, there was really no reason for this
+ construct.
+ <br>
+ For these reasons, DataOutBase is now just a regular namespace and the
+ inheritance is gone. For the most part, this should not lead to any
+ incompatibilities except in cases where you accessed members of
+ DataOutBase through their derived classes. For example, it was possible
+ to write DataOut::Patch even though the
+ Patch class is actually declared in DataOutBase. Since
+ the inheritance is now gone, this is no longer possible and one
+ actually has to write DataOutBase::Patch instead. Using this form
+ turns out to be compatible also with older versions of deal.II.
+ <br>
+ (Wolfgang Bangerth, 2014/02/01)
+ </li>
+</ol>
+
+
+<!-- ----------- GENERAL IMPROVEMENTS ----------------- -->
+
+<a name="general"></a>
+<h3>General</h3>
+
+
+<ol>
+ <li> New: Several parts of the library have been adjusted to allow
+ compilation with Microsoft Visual Studio. Unfortunately, not all
+ of the library can be compiled yet.
+ <br>
+ (Lukas Korous, 2014/12/03)
+ </li>
+
+ <li> New: Added support for OpenCASCADE (www.opencascade.org)
+ library, which allows the use of arbitrary IGES files to describe
+ the boundary of a mesh. The use of the new classes is described in
+ the new Step-54.
+ <br>
+ (Luca Heltai, Andrea Mola, 2014/10/31)
+ </li>
+
+ <li> New: The classes implementing iterative solvers have gained
+ a mechanism by which it is possible to observe the progress of
+ the iterations, or to influence when to stop the iteration. The
+ documentation of the Solver class now contains an extended
+ discussion and example of this functionality.
+ <br>
+ (Wolfgang Bangerth, 2014/10/24)
+ </li>
+
+ <li> New: There is now a section in the introduction of step-36 that
+ discusses the interaction of Dirichlet boundary values and the solution
+ of eigenvalue problems.
+ <br>
+ (Denis Davydov, Wolfgang Bangerth, 2014/09/28)
+ </li>
+
+ <li> New: The glossary now contains an extensive entry on ghosted and
+ non-ghosted vectors (see @ref GlossGhostedVector ).
+ <br>
+ (Wolfgang Bangerth, 2014/09/27)
+ </li>
+
+ <li> New: MappingQ is now aware of
+ Manifold, i.e., we can use high order mappings that
+ actually follow the geometry also on the interior of codimension
+ zero meshes.
+ <br>
+ (Luca Heltai, 2014/09/13)
+ </li>
+
+ <li> New: The new tutorial program step-52 explains how to use the
+ new time stepping methods.
+ <br>
+ (Bruno Turcksin, Damien Lebrun-Grandie, 2014/09/12)
+ </li>
+
+ <li> New: The new tutorial program step-53 explains how to deal with
+ complicated geometries.
+ <br>
+ (Wolfgang Bangerth, Luca Heltai, 2014/09/02)
+ </li>
+
+ <li> Changed: Namespace std_cxx1x has been renamed to namespace
+ std_cxx11 to match the fact that the corresponding C++ standard
+ was approved back in 2011. The old namespace name was retained for
+ backward compatibility but is now deprecated.
+ <br>
+ (Wolfgang Bangerth, 2014/09/01)
+ </li>
+
+ <li> New: Most of the operations done on Vector (like add, sadd, etc.)
+ are now vectorized (SIMD) using OpenMP 4.0.
+ <br>
+ (Bruno Turcksin, 2014/08/25)
+ </li>
+
+ <li> Updated: The version of BOOST that comes bundled with deal.II has
+ been updated to 1.56.0.
+ <br>
+ (Wolfgang Bangerth, 2014/08/19)
+ </li>
+
+ <li> Fixed: Newer versions of GCC (e.g. 4.9.x) are no longer compatible
+ with BOOST 1.46. Consequently, the CMake scripts now require at least
+ BOOST 1.48 in order to use a BOOST version found on the system. If no
+ installed BOOST library is found, or if the version is older than 1.48,
+ CMake will simply take the one that comes bundled with deal.II.
+ <br>
+ (Wolfgang Bangerth, 2014/08/19)
+ </li>
+
+ <li> New: There is now a documentation module that describes
+ deal.II's support for and interaction with the
+ @ref CPP11 "C++11 standard".
+ <br>
+ (Wolfgang Bangerth, 2014/08/14)
+ </li>
+
+ <li> New: Added support for curved interior cells for all Triangulation
+ dimensions.
+ <br>
+ A new Manifold<dim,spacedim> class was introduced which only contains the
+ interface needed by Triangulation to refine objects, leaving all boundary
+ related functions in the class Boundary<dim,spacedim>, which was made
+ derived from Manifold<dim,spacedim>.
+ <br>
+ This new construction allows for curved interior cells, and custom refinement
+ strategies (see, for example, the new tutorial program step-53).
+ At the moment the following Manifolds are supported:
+ <ul>
+ <li> FlatManifold<dim,spacedim>: This class replaces the old
+ StraightBoundary<dim,spacedim>, and it adds support for periodic
+ manifolds. This is the simplest class one can use to create new Manifold classes;
+ </li>
+ <li> ManifoldChart<dim,spacedim,chartdim>: This is one of the most general Manifold
+ one can think of. The user can overload the functions ManifoldChart::pull_back() and
+ ManifoldChart::push_forward(), to obtain a very general curved geometry, following
+ concepts typical of elasticity;
+ </li>
+ <li> SphericalManifold<dim,spacedim>: A simple implementation of spherical coordinates
+ transformations. This manifold allows hyper shells with curved interior cells which
+ follow the natural shape of the shell;
+ </li>
+ </ul>
+ <br>
+ The functions
+ Triangulation::set_boundary() and Triangulation::get_boundary() can still be used to
+ set and get Boundary objects instead of Manifold ones. For the get function, an exception
+ is thrown if a conversion to a valid Boundary class cannot be made on the fly.
+ <br>
+ (Luca Heltai, 2014/08/06)
+ </li>
+
+ <li> Ported: The build system now supports CMake 3.0.
+ <br>
+ (Matthias Maier, 2014/07/15)
+ </li>
+
+ <li> New: Added support for curved interior boundaries, and general
+ manifold id description.
+ <br>
+ A new attribute was added to each triangulation object
+ (types::manifold_id) which allows one to specify a manifold
+ description, much in the same way we do for boundaries, also for
+ interior edges and faces. At the moment this information is used
+ only for objects of topological dimension less than spacedim, but a
+ generalization of the class Boundary<dim,spacedim> is on its way to
+ allow also curved cells.
+ <br>
+ For the moment, full backward compatibility is granted, and one can
+ keep using the old Boundary<dim,spacedim>, together with
+ Triangulation::set_boundary(), and Triangulation::get_boundary()
+ methods. However, this change suggests to use the types::boundary_id associated
+ with each boundary face to indicate only boundary condition types, and
+ it allows to separate the geometric meaning from the physical meaning. The
+ suggested usage is
+ - types::boundary_id is used for the physical meaning
+ - types::manifold_id is used for the geometric meaning.
+ <br>
+ (Luca Heltai, 2014/07/14)
+ </li>
+
+ <li> New: Tutorial programs (and a few other places) are now cross-linked
+ to their corresponding video lectures.
+ <br>
+ (Wolfgang Bangerth, 2014/07/10)
+ </li>
+
+ <li> Changed: The functionparser library bundled with deal.II got replaced
+ by the <a href="http://muparser.beltoforion.de/">muparser</a> library.
+ <br>
+ (Timo Heister, 2014/02/10)
+ </li>
+
+ <li> Changed: It was possible to call DoFCellAccessor::set_active_fe_index()
+ on non-active cells. However, this made no sense: Since degrees of
+ freedoms only exist on active cells
+ for hp::DoFHandler (i.e., there is currently no implementation
+ of multilevel hp::DoFHandler objects), it does not make sense
+ to assign active FE indices to non-active cells since they
+ do not have finite element spaces associated with them without
+ having any degrees of freedom.
+ <br>
+ The same of course is true for asking for the finite element active
+ on a non-active cell, i.e. using the functions
+ DoFAccessor::active_fe_index() and
+ DoFAccessor::get_fe(). All of these functions now produce exceptions on
+ non-active cells.
+ <br>
+ (Wolfgang Bangerth, 2014/01/24)
+ </li>
+
+ <li> New: deal.II now links with the
+ <a href="http://www.boost.org/doc/libs/1_55_0/libs/iostreams/doc/index.html">BOOST
+ Iostreams</a> library (at least if the libz and libbz2 libraries
+ can be found that are necessary for BOOST Iostreams).
+ Among many other things, this allows to easily
+ read files that have been compressed, as in the following code snippet:
+ @code
+ #include <boost/iostreams/filtering_stream.hpp>
+ #include <boost/iostreams/filter/gzip.hpp>
+ #include <boost/iostreams/device/file.hpp>
+
+ ...
+
+ boost::iostreams::filtering_istream in;
+ in.push(boost::iostreams::basic_gzip_decompressor<>());
+ in.push(boost::iostreams::file_source("myfile.gz"));
+
+ int i;
+ in >> i;
+ @endcode
+ More documentation on how to use BOOST Iostream can be found
+ in the documentation link referenced above.
+ <br>
+ (Wolfgang Bangerth, 2013/12/21)
+ </li>
+</ol>
+
+
+<!-- ----------- SPECIFIC IMPROVEMENTS ----------------- -->
+
+<a name="specific"></a>
+<h3>Specific improvements</h3>
+
+<ol>
+ <li>Fixed: CMake now correctly detects -Wno-... support for gcc.
+ <br>
+ (Matthias Maier, 2014/12/11)
+ </li>
+
+ <li> New: The FE_Q and FE_Q_Hierarchical classes now include pictures
+ of their 2d shape functions in the class documentation.
+ <br>
+ (Manuel Quezada de Luna, Wolfgang Bangerth, 2014/12/09)
+ </li>
+
+ <li> Fixed: Calling DoFRenumbering::Cuthill_McKee threw an exception
+ whenever one of the processors of a parallel triangulation did not own
+ any degrees of freedom.
+ <br>
+ (Michal Wichrowski, Wolfgang Bangerth, 2014/12/04)
+ </li>
+
+ <li> Fixed: Serializing an object of type DoFHandler did not work without
+ including additional header files.
+ <br>
+ (David Wells, Wolfgang Bangerth, 2014/11/26)
+ </li>
+
+ <li> New: The class FEEvaluation with its fast tensor evaluation routines
+ can now be initialized from a mapping, a finite element, a quadrature, and
+ update flags on the fly similar to FEValues. This provides an alternative
+ entry point to these routines without the need to create a MatrixFree data
+ object.
+ <br>
+ (Martin Kronbichler, 2014/11/20)
+ </li>
+
+ <li> New: Complete the interface for periodic boundary conditions.
+ Now, it is possible to specify an additional (geometric) rotation matrix along
+ with vector components that should be rotated when applying periodic boundary
+ conditions (or alternatively, directly a transformation matrix working
+ directly on dofs). With this it is now possible to e.g. compute Stokes flow
+ on a quarter pie with periodic boundary conditions and the velocity correctly
+ transformed.
+ <br>
+ (Daniel Arndt, Matthias Maier, 2014/11/19)
+ </li>
+
+ <li> Improved: Vector updates in PreconditionChebyshev based on deal.II's own
+ vectors are now vectorized with OpenMP 4.0 SIMD pragmas.
+ <br>
+ (Martin Kronbichler, Bruno Turcksin, 2014/11/17)
+ </li>
+
+ <li> New: Added support for STEP files in the OpenCASCADE
+ wrappers. STEP files can now be imported and exported respectively
+ with the OpenCASCADE::read_STEP() and OpenCASCADE::write_STEP() functions.
+ <br>
+ (Andrea Mola, 2014/11/12)
+ </li>
+
+ <li> New: Timer now has get_lap_time() which returns the time
+ lapsed between the last start()/stop() cycle.
+ <br>
+ (Fahad Alrashed, 2014/11/09)
+ </li>
+
+ <li> New: GridTools::get_locally_owned_vertices() allows to query
+ which vertices of a triangulation are owned by the current
+ processor.
+ <br>
+ (Wolfgang Bangerth, 2014/11/09)
+ </li>
+
+ <li> New: parallel::distributed::Triangulation::communicate_locally_moved_vertices()
+ allows to
+ update vertex positions that have been moved just locally on distributed
+ meshes. GridTools::distort_random now works for distributed meshes and
+ hanging nodes in 3D as well.
+ <br>
+ (Daniel Arndt, 2014/11/06)
+ </li>
+
+ <li> New: TableHandler objects can be cleared - i.e. reset to a
+ zero-sized state.
+ <br>
+ (Fahad Alrashed, 2014/11/09)
+ </li>
+
+ <li> New: The FE_Nothing class now has a second template argument
+ corresponding to the space dimension in which the mesh is embedded,
+ like many other classes. This allows to use this element in codimension
+ one cases as well now.
+ <br>
+ (Wolfgang Bangerth, 2014/11/05)
+ </li>
+
+ <li> Fixed: Using the FEEvaluation framework did not work for
+ scalar elements in 1d because there were conflicting partial
+ specializations. This is now fixed.
+ <br>
+ (Shiva Rudraraju, 2014/11/04)
+ </li>
+
+ <li> New: There is now a macro <code>DEAL_II_VERSION_GTE</code>
+ that can be used to test whether the deal.II version is greater
+ than or equal a particular version number. This is useful if you
+ need to make application programs compatible with different
+ deal.II releases.
+ <br>
+ (Wolfgang Bangerth, 2014/10/31)
+ </li>
+
+ <li> New: The vector classes in deal.II (including Trilinos and PETSc
+ wrappers) now have a new method x.add_and_dot(factor,v,w) which performs
+ x.add(factor,v) and subsequent inner product of x with another vector
+ w. This operation occurs in some iterative solvers; by a combined operation,
+ reduced memory transfer and thus higher performance are enabled.
+ <br>
+ (Martin Kronbichler, 2014/10/27)
+ </li>
+
+ <li> Improved: Inner products and norms on deal.II's own vector classes now
+ use vectorization through VectorizedArray if available.
+ <br>
+ (Martin Kronbichler, 2014/10/27)
+ </li>
+
+ <li> Changed: PETSc and Trilinos vectors with ghost entries can now be reset to zero
+ using = 0.0;
+ <br>
+ (Timo Heister, 2014/10/14)
+ </li>
+
+ <li> New: The new function FiniteElement::get_associated_geometry_primitive() allows to
+ query whether a given degree of freedom is associated with a vertex, line,
+ quad, or hex.
+ <br>
+ (Wolfgang Bangerth, 2014/09/26)
+ </li>
+
+ <li> Fixed: The vector and array versions of Utilities::MPI::sum() and
+ Utilities::MPI::max() produced segmentation faults with some MPI implementations
+ if the input and output arguments were the same. This is now fixed.
+ <br>
+ (Wolfgang Bangerth, 2014/09/29)
+ </li>
+
+ <li> Fixed: Trying to have FE_Q(p) and FE_DGQ(r) elements next to each
+ other in an hp::DoFHandler object led to assertions saying that these two
+ elements don't know how to compute interface constraints where such
+ elements touch. This has now been fixed: FE_DGQ is a discontinuous element,
+ so there cannot be any interface constraints at all.
+ <br>
+ (Wolfgang Bangerth, 2014/09/26)
+ </li>
+
+ <li> Fixed: The function TrilinosWrappers::VectorBase::sadd(double factor,
+ VectorBase &v) erroneously added factor*v instead of scaling the calling
+ vector by factor. This is now fixed.
+ <br>
+ (Martin Kronbichler, 2014/09/26)
+ </li>
+
+ <li> Fixed: The function TrilinosWrappers::SparseMatrix::add(double factor,
+ SparseMatrix &rhs) produced wrong results and ran into an exception if the
+ rhs matrix included off-processor column entries. This is now fixed.
+ <br>
+ (Martin Kronbichler, 2014/09/21)
+ </li>
+
+ <li> New: The function Threads::Task::joinable() can be used to verify whether
+ a task object can be joined or not.
+ <br>
+ (Wolfgang Bangerth, 2014/09/17)
+ </li>
+
+ <li> New: Added two optional parameters to TriaAccessor::center()
+ and a new method TriaAccessor::intermediate_point().
+ They allow to query for a
+ geometrically coherent center, or ask for arbitrary points on the
+ underlying Manifold, given the dim coordinates in the reference
+ element.
+ Triangulation was refactored internally to use the new
+ TriaAccessor::center() interface when querying for new points.
+ <br>
+ (Luca Heltai, 2014/09/13)
+ </li>
+
+ <li> Improved: Optimize construction of high-order FE_Nedelec by moving out some
+ non-essential computations. Namely, construct restriction and prolongation
+ matrices on first request. This reduces time spent in FE_Nedelec constructor
+ substantially.
+ <br>
+ (Alexander Grayver, 2014/08/22)
+ </li>
+
+ <li> New: There is now a GridGenerator::flatten_triangulation()
+ taking a Triangulation<dim, spacedim_1> as input and returning
+ a Triangulation<dim, spacedim_2> as output. The output
+ triangulation will contain a single level with all active
+ cells of the input triangulation, and will be topologically
+ equivalent to the input triangulation. If the two space dimensions
+ are equal, then this function will copy the triangulation
+ removing all levels, e.g., flattening it. If the two space dimensions
+ are different, then this function will copy the vertices only
+ up to the smallest space dimension parameter. <br>
+ Using this function, you can create a Triangulation<2,3> from
+ a Triangulation<2,2> or project to the plane z=0 your
+ Triangulation<2,3>. No checks are performed on the validity of
+ the resulting Triangulation.
+ <br>
+ (Luca Heltai, 2014/08/19)
+ </li>
+
+ <li> Changed: The functions GridTools::extract_boundary_mesh() and
+ GridTools::create_union_triangulation() have been moved to
+ GridGenerator::extract_boundary_mesh() and
+ GridGenerator::create_union_triangulation() since, conceptually, they
+ generate meshes. The old functions have been retained but are now
+ deprecated.
+ <br>
+ (Wolfgang Bangerth, 2014/08/19)
+ </li>
+
+ <li> New: TriaAccessor::measure() is now also implemented for faces of
+ 3d cells as long as the face is planar.
+ <br>
+ (Kevin Drzycimski, 2014/08/19)
+ </li>
+
+ <li> Fixed: Support SLEPc 3.5 by disabling SDFOLD spectrum transformation type
+ that has been removed from SLEPc. Therefore, TransformationSpectrumFolding
+ cannot be used with newer SLEPc versions.
+ <br>
+ (Alexander Grayver, 2014/08/15)
+ </li>
+
+ <li> New: To better support applications that want to use C++11's
+ <a href="http://en.wikipedia.org/wiki/C%2B%2B11#Range-based_for_loop">range-based
+ for loops</a>, there are now functions Triangulation::cell_iterators(),
+ Triangulation::all_cell_iterators() and similarly in classes DoFHandler
+ and hp::DoFHandler
+ that return a range object that can then be used in range-based for loops.
+ The underlying implementation uses the new IteratorRange class.
+ <br>
+ See the new @ref CPP11 "C++11" page for more information.
+ <br>
+ (Wolfgang Bangerth, 2014/08/07)
+ </li>
+
+ <li> New: The new class FunctionManifold allows arbitrary manifold descriptions, in which you have
+ an explicit Function<chartdim> for the ManifoldChart::push_forward()
+ method, and an explicit Function<spacedim> for ManifoldChart::pull_back()
+ method (or an expression for both). In these cases, you can construct a
+ Manifold description on the fly.
+ <br>
+ (Luca Heltai, 2014/08/07)
+ </li>
+
+ <li> New: Added CylindricalManifold description.
+ <br>
+ This class allows refinement of cylindrical manifolds. It is a good
+ companion for GridGenerator::cylinder() and the perfect companion
+ for GridGenerator::cylinder_shell().
+ <br>
+ (Luca Heltai, 2014/08/06)
+ </li>
+
+ <li> New: TrilinosWrappers::PreconditionAMG can now be initialized from an
+ object of type Epetra_RowMatrix, which allows using it with more arbitrary
+ matrix objects, including matrix-free methods.
+ <br>
+ (Martin Kronbichler, 2014/08/06)
+ </li>
+
+ <li> Fixed: The FE_Nedelec element computed face interpolation matrices
+ wrongly for elements of order p>1. This also led to trouble computing
+ hanging node constraints in the context of hp adaptivity. This is now fixed.
+ <br>
+ (Alexander Grayver, 2014/08/05)
+ </li>
+
+ <li> New: The function GridTools::get_patch_around_cell() extracts
+ the set of cells that surround a single cell. The new functions
+ DoFTools::count_dofs_on_patch() and DoFTools::get_dofs_on_patch()
+ then help set up local problem on patches.
+ <br>
+ (Arezou Ghesmati, Wolfgang Bangerth, 2014/07/29)
+ </li>
+
+ <li> Fixed: Utilities::string_to_int() and
+ Utilities::string_to_double() did not catch if the
+ string given started with an integer or double but contained additional
+ text. They now throw an exception if this happens.
+ <br>
+ (Wolfgang Bangerth, 2014/07/20)
+ </li>
+
+ <li> New: The function GridOut::write can now be used also in
+ the codimension one case.
+ <br>
+ (Luca Heltai, 2014/07/18)
+ </li>
+
+ <li> New: The Function classes now take an additional optional
+ template argument, specifying the type of number to use, which defaults
+ to double.
+ <br>
+ (Luca Heltai, 2014/07/18)
+ </li>
+
+ <li> New: The GridReordering::reorder_cells() function used a
+ numbering format for the vertices in a cell that was last used in
+ deal.II version 5.2. This format is still used internally, but
+ the function now also understands the numbering that has been
+ used in deal.II ever since. The choice is made by an additional
+ argument to the function that defaults to the old-style
+ format for backward compatibility.
+ <br>
+ (Wolfgang Bangerth, 2014/07/14)
+ </li>
+
+ <li> New: There are now functions GridOut::write_vtk() and
+ GridOut::write_vtu() that can
+ write a mesh in VTK/VTU format.
+ <br>
+ (Wolfgang Bangerth, 2014/07/14)
+ </li>
+
+ <li> Fixed: PETSc up to at least version 3.5 has a bug where it does
+ not zero-initialize the ghost elements of a newly created ghosted
+ parallel vector. This is now worked around inside deal.II.
+ <br>
+ (Wolfgang Bangerth, Michal Wichrowski, 2014/07/12)
+ </li>
+
+ <li> Improved: The Trilinos direct solver, TrilinosWrappers::SolverDirect,
+ now takes a string to select among the available Amesos solvers. Moreover,
+ the solver now also supports deal.II's distributed vectors.
+ <br>
+ (Uwe Köcher, Martin Kronbichler, 2014/07/09)
+ </li>
+
+ <li> New: There are now three new preconditioner classes
+ TrilinosWrappers::PreconditionBlockJacobi,
+ TrilinosWrappers::PreconditionBlockSSOR, and
+ TrilinosWrappers::PreconditionBlockSOR that work on small dense blocks of
+ the global matrix instead of the point-wise relaxation methods in
+ TrilinosWrappers::Precondition{Jacobi,SSOR,SOR} that work on each row
+ separately.
+ <br>
+ (Martin Kronbichler, 2014/07/04)
+ </li>
+
+ <li> Fixed: Some versions of DoFTools::extract_boundary_dofs() were
+ not instantiated for some combinations of arguments. This could lead
+ to missing symbol errors during linking of applications on some
+ platforms and with some compiler versions. This is now
+ fixed.
+ <br>
+ (Wolfgang Bangerth, 2014/07/04)
+ </li>
+
+ <li> Fixed: GridGenerator::merge_triangulations sometimes produced invalid
+ orientations of faces. This is now fixed.
+ <br>
+ (Daniel Arndt, 2014/06/30)
+ </li>
+
+ <li> Fixed: TrilinosWrappers::PreconditionAMG did not read user-provided
+ constant modes (aka null space) when the null space dimension is one but not
+ just the trivial one vector. This is now fixed.
+ <br>
+ (Martin Kronbichler, 2014/06/30)
+ </li>
+
+ <li> Simplified interfaces for FEEvaluation: Previously, the user had to
+ select the appropriate kernel (FEEvaluation, FEEvaluationGeneral,
+ FEEvaluationDGP, FEEvaluationGL) for the matrix-free evaluation
+ routines. This made it difficult to write compact code that needs to select
+ between different elements. Therefore, all the functionality has been merged
+ into FEEvaluation and one should only use FEEvaluation, while the other
+ interfaces have been marked deprecated and will be removed in a future
+ version. The internal data structures for the various special cases have
+ been kept in order to provide for the most efficient routines, and are
+ selected at construction of FEEvaluation.
+ <br>
+ (Martin Kronbichler, 2014/06/27)
+ </li>
+
+ <li> Bugfix: TBB specific include directories have to be added to the
+ list of user include directories because of direct inclusion of header
+ files in base/thread_local_storage.h.
+ <br>
+ (Matthias Maier, Kainan Wang, 2014/06/25)
+ </li>
+
+ <li> Improved: GridGenerator::hyper_cube() accepts a
+ <code>colorize</code> argument.
+ <br>
+ (Guido Kanschat, 2014/06/23)
+ </li>
+
+ <li> New: %Functions DoFTools::extract_locally_relevant_dofs(),
+ parallel::distributed::GridRefinement::refine_and_coarsen_fixed_number() and
+ parallel::distributed::GridRefinement::refine_and_coarsen_fixed_fraction() are
+ now also instantiated for objects of codimension 1.
+ <br>
+ (Michal Wichrowski, 2014/06/15)
+ </li>
+
+ <li> New: There are now functions Triangulation::has_hanging_nodes()
+ and parallel::distributed::Triangulation::has_hanging_nodes().
+ <br>
+ (Denis Davydov, 2014/06/15)
+ </li>
+
+ <li> New: There is now function Triangulation::n_global_active_cells().
+ <br>
+ (Denis Davydov, 2014/06/19)
+ </li>
+
+ <li> New: The class FEEvaluation now provides optimized matrix-free
+ evaluation routines for FE_Q_DG0 elements.
+ <br>
+ (Martin Kronbichler, 2014/06/13)
+ </li>
+
+ <li> Bugfix: Filter libclang_rt* from the PETSc link line.
+ <br>
+ (Matthias Maier, 2014/06/04)
+ </li>
+
+ <li> Improved: ParameterHandler parsing added to DoFOutputOperator
+ <br>
+ (Guido Kanschat, 2014/06/03)
+ </li>
+
+ <li> Improved: Algorithms::ThetaTimestepping and other operators now use AnyData
+ to communicate with operators they rely on. This way, time step data
+ can be forwarded using the same mechanism, and no complicated back
+ access to member data is required
+ anymore. MeshWorker::IntegrationInfo uses AnyData as well.
+ <br>
+ (Guido Kanschat, 2014/06/03)
+ </li>
+
+ <li> Bugfix: CMake: Also clean CMAKE_MODULE_PATH prior to call to
+ FIND_PACKAGE(Boost) inside FindBOOST.cmake because apparently
+ "Boost" == "BOOST" for the Mac file system...
+ <br>
+ (Matthias Maier, 2014/05/28)
+ </li>
+
+ <li> Improved: CMake: Search results and error conditions for external
+ libraries are now much more verbose. Added an MPI sanity check.
+ <br>
+ (Matthias Maier, 2014/05/28)
+ </li>
+
+ <li> Fixed: The MatrixTools::apply_boundary_values() variant that works
+ on PETSc matrices could produce a deadlock in parallel if one processor
+ had no boundary values to apply. This is now fixed.
+ <br>
+ (Michal Wichrowski, 2014/05/19)
+ </li>
+
+ <li> New: AnyData::try_read() is a function that allows users to check
+ whether an entry exists and get a pointer to it without throwing an
+ exception in case of failure.
+ <br>
+ (Guido Kanschat, 2014/05/16)
+ </li>
+
+ <li> New: The GMRES solver of deal.II can now write an estimate of
+ eigenvalues to the log file, in analogy to the CG solver. This is enabled
+ by the flag SolverGMRES::AdditionalData::compute_eigenvalues.
+ <br>
+ (Martin Kronbichler, 2014/05/11)
+ </li>
+
+ <li> New: The GridIn::read_vtk() function places fewer restrictions
+ on the VTK files it wants to read and should, consequently, be able
+ to read more correctly formatted VTK files than before.
+ <br>
+ (Giorgos Kourakos, 2014/05/08)
+ </li>
+
+ <li> New: There is now a QSorted quadrature which takes an
+ arbitrary quadrature at construction time and reorders the quadrature
+ points according to the weights, from smaller to bigger. This should
+ improve stability of higher order polynomial integration.
+ <br>
+ (Luca Heltai, 2014/05/07)
+ </li>
+
+ <li> New: The class VectorizedArray<Number> now provides methods
+ VectorizedArray::load(ptr) to read from arbitrary pointer addresses and
+ VectorizedArray::store(ptr) to write to arbitrary pointer addresses,
+ as opposed to the data layout of VectorizedArray that requires pointers
+ to be aligned by the size of the array in bytes. This also circumvents
+ a (rare) compiler optimization bug with gcc-4.6 on SSE code in combination
+ with function calls, e.g. to std::sin.
+ <br>
+ (Martin Kronbichler, 2014/05/05)
+ </li>
+
+ <li> Changed: Namespace SparsityTools had a local typedef <code>size_type</code>
+ that was set equal to types::global_dof_index. This typedef has been removed
+ and we now use SparsityPattern::size_type wherever applicable as this is the
+ type we really want to use. (The code worked previously because
+ types::global_dof_index and SparsityPattern::size_type happen to be the same
+ as far as the underlying type is concerned; however, they are different
+ semantically.)
+ <br>
+ (Wolfgang Bangerth, 2014/05/04)
+ </li>
+
+ <li> Updated: The step-16 tutorial program was updated to the new layout
+ multigrid objects and thus avoids using deprecated interfaces.
+ <br>
+ (Martin Kronbichler, 2014/05/03)
+ </li>
+
+ <li> Fixed: FE_DGQArbitraryNodes::has_support_on_face was broken when
+ polynomials with support points not on the element boundary were used.
+ This is now fixed.
+ <br>
+ (Martin Kronbichler, 2014/04/30)
+ </li>
+
+ <li> Fixed: parallel::distributed::Triangulation::load now has an
+ additional parameter <code>autopartition</code> to control p4est's behavior of
+ rebalancing triangulations between MPI nodes upon reading. It is
+ particularly useful to disable this behavior when data is stored
+ separately (examples for this are in the regression tests mpi/p4est_save_0?).
+ <br>
+ (Alexander Grayver, Matthias Maier, 2014/04/26)
+ </li>
+
+ <li> Fixed: GridTools::find_active_cell_around_point() could get into an infinite
+ loop if the point we are looking for is in fact not within the domain. This is now
+ fixed.
+ <br>
+ (Giorgos Kourakos, Timo Heister, Wolfgang Bangerth, 2014/04/14)
+ </li>
+
+ <li> Changed: TableBase now uses AlignedVector for storing data
+ instead of std::vector, which allows its use for VectorizedArray<Number>
+ data fields which require more alignment.
+ <br>
+ (Martin Kronbichler, 2014/04/09)
+ </li>
+
+ <li> Improved: Piola transformation for FE_BDM is now active.
+ <br>
+ (Guido Kanschat, 2014/04/09)
+ </li>
+
+ <li> Changed: operator< for cell iterators no longer looks at
+ (level-)subdomain ids but only compares level() and index(). This makes the
+ ordering inconsistent between processes on a
+ parallel::distributed::Triangulation, but fixes the problem that the
+ ordering of cells changes under mesh refinement or other causes for changing
+ the subdomain id.
+ <br>
+ (Timo Heister, 2014/04/08)
+ </li>
+
+ <li> New: GridTools::laplace_transform() now takes an additional, optional
+ parameter that indicates the "stiffness" of the mapping.
+ <br>
+ (Denis Davydov, Jean-Paul Pelteret, 2014/04/07)
+ </li>
+
+ <li> Fixed: DoFTools::extract_constant_modes now correctly identifies both
+ constant modes in the scalar element FE_Q_DG0, which has been realized by a
+ few modifications in how the constant modes propagate from the element to
+ the extract_constant_modes() function.
+ <br>
+ (Martin Kronbichler, 2014/04/04)
+ </li>
+
+ <li> Fixed: GridTools::laplace_transform had previously announced in
+ the documentation that one can also set the location of interior points,
+ but this was not in fact what was implemented. This has now been fixed:
+ the code can now do that.
+ <br>
+ (Denis Davydov, Wolfgang Bangerth, 2014/03/23)
+ </li>
+
+ <li> Improved: Inhomogeneous tangential and normal flow constraints can
+ now be treated via VectorTools::compute_nonzero_normal_flux_constraints
+ and VectorTools::compute_nonzero_tangential_flux_constraints.
+ <br>
+ (Daniel Arndt, 2014/03/16)
+ </li>
+
+ <li> Changed: Class TriaAccessor had a function parent_index(), but this function
+ could only work for cell accessors. The function has consequently been moved
+ to class CellAccessor.
+ <br>
+ (Wolfgang Bangerth, 2014/03/15)
+ </li>
+
+ <li> Fixed: step-32 had a piece of code where we accessed an internal
+ representation of how Trilinos vectors are actually stored. This is poor
+ style and has been rewritten.
+ <br>
+ (Wolfgang Bangerth, 2014/03/14)
+ </li>
+
+ <li> Fixed: VectorTools::project_boundary_values_curl_conforming contained
+ a bug for some cases. This is now fixed.
+ <br>
+ (Markus Bürg, 2014/03/10)
+ </li>
+
+ <li> Fixed: ParameterHandler will no longer output an error if the file
+ to be read ends with "end" without a newline.
+ <br>
+ (Timo Heister, 2014/02/28)
+ </li>
+
+ <li>Improved: DoFRenumbering::Cuthill_McKee can now run with distributed
+ triangulations with the renumbering only done within each processor's
+ subdomain.
+ <br>
+ (Martin Kronbichler, 2014/02/20)
+
+ <li>Fixed: There was an indexing error in GridIn::read_vtk() that triggered
+ for some input files. This is now fixed.
+ <br>
+ (Mayank Sabharwal, 2014/02/19)
+
+ <li>New: There is a new namespace TimeStepping for the algorithms that do time
+ integrations. In this new namespace, several Runge-Kutta methods have been
+ implemented: explicit methods, implicit methods, and embedded explicit methods.
+ <br>
+ (Damien Lebrun-Grandie, Bruno Turcksin, 2014/02/17)
+
+ <li>New: There is now a class FEEvaluationDGP that implements matrix-free
+ evaluation routines by truncated tensor products for FE_DGP elements.
+ <br>
+ (Martin Kronbichler, 2014/02/17)
+
+ <li>Changed: The InverseMatrixRichardson used to eat all exceptions
+ that may have been produced by the underlying Richardson solver, leaving
+ no trace that the underlying solver may have failed when you call functions
+ such as InverseMatrixRichardson::vmult(). These exceptions are now propagated
+ out to the caller.
+ <br>
+ (Wolfgang Bangerth, 2014/02/16)
+
+
+ <li>New: FE_TraceQ implements finite elements on faces, which
+ correspond to the traces of H<sup>1</sup>-conforming elements.
+ <br>
+ (Angela Klewinghaus, 2014/02/14)
+
+ <li>New: FE_FaceQ and FE_FaceP now also work in 1D (with a single dof
+ on each vertex).
+ <br>
+ (Martin Kronbichler, 2014/02/11)
+
+ <li>Fixed: FE_DGQ::has_support_on_face returned a wrong number for element
+ degree larger than 1 in 1D. This is now fixed.
+ <br>
+ (Martin Kronbichler, 2014/02/10)
+
+ <li>Changed: DerivativeApproximation used to be a class that only had
+ static members. It is now a namespace.
+ <br>
+ (Wolfgang Bangerth, 2014/02/08)
+
+ <li>New: Threads::ThreadLocalStorage::clear() clears out all objects allocated on the
+ current and all other threads.
+ <br>
+ (Wolfgang Bangerth, 2014/02/06)
+
+ <li>Fixed: A configuration error on Debian Testing where accidentally a
+ non-pic libSuiteSparse_config.a was picked up when building a shared
+ library up resulting in a link error.
+ <br>
+ (Matthias Maier, 2014/02/04)
+
+ <li> Changed: GridTools::transform() can now deal with meshes with hanging nodes.
+ <br>
+ (Timo Heister, 2014/02/04)
+ </li>
+
+ <li>Fixed: Calling FEValuesViews::Vector::get_function_curls() computed
+ wrong results in some cases (see https://code.google.com/p/dealii/issues/detail?id=182).
+ This is now fixed.
+ <br>
+ (Christoph Heiniger, Wolfgang Bangerth, 2014/02/03)
+
+ <li>Added: The class LAPACKFullMatrix now implements interfaces to
+ matrix-matrix multiplication. Also, LAPACKFullMatrix::apply_lu_factorization
+ now also operates on multiple right hand sides in form of another
+ LAPACKFullMatrix.
+ <br>
+ (Martin Kronbichler, 2014/02/03)
+
+ <li>Fixed: The build system does no longer record full paths to system
+ libraries but uses the appropriate short names instead.
+ <br>
+ (Matthias Maier, 2014/02/01)
+
+ <li>Reworked: External feature setup. Disabling a feature now cleans up
+ associated internal, cached variables. A per-feature linkage test now spots
+ common linking inconsistencies early in the configuration stage (and not
+ just after a complete compilation).
+ <br>
+ (Matthias Maier, 2014/02/01)
+
+ <li>New/fixed: The ParameterHandler::print_parameters_section
+ method did not work for XML output. There is now a flag
+ include_top_level_elements which prints all higher
+ subsection elements, default is false.
+ For XML output setting this flag to true is required
+ to ensure that the output is a valid XML document,
+ starting with one root element ParameterHandler and
+ compatible with read_input_from_xml and the parameterGUI.
+ <br>
+ (Martin Steigemann, 2014/02/01)
+
+ <li>New: There is now a method to copy the content from a
+ PETScWrappers::MPI::Vector and TrilinosWrappers::MPI::Vector to
+ deal.II's parallel distributed vector.
+ <br>
+ (Ben Thompson, Martin Kronbichler, 2014/01/31)
+
+ <li>Fixed: The SolutionTransfer class had all sorts of problems when
+ used with hp::DoFHandler that made its results at least questionable.
+ Several parts of this class have been rewritten to make the results
+ more predictable and, likely, more correct.
+ <br>
+ (Wolfgang Bangerth, 2014/01/26)
+
+ <li>Fixed: A regression where a single whitespace accidentally added to
+ DEAL_II_LINKER_FLAGS internally prevented cmake-2.8.8 from configuring
+ successfully.
+ <br>
+ (Matthias Maier, Krysztof Bzowski, 2014/01/26)
+
+ <li> Fixed: SparsityPattern::max_entries_per_row() forgot to consider
+ the last row of the matrix and consequently sometimes returned
+ wrong values. This is now fixed.
+ <br>
+ (Martin Kronbichler, 2014/01/22)
+ </li>
+
+ <li> Improved: In rare cases when the vector of error indicators
+ has entries equal to zero the adjust_interesting_range method
+ produces a negative lower bound. As a result the
+ parallel::distributed::GridRefinement::refine_and_coarsen_fixed_*
+ methods flagged the wrong number of cells for coarsening and refinement.
+ This is now changed by adjusting the lower bound in adjust_interesting_range
+ only, if not equal to zero.
+ <br>
+ (Martin Steigemann, 2014/01/22)
+ </li>
+
+ <li> Changed: It was previously possible to set the
+ <code>active_fe_index</code> on non-active cells of an hp::DoFHandler.
+ However, this was prone to mistakes because it may lead to the assumption
+ that a finite element space out of the ones described by the hp::FECollection
+ associated with this hp::DoFHandler was actually associated with such
+ a cell. Since we do not actually distribute degrees of freedom for such
+ hp::DoFHandler objects on non-active cells, this is not the case. Consequently,
+ it no longer has any effect to assign active FE indices to non-active cells:
+ these values are simply reset later on.
+ <br>
+ (Wolfgang Bangerth, 2014/01/20)
+ </li>
+
+ <li> Fixed: The method DoFTools::extract_constant_modes only worked for
+ elements where the constant function 1 is represented by all ones. This
+ is now fixed by querying the element for its constant modes on each cell.
+ <br>
+ (Martin Kronbichler, 2014/01/19)
+ </li>
+
+ <li> Fixed: PETScWrappers::MPI::Vector::all_zero() was broken with more than
+ one processor (illegal memory access) and did not communicate between all
+ processors. Documentation for many vector types of all_zero() has been extended.
+ <br>
+ (Timo Heister, 2014/01/17)
+ </li>
+
+ <li> Fixed/new: DoFCellAccessor::set_dof_values_by_interpolation and
+ DoFCellAccessor::get_interpolated_dof_values could previously be
+ called for hp::DoFHandler objects on cells that are non-active. This
+ makes no sense since these cells have no associated finite element
+ space. Doing so now raises an exception.
+ <br>
+ However, there are legitimate cases where one may want to interpolate
+ from children to a parent's finite element space or the other way around.
+ Since in the hp
+ case no finite element space is naturally associated with an inactive
+ cell, it is now possible to pass an explicit finite element index
+ argument to these functions specifying which element of an hp::FECollection
+ object describes the space onto which you want to interpolate.
+ <br>
+ (Mihai Alexe, Wolfgang Bangerth, 2014/01/18)
+ </li>
+
+ <li> Fixed: The methods IndexSet::do_compress() and
+ IndexSet::add_indices(IndexSet&) had quadratic complexity in the number of
+ ranges. The algorithms have been changed into linear complexity ones.
+ <br>
+ (Martin Kronbichler, 2014/01/15)
+ </li>
+
+ <li> Fixed: There were several bugs in functions like
+ FEValues::get_function_values() where the code did not properly handle the
+ case of FE_Nothing. This is now fixed.
+ <br>
+ (Wolfgang Bangerth, 2014/01/08)
+ </li>
+
+ <li> Fixed: DataOut got confused in some situations where one uses FE_Nothing.
+ This is now fixed.
+ <br>
+ (Minh Do-Quang, Wolfgang Bangerth, 2014/01/08)
+ </li>
+
+ <li> Fixed: FESystem::get_interpolation_matrix, a function that is among
+ other places used by SolutionTransfer, had a bug that prevented it from
+ running correctly in some situations where one uses FE_Nothing.
+ This is now fixed.
+ <br>
+ (Minh Do-Quang, Wolfgang Bangerth, 2014/01/08)
+ </li>
+
+ <li> Improved: When you call WorkStream::run with an empty function object
+ for the copier, operations on individual cells are essentially all independent.
+ In other words, you have a massively parallel collection of jobs. In this
+ case, a parallel for loop over all elements is better suited than the
+ pipeline approach currently used. This has now been implemented.
+ <br>
+ (Wolfgang Bangerth, 2013/12/26)
+ </li>
+
+ <li> New: The new function VectorTools::interpolate_based_on_material_id()
+ can be used to interpolate several functions onto a mesh, based on the
+ material id of each cell individually.
+ <br>
+ (Valentin Zingan, 2013/12/26)
+ </li>
+
+ <li> New: A new reinit() method has been introduced to
+ TrilinosWrappers::SparsityPattern that takes all rows that are possibly
+ written into as an optional argument. This allows for pre-allocating all
+ possible entries right away, which makes writing into the matrix from
+ several threads possible (otherwise, only one processor at a time can write
+ off-processor data). Similarly, TrilinosWrappers::MPI::Vector objects can
+ be initialized with hints to ghost elements for a writable vector that can
+ be added into from multiple threads.
+ <br>
+ (Martin Kronbichler, 2013/12/23)
+ </li>
+
+ <li> New: The TableBase::fill function has become more powerful in that
+ it now doesn't just take pointers to initializing elements but can deal
+ with arbitrary input iterators. It now also takes a flag that denotes the
+ order in which table elements are initialized, allowing to switch between
+ C- and Fortran-style table layouts.
+ <br>
+ Along with the TableBase::fill function, the Table classes of various
+ ranks have also gotten constructors that allow the in-place construction
+ not only of a table of correct size, but already initialized from
+ somewhere. This finally allows to mark Table objects as const by creating
+ them already with the correct content.
+ <br>
+ (Wolfgang Bangerth, 2013/12/21)
+ </li>
+
+ <li> New: There is now a new class Functions::InterpolatedTensorProductGridData that can
+ be used to (bi-/tri-)linearly interpolate data given on a tensor product
+ mesh of $x$ (and $y$ and $z$) values, for example to evaluate experimentally
+ determined coefficients, or to assess the accuracy of a solution by
+ comparing with a solution generated by a different code and written in
+ gridded data. There is also a new class Functions::InterpolatedUniformGridData that
+ can perform the same task more efficiently if the data is stored on meshes
+ that are uniform in each coordinate direction.
+ <br>
+ (Wolfgang Bangerth, 2013/12/20)
+ </li>
+
+ <li> Fixed: ParameterHandler::get_double() and ParameterHandler::get_integer()
+ had bugs in that they didn't detect if they were asked to return a number
+ for a parameter whose value was in fact not a number but some general
+ text. This is now fixed.
+ <br>
+ (Wolfgang Bangerth, 2013/12/19)
+ </li>
+
+ <li> Fixed: VectorTools::project_boundary_values could not deal with
+ function values close to (but not exactly equal to) zero. This is now fixed.
+ <br>
+ (Martin Kronbichler, 2013/12/16)
+ </li>
+
+ <li> New: It is now possible to select between different smoothers and coarse
+ solvers in the Trilinos AMG preconditioners by a string to the smoother's name.
+ <br>
+ (Andrew Baker, 2013/12/14)
+ </li>
+
+</ol>
+
+
+*/
// ---------------------------------------------------------------------
/**
-@page changes_after_8_1 Changes after Version 8.1
+@page changes_after_8_2 Changes after Version 8.2
<p>
-This is the list of changes made after the release of
-deal.II version 8.1.0.
-All entries are signed with the names of the authors.
+This is the list of changes made after the release of deal.II version
+8.2.0. All entries are signed with the names of the authors.
</p>
</p>
<ol>
- <li> Removed: The base class to the iterative linear solvers, Solver,
- received a SolverControl object upon construction and had a member
- function <code>control()</code> that returned a reference to the
- object previously passed in. The class now no longer stores such
- a reference, and consequently, the function has been removed.
- <br>
- (Wolfgang Bangerth, 2014/10/24)
- </li>
-
- <li> Removed: The constructor of the Utilities::MPI::MPI_InitFinalize
- class used to interpret a last argument equal to numbers::invalid_unsigned_int
- as "<i>create as many threads as there are processor cores on the current
- system</i>" for each MPI process. If there were multiple MPI processes on a
- given node, this would lead to (sometimes massive) overallocation of resources
- because <i>every</i> MPI process would create as many threads as there are cores.
- This has now been changed: an argument equal to numbers::invalid_unsigned_int
- is now interpreted as "<i>subdivide the available cores between all MPI
- processes running on the current system and let each process create as many
- threads as cores were allocated to it</i>".
- <br>
- (Wolfgang Bangerth, 2014/09/16)
- </li>
-
- <li> Removed: CMake's configure phase no longer calls back into testsuite
- subprojects. If a build directory is reconfigured the testsuite has to be
- regenerated by hand using <code>make regen_tests</code>.
- <br>
- (Matthias Maier, 2014/07/16)
- </li>
-
- <li> Removed: Class PointerMatrixBase (and, consequently, the various
- classes derived from it) had comparison operators that were intended to
- work generically for any kind of derived class. However, the implementation
- used a scheme that was not robust enough to handle the various situations
- that derived classes implemented and, consequently, was not always correct.
- These operators were not previously used inside the library and, likely,
- were not widely used in applications either. They have now been removed.
- <br>
- (Wolfgang Bangerth, 2014/02/15)
- </li>
-
- <li> The change from functionparser to muparser introduced a small number of
- incompatibilities: units, use_degress, and recursion with 'eval' are no
- longer supported. Comparing for equality is done using '==' instead of '='.
- <br>
- (Timo Heister, 2014/02/10)
- </li>
-
- <li> Changed: The various classes generating graphical output, such
- as DataOut or DataOutStack, are all derived from a common interface
- class DataOutInterface which, in turn was derived from DataOutBase
- through <i>private</i> inheritance. Because we frequently also
- access the (public) members of this private base class this has tripped
- up most every compiler we know of at one point or another. Furthermore,
- because DataOutBase was a class that only defined static member functions
- and had not member variables, there was really no reason for this
- construct.
- <br>
- For these reasons, DataOutBase is now just a regular namespace and the
- inheritance is gone. For the most part, this should not lead to any
- incompatibilities except in cases where you accessed members of
- DataOutBase through their derived classes. For example, it was possible
- to write DataOut::Patch even though the
- Patch class is actually declared in DataOutBase. Since
- the inheritance is now gone, this is no longer possible and one
- actually has to write DataOutBase::Patch instead. Using this form
- turns out to be compatible also with older versions of deal.II.
- <br>
- (Wolfgang Bangerth, 2014/02/01)
- </li>
</ol>
<ol>
- <li> New: Several parts of the library have been adjusted to allow
- compilation with Microsoft Visual Studio. Unfortunately, not all
- of the library can be compiled yet.
- <br>
- (Lukas Korous, 2014/12/03)
- </li>
-
- <li> New: Added support for OpenCASCADE (www.opencascade.org)
- library, which allows the use of arbitrary IGES files to describe
- the boundary of a mesh. The use of the new classes is described in
- the new Step-54.
- <br>
- (Luca Heltai, Andrea Mola, 2014/10/31)
- </li>
-
- <li> New: The classes implementing iterative solvers have gained
- a mechanism by which it is possible to observe the progress of
- the iterations, or to influence when to stop the iteration. The
- documentation of the Solver class now contains an extended
- discussion and example of this functionality.
- <br>
- (Wolfgang Bangerth, 2014/10/24)
- </li>
-
- <li> New: There is now a section in the introduction of step-36 that
- discusses the interaction of Dirichlet boundary values and the solution
- of eigenvalue problems.
- <br>
- (Denis Davydov, Wolfgang Bangerth, 2014/09/28)
- </li>
-
- <li> New: The glossary now contains an extensive entry on ghosted and
- non-ghosted vectors (see @ref GlossGhostedVector ).
- <br>
- (Wolfgang Bangerth, 2014/09/27)
- </li>
-
- <li> New: MappingQ is now aware of
- Manifold, i.e., we can use high order mappings that
- actually follow the geometry also on the interior of codimension
- zero meshes.
- <br>
- (Luca Heltai, 2014/09/13)
- </li>
-
- <li> New: The new tutorial program step-52 explains how to use the
- new time stepping methods.
- <br>
- (Bruno Turcksin, Damien Lebrun-Grandie, 2014/09/12)
- </li>
-
- <li> New: The new tutorial program step-53 explains how to deal with
- complicated geometries.
- <br>
- (Wolfgang Bangerth, Luca Heltai, 2014/09/02)
- </li>
-
- <li> Changed: Namespace std_cxx1x has been renamed to namespace
- std_cxx11 to match the fact that the corresponding C++ standard
- was approved back in 2011. The old namespace name was retained for
- backward compatibility but is now deprecated.
- <br>
- (Wolfgang Bangerth, 2014/09/01)
- </li>
-
- <li> New: Most of the operations done on Vector (like add, sadd, etc.)
- are now vectorized (SIMD) using OpenMP 4.0.
- <br>
- (Bruno Turcksin, 2014/08/25)
- </li>
-
- <li> Updated: The version of BOOST that comes bundled with deal.II has
- been updated to 1.56.0.
- <br>
- (Wolfgang Bangerth, 2014/08/19)
- </li>
-
- <li> Fixed: Newer versions of GCC (e.g. 4.9.x) are no longer compatible
- with BOOST 1.46. Consequently, the CMake scripts now require at least
- BOOST 1.48 in order to use a BOOST version found on the system. If no
- installed BOOST library is found, or if the version is older than 1.48,
- CMake will simply take the one that comes bundled with deal.II.
- <br>
- (Wolfgang Bangerth, 2014/08/19)
- </li>
-
- <li> New: There is now a documentation module that describes
- deal.II's support for and interaction with the
- @ref CPP11 "C++11 standard".
- <br>
- (Wolfgang Bangerth, 2014/08/14)
- </li>
-
- <li> New: Added support for curved interior cells for all Triangulation
- dimensions.
- <br>
- A new Manifold<dim,spacedim> class was introduced which only contains the
- interface needed by Triangulation to refine objects, leaving all boundary
- related functions in the class Boundary<dim,spacedim>, which was made
- derived from Manifold<dim,spacedim>.
- <br>
- This new construction allows for curved interior cells, and custom refinement
- strategies (see, for example, the new tutorial program step-53).
- At the moment the following Manifolds are supported:
- <ul>
- <li> FlatManifold<dim,spacedim>: This class replaces the old
- StraightBoundary<dim,spacedim>, and it adds support for periodic
- manifolds. This is the simplest class one can use to create new Manifold classes;
- </li>
- <li> ManifoldChart<dim,spacedim,chartdim>: This is one of the most general Manifold
- one can think of. The user can overload the functions ManifoldChart::pull_back() and
- ManifoldChart::push_forward(), to obtain a very general curved geometry, following
- concepts typical of elasticity;
- </li>
- <li> SphericalManifold<dim,spacedim>: A simple implementation of spherical coordinates
- transformations. This manifold allows hyper shells with curved interior cells which
- follow the natural shape of the shell;
- </li>
- </ul>
- <br>
- The functions
- Triangulation::set_boundary() and Triangulation::get_boundary() can still be used to
- set and get Boundary objects instead of Manifold ones. For the get function, an exception
- is thrown if a conversion to a valid Boundary class cannot be made on the fly.
- <br>
- (Luca Heltai, 2014/08/06)
- </li>
-
- <li> Ported: The build system now supports CMake 3.0.
- <br>
- (Matthias Maier, 2014/07/15)
- </li>
-
- <li> New: Added support for curved interior boundaries, and general
- manifold id description.
- <br>
- A new attribute was added to each triangulation object
- (types::manifold_id) which allows one to specify a manifold
- description, much in the same way we do for boundaries, also for
- interior edges and faces. At the moment this information is used
- only for objects of topological dimension less than spacedim, but a
- generalization of the class Boundary<dim,spacedim> is on its way to
- allow also curved cells.
- <br>
- For the moment, full backward compatibility is granted, and one can
- keep using the old Boundary<dim,spacedim>, together with
- Triangulation::set_boundary(), and Triangulation::get_boundary()
- methods. However, this change suggests to use the types::boundary_id associated
- with each boundary face to indicate only boundary condition types, and
- it allows to separate the geometric meaning from the physical meaning. The
- suggested usage is
- - types::boundary_id is used for the physical meaning
- - types::manifold_id is used for the geometric meaning.
- <br>
- (Luca Heltai, 2014/07/14)
- </li>
-
- <li> New: Tutorial programs (and a few other places) are now cross-linked
- to their corresponding video lectures.
- <br>
- (Wolfgang Bangerth, 2014/07/10)
- </li>
-
- <li> Changed: The functionparser library bundled with deal.II got replaced
- by the <a href="http://muparser.beltoforion.de/">muparser</a> library.
- <br>
- (Timo Heister, 2014/02/10)
- </li>
-
- <li> Changed: It was possible to call DoFCellAccessor::set_active_fe_index()
- on non-active cells. However, this made no sense: Since degrees of
- freedoms only exist on active cells
- for hp::DoFHandler (i.e., there is currently no implementation
- of multilevel hp::DoFHandler objects), it does not make sense
- to assign active FE indices to non-active cells since they
- do not have finite element spaces associated with them without
- having any degrees of freedom.
- <br>
- The same of course is true for asking for the finite element active
- on a non-active cell, i.e. using the functions
- DoFAccessor::active_fe_index() and
- DoFAccessor::get_fe(). All of these functions now produce exceptions on
- non-active cells.
- <br>
- (Wolfgang Bangerth, 2014/01/24)
- </li>
-
- <li> New: deal.II now links with the
- <a href="http://www.boost.org/doc/libs/1_55_0/libs/iostreams/doc/index.html">BOOST
- Iostreams</a> library (at least if the libz and libbz2 libraries
- can be found that are necessary for BOOST Iostreams).
- Among many other things, this allows to easily
- read files that have been compressed, as in the following code snippet:
- @code
- #include <boost/iostreams/filtering_stream.hpp>
- #include <boost/iostreams/filter/gzip.hpp>
- #include <boost/iostreams/device/file.hpp>
-
- ...
-
- boost::iostreams::filtering_istream in;
- in.push(boost::iostreams::basic_gzip_decompressor<>());
- in.push(boost::iostreams::file_source("myfile.gz"));
-
- int i;
- in >> i;
- @endcode
- More documentation on how to use BOOST Iostream can be found
- in the documentation link referenced above.
- <br>
- (Wolfgang Bangerth, 2013/12/21)
- </li>
</ol>
<h3>Specific improvements</h3>
<ol>
- <li>Fixed: CMake now correctly detects -Wno-... support for gcc.
- <br>
- (Matthias Maier, 2014/12/11)
- </li>
-
- <li> New: The FE_Q and FE_Q_Hierarchical classes now include pictures
- of their 2d shape functions in the class documentation.
- <br>
- (Manuel Quezada de Luna, Wolfgang Bangerth, 2014/12/09)
- </li>
-
- <li> Fixed: Calling DoFRenumbering::Cuthill_McKee threw an exception
- whenever one of the processors of a parallel triangulation did not own
- any degrees of freedom.
- <br>
- (Michal Wichrowski, Wolfgang Bangerth, 2014/12/04)
- </li>
-
- <li> Fixed: Serializing an object of type DoFHandler did not work without
- including additional header files.
- <br>
- (David Wells, Wolfgang Bangerth, 2014/11/26)
- </li>
-
- <li> New: The class FEEvaluation with its fast tensor evaluation routines
- can now be initialized from a mapping, a finite element, a quadrature, and
- update flags on the fly similar to FEValues. This provides an alternative
- entry point to these routines without the need to create a MatrixFree data
- object.
- <br>
- (Martin Kronbichler, 2014/11/20)
- </li>
-
- <li> New: Complete the interface for periodic boundary conditions.
- Now, it is possible to specify an additional (geometric) rotation matrix along
- with vector components that should be rotated when applying periodic boundary
- conditions (or alternatively, directly a transformation matrix working
- directly on dofs). With this it is now possible to e.g. compute Stokes flow
- on a quarter pie with periodic boundary conditions and the velocity correctly
- transformed.
- <br>
- (Daniel Arndt, Matthias Maier, 2014/11/19)
- </li>
-
- <li> Improved: Vector updates in PreconditionChebyshev based on deal.II's own
- vectors are now vectorized with OpenMP 4.0 SIMD pragmas.
- <br>
- (Martin Kronbichler, Bruno Turcksin, 2014/11/17)
- </li>
-
- <li> New: Added support for STEP files in the OpenCASCADE
- wrappers. STEP files can now be imported and exported respectively
- with the OpenCASCADE::read_STEP() and OpenCASCADE::write_STEP() functions.
- <br>
- (Andrea Mola, 2014/11/12)
- </li>
-
- <li> New: Timer now has get_lap_time() which returns the time
- lapsed between the last start()/stop() cycle.
- <br>
- (Fahad Alrashed, 2014/11/09)
- </li>
-
- <li> New: GridTools::get_locally_owned_vertices() allows to query
- which vertices of a triangulation are owned by the current
- processor.
- <br>
- (Wolfgang Bangerth, 2014/11/09)
- </li>
-
- <li> New: parallel::distributed::Triangulation::communicate_locally_moved_vertices()
- allows to
- update vertex positions that have been moved just locally on distributed
- meshes. GridTools::distort_random now works for distributed meshes and
- hanging nodes in 3D as well.
- <br>
- (Daniel Arndt, 2014/11/06)
- </li>
-
- <li> New: TableHandler objects can be cleared - i.e. reset to a
- zero-sized state.
- <br>
- (Fahad Alrashed, 2014/11/09)
- </li>
-
- <li> New: The FE_Nothing class now has a second template argument
- corresponding to the space dimension in which the mesh is embedded,
- like many other classes. This allows to use this element in codimension
- one cases as well now.
- <br>
- (Wolfgang Bangerth, 2014/11/05)
- </li>
-
- <li> Fixed: Using the FEEvaluation framework did not work for
- scalar elements in 1d because there were conflicting partial
- specializations. This is now fixed.
- <br>
- (Shiva Rudraraju, 2014/11/04)
- </li>
-
- <li> New: There is now a macro <code>DEAL_II_VERSION_GTE</code>
- that can be used to test whether the deal.II version is greater
- than or equal a particular version number. This is useful if you
- need to make application programs compatible with different
- deal.II releases.
- <br>
- (Wolfgang Bangerth, 2014/10/31)
- </li>
-
- <li> New: The vector classes in deal.II (including Trilinos and PETSc
- wrappers) now have a new method x.add_and_dot(factor,v,w) which performs
- x.add(factor,v) and subsequent inner product of x with another vector
- w. This operation occurs in some iterative solvers; by a combined operation,
- reduced memory transfer and thus higher performance are enabled.
- <br>
- (Martin Kronbichler, 2014/10/27)
- </li>
-
- <li> Improved: Inner products and norms on deal.II's own vector classes now
- use vectorization through VectorizedArray if available.
- <br>
- (Martin Kronbichler, 2014/10/27)
- </li>
-
- <li> Changed: PETSc and Trilinos vectors with ghost entries can now be reset to zero
- using = 0.0;
- <br>
- (Timo Heister, 2014/10/14)
- </li>
-
- <li> New: The new function FiniteElement::get_associated_geometry_primitive() allows to
- query whether a given degree of freedom is associated with a vertex, line,
- quad, or hex.
- <br>
- (Wolfgang Bangerth, 2014/09/26)
- </li>
-
- <li> Fixed: The vector and array versions of Utilities::MPI::sum() and
- Utilities::MPI::max() produced segmentation faults with some MPI implementations
- if the input and output arguments were the same. This is now fixed.
- <br>
- (Wolfgang Bangerth, 2014/09/29)
- </li>
-
- <li> Fixed: Trying to have FE_Q(p) and FE_DGQ(r) elements next to each
- other in an hp::DoFHandler object led to assertions saying that these two
- elements don't know how to compute interface constraints where such
- elements touch. This has now been fixed: FE_DGQ is a discontinuous element,
- so there cannot be any interface constraints at all.
- <br>
- (Wolfgang Bangerth, 2014/09/26)
- </li>
-
- <li> Fixed: The function TrilinosWrappers::VectorBase::sadd(double factor,
- VectorBase &v) erroneously added factor*v instead of scaling the calling
- vector by factor. This is now fixed.
- <br>
- (Martin Kronbichler, 2014/09/26)
- </li>
-
- <li> Fixed: The function TrilinosWrappers::SparseMatrix::add(double factor,
- SparseMatrix &rhs) produced wrong results and ran into an exception if the
- rhs matrix included off-processor column entries. This is now fixed.
- <br>
- (Martin Kronbichler, 2014/09/21)
- </li>
-
- <li> New: The function Threads::Task::joinable() can be used to verify whether
- a task object can be joined or not.
- <br>
- (Wolfgang Bangerth, 2014/09/17)
- </li>
-
- <li> New: Added two optional parameters to TriaAccessor::center()
- and a new method TriaAccessor::intermediate_point().
- They allow to query for a
- geometrically coherent center, or ask for arbitrary points on the
- underlying Manifold, given the dim coordinates in the reference
- element.
- Triangulation was refactored internally to use the new
- TriaAccessor::center() interface when querying for new points.
- <br>
- (Luca Heltai, 2014/09/13)
- </li>
-
- <li> Improved: Optimize construction of high-order FE_Nedelec by moving out some
- non-essential computations. Namely, construct restriction and prolongation
- matrices on first request. This reduces time spent in FE_Nedelec constructor
- substantially.
- <br>
- (Alexander Grayver, 2014/08/22)
- </li>
-
- <li> New: There is now a GridGenerator::flatten_triangulation()
- taking a Triangulation<dim, spacedim_1> as input and returning
- a Triangulation<dim, spacedim_2> as output. The output
- triangulation will contain a single level with all active
- cells of the input triangulation, and will be topologically
- equivalent to the input triangulation. If the two space dimensions
- are equal, then this function will copy the triangulation
- removing all levels, e.g., flattening it. If the two space dimensions
- are different, then this function will copy the vertices only
- up to the smallest space dimension parameter. <br>
- Using this function, you can create a Triangulation<2,3> from
- a Triangulation<2,2> or project to the plane z=0 your
- Triangulation<2,3>. No checks are performed on the validity of
- the resulting Triangulation.
- <br>
- (Luca Heltai, 2014/08/19)
- </li>
-
- <li> Changed: The functions GridTools::extract_boundary_mesh() and
- GridTools::create_union_triangulation() have been moved to
- GridGenerator::extract_boundary_mesh() and
- GridGenerator::create_union_triangulation() since, conceptually, they
- generate meshes. The old functions have been retained but are now
- deprecated.
- <br>
- (Wolfgang Bangerth, 2014/08/19)
- </li>
-
- <li> New: TriaAccessor::measure() is now also implemented for faces of
- 3d cells as long as the face is planar.
- <br>
- (Kevin Drzycimski, 2014/08/19)
- </li>
-
- <li> Fixed: Support SLEPc 3.5 by disabling SDFOLD spectrum transformation type
- that has been removed from SLEPc. Therefore, TransformationSpectrumFolding
- cannot be used with newer SLEPc versions.
- <br>
- (Alexander Grayver, 2014/08/15)
- </li>
-
- <li> New: To better support applications that want to use C++11's
- <a href="http://en.wikipedia.org/wiki/C%2B%2B11#Range-based_for_loop">range-based
- for loops</a>, there are now functions Triangulation::cell_iterators(),
- Triangulation::all_cell_iterators() and similarly in classes DoFHandler
- and hp::DoFHandler
- that return a range object that can then be used in range-based for loops.
- The underlying implementation uses the new IteratorRange class.
- <br>
- See the new @ref CPP11 "C++11" page for more information.
- <br>
- (Wolfgang Bangerth, 2014/08/07)
- </li>
-
- <li> New: The new class FunctionManifold allows arbitrary manifold descriptions, in which you have
- an explicit Function<chartdim> for the ManifoldChart::push_forward()
- method, and an explicit Function<spacedim> for ManifoldChart::pull_back()
- method (or an expression for both). In these cases, you can construct a
- Manifold description on the fly.
- <br>
- (Luca Heltai, 2014/08/07)
- </li>
-
- <li> New: Added CylindricalManifold description.
- <br>
- This class allows refinement of cylindrical manifolds. It is a good
- companion for GridGenerator::cylinder() and the perfect companion
- for GridGenerator::cylinder_shell().
- <br>
- (Luca Heltai, 2014/08/06)
- </li>
-
- <li> New: TrilinosWrappers::PreconditionAMG can now be initialized from an
- object of type Epetra_RowMatrix, which allows using it with more arbitrary
- matrix objects, including matrix-free methods.
- <br>
- (Martin Kronbichler, 2014/08/06)
- </li>
-
- <li> Fixed: The FE_Nedelec element computed face interpolation matrices
- wrongly for elements of order p>1. This also led to trouble computing
- hanging node constraints in the context of hp adaptivity. This is now fixed.
- <br>
- (Alexander Grayver, 2014/08/05)
- </li>
-
- <li> New: The function GridTools::get_patch_around_cell() extracts
- the set of cells that surround a single cell. The new functions
- DoFTools::count_dofs_on_patch() and DoFTools::get_dofs_on_patch()
- then help set up local problem on patches.
- <br>
- (Arezou Ghesmati, Wolfgang Bangerth, 2014/07/29)
- </li>
-
- <li> Fixed: Utilities::string_to_int() and
- Utilities::string_to_double() did not catch if the
- string given started with an integer or double but contained additional
- text. They now throw an exception if this happens.
- <br>
- (Wolfgang Bangerth, 2014/07/20)
- </li>
-
- <li> New: The function GridOut::write can now be used also in
- the codimension one case.
- <br>
- (Luca Heltai, 2014/07/18)
- </li>
-
- <li> New: The Function classes now take an additional optional
- template argument, specifying the type of number to use, which defaults
- to double.
- <br>
- (Luca Heltai, 2014/07/18)
- </li>
-
- <li> New: The GridReordering::reorder_cells() function used a
- numbering format for the vertices in a cell that was last used in
- deal.II version 5.2. This format is still used internally, but
- the function now also understands the numbering that has been
- used in deal.II ever since. The choice is made by an additional
- argument to the function that defaults to the old-style
- format for backward compatibility.
- <br>
- (Wolfgang Bangerth, 2014/07/14)
- </li>
-
- <li> New: There are now functions GridOut::write_vtk() and
- GridOut::write_vtu() that can
- write a mesh in VTK/VTU format.
- <br>
- (Wolfgang Bangerth, 2014/07/14)
- </li>
-
- <li> Fixed: PETSc up to at least version 3.5 has a bug where it does
- not zero-initialize the ghost elements of a newly created ghosted
- parallel vector. This is now worked around inside deal.II.
- <br>
- (Wolfgang Bangerth, Michal Wichrowski, 2014/07/12)
- </li>
-
- <li> Improved: The Trilinos direct solver, TrilinosWrappers::SolverDirect,
- now takes a string to select among the available Amesos solvers. Moreover,
- the solver now also supports deal.II's distributed vectors.
- <br>
- (Uwe Köcher, Martin Kronbichler, 2014/07/09)
- </li>
-
- <li> New: There are now three new preconditioner classes
- TrilinosWrappers::PreconditionBlockJacobi,
- TrilinosWrappers::PreconditionBlockSSOR, and
- TrilinosWrappers::PreconditionBlockSOR that work on small dense blocks of
- the global matrix instead of the point-wise relaxation methods in
- TrilinosWrappers::Precondition{Jacobi,SSOR,SOR} that work on each row
- separately.
- <br>
- (Martin Kronbichler, 2014/07/04)
- </li>
-
- <li> Fixed: Some versions of DoFTools::extract_boundary_dofs() were
- not instantiated for some combinations of arguments. This could lead
- to missing symbol errors during linking of applications on some
- platforms and with some compiler versions. This is now
- fixed.
- <br>
- (Wolfgang Bangerth, 2014/07/04)
- </li>
-
- <li> Fixed: GridGenerator::merge_triangulations sometimes produced invalid
- orientations of faces. This is now fixed.
- <br>
- (Daniel Arndt, 2014/06/30)
- </li>
-
- <li> Fixed: TrilinosWrappers::PreconditionAMG did not read user-provided
- constant modes (aka null space) when the null space dimension is one but not
- just the trivial one vector. This is now fixed.
- <br>
- (Martin Kronbichler, 2014/06/30)
- </li>
-
- <li> Simplified interfaces for FEEvaluation: Previously, the user had to
- select the appropriate kernel (FEEvaluation, FEEvaluationGeneral,
- FEEvaluationDGP, FEEvaluationGL) for the matrix-free evaluation
- routines. This made it difficult to write compact code that needs to select
- between different elements. Therefore, all the functionality has been merged
- into FEEvaluation and one should only use FEEvaluation, while the other
- interfaces have been marked deprecated and will be removed in a future
- version. The internal data structures for the various special cases have
- been kept in order to provide for the most efficient routines, and are
- selected at construction of FEEvaluation.
- <br>
- (Martin Kronbichler, 2014/06/27)
- </li>
-
- <li> Bugfix: TBB specific include directories have to be added to the
- list of user include directories because of direct inclusion of header
- files in base/thread_local_storage.h.
- <br>
- (Matthias Maier, Kainan Wang, 2014/06/25)
- </li>
-
- <li> Improved: GridGenerator::hyper_cube() accepts a
- <code>colorize</code> argument.
- <br>
- (Guido Kanschat, 2014/06/23)
- </li>
-
- <li> New: %Functions DoFTools::extract_locally_relevant_dofs(),
- parallel::distributed::GridRefinement::refine_and_coarsen_fixed_number() and
- parallel::distributed::GridRefinement::refine_and_coarsen_fixed_fraction() are
- now also instantiated for objects of codimension 1.
- <br>
- (Michal Wichrowski, 2014/06/15)
- </li>
-
- <li> New: There are now functions Triangulation::has_hanging_nodes()
- and parallel::distributed::Triangulation::has_hanging_nodes().
- <br>
- (Denis Davydov, 2014/06/15)
- </li>
-
- <li> New: There is now function Triangulation::n_global_active_cells().
- <br>
- (Denis Davydov, 2014/06/19)
- </li>
-
- <li> New: The class FEEvaluation now provides optimized matrix-free
- evaluation routines for FE_Q_DG0 elements.
- <br>
- (Martin Kronbichler, 2014/06/13)
- </li>
-
- <li> Bugfix: Filter libclang_rt* from the PETSc link line.
- <br>
- (Matthias Maier, 2014/06/04)
- </li>
-
- <li> Improved: ParameterHandler parsing added to DoFOutputOperator
- <br>
- (Guido Kanschat, 2014/06/03)
- </li>
-
- <li> Improved: Algorithms::ThetaTimestepping and other operators now use AnyData
- to communicate with operators they rely on. This way, time step data
- can be forwarded using the same mechanism, and no complicated back
- access to member data is required
- anymore. MeshWorker::IntegrationInfo uses AnyData as well.
- <br>
- (Guido Kanschat, 2014/06/03)
- </li>
-
- <li> Bugfix: CMake: Also clean CMAKE_MODULE_PATH prior to call to
- FIND_PACKAGE(Boost) inside FindBOOST.cmake because apparently
- "Boost" == "BOOST" for the Mac file system...
- <br>
- (Matthias Maier, 2014/05/28)
- </li>
-
- <li> Improved: CMake: Search results and error conditions for external
- libraries are now much more verbose. Added an MPI sanity check.
- <br>
- (Matthias Maier, 2014/05/28)
- </li>
-
- <li> Fixed: The MatrixTools::apply_boundary_values() variant that works
- on PETSc matrices could produce a deadlock in parallel if one processor
- had no boundary values to apply. This is now fixed.
- <br>
- (Michal Wichrowski, 2014/05/19)
- </li>
-
- <li> New: AnyData::try_read() is a function that allows users to check
- whether an entry exists and get a pointer to it without throwing an
- exception in case of failure.
- <br>
- (Guido Kanschat, 2014/05/16)
- </li>
-
- <li> New: The GMRES solver of deal.II can now write an estimate of
- eigenvalues to the log file, in analogy to the CG solver. This is enabled
- by the flag SolverGMRES::AdditionalData::compute_eigenvalues.
- <br>
- (Martin Kronbichler, 2014/05/11)
- </li>
-
- <li> New: The GridIn::read_vtk() function places fewer restrictions
- on the VTK files it wants to read and should, consequently, be able
- to read more correctly formatted VTK files than before.
- <br>
- (Giorgos Kourakos, 2014/05/08)
- </li>
-
- <li> New: There is now a QSorted quadrature which takes an
- arbitrary quadrature at construction time and reorders the quadrature
- points according to the weights, from smaller to bigger. This should
- improve stability of higher order polynomial integration.
- <br>
- (Luca Heltai, 2014/05/07)
- </li>
-
- <li> New: The class VectorizedArray<Number> now provides methods
- VectorizedArray::load(ptr) to read from arbitrary pointer addresses and
- VectorizedArray::store(ptr) to write to arbitrary pointer addresses,
- as opposed to the data layout of VectorizedArray that requires pointers
- to be aligned by the size of the array in bytes. This also circumvents
- a (rare) compiler optimization bug with gcc-4.6 on SSE code in combination
- with function calls, e.g. to std::sin.
- <br>
- (Martin Kronbichler, 2014/05/05)
- </li>
-
- <li> Changed: Namespace SparsityTools had a local typedef <code>size_type</code>
- that was set equal to types::global_dof_index. This typedef has been removed
- and we now use SparsityPattern::size_type wherever applicable as this is the
- type we really want to use. (The code worked previously because
- types::global_dof_index and SparsityPattern::size_type happen to be the same
- as far as the underlying type is concerned; however, they are different
- semantically.)
- <br>
- (Wolfgang Bangerth, 2014/05/04)
- </li>
-
- <li> Updated: The step-16 tutorial program was updated to the new layout
- multigrid objects and thus avoids using deprecated interfaces.
- <br>
- (Martin Kronbichler, 2014/05/03)
- </li>
-
- <li> Fixed: FE_DGQArbitraryNodes::has_support_on_face was broken when
- polynomials with support points not on the element boundary were used.
- This is now fixed.
- <br>
- (Martin Kronbichler, 2014/04/30)
- </li>
-
- <li> Fixed: parallel::distributed::Triangulation::load now has an
- additional parameter <code>autopartition</code> to control p4est's behavior of
- rebalancing triangulations between MPI nodes upon reading. It is
- particularly useful to disable this behavior when data is stored
- separately (examples for this are in the regression tests mpi/p4est_save_0?).
- <br>
- (Alexander Grayver, Matthias Maier, 2014/04/26)
- </li>
-
- <li> Fixed: GridTools::find_active_cell_around_point() could get into an infinite
- loop if the point we are looking for is in fact not within the domain. This is now
- fixed.
- <br>
- (Giorgos Kourakos, Timo Heister, Wolfgang Bangerth, 2014/04/14)
- </li>
-
- <li> Changed: TableBase now uses AlignedVector for storing data
- instead of std::vector, which allows its use for VectorizedArray<Number>
- data fields which require more alignment.
- <br>
- (Martin Kronbichler, 2014/04/09)
- </li>
-
- <li> Improved: Piola transformation for FE_BDM is now active.
- <br>
- (Guido Kanschat, 2014/04/09)
- </li>
-
- <li> Changed: operator< for cell iterators no longer looks at
- (level-)subdomain ids but only compares level() and index(). This makes the
- ordering inconsistent between processes on a
- parallel::distributed::Triangulation, but fixes the problem that the
- ordering of cells changes under mesh refinement or other causes for changing
- the subdomain id.
- <br>
- (Timo Heister, 2014/04/08)
- </li>
-
- <li> New: GridTools::laplace_transform() now takes an additional, optional
- parameter that indicates the "stiffness" of the mapping.
- <br>
- (Denis Davydov, Jean-Paul Pelteret, 2014/04/07)
- </li>
-
- <li> Fixed: DoFTools::extract_constant_modes now correctly identifies both
- constant modes in the scalar element FE_Q_DG0, which has been realized by a
- few modifications in how the constant modes propagate from the element to
- the extract_constant_modes() function.
- <br>
- (Martin Kronbichler, 2014/04/04)
- </li>
-
- <li> Fixed: GridTools::laplace_transform had previously announced in
- the documentation that one can also set the location of interior points,
- but this was not in fact what was implemented. This has now been fixed:
- the code can now do that.
- <br>
- (Denis Davydov, Wolfgang Bangerth, 2014/03/23)
- </li>
-
- <li> Improved: Inhomogeneous tangential and normal flow constraints can
- now be treated via VectorTools::compute_nonzero_normal_flux_constraints
- and VectorTools::compute_nonzero_tangential_flux_constraints.
- <br>
- (Daniel Arndt, 2014/03/16)
- </li>
-
- <li> Changed: Class TriaAccessor had a function parent_index(), but this function
- could only work for cell accessors. The function has consequently been moved
- to class CellAccessor.
- <br>
- (Wolfgang Bangerth, 2014/03/15)
- </li>
-
- <li> Fixed: step-32 had a piece of code where we accessed an internal
- representation of how Trilinos vectors are actually stored. This is poor
- style and has been rewritten.
- <br>
- (Wolfgang Bangerth, 2014/03/14)
- </li>
-
- <li> Fixed: VectorTools::project_boundary_values_curl_conforming contained
- a bug for some cases. This is now fixed.
- <br>
- (Markus Bürg, 2014/03/10)
- </li>
-
- <li> Fixed: ParameterHandler will no longer output an error if the file
- to be read ends with "end" without a newline.
- <br>
- (Timo Heister, 2014/02/28)
- </li>
-
- <li>Improved: DoFRenumbering::Cuthill_McKee can now run with distributed
- triangulations with the renumbering only done within each processor's
- subdomain.
- <br>
- (Martin Kronbichler, 2014/02/20)
-
- <li>Fixed: There was an indexing error in GridIn::read_vtk() that triggered
- for some input files. This is now fixed.
- <br>
- (Mayank Sabharwal, 2014/02/19)
-
- <li>New: There is a new namespace TimeStepping for the algorithms that do time
- integrations. In this new namespace, several Runge-Kutta methods have been
- implemented: explicit methods, implicit methods, and embedded explicit methods.
- <br>
- (Damien Lebrun-Grandie, Bruno Turcksin, 2014/02/17)
-
- <li>New: There is now a class FEEvaluationDGP that implements matrix-free
- evaluation routines by truncated tensor products for FE_DGP elements.
- <br>
- (Martin Kronbichler, 2014/02/17)
-
- <li>Changed: The InverseMatrixRichardson used to eat all exceptions
- that may have been produced by the underlying Richardson solver, leaving
- no trace that the underlying solver may have failed when you call functions
- such as InverseMatrixRichardson::vmult(). These exceptions are now propagated
- out to the caller.
- <br>
- (Wolfgang Bangerth, 2014/02/16)
-
-
- <li>New: FE_TraceQ implements finite elements on faces, which
- correspond to the traces of H<sup>1</sup>-conforming elements.
- <br>
- (Angela Klewinghaus, 2014/02/14)
-
- <li>New: FE_FaceQ and FE_FaceP now also work in 1D (with a single dof
- on each vertex).
- <br>
- (Martin Kronbichler, 2014/02/11)
-
- <li>Fixed: FE_DGQ::has_support_on_face returned a wrong number for element
- degree larger than 1 in 1D. This is now fixed.
- <br>
- (Martin Kronbichler, 2014/02/10)
-
- <li>Changed: DerivativeApproximation used to be a class that only had
- static members. It is now a namespace.
- <br>
- (Wolfgang Bangerth, 2014/02/08)
-
- <li>New: Threads::ThreadLocalStorage::clear() clears out all objects allocated on the
- current and all other threads.
- <br>
- (Wolfgang Bangerth, 2014/02/06)
-
- <li>Fixed: A configuration error on Debian Testing where accidentally a
- non-pic libSuiteSparse_config.a was picked up when building a shared
- library up resulting in a link error.
- <br>
- (Matthias Maier, 2014/02/04)
-
- <li> Changed: GridTools::transform() can now deal with meshes with hanging nodes.
- <br>
- (Timo Heister, 2014/02/04)
- </li>
-
- <li>Fixed: Calling FEValuesViews::Vector::get_function_curls() computed
- wrong results in some cases (see https://code.google.com/p/dealii/issues/detail?id=182).
- This is now fixed.
- <br>
- (Christoph Heiniger, Wolfgang Bangerth, 2014/02/03)
-
- <li>Added: The class LAPACKFullMatrix now implements interfaces to
- matrix-matrix multiplication. Also, LAPACKFullMatrix::apply_lu_factorization
- now also operates on multiple right hand sides in form of another
- LAPACKFullMatrix.
- <br>
- (Martin Kronbichler, 2014/02/03)
-
- <li>Fixed: The build system does no longer record full paths to system
- libraries but uses the appropriate short names instead.
- <br>
- (Matthias Maier, 2014/02/01)
-
- <li>Reworked: External feature setup. Disabling a feature now cleans up
- associated internal, cached variables. A per-feature linkage test now spots
- common linking inconsistencies early in the configuration stage (and not
- just after a complete compilation).
- <br>
- (Matthias Maier, 2014/02/01)
-
- <li>New/fixed: The ParameterHandler::print_parameters_section
- method did not work for XML output. There is now a flag
- include_top_level_elements which prints all higher
- subsection elements, default is false.
- For XML output setting this flag to true is required
- to ensure that the output is a valid XML document,
- starting with one root element ParameterHandler and
- compatible with read_input_from_xml and the parameterGUI.
- <br>
- (Martin Steigemann, 2014/02/01)
-
- <li>New: There is now a method to copy the content from a
- PETScWrappers::MPI::Vector and TrilinosWrappers::MPI::Vector to
- deal.II's parallel distributed vector.
- <br>
- (Ben Thompson, Martin Kronbichler, 2014/01/31)
-
- <li>Fixed: The SolutionTransfer class had all sorts of problems when
- used with hp::DoFHandler that made its results at least questionable.
- Several parts of this class have been rewritten to make the results
- more predictable and, likely, more correct.
- <br>
- (Wolfgang Bangerth, 2014/01/26)
-
- <li>Fixed: A regression where a single whitespace accidentally added to
- DEAL_II_LINKER_FLAGS internally prevented cmake-2.8.8 from configuring
- successfully.
- <br>
- (Matthias Maier, Krysztof Bzowski, 2014/01/26)
-
- <li> Fixed: SparsityPattern::max_entries_per_row() forgot to consider
- the last row of the matrix and consequently sometimes returned
- wrong values. This is now fixed.
- <br>
- (Martin Kronbichler, 2014/01/22)
- </li>
-
- <li> Improved: In rare cases when the vector of error indicators
- has entries equal to zero the adjust_interesting_range method
- produces a negative lower bound. As a result the
- parallel::distributed::GridRefinement::refine_and_coarsen_fixed_*
- methods flagged the wrong number of cells for coarsening and refinement.
- This is now changed by adjusting the lower bound in adjust_interesting_range
- only, if not equal to zero.
- <br>
- (Martin Steigemann, 2014/01/22)
- </li>
-
- <li> Changed: It was previously possible to set the
- <code>active_fe_index</code> on non-active cells of an hp::DoFHandler.
- However, this was prone to mistakes because it may lead to the assumption
- that a finite element space out of the ones described by the hp::FECollection
- associated with this hp::DoFHandler was actually associated with such
- a cell. Since we do not actually distribute degrees of freedom for such
- hp::DoFHandler objects on non-active cells, this is not the case. Consequently,
- it no longer has any effect to assign active FE indices to non-active cells:
- these values are simply reset later on.
- <br>
- (Wolfgang Bangerth, 2014/01/20)
- </li>
-
- <li> Fixed: The method DoFTools::extract_constant_modes only worked for
- elements where the constant function 1 is represented by all ones. This
- is now fixed by querying the element for its constant modes on each cell.
- <br>
- (Martin Kronbichler, 2014/01/19)
- </li>
-
- <li> Fixed: PETScWrappers::MPI::Vector::all_zero() was broken with more than
- one processor (illegal memory access) and did not communicate between all
- processors. Documentation for many vector types of all_zero() has been extended.
- <br>
- (Timo Heister, 2014/01/17)
- </li>
-
- <li> Fixed/new: DoFCellAccessor::set_dof_values_by_interpolation and
- DoFCellAccessor::get_interpolated_dof_values could previously be
- called for hp::DoFHandler objects on cells that are non-active. This
- makes no sense since these cells have no associated finite element
- space. Doing so now raises an exception.
- <br>
- However, there are legitimate cases where one may want to interpolate
- from children to a parent's finite element space or the other way around.
- Since in the hp
- case no finite element space is naturally associated with an inactive
- cell, it is now possible to pass an explicit finite element index
- argument to these functions specifying which element of an hp::FECollection
- object describes the space onto which you want to interpolate.
- <br>
- (Mihai Alexe, Wolfgang Bangerth, 2014/01/18)
- </li>
-
- <li> Fixed: The methods IndexSet::do_compress() and
- IndexSet::add_indices(IndexSet&) had quadratic complexity in the number of
- ranges. The algorithms have been changed into linear complexity ones.
- <br>
- (Martin Kronbichler, 2014/01/15)
- </li>
-
- <li> Fixed: There were several bugs in functions like
- FEValues::get_function_values() where the code did not properly handle the
- case of FE_Nothing. This is now fixed.
- <br>
- (Wolfgang Bangerth, 2014/01/08)
- </li>
-
- <li> Fixed: DataOut got confused in some situations where one uses FE_Nothing.
- This is now fixed.
- <br>
- (Minh Do-Quang, Wolfgang Bangerth, 2014/01/08)
- </li>
-
- <li> Fixed: FESystem::get_interpolation_matrix, a function that is among
- other places used by SolutionTransfer, had a bug that prevented it from
- running correctly in some situations where one uses FE_Nothing.
- This is now fixed.
- <br>
- (Minh Do-Quang, Wolfgang Bangerth, 2014/01/08)
- </li>
-
- <li> Improved: When you call WorkStream::run with an empty function object
- for the copier, operations on individual cells are essentially all independent.
- In other words, you have a massively parallel collection of jobs. In this
- case, a parallel for loop over all elements is better suited than the
- pipeline approach currently used. This has now been implemented.
- <br>
- (Wolfgang Bangerth, 2013/12/26)
- </li>
-
- <li> New: The new function VectorTools::interpolate_based_on_material_id()
- can be used to interpolate several functions onto a mesh, based on the
- material id of each cell individually.
- <br>
- (Valentin Zingan, 2013/12/26)
- </li>
-
- <li> New: A new reinit() method has been introduced to
- TrilinosWrappers::SparsityPattern that takes all rows that are possibly
- written into as an optional argument. This allows for pre-allocating all
- possible entries right away, which makes writing into the matrix from
- several threads possible (otherwise, only one processor at a time can write
- off-processor data). Similarly, TrilinosWrappers::MPI::Vector objects can
- be initialized with hints to ghost elements for a writable vector that can
- be added into from multiple threads.
- <br>
- (Martin Kronbichler, 2013/12/23)
- </li>
-
- <li> New: The TableBase::fill function has become more powerful in that
- it now doesn't just take pointers to initializing elements but can deal
- with arbitrary input iterators. It now also takes a flag that denotes the
- order in which table elements are initialized, allowing to switch between
- C- and Fortran-style table layouts.
- <br>
- Along with the TableBase::fill function, the Table classes of various
- ranks have also gotten constructors that allow the in-place construction
- not only of a table of correct size, but already initialized from
- somewhere. This finally allows to mark Table objects as const by creating
- them already with the correct content.
- <br>
- (Wolfgang Bangerth, 2013/12/21)
- </li>
-
- <li> New: There is now a new class Functions::InterpolatedTensorProductGridData that can
- be used to (bi-/tri-)linearly interpolate data given on a tensor product
- mesh of $x$ (and $y$ and $z$) values, for example to evaluate experimentally
- determined coefficients, or to assess the accuracy of a solution by
- comparing with a solution generated by a different code and written in
- gridded data. There is also a new class Functions::InterpolatedUniformGridData that
- can perform the same task more efficiently if the data is stored on meshes
- that are uniform in each coordinate direction.
- <br>
- (Wolfgang Bangerth, 2013/12/20)
- </li>
-
- <li> Fixed: ParameterHandler::get_double() and ParameterHandler::get_integer()
- had bugs in that they didn't detect if they were asked to return a number
- for a parameter whose value was in fact not a number but some general
- text. This is now fixed.
- <br>
- (Wolfgang Bangerth, 2013/12/19)
- </li>
-
- <li> Fixed: VectorTools::project_boundary_values could not deal with
- function values close to (but not exactly equal to) zero. This is now fixed.
- <br>
- (Martin Kronbichler, 2013/12/16)
- </li>
-
- <li> New: It is now possible to select between different smoothers and coarse
- solvers in the Trilinos AMG preconditioners by a string to the smoother's name.
- <br>
- (Andrew Baker, 2013/12/14)
- </li>
-
</ol>
-
*/