This is the list of changes made after the release of deal.II version 7.1.0. All entries are signed with the names of the author.
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.
New: step-48 demonstrates the solution of a nonlinear wave equation with an explicit time stepping method. The usage of Gauss-Lobatto elements gives diagonal mass matrices, which obviates the solution of linear systems of equations. The nonlinear right hand side is evaluated with the matrix-free framework.
(Katharina Kormann and Martin Kronbichler, 2012/05/05)
New: step-37 shows how the matrix-free framework can be utilized to efficiently solve the Poisson equation without building global matrices. It combines fast operator evaluation with a multigrid solver based on polynomial Chebyshev smoother.
(Katharina Kormann and Martin Kronbichler, 2012/05/05)
New: A new matrix-free interface has been implemented. The framework is parallelized with MPI, TBB, and explicit vectorization instructions (new data type VectorizedArray). The class MatrixFree caches cell-based data in an efficient way. Common operations can be implemented using the FEEvaluation class.
(Katharina Kormann and Martin Kronbichler, 2012/05/05)
New: step-44 demonstrates one approach to modelling large deformations of nearly-incompressible elastic solids. The elastic response is governed by a non-linear, hyperelastic free-energy function. The geometrical response is also nonlinear, i.e., the program considers finite deformations.
(Andrew McBride and Jean-Paul Pelteret, 2012/04/25)
Changed: The version of BOOST we ship with deal.II has been upgraded to 1.49.0.
(Martin Kronbichler, 2012/04/07)
New: We have added a brief section to the step-12 tutorial programs that compares the DG solution computed there with one that one would obtain by using a continuous finite element.
(Wolfgang Bangerth, 2012/03/25)
New: Added support for codimension 2, i.e. for dim-dimensional objects embedded into spacedim=dim+2 dimensional space.
(Sebastian Pauletti, 2012/03/02)
Changed: Material and Boundary indicators have been both of the type unsigned char. Throughout the library, we changed their datatype to types::material_id_t resp. types::boundary_id_t, both typedefs of unsigned char. Internal faces are now characterized by types::internal_face_boundary_id(=static_cast<boundary_id_t>(-1)) instead of 255, so we get rid of that mysterious number in the source code. Material_ids are also assumed to lie in the range from 0 to types::invalid_material_id-1 (where types::invalid_material_id = static_cast<material_id_t>(-1)). With this change, it is now much easier to extend the range of boundary or material ids, if needed.
(Christian Goll 2012/02/27)
New: Functions like FEValues::get_function_values have long been able to extract values from pretty much any vector kind given to it (e.g. of kind Vector, BlockVector, PETScWrappers::Vector, etc). The list of allowed "vector" types now also includes IndexSet, which is interpreted as a vector of elements that are either zero or one, depending on whether an index is in the IndexSet or not.
As a consequence of this, the DataOut::add_data_vector functions now also work for such types of vectors, a use demonstrated in step-41.
(Wolfgang Bangerth, 2012/02/14)
New: It has long been a nuisance that the deal.II vector classes could only be accessed using operator() whereas the C++ std::vector class required operator[]. This diminished the usefulness of template code. Historically, the reason was that the deal.II vector classes should use the same operator as the matrix classes, and C++ does not allow to use operator[] for matrices since this operator can only take a single argument.
In any case, all deal.II vector classes now support both kinds of access operators interchangeably.
(Wolfgang Bangerth, 2012/02/12)
Fixed: Linking shared libraries on PowerPC systems (e.g. on BlueGene systems) failed due to a miscommunication between compiler and linker. This is now worked around.
(Aron Ahmedia, Wolfgang Bangerth, 2012/02/06)
New: There is now a distributed deal.II vector class parallel::distributed::Vector<Number> that can be used with MPI. The vector is based on a contiguous locally owned range and allows easy access of ghost entries from other processors. The vector interface is very similar to the non-distributed class Vector<Number>.
(Katharina Kormann, Martin Kronbichler, 2012/01/25)
Fixed: The common/scripts/make_dependencies program now behaves like the C++ compiler when searching include paths for # include "..." directives.
(Timo Heister, 2012/01/10)
Fixed: The Intel compiler complains that it can't copy Trilinos vector reference objects, preventing the compiling of step-32. This is now fixed.
(Wolfgang Bangerth, 2011/11/09)
Fixed: Intel ICC 12.1 gets into trouble with BOOST because BOOST believes that the compiler supports C++0x but one then still has to specify the corresponding flag on the command line to avoid compiler errors. This is now fixed.
(Wolfgang Bangerth, 2011/11/06)
Fixed: On some systems, mpiCC turns out to alias the C compiler, not the C++ compiler as expected. Consequently, try to use mpic++ or mpicxx before mpiCC as these should really be unambiguous.
(Wolfgang Bangerth, 2011/11/05)
Fixed: Intel's ICC compiler identifies itself as icpc version 12.1.0 (gcc version 4.2.1 compatibility) which we mistook as being GCC version 4.2. The same is true for the Intel C compiler. This is now fixed.
(Wolfgang Bangerth, 2011/11/05)
source/base/utilities.cc. This is now fixed. New: The GridIn::read_unv function can now read meshes generated by the Salome framework, see http://www.salome-platform.org/ .
(Valentin Zingan, 2012/04/27)
New: There is now a second DoFTools::map_dofs_to_support_points function that also works for parallel::distributed::Triangulation triangulations.
(Wolfgang Bangerth, 2012/04/26)
New: There is now a second DoFTools::extract_boundary_dofs function that also works for parallel::distributed::Triangulation triangulations.
(Wolfgang Bangerth, 2012/04/26)
New: The FullMatrix::extract_submatrix_from, FullMatrix::scatter_matrix_to, FullMatrix::set functions are new.
(Andrew McBride, Jean Paul Pelteret, Wolfgang Bangerth, 2012/04/24)
Fixed: The method FEValues<dim>::inverse_jacobian() previously returned the transpose of the inverse Jacobians instead of just the inverse Jacobian as documented. This is now fixed.
(Sebastian Pauletti, Katharina Kormann, Martin Kronbichler, 2012/03/11)
Extended: SolutionTransfer is now also able to transfer solutions between hp::DoFHandler where the finite element index changes during refinement.
(Katharina Kormann, Martin Kronbichler, 2012/03/10)
Changed: A new method to determine an initial guess for the Newton method was coded in MappingQ::transform_real_to_unit_cell. The code in transform_real_to_unit_cell was cleaned a little bit and a new code for the <2,3> case was added.
(Sebastian Pauletti, 2012/03/02)
Changed: In the context of codim>0, Mapping::transform would require different inputs depending on the mapping type. For mapping_covariant, mapping_contravariant the input is DerivativeForm<1, dim, spacedim> but for mapping_covariant_gradient, mapping_contravariant_gradient the input is Tensor<2,dim>.
(Sebastian Pauletti, 2012/03/02)
New: A new class DerivativeForm was added. This class is supposed to represent the derivatives of a mapping.
(Sebastian Pauletti, 2012/03/02)
Fixed: TrilinosWrappers::Vector::all_zero() in parallel.
(Timo Heister, Jörg Frohne, 2012/03/06)
New: GridGenerator::quarter_hyper_shell() in 3d.
(Thomas Geenen, 2012/03/05)
New: DataOut::write_vtu_in_parallel(). This routine uses MPI I/O to write a big vtu file in parallel.
(Timo Heister, 2012/02/29)
Fixed: parallel::distributed::Triangulation::clear() forgot to update the number cache of this class, leading to wrong results when calling functions like parallel::distributed::Triangulation::n_global_active_cells();
(Wolfgang Bangerth, 2012/02/20)
Improved: FEFieldFunction allows now for the computation of Laplacians.
(Christian Goll, 2012/02/16)
New: The function IndexSet::fill_binary_vector creates a numerical representation of an IndexSet containing zeros and ones.
(Wolfgang Bangerth, 2012/02/12)
New: The function IndexSet::clear resets an index set to be empty.
(Wolfgang Bangerth, 2012/02/12)
New: There are now global functions l1_norm() and linfty_norm() that compute the respective norms of a rank-2 tensor.
(Wolfgang Bangerth, 2012/02/08)
New: VectorTools::interpolate_to_different_mesh implemented which interpolates between DoFHandlers with different triangulations based on a common coarse grid.
(Matthias Maier, 2012/02/08)
Improved: DoFTools::map_dofs_to_support_points() now also works within the hp framework.
(Christian Goll, 2012/02/02)
Improved: There is now a constructor for FESystem that allows to create collections of finite elements of arbitrary length.
(Jason Sheldon, 2012/01/27)
Improved: VectorTools::point_value() now also works within the hp framework.
(Christian Goll, 2012/01/26)
Fixed: GridTools::find_active_cell_around_point() for the hp-case works now also with MappingCollections containing only one mapping, as is the standard case in other functions using hp.
(Christian Goll, 2012/01/26)
Fixed: parallel::distributed::refine_and_coarsen_fixed_fraction() contained a rounding bug that often produced wrong results.
(Timo Heister, 2012/01/24)
Improved: Utilities::break_text_into_lines now also splits the string at
.
(Timo Heister, 2012/01/17)
Fixed: When ./configure does not detect the presence of zlib, writing output in VTU format failed to produce a valid output file.
(Timo Heister, 2012/01/03)
Improved: PETScWrappers::SolverXXX class was restricted to using default solver options for the KSP only. It is now possible to override those by using PETSc command-line options -ksp_*; giving greater flexability in controling PETSc solvers. (See class documentation).
(Vijay S. Mahadevan, 2011/12/22)
New: The GridIn class now also reads the GMSH format 2.2 as written by GMSH 2.5.
(Vijay S. Mahadevan, Wolfgang Bangerth, 2011/12/19)
Improved: The GridRefinement::refine_and_coarsen_optimize function assumed that the expected convergence order was 2. It has now gotten an argument by which the user can prescribe a different value. A bug has also been fixed in which the function incorrectly assumed in its algorithm that the mesh was two-dimensional.
(Christian Goll, 2011/12/16)
Fixed: Restriction and prolongation didn't work for elements of kind FE_Nothing. Consequently, many other parts of the library also didn't work, such as the SolutionTransfer class. This is now fixed.
(Wolfgang Bangerth, 2011/12/15)
Fixed: The DerivativeApproximation class now works for distributed computations.
(Timo Heister, 2011/12/15)
Changed: The ExcMessage exception class took an argument of type char* that was displayed when the exception was raised. However, character pointers are awkward to work with because (i) they can not easily be composed to contain things like file names that are only known at run-time, and (ii) the string pointed to by the pointer had to live longer than the local expression in which the exception is generated when using the AssertThrow macro (because, when we create an exception, the exception object is passed up the call stack until we find a catch-clause; at that time, however, the scope in which the exception object was created has long been left). This restriction made it impossible to construct the message using std::string and then just do something like (std::string("file: ")+filename).c_str().
To remedy this flaw, the type of the argument to ExcMessage has been changed to std::string since objects of this type are readily copyable and therefore live long enough.
(Wolfgang Bangerth, 2011/12/14)
New: Setting up a class derived from DataPostprocessor required some pretty mechanical steps in which one has to overload four member functions. For common cases where a postprocessor only computes a single scalar or a single vector, this is tedious and unnecessary. For these cases, the new classes DataPostprocessorScalar and DataPostprocessorVector provide short cuts that make life simpler.
(Wolfgang Bangerth, 2011/12/14)
Changed: The DataPostprocessor class previously required users of this class to overload DataPostprocessor::get_names(), DataPostprocessor::get_data_component_interpretation() and DataPostprocessor::n_output_variables(). The latter function is redundant since its output must equal the length of the arrays returned by the first two of these functions. It has therefore been removed.
(Wolfgang Bangerth, 2011/12/14)
Improved: Objects of the type LogStream::Prefix can now be used as a safe implementation of the push and pop mechanism for log prefices.
(Guido Kanschat, 2011/12/09)
New: IndexSet::add_indices(IndexSet).
(Timo Heister, 2011/12/09)
Fixed: Finite element Hessians get computed for codimension one, at least for FE_Poly derived classes.
(Guido Kanschat, 2011/12/07)
Changed: Output of ParameterHandler::print_parameters with argument ParameterHandler::LaTeX was not particularly readable. The output has therefore been rewritten to be more structured and readable.
(Wolfgang Bangerth, 2011/11/28)
Fixed: The TimerOutput class set the alignment of output to right-aligned under some circumstances, but didn't reset this to the previous value at the end of output. This is now fixed.
(Wolfgang Bangerth, 2011/11/28)
New: The copy constructor of the SparseMatrixEZ function now works (rather than throwing an exception) if the copied matrix has size zero. This is in accordance to the other matrix classes.
(Wolfgang Bangerth, 2011/11/15)
New: The class ScalarFunctionFromFunctionObject provides a quick way to convert an arbitrary function into a function object that can be passed to part of the library that require the Function<dim> interface. The VectorFunctionFromScalarFunctionObject class does a similar thing.
(Wolfgang Bangerth, 2011/11/15)
New: The DoFTools::count_dofs_per_block function now also works for objects of type hp::DoFHandler.
(Jason Sheldon, 2011/11/13)
New: FETools::get_fe_from_name() can now return objects of type FE_Nothing.
(Scott Miller, Jonathan Pitt, 2011/11/10)
New: Implementation of an alternative handling of inhomogeneous constraints in ConstraintMatrix. This is controlled with a new parameter use_inhomogeneities_for_rhs in distribute_local_to_global() and determines whether the correct or zero values (this was the case before and still is the default) are kept in the linear system during the solution process.
(Jörg Frohne, 2011/11/01)
Fixed: SparseMatrix::mmult and SpareMatrix::Tmmult had a number of issues that are now fixed: (i) rebuilding the sparsity pattern was allowed even if several of the matrices involved in these operations shared a sparsity pattern; (ii) the functions had a vector argument that had a default value but the default value could not be used because it wasn't used in a template context deducible by the compiler.
(Wolfgang Bangerth, 2011/10/30)
New: parallel::distributed::Triangulation::mesh_reconstruction_after_repartitioning setting which is necessary for save()/load() to be deterministic. Otherwise the matrix assembly is done in a different order depending on the order of old refinements.
(Timo Heister, 2011/10/26)
New: TriaAccessor<>::minimum_vertex_distance().
(Timo Heister, 2011/10/25)
New: TableHandler::print_text now supports not only printing column keys above their own column, but also in a separate header, to make it simpler for external plotting programs to skip this line.
(Wolfgang Bangerth, 2011/10/22)
Fixed: Trying to write a TableHandler object that is empty resulted in a segmentation fault. This is now fixed.
(Wolfgang Bangerth, 2011/10/21)
New: The TableHandler class can now pad columns that have only been partially filled. See the documentation of the class for a description.
(Wolfgang Bangerth, 2011/10/18)
Fixed: In TableHandler::print_text, it can happen that the function wants to print an empty string as the element of the table to be printed. This can confuse machine readers of this table, for example for visualization, since they then do not see this column in that row. To prevent this, we now print "" in such places.
(Wolfgang Bangerth, 2011/10/18)
Fixed: Using Trilinos versions 10.4 and later on Debian failed to configure due to a different naming scheme of Trilinos libraries on Debian. This is now fixed.
(Wolfgang Bangerth, 2011/10/17)
Changed: The TableHandler class has been changed significantly internally. It could previously store arbitrary values (though in practice, only int, unsigned int, double and std::string were implemented). The class is now restricted to this particular set of types. On the other hand, the TableHandler class can now be serialized.
(Wolfgang Bangerth, 2011/10/17)
Fixed: searching in the doxygen documentation.
(Timo Heister, 2011/10/13)
New: parallel::distributed::Triangulation::save()/load() to store the refinement information to disk. Also supports saving solution vectors using the SolutionTransfer class.
(Timo Heister, 2011/10/12)
documentation generated on Thu May 17 2012 20:05:28 by
doxygen
1.7.3