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 explicitely.
(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
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
superceded for a long time by the framwork 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
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
.
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)