(and its sub-libraries /base and /lac) you need to have the
following programs installed:
<ul>
- <li> A fairly complete C++ compiler. We use
+ <li> <p>
+ A fairly complete C++ compiler. We use
<a href="http://gcc.gnu.org" target="_top">egcs1.1.2 and
gcc2.95</a> but other compilers might work as well. egcs1.0
and older gcc versions will not work, however. Also, Sun
work since they only have non-ISO header file names (with
appended .h; probably, version 3.0 is not the most recent
one, but we don't have access to newer ones).
+ </p>
<p>
We are interested in writing portable C++, so if you find
something that does not work with your compiler, we are
likely to accept patches.
+ </p>
- <li> Perl: any Perl 5.x version should work.
+ <li> <p>
+ Perl: any Perl 5.x version should work.
+ </p>
- <li> Make: we use <a href="http://www.gnu.org" target="_top">GNU make</a>,
+ <li> <p>
+ Make: we use <a href="http://www.gnu.org" target="_top">GNU make</a>,
version 3.75. We also use GNU make 3.78 which has much
better support for parallel builds, so you may want to
consider this version if you have a multiprocessor
from compiling some parts of the library (most of our
Makefiles use a workaround, though). Other make programs
(i.e. non-GNU) will fail to work.
+ </p>
- <li> In case you want to generate the documentation from the
- header files, you only need Perl installed.
+ <li> <p>
+ In case you want to generate the documentation from the
+ header files, you only need Perl installed. The scripts
+ generating the documentation are provided.
+ </p>
- <li> In case you want the printable documentation, however, you
+ <li> <p>
+ In case you want the printable documentation, however, you
need <a href="http://www.linuxsupportline.com/~doc++/" target="_top">Doc++</a>
and LaTeX installed. It is known that Doc++
version 3.3.13 is broken and generates invalid Tex, but
classes alone is far more than 1000 pages, so you may not
want to print it usually. All printable documentation is
also available online.
+ </p>
- <li> The library generates output in formats readable by
+ <li> <p>
+ The library generates output in formats readable by
GNUPLOT,
<a href="http://www-xdiv.lanl.gov/XCM/gmv/" target="_top">GMV
(general mesh viewer)</a>,
platforms. Povray is freely available for almost all
platforms. AVS is a commercial program available for most
Unix flavors.
+ </p>
</ul>
<p>
<p>
- After configuring, go to the /common subdirectory and type 'make',
+ After configuring, go to the /common subdirectory and type `make',
to obtain the following help (this output may change slightly over
time, just try it):
<pre><code>
-======================================================================
-=Global Makefile for the deal.II libraries =
-======================================================================
-=Possible Targets =
-= baseg lacg: debug libraries base and lac =
-= base lac: debug and optimized libraries base and lac =
-= 1dg 2dg 3dg: (1) and deal.II debug version for specified dimension=
-= 1d 2d 3d: (2) and deal.II for specified dimension =
-= all: base, lac 1d, 2d and 3d =
-= online-doc: generate the documentation in HTML format =
-= printable-doc: generate the documentation in Postscript format. =
-= You need to have Doc++ and LaTeX installed for that. =
-= tex-doc: same, but only generate the LaTeX file, don't compile it =
-= TODO: create a TODO file from TODO lines in the source files =
-= TAGS: create a TAGS file from include and source files =
-= clean: removes all object files, libraries, etc in all subdirs =
-= =
-=The following additional parameters may be specified to make: =
-= PAR=-jn where n is the number of parallel processes for parallel =
-= builds. If you use GNU make 3.78 or higher, you can =
-= call 'make -jn' directly. This parameter is no more =
-= necessary then. =
-======================================================================
+ ======================================================================
+ =Global Makefile for the deal.II libraries =
+ ======================================================================
+ =Possible Targets =
+ = baseg lacg: debug libraries base and lac =
+ = base lac: debug and optimized libraries base and lac =
+ = 1dg 2dg 3dg: (1) and deal.II debug version for specified dimension=
+ = 1d 2d 3d: (2) and deal.II for specified dimension =
+ = all: base, lac 1d, 2d and 3d =
+ = online-doc: generate the documentation in HTML format =
+ = printable-doc: generate the documentation in Postscript format. =
+ = You need to have Doc++ and LaTeX installed for that. =
+ = tex-doc: same, but only generate the LaTeX file, don't compile it =
+ = TODO: create a TODO file from TODO lines in the source files =
+ = TAGS: create a TAGS file from include and source files =
+ = clean: removes all object files, libraries, etc in all subdirs =
+ = =
+ =The following additional parameters may be specified to make: =
+ = PAR=-jn where n is the number of parallel processes for parallel =
+ = builds. If you use GNU make 3.78 or higher, you can =
+ = call 'make -jn' directly. This parameter is no more =
+ = necessary then. =
+ ======================================================================
</code></pre>
- To execute one of the commands, type 'make target-name'. Please
+ To execute one of the commands, type `make target-name'. Please
note that building all libraries in debug and optimized mode
presently takes about an hour on a Sun Ultra 450, so you may want
to do this during lunchtime.
<p>
- In case you have a multi-processor machine, you can call 'make
+ In case you have a multi-processor machine, you can call `make
PAR=-j4 target-name' to let make call multiple instances of the
compiler (in this case four). Since the make files are written in
a way to minimize cross-dependencies, this speeds up compilation
- by about the factor given after '-j', at least if you have as many
+ by about the factor given after `-j', at least if you have as many
processors. If you have GNU make 3.78 or higher, it is simpler to
- directly call 'make -j4 target-name'.
+ directly call `make -j4 target-name'.
<p>
- After 'make' has finished, you will have two sets of
+ After `make' has finished, you will have two sets of
libraries. The first consists of the files
<ul>
- <li> <code>base/lib/libbase.a</code>: The library containing the
+ <li> <p><code>base/lib/libbase.a</code>: The library containing the
code of the classes in the <code>/base</code> directory. These
are mostly helper classes (such as output of various data in
different data formats), and classes of general numerical
interest (such as classes representing functions, tensors,
etc.), but not very specifically about finite elements.
+ </p>
- <li> <code>lac/lib/liblac.a</code>: <code>lac</code> is the
+ <li> <p><code>lac/lib/liblac.a</code>: <code>lac</code> is the
acronym for <i>L</i>inear <i>A</i>lgebra <i>C</i>lasses. This
library contains classes representing vectors, matrices, sparse
matrices, linear solvers, and the like.
+ </p>
- <li> <code>deal.II/lib/libdeal_II_2d.a</code>: This is the
+ <li> <p><code>deal.II/lib/libdeal_II_2d.a</code>: This is the
library containing all the classes representing finite element
methods, such as grid handling, different finite elements,
etc. Thus suffix <code>_2d</code> obviously indicates that this
particularly library was compiled for two spatial dimensions,
- but if you told 'make' to do so, there will also be libraries
+ but if you told `make' to do so, there will also be libraries
for one and three spatial dimensions.
+ </p>
</ul>
For each library, there will also be another library with the
almost always abort your program if something goes wrong. In our
experience, more than ninety per cent of all errors are invalid
parameters (such as vectors having the wrong size, etc) and they
- are usually found almost instantaneously using the file name and
- line number of where the problem occurred.
+ are usually found almost instantaneously displaying the file
+ name and line number of where the problem occurred.
</p>
<p>
<p>
<code>--enable-multithreading</code>: This sets compiler
variables such that the resulting program supports
- multithreading. Basically, for this different system include
+ multi-threading. Basically, for this different system include
files have to be selected (gcc option -threads) and memory
allocation has to be made thread-safe; the latter can be done
for the C++ standard containers by defining
<li>
<p>
<code>--with-multithreading=ACE-path</code>: enabling
- multithreading as shown above does not enable multithreading
+ multi-threading as shown above does not enable multi-threading
inside the library itself. However, there are several places
- where multithreading can be used (in some parts of the graphical
+ where multi-threading can be used (in some parts of the graphical
output routines, the KellyErrorEstimator class and some other
- places), and you can switch to multithreading using this
+ places), and you can switch to multi-threading using this
configure option.
</p>
<p>
- To support multithreading in a cross-platform way, we use the
+ To support multi-threading in a cross-platform way, we use the
<a href="http://www.cs.wustl.edu/~schmidt/ACE.html" target="_top">ACE
(Adaptive Communications Environment)</a> library. This needs
to be installed separately, and the path to its installation
<p>
Note that the multi-thread support in the library is still
- experimental.
+ experimental. While <acronym>deal.II</acronym> runs on a variety
+ of Unix systems, we presently support detection of the number of
+ CPUs in your system only for Linux and Solaris.
</p>
</ul>