Reference documentation for deal.II version Git 20e5cff 20170117 12:52:29 0500

This is the list of changes made after the release of deal.II version 8.4.1. All entries are signed with the names of the authors.
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.
Changed: The class FE_DGQ used to provide a protected constructor taking a onedimensional Quadrature argument. This has been changed in favor of a constructor taking a vector of polynomials. To use the old constructor, you can create a vector of polynomials by replacing the argument quadrature_1d
by Polynomials::generate_complete_Lagrange_basis(quadrature_1d.get_points())
. In addition, the class FE_DGQArbitraryNodes that defines the public interface taking a onedimensional quadrature formula is unchanged, so only user codes that derive directly from FE_DGQ should be affected.
(Martin Kronbichler, 2017/01/11)
Deprecated: The DataOutInterface::write_pvd_record() and DataOutInterface::write_visit_record() functions were actually independent of any kind of data being written. As a consequence, they did not depend on the state of the DataOutInterface object to which they belonged (or any object of a derived class). Such functions typically reside in the DataOutBase namespace instead where they have now been moved. The functions in DataOutInterface are now deprecated.
(Wolfgang Bangerth, 2016/12/03)
Changed: VectorTools::create_right_hand_side and VectorTools::create_boundary_right_hand_side now take an additional template parameter VectorType.
(Daniel Arndt, 2016/10/25)
Deprecated: ParameterHandler::read_input, ParameterHandler::read_input_from_xml, and ParameterHandler::read_input_from_string are now deprecated in favor of ParameterHandler::parse_input, ParameterHandler::parse_input_from_xml, and ParameterHandler::parse_input_from_string. These new functions throw exceptions to indicate failure instead of using return codes.
(David Wells, 2016/09/15)
Deprecated: MGCoarseGridLACIteration got deprecated in favor of MGCoarseGridIterativeSolver.
(Timo Heister, 2016/09/14)
Changed: The template parameter order in many VectorTools functions is now different; this was done so that the order is the same across similar functions. This will only effect code that explicitly specifies template parameters for overloaded VectorTools functions (no known deal.IIbased projects do this).
(David Wells, 2016/09/06)
New: deal.II now requires at least BOOST version 1.56, rather than the previous minimal version of 1.54. This is because 1.54 does not support serializing objects of type std::unique_ptr if C++11 is used, but we now use such objects in a variety of places in classes that can be serialized. BOOST 1.56, on the other hand, supports this. deal.II bundles BOOST 1.62 for cases where no or no sufficiently new version of BOOST is found on a system.
(Wolfgang Bangerth, 2016/08/22)
Removed: Deprecated classes CompressedSparsityPattern, CompressedSimpleSparsityPattern, CompressedSetSparsityPattern, and their block variants got removed.
(Timo Heister, 2016/08/13)
Deprecated: MGLevelObject::clear() deprecated in favor of MGLevelObject::clear_elements() due to clear() being inconsistent with behavior of other container objects.
(Jonathan Robey, 2016/08/08)
Changed: Several operators from LocalIntegrators::Divergence got moved to LocalIntegrators::GradDiv and the never used/tested LocalIntegrators::Divergence::grad_div() function was removed.
(Timo Heister, Guido Kanschat, 2016/08/02)
Changed: DoFTools::make_cell_patches() only accepts block lists of type SparsityPattern. The reason is that it has to initialize the size of the pattern on distributed triangulations by computing the number of locally owned cells. Initialization differs between sparsity pattern classes, so no generic function would be possible. On the other hand, the block list is an object, which only extends over locally owned grid cells and its size can be determined efficiently upon initialization. Therefore, SparsityPattern is a good choice here.
At the same time, we changed the dof handler template to the type DoFHandler, since hp::DoFHandler requires a different setup of the SparsityPattern.
(Guido Kanschat, 2016/08/02)
Changed: The conversion constructors of class Vector from the PETScWrappers::Vector, PETScWrappers::MPI::Vector, TrilinosWrappers::Vector, and TrilinosWrappers::MPI::Vector classes are now marked as explicit
, i.e., they will no longer allow implicit, silent conversions. Such conversions lead to awkward errors that are hard to debug, and in cases where they are necessary, are best described in code through explicit casts.
(Wolfgang Bangerth, 2016/06/25)
Changed: The deal.II distributed vector classes do now derive from LinearAlgebra::VectorSpaceVector and have been moved to the LinearAlgebra::distributed namespace. In the definition of the new interfaces, several old vector functions have been marked as deprecated. The methods operator==
, operator!=
, and is_non_negative
have been removed from the new interface.
(Martin Kronbichler, 2016/06/15)
Changed: The Triangulation::Signals::clear signal is now triggered before, not after the internal data structures of the triangulation are destroyed. This allows functions attached to the signal to save information associated with the triangulation.
(Wolfgang Bangerth, 2016/06/07)
Changed: deal.II used to create template instantiations for scalar types double
, float
, and long double
. Since long double
is rarely used and the additional precision does usually not pay off because most of the other arithmetics in deal.II are only done using double
variables, it is not instantiated by default any more. This reduces the library size by up to 20 percent. In case you need instantiations of certain methods using long double
data structures and get linker errors stating undefined symbols involving long double
, include the respective .templates.h
file(s) with the code definitions. See the section on Template instantiations in the manual for further information.
(Martin Kronbichler, 2016/04/26)
Changed: FlatManifold takes as argument a periodicity option. This used to be a Point<dim>, but it should have been a Tensor<1,dim>. This is now changed.
(Luca Heltai, 2016/04/09)
Changed: The default nodal point distribution of FE_Q, FE_DGQ, FE_Q_DG0, FE_Q_Bubbles, and FE_TraceQ has been changed from equidistant points to the node points of the corresponding GaussLobatto quadrature formula. For degrees one and two, the GaussLobatto quadrature is equidistant and thus the unit support points are as before. However, the GaussLobatto points are more dense towards the element boundaries at higher degrees. This gives wellconditioned interpolation at arbitrary orders and much more stable computations. While these node distribution was available before, it was not very visible and often lead to misunderstandings by inexperienced users. Most codes will not be affected by this change, even those using cubic and higher degree polynomials, apart from slightly different (better) interpolation behavior and different entries in solution vectors. If you explicitly need equidistant points, use the constructors FE_Q<dim>(QIterated<1>(QTrapez<1>(),degree))
or FE_DGQArbitraryNodes<dim>(QIterated<1>(QTrapez<1>(),degree))
.
(Martin Kronbichler, 2016/04/05)
Removed: Support for the legacy Make.global_options
file has been removed.
(Matthias Maier, 2016/03/17)
Removed: Functions with names containing boundary_indicator
have been removed. They had previously already been deprecated, and replaced by functions containing the string boundary_id
instead, to keep with the style used for material_id
, subdomain_id
, etc.
(Wolfgang Bangerth, 2016/02/28)
Changed: Many functions in VectorTools and MatrixTools now require matching data types between vectors, matrices, and Function arguments.
(Denis Davydov, 2016/02/27)
Changed: ConstraintMatrix::distribute_local_to_global() and numerous functions in VectorTools namespace now require matching data types. This is done to correctly handle complexvalued case.
(Denis Davydov, 2016/02/22)
New: The tutorial step57 shows how to solve the stationary NavierStokes equations using Newton's method.
(Liang Zhao, Timo Heister, 2017/01/17)
New: The Physics::Transformations namespace defines a number of operations that can be used to push forward and pull back quantities to and from different body configurations.
(JeanPaul Pelteret, Andrew McBride, 2016/12/05)
New: Implemented some standard tensor definitions for elasticity in Physics::Elasticity::StandardTensors. Within the newly implemented Physics::Elasticity::Kinematics namespace are some standard definitions of kinematic quantities commonly used in elasticity.
(JeanPaul Pelteret, Andrew McBride, 2016/12/05)
New: The Physics namespace is dedicated to defining useful functions and other quantities that are regularly used in the implementation of classical (multi)physics problems.
(JeanPaul Pelteret, 2016/12/05)
Improved: The step37 tutorial program now shows the matrixfree multigrid solver based on MPI parallelization rather than only a serial version. Moreover, support for adaptively refined meshes has been added.
(Martin Kronbichler, 2016/11/23)
Improved: the error codes for all MPI functions are now checked and, if the MPI function failed for any reason, an exception with a helpful message is thrown.
(David Wells, 2016/11/09)
Fixed: We have run the PVS static analysis checker on the entire code base, to see what possible problems it uncovers (see https://github.com/dealii/dealii/issues/3342). With the exception of a few false positives, several dozen issues (mostly uninitialized variables) were fixed.
(Konstantin Ladutenko and many others, 2016/11/08)
Improved: The way DataPostprocessor receives its input has been updated.
In the past, the two functions we use to postprocess data got lists of arguments for the solution, its derivatives, the evaluation points, and normal vectors. This is not flexible enough: We can not easily add other information that we have needed in the past or that users have requested, such as a pointer to the cell we're currently on, or the materialid of the cell.
Rather than adding each possible argument anyone may want to use individually to the list of the postprocessor function arguments, the existing functions have been deprecated in favor of a new set of functions DataPostprocessor::evaluate_scalar_field() and DataPostprocessor::evaluate_vector_field() that take a reference to a structure that contains these individual pieces of information. We can extend the members of these structures without backward compatibility issues because the functions still get a reference to the same structure, we just grow the structure itself. Functions that never used the new members of the structure will continue to work as they always did.
As an example of what is possible, the DataPostprocessorInputs classes that are now handed to the evaluation functions contain a way to access the cell that is currently being evaluated.
(Wolfgang Bangerth, 2016/10/312016/12/21)
Improved: The code in class GridReordering has been rewritten from scratch. It now follows the algorithm described in the paper by Agelek, Anderson, Bangerth and Barth mentioned in the documentation of that class.
(Wolfgang Bangerth, 2016/10/28)
Improved: deal.II now bundles a subset of BOOST 1.62 instead of a subset of BOOST 1.56.
(David Wells, 2016/10/20)
New: Add a new FiniteElement class, FE_P1NC, to implement the scalar version of the P1 nonconforming finite element which is a piecewise linear element on quadrilaterals in 2d.
(Jaeryun Yim, 2016/10/01)
New: FE_Enriched finite element class implements the partition of unitity method which allows to enrich the finite element space based on a priori knowledge about solution.
(Denis Davydov, 2016/09/28)
New: The Tensor class has two new functions implemented, namely those that return its Tensor::adjoint() and Tensor::cofactor().
(JeanPaul Pelteret, 2016/09/25)
Improved: The doxygen documentation now contains nicely formatted boxes containing the text message of each exception. Several messages haven been clarified and improved.
(Timo Heister, 2016/09/06)
New: There are 6 new video lectures that explain the basics of Linux and the command line, how mesh refinement works, and some more complicated time stepping schemes. (See also video lecture 2.9, video lecture 2.91, video lecture 17.25, video lecture 17.5, video lecture 17.75, video lecture 30.25.)
(Wolfgang Bangerth, 2016/08/19)
New: deal.II no longer uses features of the C++ language that were deprecated with C++11, C++14, or that are scheduled to be deprecated for C++17.
(David Wells, Jonathan Robey, Wolfgang Bangerth, 2016/08/11)
New: Added Python bindings to generate and manipulate a Triangulation from Python. The Triangulation generated in Python can be saved and later, loaded inside a C++ code.
(Bruno Turcksin, 2016/08/03)
Improved: A few of the introductory examples (steps five through eight) no longer use the Function class; they use plain functions instead.
(David Wells, 2016/07/25)
Improved: The build system now checks for usable compiler/linker flags during various stages of the configure run. This should catch the majority of issues by user supplied flags/libraries and unusable final link interfaces before we actually proceed to compile the library.
(Matthias Maier, 2016/07/13)
Improved: The testsuite now supports fine grained feature constraints of the form test.with_[feature]_with_[...]=true
corresponding to variables DEAL_II_<FEATURE>_WITH_[...]
exported to deal.IIConfig.cmake
.
(Matthias Maier, 2016/07/11)
New: The library is now compatible with PETSc 3.7.0. Part of this change included adding a new header, petsc_compatibility.h
, which provides some versionindependent functions for using common PETSc functions.
(David Wells, 2016/07/07)
Refactored: The contrib/ directory has been cleaned up and the Parameter GUI has be reloacted into its own repository: https://github.com/dealii/parameter_gui
(Matthias Maier, Timo Heister, 2016/07/06)
New: Add new classes to expand a scalar finite element solution into the orthogonal bases FESeries::Fourier and FESeries::Legendre. Also provide auxiliary functions to calculate norms of subsets of expansion coefficients FESeries::process_coefficients and linear regression FESeries::linear_regression. Update step27 to use this namespace to drive the hpadaptive FEM solution process.
(Denis Davydov, 2016/06/23)
New: The tutorial step55 shows how to solve the Stokes system in parallel with PETSc or Trilinos.
(Timo Heister, 2016/06/17)
New: The tutorial step56 demonstrates Geometric Multigrid for the Stokes equations.
(Ryan Grove, Timo Heister, 2016/06/01)
Improved: The step44 tutorial now uses the new CellDataStorage class to store and retrieve local quadrature point data. An alternative approach to solving the linear system using the LinearOperator class has been implemented.
(JeanPaul Pelteret, 2016/05/20)
New: Add a collection of classes to manage user's quadrature point data: CellDataStorage, TransferableQuadraturePointData and parallel::distributed::ContinuousQuadratureDataTransfer. The implementation of CellDataStorage is flexible to support different types of data object at different cells. parallel::distributed::ContinuousQuadratureDataTransfer provides a convenient interface to transfer quadrature point data between cells of parallel::distributed::Triangulation.
(Denis Davydov, JeanPaul Pelteret, 2016/04/30)
New: Added an interface to the GNU Scientific Library. Also introduce a cubic spline interpolation function Functions::CSpline.
(Denis Davydov, 2016/04/28)
New: Added move operations to BlockIndices, BlockVectorBase and BlockVector; Vector move operations nullify old object instead of using swap.
(Daniel Shapero, 2016/04/13)
New: Added a new Mapping class, MappingManifold, to use exact geometrical information extracted from the Manifold description instead of a polynomial approximation when computing transformations from the reference to the real cell. This class allows the computation of quadrature points, tangent vectors, and normal vectors which are exact with respect to the geometrical description, and it uses the underlying Manifold objects of the Triangulation. MappingManifold coincides with MappingQ1 for the FlatManifold descriptor.
(Luca Heltai, 2016/04/09)
New: Manifold objects were previously only used to compute the locations of individual new points on a manifold. Now, they are also used to compute tangent vectors (via Manifold::get_tangent_vector()), and this functionality provides the basis for computing normal vectors to manifolds as well.
In many cases, tangent vectors can be computed quite easily if the manifold has a functional description, i.e., if it can be represented via the ChartManifold class. In those cases, it is only necessary to overload the ChartManifold::push_forward_gradient() function that computes the derivatives of the push forward operation.
(Luca Heltai, Wolfgang Bangerth, 2016/04/08)
New: Added indent target to indent all headers and source files. Now you can do make (or ninja) indent inside the build directory.
(Alberto Sartori, 2016/03/02)
Changed: The function FETools::compute_node_matrix() used to return its result by reference through its first argument (a reference to a FullMatrix object). It now returns this matrix as an object.
(Wolfgang Bangerth, 2017/01/16)
Fixed: The FE_PolyTensor class (and all of its descendants) was not threadsafe. This is now fixed.
(Wolfgang Bangerth, 2017/01/09)
Fixed: The FE_ABF class reported the maximal polynomial degree (via FiniteElement::degree) for elements of order \(r\) as \(r+1\), but this is wrong. It should be \(r+2\) (see Section 5 of the original paper of Arnold, Boffi, and Falk). This is now fixed.
(Wolfgang Bangerth, 2017/01/13)
Fixed: Various issues with the CMake configuration of the cuda configuration have been addressed, including correct handling of compiler flags and preprocessor definitions.
(Matthias Maier, 2017/01/12)
Improved: The results for step18 have been updated to reflect the influence of the recent corrections to the rotation matrix.
(JeanPaul Pelteret, 2017/01/12)
New: There are two new finite elements FE_DGQLegendre and FE_DGQHermite which are similar to FE_DGQ but use the class Polynomials::Legendre and Polynomials::HermiteInterpolation as shape functions.
(Martin Kronbichler, 2017/01/11)
Fixed: LinearAlgebra::distributed::Vector used persistent MPI communicators for data exchange, which are not as welltuned as the usual MPI_Isend and MPI_Irecv calls on some implementations, including memory leaks on IBM MPI if the communicators are alive over a longer time. Therefore, the communication has been changed to nonblocking MPI_Isend and MPI_Irecv calls.
(Martin Kronbichler, 2017/01/11)
New: The class VectorizedArray has gained two new access functions, gather and scatter, that map to more efficient hardware versions on new architectures (AVX2 or AVX512). Furthermore, support for AVX512 has been improved by providing optimized vectorized_load_and_transpose() and vectorized_transpose_and_store().
(Martin Kronbichler, 2017/01/11)
New: MatrixFree allows to be asked if a certain FiniteElement is supported.
(Daniel Arndt, 2017/01/11)
Fixed: FE_Q::compare_for_face_domination() could not deal with FE_Nothing if dim != spacedim
.
(Wolfgang Bangerth, 2017/01/11)
Fixed: FE_Q::compare_for_face_domination() did not know how to deal with situations where the neighboring cell was an FE_DGQ, even though the reverse situation worked just fine. This is now fixed.
(Wolfgang Bangerth, 2017/01/11)
Improved: The contract3() function has been extended accommodate both Tensor and SymmetricTensors arguments.
(JeanPaul Pelteret, Matthias Maier, 2017/01/10)
Fixed: A bug in the rotation matrix used in step18 has now been corrected. This tutorial now uses the function Physics::Transformations::Rotations::rotation_matrix_3d to compute the 3d rotation matrix.
(JeanPaul Pelteret, Paul Kuberry, 2017/01/09)
New: Functions to compute the 2d and 3d rotation matrix have been implemented and can be found in the Physics::Transformations::Rotations namespace.
(JeanPaul Pelteret, 2017/01/09)
New: LocalIntegrators::Laplace::ip_tangential_matrix() and LocalIntegrators::Laplace::nitsche_tangential_matrix() implement interior penalty and Nitsche boundary conditions for vector valued Poisson problems.
(Guido Kanschat, 2017/01/09)
Fixed: Copying objects of type PolynomialsABF would lead to memory corruption once one of the two copies is destroyed. This is now fixed.
(Wolfgang Bangerth, 2017/01/09)
Fixed: PolynomialsABF::compute_n_pols() returned the wrong value in 3d.
(Wolfgang Bangerth, 2017/01/09)
Improved: The MPI_Comm used in MatrixFree is not configurable via AdditionalData anymore but set to the MPI_Comm of the Triangulation.
(Daniel Arndt, 2017/01/08)
Fixed: The testsuite now handles paths containing spaces correctly.
(Matthias Maier, 2017/01/06)
New: hp::DoFHandler now uses a compressed data structure for its internal representation of DoF indices. This saves memory.
(Wolfgang Bangerth, 2017/01/06)
Fixed: MappingQGeneric, when computing values on a given cell, sometimes reused information computed on a different cell whose faces were curved in a different way. MappingQGeneric now recomputes all values when its order is greater than one (that is, when it can represent curved cells).
(David Wells, 2017/01/05)
Improved: The representation of the two polynomial classes Polynomials::Legendre and Polynomials::HermiteInterpolation has been changed to the root form, which ensures stable evaluation at high degrees as opposed to the coefficient form previously used.
(Martin Kronbichler, 2017/01/03)
New: Modify IndexSet::index_within_set() to return numbers::invalid_dof_index if the global index is not a member of this index set.
(Denis Davydov, 2016/12/23)
Improved: ContraintMatrix::distribute_local_to_global now does a bulk write of all vector values at once. This improves performance with PETScWrappers::MPI::Vector by about 10%.
(David Wells, 2016/12/21)
Changed: IndexSet::compress() and, by extension, all of the "const" member functions of the IndexSet class, are now threadsafe.
(Wolfgang Bangerth, 2016/12/20)
Changed: IndexSet::nth_index_in_set() can now be called without calling IndexSet::compress() first.
(Wolfgang Bangerth, 2016/12/19)
Fixed: The SymmetricTensor copy constructor that accepted another SymmetricTensor of a different number type had an error in its internal data initialization loop range. This bug was only triggered when copying rank4 tensors.
(JeanPaul Pelteret, 2016/12/16)
Fixed: The DataOutFaces class did not work with parallel triangulations if a process had no faces to deal with.
(Justin Kauffman, Wolfgang Bangerth, 2016/12/15)
New: The ArrayView class now has a default constructor that creates an invalid object.
(Wolfgang Bangerth, 2016/12/08)
Fixed: ArrayView objects to empty views could not be copied. This is now fixed.
(Wolfgang Bangerth, 2016/12/07)
New: The inverse of a rank2 SymmetricTensor can now be directly computed with SymmetricTensor::invert() instead of having to use the Tensor::invert() function.
(JeanPaul Pelteret, 2016/12/07)
Improved: The run time for the method hp::DoFHandler::distribute_dofs was quadratic in the total number of dofs for some grids. This has been fixed.
(David Wells, 2016/12/07)
Changed: To improve readability, TimerOutput::print_summary() now simply outputs "0%" if a particular section's time requires less than 0.1 per cent of the overall run time.
(Wolfgang Bangerth, 2016/12/03)
Improved: The trait class has_vmult_add in linear_operators.h has been restricted to test if there is a vmult_add and a Tvmult_add method that takes two arguments. This check now also works with ICC 13 and ICC 14.
(Daniel Arndt, 2016/11/25)
New: Automatically recreate changes.h from files in subfolders of ./doc/news
(Daniel Arndt, 2016/11/18)
Fixed: Objects of type TrilinosWrappers::SparsityPattern::const_iterator were entirely unusable due to a bug. This is now fixed.
(Wolfgang Bangerth, 2016/11/15)
Fixed: DataOut::build_patches() ignored a higher order or Eulerian mapping if no data had previously been attached via DataOut::add_data_vector(), i.e., if all that was to be output is the mesh itself. This is now fixed.
(Wolfgang Bangerth, 2016/11/15)
Fixed: Calling MappingQ::clone() did not copy the use_mapping_q_on_all_cells
flag that this mapping class gets passed to its constructor. This leads to wrong results if you wanted to use curved cells on interior cells and if such an object was used inside an hp::MappingCollection, for example. There are, in addition, several places in the library where one would pass a mapping, and the library would clone it into a member of such a collection, and these would also yield wrong results. An example is the use of DataOut::build_patches with a mapping that had this flag set upon construction.
(Sebastian GonzalezPintor, Wolfgang Bangerth, 2016/11/15)
Fixed: There was a memory leak if a previously used SparsityPattern object was reused by reading from a serialization archive via SparsityPattern::load(). This is now fixed.
(Wolfgang Bangerth, 2016/11/10)
New: Add PArpackSolver::reinit(const VectorType &distributed_vector) to initialize internal data structures based on a vector. This makes PArpack usable with MatrixFree operators.
(Denis Davydov, 2016/10/31)
New: Add MatrixFreeOperators::LaplaceOperator representing a Laplace matrix.
(Denis Davydov, 2016/10/30)
New: VectorTools::project can be used for parallel Triangulations in specific cases.
(Daniel Arndt, 2016/10/30)
Fixed: Increased precision of timesteps in DataOutInterface::write_pvd_record().
(Rajat Arora, 2016/10/29)
New: Add VectorTools::project() to do L2 projection of scalarvalued quadrature point data in parallel.
(Denis Davydov, 2016/10/28)
New: The class PreconditionChebyshev now offers a third template parameter PreconditionerType that is passed to the preconditioner setup via AdditionalData::preconditioner. This allows using other preconditioners than the default (and previous) selection of a pointJacobi preconditioner.
(Martin Kronbichler, 2016/10/27)
New: There is a new class DiagonalMatrix which represents a diagonal matrix via a vector. This is useful for representing Jacobi preconditioners with matrixfree methods.
(Martin Kronbichler, 2016/10/27)
New: Add MatrixFreeOperators::MassOperator representing a mass matrix.
(Daniel Arndt, 2016/10/27)
Fixed: GridIn::read_vtk() had offbyone errors in reading face boundary indicators from VTK files. Consequently, not all boundary indicators were correctly set.
(Mayank Sabharwal, Wolfgang Bangerth, 2016/10/25)
New: Add ArpackSolver::set_shift() to set the shift value in spectral transformation.
(Denis Davydov, 2016/10/25)
>New: VectorTools::create_right_hand_side can be used for parallel Triangulations and homogeneous constraints using a ConstraintMatrix.
(Daniel Arndt, 2016/10/25)
New: PreconditionChebyshev now offers a PreconditionChebyshev::step() and PreconditionChebyshev::Tstep() methods for usage in relaxation smoothers.
(Martin Kronbichler, 2016/10/21)
Fixed: GridIn::read_vtk() accidentally only read material ids of input cells correctly if the file listed them as integers. If they were listed them as floating point numbers, then unpredictable numbers were used.
(Wolfgang Bangerth, 2016/10/20)
New: Add a base class for matrixfree operators MatrixFreeOperators::Base.
(Denis Davydov, 2016/10/16)
New: There is now a function FEEvaluation::JxW() to return the Jacobian determinant times the quadrature weight in the matrixfree evaluation routines similary to FEValues.
(Martin Kronbichler, 2016/10/14)
Fixed: GridGenerator::hyper_cube_slit() with colorized set to true is now working correctly.
(Timo Heister, 2016/10/04)
Fixed: SphericalManifold now behaves correctly also when R>>1 and the center is not the origin.
(Luca Heltai, 2016/10/01)
New: FETools::extrapolate allows for using the extrapolate algorithm on parallel::distributed::Triangulations.
(Daniel Arndt, Martin Steigemann, 2016/09/28)
Improved: Some parts of mesh refinement are now parallelized.
(Wolfgang Bangerth, 2016/09/27)
Improved: MGSmootherBlock is now able to use the shared memory pool for temporary vector allocation. The constructor requiring an external memory allocation has therefore been deprecated.
(Jonathan Robey, 2016/09/21)
Fixed: EmbeddedRungeKutta methods now correctly increase delta_t_guess when the error is below coarsen_tol.
(Vaibhav Palkar, Bruno Turcksin, 2016/09/16)
New: DoFTools::write_gnuplot_dof_support_point_info outputs support point locations and dof indices to a format readable by gnuplot.
(Timo Heister, 2016/09/16)
Fixed: The Multigrid Wcycle and Fcycle have been fixed (for uniform grids).
(Martin Kronbichler, 2016/09/16)
Improved: The multigrid Vcycle has been rewritten for performance on largescale machines. Rather than transferring parts of the defect immediately to all coarser levels with a complexity of O(n_levels) global communication steps per Vcycle, we now transfer the full defect once to the next coarser level only, resulting in crossing all processors only once.
(Martin Kronbichler, 2016/09/16)
Fixed: TrilinosWrappers::MPI::Vector::locally_owned_elements() now returns the correct IndexSet also if initialized with two IndexSets.
(Daniel Arndt, 2016/09/16)
New: LinearAlgebra::Vector is now instantiated for float and double.
(Bruno Turcksin, 2016/09/15)
New: The class MGCoarseGridIterativeSolver is replacing MGCoarseGridLACIteration with a simpler interface.
(Timo Heister, 2016/09/14)
Improved: FEValues no longer generates the mapping's internal database if the mapping will not be required for the set of update flags specified.
(Jonathan Robey, 2016/09/14)
Fixed: Instantiating class Vector with nonstandard template arguments did not work because of duplicate function symbols. This is now fixed.
(Dragan Nikolic, 2016/09/14)
New: IndexSet::is_ascending_and_one_to_one allows to find out whether the nth range of indices is stored on the nth process in case the IndexSets are contiguous.
(Daniel Arndt, 2016/09/11)
Fixed: IndexSet::make_trilinos_map now treats nonascending but contiguous IndexSets correctly. It creates a linear EpetraMap only if the IndexSets are ascending and 1:1.
(Daniel Arndt, 2016/09/11)
Fixed: The CMake macros DEAL_II_(ADD_TESTSETUP_TARGET)
now enforce a stricter CMAKE_BUILD_TYPE
handling. This helps to avoid situations where targets with different build flavors might accidentally get linked against each other.
(Matthias Maier, 2016/09/08)
Fixed: FE_TraceQ now provides unit support points.
(Martin Kronbichler, 2016/09/08)
Fixed: Reimplement copy_triangulation and load in parallel::shared::Triangulation, this avoids the loss of partition information which causes parallel::shared::Triangulation to be in an invalid state.
(Ce Qin, 2016/09/05)
Fixed: The build system now uses fPIC instead of fpic
(Matthias Maier, 2016/08/31)
Fixed: Fix MPI_InitFinalize by correctly initializing and destroying all p4est/libsc related objects by calls to sc_init(), p4est_init(), and sc_finalize(); compatibility with p4est versions >1.1.
(Jonathan PerryHouts, 2016/08/31)
Improved: SparsityPattern::copy_from() copying from a DynamicSparsityPattern argument had quadratic complexity in the number of rows for sparsity patterns where most of the rows are of length zero. The bad algorithm has been replaced by a linear complexity one.
(Dustin Kumor, Martin Kronbichler, 2016/08/31)
New: There is now the possibility to store information about the time of an output time step within the .visit file created by the DataOutInterface<dim,spacedim>::write_visit_record function.
(Rene Gassmoeller, Juliane Dannberg, 2016/08/24)
New: It is now possible to generate a cell_iterator to a cell that is identified by a CellId. CellIds are unique even across processes in distributed computations, therefore this change allows to identify a particular cell (e.g. a ghost cell of the local process) in another domain.
(Rene Gassmoeller, 2016/08/17)
New: Rank4 symmetric tensors of type SymmetricTensor can now be converted to rank4 tensors of type Tensor.
(Wolfgang Bangerth, 2016/08/11)
New: PreconditionMG can now be used as a LinearOperator.
(Denis Davydov, 2016/08/09)
New: Implement MGCoarseGridApplySmoother class to do a few steps of a smoother at the coarsest level.
(Denis Davydov, 2016/08/09)
New: RelaxationBlock classes for geometric multigrid now support parallel computations using Trilinos.
(Timo Heister, Guido Kanschat, 2016/08/08)
New: Added a new PolarManifold descriptor, that uses a polar coordinate system to compute new points, and modified the existing SphericalManifold descriptor to use geodesics on the surface of the sphere.
(Luca Heltai, Mauro Bardelloni, 2016/08/04)
New: Introduce operators for residuals and interior penalty terms for the GradDiv operator in LocalIntegrators::GradDiv.
(Timo Heister, Guido Kanschat, 2016/08/02)
Improved: DoFTools::make_cell_patches() can create block lists only extending over local cells of distributed triangulations.
(Guido Kanschat, 2016/08/02)
Improved: The regular and hp versions of DoFTools::make_flux_sparsity_pattern() no longer use the user flags of the underlying triangulation to determine if entries along a certain face have been added to the sparsity pattern.
(David Wells, 2016/03/02  2016/08/02)
Fixed: (P)ARPACK interface for nonsymmetric matrices.
(Joscha Gedicke, 2016/08/01)
Fixed: The TrilinosWrappers::SparsityPattern::print() and TrilinosWrappers::SparsityPattern::print_gnuplot() methods did not produce correct output on distributed computations. This is now fixed.
(Martin Kronbichler, 2016/07/30)
Fixed: CMake now tries to pick up the full link interface for gsl. This works around an underlinkage issue with libgsl.so not correctly stating all shared object dependencies.
(Matthias Maier, 2016/07/28)
Fixed: Level indices for geometric multigrid queried through DoFAccessor::get_mg_dof_indices() would return wrong indices on lines and faces in nonstandard orientation in 3D. This is now fixed.
(Martin Kronbichler, 2016/07/27)
New: There is now a new DoFTools::make_flux_sparsity_pattern() which takes a constraint matrix and flux and internal dof masks, in parallel. This is useful in the case where some components of a finite element are continuous and some discontinuous, allowing constraints to be imposed on the continuous part while also building building the flux terms needed for the discontinuous part.
(Sam Cox, 2016/07/25)
Improved: VectorTools::interpolate() may now be used on FESystems with mixed interpolating and noninterpolating FEs, if all of the selected components for interpolation originate from interpolating FEs.
(Jonathan Robey, 2016/07/24)
Improved: Allow for including dofs for individual components on boundary in DoFTools::make_vertex_patches().
(Ryan Grove, Daniel Arndt, 2016/07/21)
Improved: Split out pattern descriptions for LaTeX and Description ParameterHandler OutputStyles, and add better description text.
(Jonathan Robey, 2016/07/21)
Improved: VectorTools::interpolate() now takes a ComponentMask to select the components to interpolate.
(Jonathan Robey, 2016/07/21)
Improved: Allow for initializing the constrained boundary DoFs in MGConstrainedDoFs using a std::set instead of a FunctionMap whose function values were not used. Allow for nonprimitive FiniteElements.
(Daniel Arndt, 2016/07/20)
New: Added GridGenerator::quarter_hyper_ball() to generate the intersection of a hyper ball with the positive orthant relative to its center.
(Daniel Arndt, 2016/07/19)
Fixed: Work around an issue with the OpenMPI installation on certain Ubuntu versions: The build system now automatically drops the "fuseld=gold" linker flag if openmpi is incompatible with it.
(Wolfgang Bangerth, Martin Kronbichler, Matthias Maier, 2016/07/13)
Fixed: CMake now handles mixed compiler and linker setup via DEAL_II_CXX_FLAGS*
/ DEAL_II_LINKER_FLAGS*
and CMAKE_CXX_FLAGS*
properly.
(Matthias Maier, 2016/07/13)
Fixed: FEValues::reinit() would sometimes try to be overly clever and not recompute information when called with the same cell twice in a row, even if the underlying triangulation had been moved, translated, stretched, or otherwise had its vertex locations changed between the two calls to FEValues::reinit(). This is now fixed.
(Wolfgang Bangerth, JeanPaul Pelteret, Rajat Arora, 2016/07/11)
Fixed: Allow to use FETools::get_fe_by_name for all availabale FiniteElements.
(Daniel Arndt, 2016/07/10)
New: There is now a function DerivativeForm::norm().
(Wolfgang Bangerth, 2016/07/08)
Fixed: SymmetricTensor::norm() did not work correctly for complex underlying scalar types. This is now fixed.
(Wolfgang Bangerth, 2016/07/08)
Fixed: SymmetricTensor::access_raw_entry() erroneously produced an indexing error for rank4 symmetric tensors. This is now fixed.
(Wolfgang Bangerth, 2016/07/08)
New: A move constructor has been added to Triangulation.
(Daniel Shapero, 2016/07/07)
Fixed: The function DoFTools::dof_couplings_from_component_couplings for hp::FECollection arguments was compiled but not exported from the object file. This is now fixed.
(Wolfgang Bangerth, 2016/07/01)
New: Added TrilinosWrappers::SolveDirect::initialize and TrilinosWrappers::SolverDirect::solve to solve distributed linear systems with multiple right hand sides without needing to refactorize the matrix everytime.
(Michael Harmon, 2016/06/30)
New: The MappingFEField class was previously only instantiated if the vector type was Vector. It is now also instantiated for PETSc and Trilinos wrapper vector types.
(Wolfgang Bangerth, 2016/06/25)
Changed: Similar to MappingQEulerian, MappingQ1Eulerian has gained a second constructor that reverses the order of the arguments to indicate which DoFHandler a vector is based on. The old constructor is now deprecated and will be removed in a future version.
(Wolfgang Bangerth, 2016/06/25)
New: GnuplotFlags now supports user specified space dimension labels through a member variable.
(David Wells, 2016/06/24)
New: Added an operator* to SynchronousIterators which returns a reference to the stored tuple of iterators iterators. The iterators member may be made private in a future release.
(Daniel Shapero, 2016/06/24)
Fixed: Performance of DynamicSparsityPattern::begin(r) and DynamicSparsityPattern::end(r) has been improved dramatically in parallel computations and if the pattern is empty.
(Timo Heister, 2016/06/21)
New: IndexSet::at(idx) returns an iterator pointing to the given index or the next larger element in the set if idx is not contained.
(Timo Heister, 2016/06/21)
Fixed: FEFieldFunction now works correctly in distributed computations, where before exceptions of type ExcPointNotAvailableHere could occur for evaluation points on or close to a boundary to a ghost cell.
(Timo Heister, 2016/06/06)
Fixed: The Tensor class was not explicitly instantiated. This did not matter in almost all contexts because its members are all defined as inline
in the header file. The only cases where it matters if one (or the compiler) were to take the address of one of the static member variables.
(Wolfgang Bangerth, 2016/06/03)
New: Return value std::vector<unsigned int> vertex_mapping for the DoFTools::make_vertex_patches() function, including the optional inversion of the vertex mapping.
(Joscha Gedicke, 2016/05/25)
Fixed: Fix a bug where the SparsityPattern could not have more than 4 billions entries when using 32bit indices.
(Bruno Turcksin, 2016/05/22)
New: There are now additional functions in the FETools::Compositing namespace that build finite elements out of simpler finite elements, either by forming tensor products or by combining the set of shape functions.
(Denis Davydov, Wolfgang Bangerth, 2016/05/20)
New: Added PArpackSolver::reinit() when dealing with BlockVectors.
(Alberto Sartori, 2016/05/19)
New: Add VectorTools::compute_global_error that computes global errors from cellwise errors obtained by VectorTools::integrate_difference() and do MPI collectives if necessary.
(Timo Heister, 2016/05/15)
Fixed: The function GridGenerator::subdivided_parallelepiped and its variants could generate meshes with cells that had negative Jacobians. The function now detects when this will happen and raises a descriptive exception instead of going on to produce cells which may have negative measure.
(David Wells, 2016/05/11)
New: Add functions to transform Cartesian coordinates to spherical and back: GeometricUtilities::Coordinates::to_spherical and GeometricUtilities::Coordinates::from_spherical.
(Denis Davydov, 2016/05/10)
Fixed: Corrected the sign of curl calculated in the functions: LocalIntegrators::curl_curl_matrix, LocalIntegrators::curl_matrix, LocalIntegrators::nitsche_curl_matrix and LocalIntegrators::ip_curl_matrix in integrators/maxwell.h.
(Jihuan Tian, 2016/05/09)
Fixed: Bug in the RelaxationBlock class function do_step. Before, the corrections were not added together, which leads to a wrong update whenever the Jacobi blocks are overlapping. For SOR, SSOR and nonoverlapping Jacobi this was not an issue.
(Joscha Gedicke, 2016/05/07)
Improved: The method Triangulation::create_triangulation will now throw an exception if any cells have negative measure. This check is not run if the triangulation keeps track of distorted cells or if the codimension is not zero. This check was previously only run in 3D.
(David Wells, 2016/05/07)
New: Added function GridOut::write_mesh_per_processor_as_vtu. This allows the visualization of a parallel finite element mesh that can be separated into each processor's owned and ghost cells. It also allows for the visualization of each level of a multilevel mesh.
(Conrad Clevenger, 2016/04/28)
Fixed: TrilinosWrappers::SparseMatrix will now exit early if there are no entries to add to the matrix. This usually occurs when zero elision is on. This fixes a bug where the matrix raises an exception if there are no entries to add to a matrix and the provided row and column values are not locally stored.
(David Wells, 2016/04/24)
Fixed: TrilinosWrappers::MPI::Vector and TrilinosWrappers::Vector could access invalid memory in the reinit() method if the MPI communicator was deleted before termination of the program. This usually happened when using vectors from GrowingVectorMemory where a pool keeps vector alive. This has been fixed.
(Martin Kronbichler, 2016/04/23)
Fixed: The methods TrilinosWrappers::SparseMatrix::(T)mmult previously produced invalid matrix sizes if the final matrix was nonsquare. This has been fixed.
(Martin Kronbichler, Daniel Jodlbauer, 2016/04/21)
New: Added an optional string parameter to the ParameterHandler::read_input () and ParameterHandler::read_input_from_string() functions. When a line which equals this string is encountered, the parsing of parameters is terminated.
(Denis Davydov, 2016/04/20)
New: Added move operations to IndexSet.
(Daniel Shapero, 2016/04/19)
Improved: MeshWorker treats periodic faces as interior faces.
(Daniel Arndt, 2016/04/18)
Improved: The parallel loops in the deal.II Vector class for vectorvector operations have been revised for performance. This includes adjusting the minimum parallel grain size to 4096 vector entries and using an affinity partitioner provided by Threading Building Blocks for better data locality, especially on multisocket systems.
(Martin Kronbichler, 2016/04/14)
New: added ReinitHelper for PETSc. This is required by LinearOperator class to reinit vectors.
(Mauro Bardelloni, 2016/04/13)
Fixed and improved: Fix algorithm for incomplete assignment of level subdomain ids for parallel geometric multigrid. Also optimize algorithms used for assignment and DoF communication.
(Timo Heister, Martin Kronbichler, 2016/04/12)
New: Added TensorProductManifold to create new manifolds from two ChartManifold objects. This can be used, for example, to combine a 2d manifold with a flat manifold for an extruded mesh.
(Timo Heister, 2016/04/12)
Improved: DoFRenumbering::compute_Cuthill_McKee when used with distributed triangulations contained parts that scaled as the global problem size, rather than the processorlocal size. This prevented its use with more than a few hundred cores when hanging node constraints were activated. This has been fixed.
(Martin Kronbichler, 2016/04/11)
New: added hessenberg_signal and krylov_space_signal to SolverGMRES. These signals allow to retrieve the Hessenberg matrix and the basis vectors generated by the Arnoldi algorithm.
(Giuseppe Pitton, Luca Heltai, 2016/04/11)
New: Added New option in the read_ucd function of the GridIn class. A flag can now be assigned to the function, to decide wether the indicators specified in a UCD file should be interpreted as boundary_ids or as manifold_ids. This is particularly useful when the indicators refer to internal faces, for which boundary_ids cannot be used.
(Andrea Mola, 2016/04/11)
New: Added CompositionManifold to create new manifolds from two ChartManifold objects. This can be used, for example, to rotate a cylindrical Manifold, or to make a cylinders with parabolic sides.
(Luca Heltai, 2016/04/09)
New: A move constructor has been added to Quadrature.
(Daniel Shapero, 2016/04/08)
Fixed: Meshworker::Assembler::ResidualSimple now also works for multiple blocks if no constraints are given.
(Daniel Arndt, 2016/04/08)
Fixed: The multigrid transfer performed invalid data accesses on multigrid hierarchies that define the coarse level as a level larger than 0. This has been fixed.
(Martin Kronbichler, 2016/04/03)
New: Add GridTools::remove_hanging_nodes() and GridTools::remove_anisotropy() in GridTools. GridTools::remove_hanging_nodes() detects cells with hanging nodes and refines the neighbours in the direction that removes hanging nodes or in every directions. GridTools::remove_anisotropy() refines a mesh until the resulting mesh is composed by cells with ratio between the extension in each coordinate direction lower than a fixed value.
(Mauro Bardelloni, 2016/03/28)
New: When using C++11, a move constructor and assignment operator has been added to SparseMatrix, so that these objects can be returned from functions and packed into pairs and tuples.
(Daniel Shapero, 2016/03/27)
New: The product of a rank1 tensor (a vector) and a rank2 symmetric tensor (a symmetric matrix) is now defined and yields a rank1 tensor (a vector). The opposite product was previously already defined.
(Wolfgang Bangerth, 2016/03/25)
New: Triangulation::add_periodicity allows for accessing neighbors across periodic boundaries via new functions in TriaAccessor.
(Daniel Arndt, Ali Samii, 2016/03/23)
New: Added GridGenerator::torus() to generate the volume mesh of a torus in three dimensions and a manifold description TorusManifold to go with it.
(Timo Heister, 2016/03/21)
Fixed: DoFHandler::locally_owned_dofs() could create a segmentation fault in cases where some processors do not own any cells. This was caused by an incorrect computation in DoFTools::locally_owned_dofs_per_subdomain().
(Wolfgang Bangerth, 2016/03/20)
New: Added GridTools::rotate() in three space dimensions.
(Timo Heister, 2016/03/18)
Improved: The distribution of degrees of freedom on multigrid levels, DoFHandler::distribute_mg_dofs(), contained a few steps that scaled quadratically in the number of local cells for certain configurations. These steps have been replaced by linear complexity calls.
(Martin Kronbichler, 2016/03/18)
New: Added custom target "relocate" to Mac OS X builds, that runs a script to make all paths absolute in the shared libraries included in the deal.II package (only enabled when building a package, and when including external libraries to the package)
(Luca Heltai, 2016/03/14)
New: Added unit tests for complexvalued PETSc and SLEPc.
(Toby D. Young, Denis Davydov, 2016/03/11)
New: Add NURBSPatchManifold. This class is a child of ChartManifold and implements a manifold descriptor for the face of a CAD imported usign OpenCASCADE.
(Mauro Bardelloni, 2016/03/09)
New: When using C++11, there is now a function Threads::new_task() that can take as an argument either a lambda function, or the result of a std::bind expression, or anything else that can be called as in a function call. There is also a similar function Threads::new_thread() that takes the same kind of argument.
(Wolfgang Bangerth, 2016/03/07)
New: Added another scaling factor to Kelly error estimator, namely h_K.
(Denis Davydov, 2016/03/05)
New: When using C++11, the function filter_iterators() allows to filter a range of iterators using predicates (like the ones defined in IteratorFilter).
(Bruno Turcksin, 2016/03/04)
Fixed: The OpenCASCADE::push_forward_and_differential_forms() function is now able to change the direction of the normal vector according to Orientation() method.
(Mauro Bardelloni, 2016/03/02)
Updated: step44 has been been expressed in a more dimension independent manner, and can be now run in both 2d and 3d.
(JeanPaul Pelteret, 2016/02/17)
Fixed: The function IndexSet::make_trilinos_map() now works if some processors have a contiguous range of indices and others do not.
(Bruno Turcksin, 2016/02/17)
Fixed: FE_Nedelec elements up to polynomial order 12 can now be constructed.
(JeanPaul Pelteret, 2016/02/12)
Fixed: The GridTools::build_triangulation_from_patches() function now also copies the locations of vertices from the cells of the source triangulation to the triangulation that is built from the list of patch cells.
(Spencer Patty, 2016/02/11)