Reference documentation for deal.II version 9.6.0
|
This is the list of changes made between the deal.II releases listed above. All entries are signed with the names of the author.
New: All identifiers that the C++ standard (see this page for the public draft – the standard itself is not available online for copyright reasons) mandates to be in namespace std::
are correctly prefixed by the namespace name. While previous gcc compilers accepted these names also without the prefix, gcc 3.0 will require them, as do some commercial compilers.
(WB 2001/01/16)
New: In multithreading mode, the compile flags now also have _REENTRANT
defined. If this flag is defined, then the standard Unix headers also declare reentrant versions (with suffix _r
) of many functions.
(WB 2000/09/20)
New: Major and minor version numbers of the deal.II library are now passed to the compiler as preprocessor variables DEAL_2_MAJOR
and DEAL_2_MINOR
. Their present values are 3 and 1, respectively. Variables of the same name are also available in Makefiles.
(WB 2000/09/18)
New: the step-9
example program is now ready, showing several advanced programming techniques in deal.II.
(WB 2000/07/18)
Changed: deal.II now uses the kdoc2
program to generate the API documentation. This makes up for much nices documentation and also works better than the previous kdoc1
. A copy of kdoc2
is provided within the deal.II source tree.
(WB 2000/06/28)
Changed: when compiling files, the output generated by the make
program now indicates also whether we are compiling for multithread mode, besides the information whether the file is compiled for debug or optimized mode.
(Ralf Hartmann 2000/06/26)
Fixed: the common/scripts/make_dependencies.pl
script that sets up the dependencies for the make files had a problem when the path to the library included special characters such as ‘+’. This is now fixed.
(WB 2000/06/15)
New: the configure
script now checks whether the getrusage
function is properly declared (this function is used in the timer class). The problem is that on SunOS 4.x, this function exists, but is not declared in the right file (although it is listed in the man pages). We then have to declare it ourselves.
(WB 2000/06/14)
New: the configure
script now enforces the compiler flags -ansi -pedantic
when compiling in debug mode. This should force us to write more standard compliant code. (Since the ACE library is not standards conforming, the -ansi
flag is not used when multithreading is requested.)
(WB 2000/06/14)
Improved: the configure
script is now used to select the compiler options. Previously, selection of compiler options was done both in configure
as well as in the global options Makefile common/Make.global_options
.
(WB 2000/06/02)
Improved: Dependence on the files forward_declarations.h
has been widely removed to improve compilation time
(GK 2000/05/24)
Fix: configure
now uses config.guess
to determine the operating system and hardware platform.
(GK 2000/04/05)
Changed: License is now deal.II Public License, restricting commercial use more explicitly.
(WB/RH/GK)
Improved: exceptions ExcIO
and ExcOutOfMemory
are defined globally now.
(GK 2000/12/07)
Improved: ParameterHandler
now has a function log_parameters
which allows output of all parameters to a log file.
(GK 2000/12/07)
New: almost all classes that store data now have a function memory_consumption
that returns an estimate of the amount of memory (in bytes) used up by this class. Supporting functions to compute the size of STL vectors and other objects can be found the MemoryConsumption
namespace.
(WB 2000/11/27)
New: Class FunctionDerivative
computes finite difference approximations of a directional derivative of a Function
.
(GK 2000/11/13)
New: The DataOutBase
and DataOutBase::Patch
classes have been changed so as to allow output of objects that have an other dimension than the surrounding space, for example writing faces instead of cells (this might be useful to write only external faces in 3d computations).
(WB 2000/09/07)
New: There is a new distance
function in the Point
class that calculates the distance between two points.
(Ralf Hartmann 2000/09/06)
New: Timer
now uses the system function getrusage (RUSAGE_CHILDREN, .)
that is need in multithreading. But still the Timer
class does not yet work in multithreading, as getrusage with flag RUSAGE_CHILDREN gives always 0 (at least on Solaris7).
(Ralf Hartmann 2000/08/25)
New: There are now a set of functions outer_product
that for the outer product of tensors.
(WB 2000/07/23)
New: The classes Patterns::Integer
and Patterns::Double
now allow that a range may be specified in which the parameter shall be. Furthermore, instead of a class, Patterns
is now a namespace, so it can be reopened in case you want to write another pattern class and want to put it into the same namespace.
(WB 2000/07/21)
New: classes QMilne
and QWeddle
for closed Newton-Cotes-formulæ of orders 7 and 9, respectively.
(GK 2000/07/07)
New: There is now a function invert (Tensor<2,dim>)
that returns the inverse of a tensor of rank 2.
(WB 2000/04/14)
New multithreading scheme is implemented.
(WB 2000/04/13)
Improved: Subscriptor
prints the real class name if a subscribed object is deleted.
(GK 2000/04/12)
Fixed: SparseILU
had two bugs which are now fixed.
(Oliver Rheinbach, 2001/02/02)
Improved: block classes have a variable number of blocks now, not a template parameter.
(GK 2000/12/07)
New: BlockDiagonalMatrix
is a template that generates a matrix with multiple copies of the same block on the diagonal.
(GK 2000/12/07)
Improved: Krylov-space solvers do not use the function residual anymore. This allows easier implementation of new matrix classes. SolverGMRES
now also counts the first iteration step. Finally, all solvers inherit a Subscriptor
.
(GK 2000/12/07)
New: There are now functions SparsityPattern::symmetrize
and SparseMatrix::symmetrize
that generate a symmetric matrix from a non-symmetric one.
(WB 2000/12/02)
New: almost all classes that store data now have a function memory_consumption
that returns an estimate of the amount of memory (in bytes) used up by this class.
(WB 2000/11/27)
New: SparseMatrix<number>::n_actually_nonzero_elements
returns the number of entries that are actually nonzero.
(Ralf Hartmann 2000/11/22)
Fixed: unlike announced in the docs, the FullMatrix::norm2
function did not return the Frobenius norm of a matrix, but its square. This is fixed now.
(GK 2000/08/28)
Improved: PreconditionBlockSOR::Tvmult()
is implemented.
(GK 2000/07/07)
Improved: The breakdown criterion of SolverBicgstab
can be changed by the use of SolverBicgstab::AdditionalData
.
(GK 2000/07/07)
New: SolverRichardson
has a transposed solver Tsolve(...)
. It uses the functions Tvmult(...)
of the provided matrix and preconditioner.
(GK 2000/07/07)
Improved: FullMatrix::invert
now inverts matrices of all sizes. If there is no hardcoded inversion, gauss_jordan()
is used implicitly.
(GK 2000/06/30)
New: For recognizing a diverging solver before the maximum number of steps is reached, SolverControl
returns failure
also if the residual increases over the start residual by a specific factor. This factor is given to the SolverControl
object by the set_failure_criterion
function. After calling the latter function, checking of this additional failure criterion may again be disabled by calling clear_failure_criterion
.
(Ralf Hartmann 2000/06/26)
Improved: The interface of preconditioner classes has changed. Preconditioners are now considered linear operators like matrices: they have members vmult
and Tvmult
instead of the old operator()
. This will allow the implementation of further non-symmetric solvers.
(GK 2000/06/20)
New: there is now a function SparseMatrix::el
that does mostly the same as SparseMatrix::operator()
, but returns a zero if elements of the matrix are accessed that are not in the sparsity pattern. Thus, the new function allows to actually traverse rows or columns of the matrix without taking care of the sparsity pattern, while SparseMatrix::operator()
should be used to write algorithms more efficiently.
(WB 2000/06/02)
Fix: SparsityPattern::print_gnuplot
wrote rows and columns exchanged. Since most matrices have symmetric sparsity patterns, this has gone unnoticed by now.
(WB 2000/05/30)
Fix: the FullMatrix::Tvmult
function suffered from the same problems as the FullMatrix::Tmmult
function. This is now fixed as well.
(WB 2000/05/26)
New: Class PreconditionBlockJacobi
.
(GK 2000/05/24)
New: SolverControl
has an interface to ParameterHandler
, defining and reading parameters from a file automatically.
(GK 2000/05/24)
New: BlockIndices
: Class that manages the conversion of global indices into a block vector/matrix/... to the indices local to each of the blocks.
(WB 2000/05/08)
New: BlockSparsityPattern
and BlockSparseMatrix
: Classes that represent matrices that are composed of sparse matrices.
(WB 2000/05/08)
Fix: the FullMatrix::mmult
and FullMatrix::Tmmult
code don't resize their output argument any more, as this is not common style in the library. Furthermore, FullMatrix::Tmmult
was utterly broken.
(WB 2000/05/08)
Change: the matrix_norm
functions of sparse and full matrices are renamed to matrix_norm_square
, since they in fact return the square of the norm. This should avoid confusion in some cases.
(WB 2000/05/05)
Fix: the `‘copy-like’' constructor of SparsityPattern
that copies another object and adds some off-diagonals had a bug that caused an exception in some cases. This is now fixed.
(WB 2000/05/04)
New: SwappableVector
: Class that allows to swap out the data of a vector to disk and reload it later on. It also has a function to preload the data before its use in a separate thread if the library is configured for multi-threading.
(WB 2000/05/03)
New: there are now functions Vector::swap
and BlockVector::swap
, as well as global functions swap(u,v)
that exchange the data of two vectors without needing a temporary vector and without copying around data. Their run-time is therefore independent of the length of the vectors.
(WB 2000/05/02)
Fix: SolverCG
counts steps properly.
(GK 2000/04/25)
Change: the solver classes in LAC lost their first template argument. Their names are now SolverXX<VECTOR>
, where XX
denotes the name of the solver (e.g. CG, GMRES, etc). Furthermore, the inheritance from Solver
was made private to reflect the logical structure.
(GK 2000/04/25)
New: EigenInverse
implements inverse iteration by Wieland.
(GK 2000/04/20)
New: EigenPower
implements power method by von Mises
(GK 2000/04/19)
New: PreconditionBlockSOR::set_omega
allows to change the relaxation parameter.
(GK 2000/04/12)
New: SolverXX
: There is a virtual function print_vectors
called in every step. It is void in the solver itself but can be used to print intermediate iteration vectors.
(GK 2000/04/05)
Extend: DoFTools::extract_boundary_dofs
now allows to also specify which boundary conditions shall be considered.
(WB 2000/12/04)
New: some arguments of the functions DoFHandler::n_boundary_dofs
, DoFTools::extract_boundary_dofs
, and DoFTools::map_dof_to_boundary_indices
are changed from list
to set
, since that resembles more closely the purpose of the parameter, and makes computations slightly faster.
(WB 2000/12/04)
New: almost all classes that store data now have a function memory_consumption
that returns an estimate of the amount of memory (in bytes) used up by this class.
(WB 2000/11/27)
New: The ConstraintMatrix::add_entries
function add several constraints at once.
(WB 2000/10/26)
New: The DoFRenumbering::random
function renumbers degrees of freedom in a random way.
(WB 2000/10/22)
New: The TriaAccessor
now has a function point_inside
that checks whether a certain point is inside a given cell.
(Thomas Richter 2000/10/12)
New: The FiniteElement
has got two new functions transform_unit_to_real_cell
and transform_real_to_unit_cell
. They allow to transform points from reference (unit) cell to real cell and visa versa. transform_real_to_unit_cell
involves a Newton iteration and works for all dimensions and all mappings used to transform from unit to real cell.
(Ralf Hartmann 2000/10/12)
Extended: The Triangulation
class can handle boundary information in 3d as well (i.e. lines and quads in 3d with special material IDs).
(Michael Stadler 2000/10/11)
Extended: The GridIn
class can now read 3D UCD data, including boundary information (i.e. lines and quads in 3d with special material IDs).
(Michael Stadler 2000/10/11)
New: The GridRefinement::refine_and_coarsen_optimize
function implements an alternative way to flag cells for refinement and coarsening.
(Thomas Richter 2000/10/10)
Extended: The GridIn::delete_unused_vertices
function now eliminates vertices from the input that are not referenced by any of the cells in the input file. This makes is simpler to delete some cells from the input file by hand, without the need to update the vertex lists, which can be tiring as several cells usually use each vertex. All functions in the GridIn
reading grids in several input files call this function before passing the data to the triangulation object.
(WB 2000/09/26)
New: The GridIn
class can now read the basics of grids in DB Mesh format.
(WB 2000/09/26)
Extended: The KellyErrorEstimator
class is now able to estimate errors for several solution vectors at the same time, provided they live on the same DoFHandler
object.
(WB 2000/09/11)
New: The DataOut_Faces
class allows to output faces instead of cells. This might be handy for 3d computations if one is only interested in surface plots, or cuts through the domain.
(WB 2000/09/07)
Removed: The DataOut_Old
class has finally gone for good. It was already deprecated in version 3.0, and has been superseded for a long time by the framework of classes around DataOutBase
and DataOut
.
(WB 2000/09/07)
New: There is now a function DoFHandler::n_boundary_dofs
that takes the list of selected boundary indicators as a list
of values, rather than the usual map
of pairs of boundary indicators and function object pointers.
(WB 2000/08/25)
Changed: The map_dof_to_boundary_index
functions have been moved from the DoFHandler
to the DoFTools
class, in order to further remove code from the big classes which is necessarily needed there.
(WB 2000/08/25)
New: there is now a class DataOutRotation
that can be used to output data which has been computed exploiting rotational symmetry, on the original domain. Thus, the output is of one dimension higher than the computation was, where the computed solution is rotated around the axis of symmetry.
(WB 2000/08/14)
New: class HalfHyperShellBoundary
and GridGenerator::half_hyper_shell
generate a half shell, useful for computations with a shell domain and rotational symmetry.
(WB 2000/08/08)
Changed: The functions Triangulation::refine
, Triangulation::coarsen
, Triangulation::refine_and_coarsen_fixed_fraction
, and Triangulation::refine_and_coarsen_fixed_number
have been moved from the triangulation class to a separate class GridRefinement
as they are not intricately bound to the triangulation but rather form a distinct class of functions that flag cells for refinement or coarsening based on error indicators.
(WB 2000/07/28)
New: DataOut::clear_input_data_references
clears all reference to input data vectors and to the DoFHandler
. This function may be useful after the patches have been built, to release memory as early as possible, in this case before the output is actually written.
(WB 2000/07/26)
New: class DerivativeApproximation
approximates the norm of the gradient or second derivative of a finite element field on each cell from finite difference approximations.
(WB 2000/04/14 and 2000/07/23)
Fix: Add a missing assertions in FEValuesBase::get_function_*
. If an ExcAccessToUninitializedField
is now thrown then probably an update_values
or update_gradients
is missing in the UpdateFlags
of a used FEValues
. Adding this assertion uncovered several other errors which are now also fixed; these errors were dormant, since the values of finite elements are always computed for the presently available Lagrange elements, but would have been activated once there are other classes of elements.
(Ralf Hartmann 2000/07/20)
New: Class DoFRenumbering
now has functions for cell-wise downstream renumbering for discontinuous elements. The parameters of the function sort_selected_dofs_back
have been switched to match the interfaces of all other functions in this class.
(GK 2000 Jour de Bastille)
New: Function VectorTools::compute_mean_value()
integrates the mean value of one component of a finite element function.
(GK 2000/07/12)
New: The new function get_face
of FEFaceValues
and FESubfaceValues
returns an iterator of the present face. This is the face, for that the FE(Sub)FaceValues
object was reinited the last time.
(Ralf Hartmann 2000/06/26)
New: classes FEDG_Px
implement complete polynomial spaces of degree x on quadrilaterals. Since they have less degrees of freedom than FEDG_Qx
, there is no continuous version for these elements. Implementation for P4 and 3D is still incomplete.
(GK 2000/06/20)
Fix: slight bug in DataOut::build_patches
in multithreaded mode fixed.
(Ralf Hartmann, 2000/05/29)
New: class FETools
performs interpolations and extrapolations of discrete functions from one FiniteElement
to another FiniteElement
. It also provides the local interpolation matrices that interpolate on each cell. Furthermore it provides the interpolation difference matrix id-Ih that is needed for evaluating (id-Ih)z for e.g. the dual solution z.
Removed: The obsolete MatrixCreator::create_interpolation_matrix
function is now removed.
(Ralf Hartmann 2000/05/26)
New: DoFTools::make_flux_sparsity_pattern
can be optimized by providing two coefficient matrices.
(GK 2000/05/25)
Improved: VectorTools::integrate_difference
allows for vector-valued weight functions. L1 and Linfinity norms are calculated correctly.
(GK 2000/05/25)
Changed: FE_DGx::restriction
is not an interpolation any more but a local projection which is more reasonable for DG elements.
(Ralf Hartmann 2000/05/22)
Changed: enum MeshSmoothing
is moved into the Triangulation
class.
(Ralf Hartmann 2000/05/18)
New: Triangulation<dim>::patch_level_1
is a new mesh smoothing. A mesh of patch level 1 consists of patches, i.e. they consists of cells that are all refined at least once.
Changed: As follows from the existence of this new smoothing, maximum_smoothing
will include this smoothing.
(Ralf Hartmann 2000/05/18)
Changed: the MatrixTools::apply_boundary_values
now uses a much faster algorithm when working on matrices with symmetric sparsity patterns. On the other hand, it does no more eliminate whole rows when a matrix has a non-symmetric sparsity pattern, or if the user (through a new flag) tells the function that this is not necessary, for example if the matrix itself is non-symmetric.
For symmetric sparsity patterns, the algorithm now eliminates each boundary value in O(m*log(m)) steps instead of O(N*log(m)), where N=number of rows of the matrix, and m=number of entries per row. Note that m is roughly constant, irrespective of N, so the old algorithm became slower with finer grids, while the new one is O(1) for each boundary degree of freedom.
(John Burnell, WB 2000/05/17)
New: many functions are now templatized on the data type of the vector they take or return. They thus now support Vector<float>
, but also BlockVector<...>
. An incomplete and growing list of functions that were treated in this way is:
DoFAccessor::get_dof_values
, DoFAccessor::set_dof_values
, DoFAccessor::get_interpolated_dof_values
, DoFAccessor::set_dof_values_by_interpolation
, FEValues::get_function_values
, FEValues::get_function_grads
, FEValues::get_function_2nd_derivatives
, MatrixTools::apply_boundary_values
, ConstraintMatrix
.
(WB 2000/05/16 and later)
Changed: The computation of the Jacobian matrices in the FEValues
class is now done more efficiently. The speedup is in the range of a factor of 40 for 3D.
(John Burnell, WB 2000/05/16)
Change: DoFTools::make_hanging_node_constraints ()
does not use the user flags any more, and can thus run in parallel more than once.
(WB 2000/05/15)
Extended: DoFTools::make_sparsity_pattern ()
now accepts a template parameter as sparsity pattern. This allows to use this function for the usual SparsityPattern
, or for BlockSparsityPattern
arguments.
(WB 2000/05/15)
New: DoFTools::extract_hanging_node_dofs ()
identifies nodes that will be constrained by hanging node constraints.
(WB 2000/05/12)
New: DoFRenumbering::sort_selected_dofs_back ()
sorts selected degrees of freedom to the end of the index range.
(WB 2000/05/12)
Change: the return value of DoFHandler::max_couplings_between_dofs ()
is bounded by DoFHandler::n_dofs()
.
(Ralf Hartmann 2000/05/11)
New: FEValuesBase::get_cell ()
returns present cell.
(Ralf Hartmann 2000/05/11)
Fix: FESystem::reinit()
generated an exception if update_support_points
was set.
(WB 2000/05/10)
New: IntergridMap::get_{source,destination}_grid
functions return the grids for which the map was created.
(WB 2000/04/19)
Fix: in three space dimensions, the triangulation class over-estimated the necessary amount of memory needed upon refinement and allocated too much.
(WB 2000/04/19)
New: DoFTools::extract_boundary_dofs
finds all degrees of freedom which are at the boundary and belong to specified components.
(WB 2000/04/17)
New: DoFTools::compute_intergrid_constraints
allows to use different discretization grids for different variables.
(WB 2000/04/15)
New: DataOut::clear_data_vectors
allows to re-use an object without deleting the DoFHandler
.
(GK 2000/04/05)
New: class DoFPrintSolverStep
prints intermediate vectors of a solver as finite element functions using DataOut
.
(GK 2000/04/05)