+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
- "http://www.w3.org/TR/REC-html40/frameset.dtd">
-<html>
- <head>
- <link href="../../screen.css" rel="StyleSheet" media="screen">
- <link href="../../print.css" rel="StyleSheet" media="print">
- <title>The deal.II news page</title>
- <meta name="author" content="the deal.II authors <authors@dealii.org>">
- <meta name="keywords" content="deal.II"></head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<body>
-
-
-<h2>Changes after Version 3.4</h2>
-
-<p>
-This is the list of changes made after the release of
-<acronym>deal.II</acronym> version 3.4. It is subdivided into changes
-made to the three sub-libraries <a href="#base">base</a>,
-<a href="#lac">lac</a>, and <a href="#deal.II">deal.II</a>, as well as
-changes to the <a href="#general">general infrastructure,
-documentation, etc</a>.
-</p>
-
-<p>
-All entries are signed with the names of the author. Regular
-contributor's names are abbreviated by WB (Wolfgang Bangerth), GK
-(Guido Kanschat), RH (Ralf Hartmann).
-</p>
-
-
-<a name="general"></a>
-<h3>General</h3>
-
-<ol>
- <li> <p>
- New: <acronym>deal.II</acronym> now uses a new threading
- scheme. The new scheme is simpler to use, and in particular
- more flexible in some cases where only one thread is started,
- or where a thread is completely detached, since we got rid of
- the <code>ThreadManager</code> class and now only store handles
- to individual threads (which can be discarded, or added to a
- <code>ThreadGroup</code> variable that is able to wait for a
- whole set of threads at once.
- <br>
- The new scheme also implements a much needed feature: calling
- functions on a new thread that return values. Previously, such
- functions needed to be written in a way that they return their
- return value through an additional reference parameter. This
- was inflexible if one wanted to call functions that already
- exist. This restriction is now lifted: such functions can be
- called, and the return value can be accessed once the thread
- has finished.
- <br>
- Some documentation for the new scheme can be found
- <a href="../../reports/new-threads/index.html" target="body">on this
- page</a>.
- <br>
- (WB 2003/02/06)
- </p>
-
- <li> <p>
- New: <acronym>deal.II</acronym> now makes use of some parts of
- the <a href="http://www.boost.org/">boost</a> library, which is
- supposed to be a testground for the next generation C++ standard
- library. The parts which we use are now in
- <code>contrib/boost/include/boost_local/</code> and can be
- referenced from within your programs. The directory contains
- the string <code>_local</code> since you may still want to use
- another version or installation of boost in your own programs.
- </p>
-
- <p>
- Also note that boost is large -- much larger than the subset we
- have imported --, so we only took what we needed.
- <br>
- (WB 2003/02/06)
- </p>
-
- <li> <p>
- Fixed: A longstanding bug in the documentation system has been fixed: if
- a namespace was ended with <code>}</code> instead of <code>};</code>
- (note the semicolon), then the documentation tool assumed that the
- following entities were still part of the namespace just left. This was
- since the closing brace alone was not accepted as ending a namespace
- (after all, structures, classes, and enums -- the other entities that
- can enclose other declarations -- need the semicolon). This led to some
- classes not showing up in the class index of the sublibraries. This is
- now fixed.
- <br>
- (WB 2003/02/02)
- </p>
-
- <li> <p>
- Changed: Classes and structures that are declared inside namespaces named
- <code class="class">internal</code> are now no longer shown in the class
- index view of the documentation of each of the sublibraries. Since they
- are supposed to be used internally only, this is no drawback for the
- general public. However, they are documented as members of these
- namespaces.
- <br>
- (WB 2003/02/02)
- </p>
-
- <li> <p>
- Fixed: Some of the formulas in the step-14 tutorial were obviously
- scrambled a little. This is now fixed.
- <br>
- (Roy Stogner, WB 2003/01/30)
- </p>
-
- <li> <p>
- Changed: The main Makefile has been changed to sequentialize building
- the base, lac, and deal.II sublibraries. We changed this, since on some
- systems (notably AIX), the latter libraries need to be linked against
- the former ones, when creating shared libraries.
- <br>
- (WB 2003/01/24)
- </p>
-
- <li> <p>
- New: Changes have been made to support compiling and using
- <acronym>deal.II</acronym> on AIX 5 systems.
- <br>
- (WB 2003/01/24)
- </p>
-
- <li> <p>
- Removed: Thread support now relies solely on the use of POSIX
- functions. The use of the
- <a href="http://www.cs.wustl.edu/~schmidt/ACE.html" target="_top">ACE
- (Adaptive Communications Environment)</a> library for this is now no
- longer supported. However, application programs can of course still use
- ACE, but they will need to generate paths to this library in their
- makefiles themselves.
- <br>
- (WB 2003/01/11)
- </p>
-
- <li> <p>
- New: Some changes have been made to support Mac OS X 10.2. Shared
- libraries are not supported on this architecture, but everything else
- should work.
- <br>
- (WB 2002/12/18)
- </p>
-
- <li> <p>
- New: <acronym>deal.II</acronym> can be compiled with version 7.0 of
- Intel's icc compiler, which was recently released. Since this compiler
- finally supports the very restrictive flags <code>-Xc -ansi</code> that
- check for close conformance with the C++ standard, we use them (previous
- versions of icc would crash when these two flags are given). This
- requires that we distinguish between these compiler versions, and the
- corresponding Makefile variable <code>GXX-VERSION</code> now no longer
- holds the non-versioned string <code>intel_icc</code> when icc is
- detected, but rather either <code>intel_icc5</code>,
- <code>intel_icc6</code>, or <code>intel_icc7</code>, depending on what
- version of the compiler was detected.
- <br>
- (WB 2002/12/05)
- </p>
-
- <li> <p>
- Changed: Previously, we just set the preprocessor variable
- <code>DEAL_II_USE_MT</code>, when <code>--with-multithreading</code> was
- given as argument to <code>./configure</code>. Tests in the code
- therefore looked like <code>#ifdef DEAL_II_USE_MT</code>. This has been
- changed so that the variable is always defined, but its value is now
- equal to <code>1</code>
- when multithreading was requested, and zero otherwise. The reason for
- this is that you can now write <code>if (DEAL_II_USE_MT && ...)</code>
- conditions, and need not interleave if-else clauses from regular code
- and the preprocessor, if conditions involve both the state of this
- preprocessor variable and the run-time state of your program. However,
- this change requires that all appearances of <code>#ifdef
- DEAL_II_USE_MT</code> be changed to <code>#if DEAL_II_USE_MT ==
- 1</code>, since the variable is now defined unconditionally.
- <br>
- (WB 2002/11/14)
- </p>
-
- <li> <p>
- New: Object files are now named according to the local defaults
- on the system we are running on. On Unix systems, this is
- usually a <code>.o</code> suffix, while on Windows it is
- <code>.obj</code>. Likewise for executables, which have no
- suffix on Unix, but <code>.exe</code> on Windows.
- <br>
- (WB 2002/11/11)
- </p>
-
- <li> <p>
- New: <acronym>deal.II</acronym> can now also be compiled with Red Hat's
- version of the gcc compiler, gcc 2.96. However, some problems remain;
- for more information, refer
- to the <a href="../../faq.html" target="body">Frequently Asked
- Questions</a> section.
- <br>
- (WB 2002/10/14)
- </p>
-
- <li> <p>
- Fixed: On CygWin, one header files has a <code>#define quad
- quad_t</code>. This is annoying, since we have local variables and
- member functions with the name <code>quad</code>, and in fact it breaks
- compilation on those versions of CygWin that has this. Fortunately, the
- define is only active if a preprocessor variable
- <code>_POSIX_SOURCE</code> is not set. Thus, we now check for the define
- when configuring the library, and if necessary set the preprocessor
- variable. However, while this allows to compile the library on these
- systems, it may otherwise affect your code, if you use functions or
- other features of the system that are not available when the flag is
- set.
- <br>
- (Stephen Kolaroff, WB
- 2002/09/28)
- </p>
-
- <li> <p>
- New: Since <code>math.h</code> only defines the values of PI or E (as
- <code>M_PI</code> and <code>M_E</code>) when certain defines are set (on
- Linux, these are <code>__USE_BSD</code> or <code>__USE_XOPEN</code>),
- portable programs usually defined these constants themselves. In
- <acronym>deal.II</acronym>, this happened at 6 different places. To
- avoid this in the future, <code>base/config.h</code> now exports a
- namespace <code>deal_II_numbers</code> that defines these two, and a
- number of other numerical constants.
- <br>
- (WB 2002/09/12)
- </p>
-
- <li> <p>
- New: <code>base/config.h</code> now exports the
- <acronym>deal.II</acronym> base directory through the
- <code>DEAL_II_PATH</code> preprocessor variable.
- <br>
- (WB 2002/09/09)
- </p>
-
- <li> <p>
- Removed: The forward declarations files have gone. We have never
- propagated their use in the example programs, but these files have been
- there in the base, lac, and grid include directories, and forward
- declared all classes that were present in the respective parts of the
- library. This, the idea was, enables you to use just this include file
- in your own header files, rather than including the full declarations of
- these classes. However, maintaining these forward declaration files has
- been a constant thorn in our side, be it that the timing of their
- generation was difficult when using parallel builds, or that they were
- difficult to generate at first. The latter is now the reason for their
- abolition: we had a script for their generation, but it did not take
- into account namespaces, so we got clashes when we found that we had
- used the same class name in two different namespaces, since the script
- put the forward declaration incorrectly into the global namespace where
- they conflicted. Since we do not plan to extend the script by a
- parser that can properly handle opening and closing braces of
- namespaces, we simply drop these files.
- <br>
- What you should do if you have used these forward declaration files: you
- have two possibilities - either include the respective header file in
- which the class is fully declared, or write the forward declaration into
- your headers yourself.
- <br>
- (WB 2002/09/05)
- </p>
-
- <li> <p>
- New: There is now
- <a href="../../reports/assemble/index.html" target="body">a new report
- on assembling matrices</a> available from the
- <a href="../../documentation.html" target="body">documentation
- page</a>. The main focus is assembling of matrices for
- vector-valued problems, where shape functions are
- vector-valued, and may have only one or more non-zero vector
- components.
- <br>
- (WB 2002/06/17)
- </p>
-
- <li> <p>
- Removed: The functions <code
- class="member">FEValuesBase::get_shape_values</code>, <code
- class="member">FEValuesBase::get_shape_grads</code>, and <code
- class="member">FEValuesBase::get_shape_2nd_derivatives</code> are
- now removed as they expose too much of the internal data
- structure of their class, and interfere with plans for the
- extension of this and related classes. These functions, which
- had been deprecated in the previous version, are thus not
- part of the release after version 3.4 any more. Use the <code
- class="member">FEValuesBase::shape_value</code> and alike
- functions as a replacement.
- <br>
- For more information, read
- <a href="http://www.dealii.org/mail/msg00638.html" target="body">this mail</a>.
- <br>
- (WB 2002/06/10)
- </p>
-
- <li> <p>
- New: <acronym>deal.II</acronym> now also supports vector-valued
- finite elements with shape functions for which more than just
- one vector component is non-zero. Such elements are, for
- example, the Nedelec and Raviart-Thomas families. Previously,
- vector-valued elements were only supported insofar as they
- could be composed of scalar ones; in that case, each
- (vector-valued) shape function had only one non-zero vector
- component.
- <br>
- (WB 2002/06/10)
- </p>
-
- <li> <p>
- New: The top-level makefile now how a target <tt>distclean</tt>.
- <tt>clean</tt> leaves the libraries now, removing
- everything that is not needed to use
- <acronym>deal.II</acronym>. <tt>distclean</tt> removes even the
- libraries, leaving the directory more or less in the state like
- after <tt>configure</tt>.
- <br>
- (GK 2002/06/07)
-</ol>
-
-
-
-<a name="base"></a>
-<h3>base</h3>
-
-<ol>
- <li> <p>
- Fixed: A bug in the <code
- class="class">Patterns::MultipleSelection</code> class if more
- than two elements in a comma-separated list were given.
- <br>
- (Brian Carnes 2003/05/14)
- </p>
-
- <li> <p>
- Changed: The <code class="class">Polynomials::Legendre</code>
- class lost its template argument and is now just a regular
- class. There was no real good reason for the template argument,
- it had just crept in.
- <br>
- (WB 2003/05/12)
- </p>
-
- <li> <p>
- New: There is now a class <code
- class="class">AnisotropicPolynomials</code> that constructs a higher
- dimensional polynomial space from a set of 1-d polynomials in each of
- the coordinate directions.
- <br>
- (WB 2003/04/20)
- </p>
-
- <li> <p>
- Changed: The <code class="class">Table</code> accessor classes
- have been moved to a namespace <code
- class="class">internal</code>. Since these classes are not (or should
- not be) used directly in applications, this should not change
- compatibility. However, they will now no longer show up in the class
- overview of the documentation, which they were cluttering up.
- <br>
- (WB 2003/02/13)
- </p>
-
- <li> <p>
- New: The <code class="class">Function</code> class now has an assignment
- operator. This way, you can put function objects into
- containers. However, the assignment operator makes sure that only
- objects can be assigned that have the same number of vector components.
- <br>
- (WB 2003/02/06)
- </p>
-
- <li> <p>
- New: The <code class="class">ThreadMutex</code> classes now have a
- member class <code class="class">ScopedLock</code> that implements the
- scoped thread-safe locking pattern of Doug Schmidt. It is also used in
- various places of the code now.
- <br>
- (WB 2003/01/28)
- </p>
-
- <li> <p>
- Fixed: The <code class="class">PosixThreadManager</code> called
- its <code class="member">wait</code> function in the
- destructor. If this had been called before already, then the
- same threads would have been waited for twice, which invokes
- undefined behavior. This is fixed by making sure that <code
- class="member">wait</code> removes the id's of the threads it
- has already waited for, and so calling it more than once will
- not wait for threads which have already been waited for.
- <br>
- (Michael Anderson, WB 2003/01/16)
- </p>
-
- <li> <p>
- Fixed: The <code class="class">Subscriptor</code> uses a counter to
- count how many <code class="class">SmartPointer</code> objects subscribe
- to the pointed-to object. This counter needs to be a volatile variable
- in multithreaded mode, to avoid false compiler optimizations based on
- the assumption that the variable cannot change between two subsequent
- reads.
- <br>
- (WB 2003/01/11)
- </p>
-
- <li> <p>
- Fixed: In multithreaded mode, when a new thread is started, the
- arguments to the function being called need to be copied from the stack
- of the starting thread to that of the new thread. In order to
- synchronise this, mutexes were used that were acquired from one thread
- and released from another thread. On Linux this does not lead to
- problems, but POSIX functions do not guarantee that this actually works,
- and it also leads to problems when running programs under valgrind. This
- is now fixed with the help of condition variables.
- <br>
- (Michael Anderson, WB 2003/01/11)
- </p>
-
- <li> <p>
- New: There are now classes <code class="class">ThreadCondition</code>
- that implement thread condition variable operations through POSIX
- functions (in multithreaded mode) or doing nothing (in singlethreaded
- mode).
- <br>
- (WB 2003/01/11)
- </p>
-
- <li> <p>
- New: Newer versions of gcc have a very nice feature: you can set
- a verbose terminate handler, that not only aborts a program
- when an exception is thrown and not caught somewhere, but
- before aborting it prints that an exception has been thrown,
- and possibly what the std::exception::what() function has to
- say. Since many people run into the trap of not having a
- catch clause in main(), they wonder where that abort may be
- coming from. The terminate handler then at least says what is
- missing in their program.
- <br>
- (WB 2002/12/19)
- </p>
-
- <li> <p>
- New: There is now a <code class="class">Patterns::List</code> pattern
- that matches a list of elements each of which has to satisfy a pattern
- that was given to the constructor.
- <br>
- (WB 2002/11/29)
- </p>
-
- <li> <p>
- Changed: In POSIX mode, when the <code
- class="member">ThreadManager</code> class created a new thread through
- <code class="member">pthread_create</code>, it only checked for the
- error code and aborted if it was non-zero. Now, it checks whether the
- error code is <code class="member">EAGAIN</code> and simply retries the
- call if this is the case. This may, in rare cases, lead to a deadlock or
- an infinite loop, but will usually just wait until the respective
- resources for thread creation are available from the operating system
- and will then succeed.
- <br>
- (WB 2002/11/13)
- </p>
-
- <li> <p>
- Fixed: The <code class="member">write_text</code> and <code
- class="member">write_tex</code> functions of the <code
- class="class">TableHandler</code> class now check whether their
- <code>ofstream</code> arguments are in a proper state before
- using them for output.
- <br>
- (RH 2002/11/11)
- </p>
-
- <li> <p>
- New: Added Hierarchical Polynomial (similar to Legendre class). Will
- eventually be used in a hierarchical FiniteElement class similar to
- FE_Q class. Included in Polynomials namespace.
- <br>
- (Brian Carnes 2002/10/15)
- </p>
-
- <li> <p> Changed: Because they became too many, the classes describing 1d
- polynomials are now in a <code class="class">namespace
- Polynomials</code>.
- <br>
- (WB 2002/10/14)
- </p>
-
- <li> <p> Changed: When an exception is thrown but not caught in a sub-thread,
- this exception is not passed to the main thread by the operating
- system. Rather, if the exception is not caught from the function that
- was invoked by the spawning system function, the entire program is
- terminated without an additional message. The wrapper functions which
- are used to spawn new threads in the <code class="class">Threads</code>
- namespace therefore now catch these exceptions and at least print the
- message they carry, before aborting the program. This way, at least the
- message gets displayed.
- <br>
- (WB 2002/10/13)
- </p>
-
- <li> <p> Changed: The class <code
- class="member">Table<2>::fill</code> function, which is also
- inherited from the <code class="class">FullMatrix</code> class, used to
- work also when the size of the matrix was zero, by simply not copying
- something. This led to difficult to detect errors. It is therefore no
- more allowed to call this function when the matrix is empty. For all
- other cases, the status of copying without checking the size of the
- array copied from remains unchanged.
- <br>
- (WB 2002/09/28)
- </p>
-
- <li> <p> New: The classes <code
- class="class">TableIndices<N></code> and <code
- class="class">Table<N,T></code> are now implemented also
- for <code>N=4,5</code> and <code>6</code>. The <code
- class="class">Table<N,T></code> class represents an
- <code>N</code>-dimensional array and might replace the
- N-times-nested-use of the <code
- class="class">std::vector</code> class.
- <br>
- (RH 2002/09/24)
- </p>
-
- <li> <p>
- New: The <code class="member">Threads::n_existing_threads</code>
- function returns the present number of existing threads, allowing an
- assessment whether it is useful to spawn new threads or rather perform
- the operation in question sequentially.
- <br>
- (WB 2002/09/08)
- </p>
-
- <li> <p> New: Global exception class <code
- class="class">ExcIteratorPastEnd</code>, which should be used if an
- iterator is incremented or decremented beyond its end value.
- <br>
- (GK 2002/09/08)
- </p>
-
- <li> <p>
- Extended: Previously, the <code
- class="class">Threads::PosixThreadBarrier</code>
- class could not be used at all (they threw exceptions), if your system
- did not have the respective POSIX functions. This restriction is lifted
- for the special case that you give one as the number of parties that
- will be waiting for the barrier: in this case, a barrier is a
- no-operation, so we do not need assistence from the operating
- system. This change makes it slightly simpler to write programs in a way
- such that they run in both single- and multithreaded environments.
- <br>
- (WB 2002/09/05)
- </p>
-
- <li> <p>
- New: The old class <code class="class">vector2d</code>, implementing a
- two-dimensional array of objects is now gone. Instead, there is the new
- <code class="class">Table</code> class that implements tables of
- arbitrary dimension. Transition is painless: where there was
- <code>vector2d<type></code> before, use
- <code>Table<2,type></code> now (and don't forget to update the
- name of the header file, of course). If you have a three-dimensional
- array, you can use <code class="class">Table<3,type></code> now.
- <br>
- (WB 2002/09/03)
- </p>
-
- <li> <p>
- New: There are now functions returning the transpose of <code
- class="class">Tensor</code> objects of rank 2.
- <br>
- (WB 2002/08/31)
- </p>
-
- <li> <p>
- New: Row accessors for the <code class="class">vector2d</code>
- class now have a member function <code
- class="member">size</code> that returns the size of the row,
- i.e. the number of columns of the table.
- <br>
- (WB 2002/07/24)
- </p>
-
- <li> <p>
- Fixed: In EPS output, colors were set to invalid values if the
- values of the field that is used for coloring are all
- equal. This happens, for example, in the very first time step
- of time dependent problems, if initial values are zero. The
- color value now used is arbitrary, but valid.
- <br>
- (WB 2002/07/24)
- </p>
-
- <li> <p>
- Changed: To save disk space, color values in EPS output are
- written as grey scale with only one value instead of three RGB
- values if the color so represented is actually a grey scale.
- <br>
- (WB 2002/07/24)
- </p>
-
- <li> <p>
- New: There are now operators to allow multiplication and
- division of <code class="class">Tensor</code> objects by scalar
- factors.
- <br>
- (WB 2002/06/07)
- </p>
-</ol>
-
-
-
-<a name="lac"></a>
-<h3>lac</h3>
-
-<ol>
- <li> <p> New: Function
- <code class="member">BlockSparseMatrix::print_formatted</code>
- added, similar to the
- <code class="member">BlockVector::print_formatted</code> function.
- <br>
- (Brian Carnes 2003/06/02)
- </p>
-
- <li> <p> New: Functions <code class="member">SparseMatrix::operator *=</code>
- and <code class="member">SparseMatrix::operator /=</code> as well as
- <code class="member">BlockSparseMatrix::operator *=</code>
- and <code class="member">BlockSparseMatrix::operator /=</code>
- are added.
- <br>
- (Brian Carnes 2003/06/02)
- </p>
-
- <li> <p> Deprecated: The functions <code class="member">Vector::scale</code>
- and <code class="member">BlockVector::scale</code> are now deprecated
- and will be removed in a future version. Use <code>operator*=</code> and
- <code>operator/=</code> instead.
- <br>
- (WB 2003/05/31)
- </p>
-
- <li> <p> New: <code class="class">Vector</code>, <code
- class="class">BlockVector</code> and
- <code class="class">FullMatrix</code> now have <code>operator/=</code>
- for scaling by a scalar.
- <br>
- (WB 2003/05/31)
- </p>
-
- <li> <p> New: <code class="class">PointerMatrix</code> now
- has <code>empty()</code> function, which returns true if the pointer is
- null; otherwise we call the pointer's <code>empty()</code> function.
- This requires the class MATRIX to have an <code>empty()</code>
- function.
- <br>
- (Brian Carnes 2003/05/22)
- </p>
-
- <li> <p> New: <code class="class">SparseLUDecomposition</code> now
- has <code>empty()</code> function, which calls the inherited <code
- class="class">SparseMatrix</code> <code>empty()</code> function.
- <br>
- (Brian Carnes 2003/05/22)
- </p>
-
- <li> <p> New: <code class="class">PreconditionPSOR</code> implements
- interface to permuted SOR preconditioner function in <code
- class="class">SparseMatrix</code>.
- <br>
- (GK 2003/05/12)
- </p>
-
- <li> <p> Improved: <code class="class">FullMatrix</code>::<code
- class="member">fill</code> now copies the largest possible block,
- whether the destination or source matrix is bigger. Additionally, an
- offset inside the source matrix may be specified.
- <br>
- (GK 2003/03/31)
- </p>
-
- <li> <p>
- New/Changed: The <code class="class">SparseILU</code>, <code
- class="class">SparseMIC</code> and <code
- class="class">SparseLUDecomposition</code> now use the same
- interface (<code class="class">initialize</code>, <code
- class="class">vmult</code>, <code class="class">clear</code>)
- as all <code class="class">PreconditionBlock</code> classes. In
- virtue of an unified preconditioner interface it is now
- recommended to use the new methods. The old methods (<code
- class="class">reinit</code>, <code
- class="class">decompose</code>, <code
- class="class">apply_decomposition</code>) are now deprecated,
- and will be removed in a later version.
- <br>
- (RH 2003/02/19)
- </p>
-
- <li> <p>
- Changed: The <code class="class">BlockVector</code> accessor classes
- have been moved to a namespace <code
- class="class">internal</code>. Since these classes are not (or should
- not be) used directly in applications, this should not change
- compatibility. However, they will now no longer show up in the class
- overview of the documentation, which they were cluttering up.
- <br>
- (WB 2003/02/13)
- </p>
-
- <li> <p>
- New: The <code class="class">SolverGMRES</code> now accepts an
- <code class="class">AdditionalData</code> parameter
- <code>use_default_residual</code> whose default is
- <code>true</code>. By setting this flag to <code>false</code>,
- the stopping criterion of the left-preconditioned GMRes solver
- is not the default preconditioned residual but the normal
- (unpreconditioned) residual and visa versa for the
- right-preconditioned GMRes solver. Due to a performance loss of
- the solver this flag should be set to <code>false</code> only
- for debugging/testing purposes.
- <br>
- (RH 2003/01/31)
- </p>
-
- <li> <p>
- New: <code class="class">FullMatrix</code> has a function <code
- class="member">copy_from</code>, copying from sparse matrices.
- It uses iterators of the sparse matrix classes.
- <br>
- (GK 2003/01/08)
- </p>
-
-
- <li><p>
- Changed: In an attempt to unify the use of preconditioners a
- little, the function <code class="member">initialize</code> of
- classes <code class="class">PreconditionRelaxation</code> and
- <code class="class">PreconditionBlock</code> take an argument
- of type <code class="class">AdditionalData</code>, defined in
- the same class. Standard behavior of <code
- class="class">PreconditionBlock</code> has been changed on this
- occasion to invert diagonal blocks during initialization.
- <br>
- (GK 2003/01/06)
- </p>
-
- <li> <p>
- New: The interface for sparse decompositions has been abstracted, and
- there is now an Modified Incomplete Cholesky (MIC) decomposition in
- addition to the Imcomplete LU (ILU) decomposition.
- <br>
- (Stephen Kolaroff 2002/11/27)
- </p>
-
- <li> <p>
- Changed: In multithread mode, the <code
- class="class">SparseMatrix</code> would spawn
- <code>multithread_info.n_default_threads</code> threads to
- perform matrix-vector multiplications and similar
- operations. It would even do so if
- <code>multithread_info.n_default_threads</code> was equal to
- one. In that case, we now do the operation on the thread we are
- presently on, eliminating the overhead of spawning a single
- thread, and later waiting and terminating it.
- <br>
- (WB 2002/11/13)
- </p>
-
- <li> <p>
- Fixed: In the <code class="class">SparseDirectMA27</code> class, wrapping
- the MA27 solver written in Fortran77 into some structure amenable to C++,
- we wrote beyond the end of an array on rare inputs. This is now fixed. The
- same probably holds for the respective code for MA47.
- <br>
- (WB 2002/09/30)
- </p>
-
- <li> <p>
- New: Since the MA27 sparse direct solver uses Fortran common blocks, it
- was previously impossible to run several instances of this solver in
- parallel, in a multihreaded environment. To solve this problem, the
- <code class="class">SparseDirectMA27</code> class now has a detached
- mode, in which it forks off a separate program that will do the
- computations using this solver. The actual operations are therefore
- distributed to distint programs that have separate address spaces. This
- allows to have as many concurrent instances of this solver in parallel
- as you want. For more information, read the documentation of the
- <code class="class">SparseDirectMA27</code> class.
- <br>
- (WB 2002/09/25)
- </p>
-
- <li> <p> Changed: The classes <code
- class="class">PreconditionBlock</code>, <code
- class="class">PreconditionBlockJacobi</code>, <code
- class="class">PreconditionBlockSOR</code>, and <code
- class="class">PreconditionBlockSSOR</code> have changed their
- template signature. The first template argument is now the matrix
- type, not just a number type.
- <br>
- (GK 2002/09/18)
- </p>
-
- <li> <p> New: Class <code class="class">BlockVector</code> has a
- function <code class="member">collect_sizes()</code>, very much as
- <code class="class">BlockSparsityPattern</code>. This allows
- updating internal structures after blocks have been resized.
- <br>
- (GK 2002/09/17)
- </p>
-
- <li> <p> New: Class <code class="class">SparseMatrix</code> has an
- STL-conforming <code class="class">const_iterator</code> and
- functions <code class="member">begin()</code> and <code
- class="member">end()</code> for looping through all existing
- entries. Furthermore, <code class="member">begin(row)</code> and
- <code class="member">end(row)</code> allow looping through all
- entries of a single line.
- <br>
- (GK 2002/09/11)
- </p>
-
- <li> <p>
- New: Classes <code class="class">SparsityPattern</code> and <code
- class="class">SparseMatrix</code> now have functions <code
- class="member">block_write/block_read</code>, allowing to dump the data
- of these objects into a file in binary format, and later to re-read it
- without much need for parsing.
- <br>
- (WB 2002/09/09)
- </p>
-
- <li> <p>
- New: <code class="class">Vector</code> has a function <code
- class="member">lp_norm</code>, computing the <i>l<sub>p</sub></i>-norm
- of a vector for arbitrary <i>p</i>.
- <br>
- (GK 2002/08/13)
- </p>
-
- <li> <p>
- New: a way of using abstract base classes for matrices has
- been implemented with <code class="class">PointerMatrixBase</code>
- and <code class="class">PointerMatrix</code>. Storing a matrix in
- <code class="class">PointerMatrix</code> allows to use the base
- class in functions only templated for the vector class.
- <br>
- (GK 2002/07/18)
- </p>
-</ol>
-
-
-
-<a name="deal.II"></a>
-<h3>deal.II</h3>
-
-<ol>
- <li> <p>
- Fixed: The restriction matrices for the Q1 element in 1d had a
- trivial bug in that one element was not set. Due to the fact
- that contributions from all child cells are taken into account,
- this did no harm, though, since all computations were done
- correctly anyway.
- <br>
- (WB 2003/05/06)
- </p>
-
- <li> <p>
- New: The <code class="class">GeometryInfo</code> classes now
- have new static member functions <code
- class="member">child_cell_from_point</code> that, given a point
- in the unit cell, returns which child cell it is on; <code
- class="member">cell_to_child_coordinates</code> that transforms
- coordinates between the unit coordinate systems from the mother
- to the child cell; <code
- class="member">child_to_cell_coordinates</code> that does
- exactly the opposite; and <code
- class="member">is_inside_unit_cell</code> that tells whether a
- given point is inside the unit cell.
- <br>
- (WB 2003/05/01)
- </p>
-
- <li> <p>
- New: There are now functions <code
- class="member">recursively_set/clear_user_pointer</code> that
- do much the same as <code
- class="member">recursively_set/clear_user_flag</code> on a
- line/quad/hex and all of its descendants, but on user pointers
- rather than flags.
- <br>
- (WB 2003/04/11)
- </p>
-
- <li> <p>
- New: The functions in the <code
- class="class">DerivativeApproximation</code> class can now also
- work on <code class="class">BlockVector</code>.
- <br>
- (WB 2003/04/11)
- </p>
-
- <li> <p>
- Changed: The cell argument to <code
- class="member">Mapping::transform_unit_to_real_cell</code> (and its
- reverse function) is now passed by reference, rather than by value, for
- efficiency reasons.
- <br>
- (WB 2003/04/06)
- </p>
-
- <li> <p>
- New: The <code
- class="member">GridGenerator::subdivided_hyper_cube</code> generated a
- hypercube as coarse grid that is subdivided a given number of times.
- <br>
- (WB 2003/04/05)
- </p>
-
- <li> <p>
- New: The <code class="member">DataOut_DoFData::merge_patches</code>
- function allows to merge the patches of two objects, so as to create one
- output file from several DoF handlers. This is useful if one uses a
- domain decomposition algorithm where each block of the domain is
- represented by one DoF handler.
- <br>
- (WB 2003/04/05)
- </p>
-
- <li> <p>
- Fixed: The <code class="class">DataOutStack</code> class had a problem
- when there were as many degrees of freedom as there were cells (i.e. if
- we were using DG0 elements). This should now be fixed.
- <br>
- (WB 2003/03/02)
- </p>
-
- <li> <p>
- Fixed: The <code class="class">DataOutFaces</code> class was
- broken for cell data. It should now be correct, although the
- algorithm used is not optimal, being approximately quadratic in
- runtime.
- <br>
- (WB 2003/02/25)
- </p>
-
- <li> <p>
- New: The <code class="member">ConstraintMatrix::shift</code>
- function shifts and translates the elements of the constraint
- matrix by a certain number of indices.
- <br>
- (Roy Stogner 2003/02/24)
- </p>
-
- <li> <p>
- New: The <code class="class">GridReordering</code> class now uses a
- vastly better algorithm in 2d than previously. The new algorithm is
- linear in time, where it could be exponential before.
- <br>
- (Michael Anderson 2003/02/21)
- </p>
-
- <li> <p>
- New: There is now a function <code
- class="member">GridIn::read_xda</code> that allows reading
- grids from a file in XDA format.
- <br>
- (WB 2003/02/21)
- </p>
-
- <li> <p>
- Changed: Some implementation details of the <code
- class="class">GridReordering</code> class have been moved to a
- namespace <code class="class">internal</code>.
- <br>
- (WB 2003/02/19)
- </p>
-
- <li> <p>
- New: There are now functions <code
- class="member">FiniteElement::prolongation_is_implemented</code> and
- <code class="member">FiniteElement::constraints_are_implemented</code>
- that inform the caller about whether the finite element in question in
- fact implements its prolongation matrices and hanging node constraints.
- <br>
- (WB 2003/02/15)
- </p>
-
- <li> <p>
- Fixed: The <code
- class="member">ConstraintMatrix::is_identity_constrained</code> function
- would previously generate a segmentation fault if called on a constraint
- matrix object that did not contain any constraints at all. This is now
- fixed.
- <br>
- (WB 2003/02/15)
- </p>
-
- <li> <p>
- Fixed: Objects of type <code class="class">FESystem</code>
- could not be constructed if one of the elements it is to be composed of
- did not implement interface constraints for hanging nodes. This is now
- fixed: you can construct such a composed element, but it does not
- implement hanging node constraints either.
- <br>
- (WB 2003/02/15)
- </p>
-
- <li> <p>
- New: For each of the renumbering functions in the <code
- class="class">DoFRenumbering</code> class there is now an
- additional <code class="member">compute_*</code>
- function. These new functions compute and return the
- corresponding renumbering vectors but do not perform the actual
- renumbering on the <code class="class">DoFHandler</code>
- object. The behaviour of the old functions is not changed.
- <br>
- (RH 2003/02/03)
- </p>
-
- <li> <p>
- Fixed: The <code class="class">GridReordering</code> tried to be
- thread-safe in the initialization of some data, but was not due to a
- typo. This is now fixed.
- <br>
- (WB 2003/01/28)
- </p>
-
- <li> <p>
- Changed: The <code class="member">FEValues::get_cell</code> and
- <code class="member">FEValues::get_face</code> functions have
- been removed, since they limited our ability to use this
- class for other types of DoFHandlers, for example future
- extensions for hp elements.
- <br>
- (WB 2003/01/17)
- </p>
-
- <li> <p>
- New: The DoF accessor classes now have a function <code
- class="member">get_fe()</code> that returns a reference to the finite
- element being used on this cell. The result is of course identical to
- what a call to <code
- class="member">iterator->get_dof_handler().get_fe()</code> would have
- yielded.
- <br>
- (WB 2003/01/10)
- </p>
-
- <li> <p>
- New: Checked in new <code class="class">GridGenerator</code>
- member function <code class="member">half_hyper_ball</code>,
- derived from member <code class="member">hyper_ball</code>.
- The intial mesh contains four elements. This mesh will work with
- the boundary class <code class="class">HalfHyperBallBoundary</code>.
- <br>
- (Brian Carnes 2002/12/16)
- </p>
-
- <li> <p>
- New: Checked in new class <code class="class">FE_Q_Hierarchical</code>
- derived from class <code class="class">FiniteElement</code>.
- This element is analogous to <code class="class">FE_Q</code>, but
- makes use of hierachical shape functions, based on the
- <code class="class">Polynomials::Hierarchical</code> class.
- For <code>degree>1</code>, the non-nodal basis functions are "bubble"
- functions, which are not Lagrange polynomials. Therefore, the usual
- interpolation based on using unit support points will not work for
- <code>degree>1</code>. It is planned to implement a different
- interpolation-projection operator, based on an hp-type interpolant.
- <br>
- The files for this element are
- <code>deal.II/include/fe/fe_q_hierarchical.h</code> and
- <code>deal.II/source/fe/fe_q_hierarchical.cc</code>.
- <br>
- (Brian Carnes 2002/12/13)
- </p>
-
- <li> <p>
- New: For finite element classes, the functions
- <code class="member">unit_support_point</code> and
- <code class="member">unit_face_support_point</code> return the position
- of an individual support point. This is necessary when you want to get
- information about the support points of certain components in a composed
- finite element, where not all components provide support points, and the
- composed element thus does not fill the array the
- <code class="member">get_unit_support_points</code> function returns.
- <br>
- (WB 2002/11/23)
- </p>
-
- <li> <p>
- Fixed: Vectors could not be given as input and output vectors to the
- <code class="class">SolutionTransfer</code> class at the same time, but
- this was not checked. An assertion has now been added to ensure this
- requirement.
- <br>
- (WB 2002/10/28)
- </p>
-
- <li> <p>
- Fixed: The <code
- class="member">DoFRenumbering::component_wise</code> function accepts a
- parameter indicating the order in which the degrees of freedom
- corresponding to one vector component are to be sorted. However, it did
- not honor this order, but always sorted them in the order in which the
- components appear. This is now fixed.
- <br>
- (WB 2002/10/17)
- </p>
-
- <li> <p>
- New: The <code
- class="member">FiniteElement::system_to_base_index</code> function now
- exports the values of the <code
- class="member">FiniteElement::system_to_base_table</code> member
- variable. Likewise for the indices on faces.
- <br>
- (WB 2002/10/17)
- </p>
-
- <li> <p>
- New: The <code
- class="member">FiniteElement::element_multiplicity</code> function was
- previously only available in the <code class="class">FESystem</code>
- class, where it actually returned a non-trivial value. However, in some
- cases one would need to access this field also for general finite
- elements, even if the returned value will be equal to one in all cases
- other than a composed element.
- <br>
- (WB 2002/10/17)
- </p>
-
- <li> <p>
- Fixed: The algorithm to generate neighbor information for patches from
- cells in <code class="member">DataOut::build_patches</code> was rather
- inefficient, tripling the time for patch generation when support for
- neighbor information was added. Furthermore, the algorithm was at least
- O(N log N), where the rest was all O(N), making this particularly
- problematic when the data set was already large. This should now be back
- to the previous level, by using a more efficient algorithm.
- <br>
- (WB 2002/10/10)
- </p>
-
- <li> <p>
- Changed (internals): Previously, the finite element base class
- initialized the restriction, prolongation, and face constraints matrices
- to their correct size. Derived classes had to fill these classes, and
- should have set their size back to zero in case they chose not to
- implement them. However, we found a class that forgot to resize it to
- zero, so it is now the other way round: they remain at size zero, and a
- class that chooses to implement these matrices has to set them to the
- correct size, to avoid programs that run on data that as just been
- forgotten to add. (This information only concerns programs that
- implement some finite element class on their own.)
- <br>
- (WB 2002/09/28)
- </p>
-
- <li> <p>Improved: The different transfer functions in <code
- class="class">FETools</code> operate on template vector arguments.
- <br>
- (GK 2002/09/24)
- </p>
-
- <li> <p> New: the class <code
- class="class">FE_DGPNonparametric</code> implements finite elements
- where shape functions are polynomials of order <i>k</i> on the
- actual grid cell. This is achieved by evaluating the polynomials at
- the mapped quadrature points. No grid transfer matrices are
- available for this class.
- <br>
- (GK 2002/09/19)
- </p>
-
- <li> <p>
- Fixed: Some of the various instances of the <code
- class="member">VectorTools::interpolate_boundary_values</code> functions
- were not explicitly instantiated, leading to linker errors. This is now
- fixed.
- <br>
- (WB 2002/09/19)
- </p>
-
- <li> <p>
- Removed: The <code
- class="member">FiniteElement::component_to_system_index</code> function
- and its counterpart for faces is gone. This data did not make much sense
- in the case of elements that are non-zero in more than one vector
- component, such as the Nedelec element. The respective information can
- also be obtained from other sources provided by the finite element
- classes, if so necessary.
- <br>
- (WB 2002/09/16)
- </p>
-
- <li> <p>
- Changed: The <code
- class="member">FiniteElement::restriction_is_additive</code> function
- used to take an argument that denoted the vector component of a finite
- element. This has become difficult with elements that are non-zero in
- more than one vector component, such as the Nedelec element. Thus, the
- semantics of the function have been changed so that the argument now
- denotes the index of a shape function, rather than a vector
- component. Since the function is probably not used in application code,
- this will most probably not lead to more serious problems.
- <br>
- (WB 2002/09/16)
- </p>
-
- <li> <p>
- New: The mapping classes now also know how to transform tensors of rank
- 2, not only vectors (tensors of rank 1) in a co- and contravariant way.
- <br>
- (WB 2002/09/03)
- </p>
-
- <li> <p>
- Fixed: the <code class="class">GridIn</code> class had problems
- when reading in UCD grids with comment lines that contained
- only the comment sign, but nothing else. This is now fixed.
- <br>
- (WB 2002/08/30)
- </p>
-
- <li> <p>
- Improved: <code class="class">VectorTools</code>::<code
- class="member">integrate_difference</code> can compute <i>L<sup>p</sup></i>
- and <i>W<sup>1,p</sup></i> norms for arbitrary <i>p</i>. The function
- receives an additional optional argument <i>p</i> for this. All previous
- fuctionality remains unchanged, although the code has been cleaned up a bit.
- <br>
- (GK 2002/08/01)
- </p>
-
- <li> <p> New: The <code class="class">GridTools</code> class now
- offers functions to apply general transformations to all
- vertices of a triangulation, and also more specialized
- functions that shift, scale, and rotate triangulations.
- <br>
- (RH 2002/07/25)
- </p>
-
- <li> <p> New: The existing <code
- class="member">FETools::extrapolate</code> functions does not
- take into account hanging node constraints. Therefore, it works
- for continuous elements on globally refined grids and on
- discontinuous elements, only. Now, there is a new <code
- class="member">FETools::extrapolate</code> function with an
- additional <code class="class">ConstraintMatrix</code> argument
- for the hanging node constraints. This new function works for
- continuous as well as for discontinuous elements. But, the old
- function is still supported.
- <br>
- (RH 2002/06/17)
- </p>
-
- <li> <p> New: There are now <code
- class="member">Triangulation::save/load_user_pointers(vector<void
- *> &)</code> functions similar to the respective <code
- class="member">Triangulation::save/load_user_flags(vector<bool>
- &)</code> functions.
- <br>
- (RH 2002/06/14)
- </p>
-
- <li> <p> Fixed: Bug in <code
- class="member">Triangulation<3>::load_user_flags(vector<bool>
- &)</code> is now fixed.
- <br>
- (RH 2002/06/14)
- </p>
-
- <li> <p> Fixed: <code
- class="member">Triangulation::load_user_flags(vector<bool>
- &)</code> erroneously threw an assertion for
- <code>dim==1</code>. This is now fixed.
- <br>
- (RH 2002/06/14)
- </p>
-
- <li> <p> Changed: <code
- class="member">Triangulation<1>::n_quads</code> now returns 0,
- instead of throwing an assertion, as before. The same holds for
- similar functions like <code
- class="member">Triangulation<dim>::n_hexs</code> that now
- returns 0 for <code>dim<3</code>.
- <br>
- (RH 2002/06/14)
- </p>
-
- <li> <p> Improved: Several functions like the <code
- class="member">DoFHandler::distribute_dofs</code> and <code
- class="member">DoFTools::make_flux_sparsity_pattern</code>
- functions altered the <code
- class="member">user_flags</code>. This was stated in the
- documentation of these functions. Nevertheless, it might have
- led to unexpected behaviour of the <code
- class="member">user_flags</code> for users who weren't aware of
- this <em>side-effect</em>. Now, these functions do not alter
- the <code class="member">user_flags</code>, any
- more. Consequently, the users do not need to worry any more
- about the reliability of the <code
- class="member">user_flags</code> when calling any function of
- the library.
- <br>
- (RH 2002/06/14)
- </p>
-
- <li> <p> Fixed: <code
- class="member">FE_Q::has_support_on_face</code> always returned
- true in 1d, partly because faces are not really an issue in
- 1d. It now does so only when the support point of the
- respective shape function is actually the requested vertex. The
- same applied to <code
- class="member">FE_DGQ::has_support_on_face</code>
- <br>
- (WB 2002/06/13)
- </p>
-
- <li> <p> New: The existing <code
- class="member">FETools::interpolate</code>, <code
- class="member">FETools::back_interpolate</code> and <code
- class="member">FETools::interpolate_difference</code> functions
- do not take into account hanging node constraints. Therefore,
- they work for continuous elements on globally refined grids and
- on discontinuous elements, only. Now, there are new functions
- with the same names but additional <code
- class="class">ConstraintMatrix</code> arguments for the hanging
- node constraints. These new functions work for continuous as
- well as for discontinuous elements. But, the old functions are
- still supported.
- <br>
- (RH 2002/06/13)
- </p>
-
- <li> <p> Changed: The constructor of <code
- class="class">DoFHandler</code> now takes a reference to a
- <code>const</code> <code class="class">Triangulation</code>.
- <br>
- (RH 2002/06/12)
- </p>
-
- <li> <p> Changed: The constructors of all <code
- class="class">DoFAccessor</code>, <code
- class="class">TriaAccessor</code> and <code
- class="class">TriaIterator</code> classes now take pointers to
- <tt>const</tt> <code class="class">Triangulation</code>s.
- <br>
- (RH 2002/06/12)
- </p>
-
- <li> <p> Fixed: In debug mode the <code
- class="member">MappingQ1::transform_real_to_unit_cell</code>
- function erroneously threw an assertion when used in 1 or 3
- dimensions. This is now fixed.
- <br>
- (RH 2002/06/10)
- </p>
-
- <li> <p>
- Fixed: The <code class="member">get_dof_indices</code>
- functions of DoF accessor classes used to work also for
- non-active cells. However, the results were bogus except for
- the special case that we had a finite element that has all its
- degrees of freedom located in vertices. This is now fixed: the
- function throws an exception in all other cases, since there is
- no useful meaning for it then. It continues to work in the
- special case.
- <br>
- (WB 2002/06/08)
- </p>
-
- <li> <p>
- New: For encapsulated postscript output of 2d grids, it is now
- possible to tell the <code class="class">GridOut</code> class to
- write the cell numbers into each cell, as well as the numbers
- of the vertices.
- <br>
- (WB 2002/06/04)
- </p>
-</ol>
-
-<hr>
-Last update $Date$
-
-</body>
-</html>