+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
- <title>The deal.II FAQ</title>
- <link href="screen.css" rel="StyleSheet">
- <meta name="author" content="the deal.II authors <authors@dealii.org>">
- <meta name="copyright" content="Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 by the deal.II authors">
- <meta name="date" content="$Date$">
- <meta name="svn_id" content="$Id$">
-</head>
-<body>
-
- <h1>The <acronym>deal.II</acronym> FAQ</h1>
-
- <p>
- This is a short list of questions that are asked frequently on the
- <acronym>deal.II</acronym> mailing list, so we collect short answers
- for them here. If you have a question that is not answered here, it
- is probably a good idea to first browse through the
- <a href="http://www.dealii.org/mail/maillist.html"
- target="body">mailing list archives</a> first, as there many
- questions have already been discussed.
- </p>
-
- <ol>
- <li> <a href="#nodata">I tried to install <acronym>deal.II</acronym>
- on system X and it does not work.</a>
- <li> <a href="#compiler">How do I change the compiler?</a>
- <li> <a href="#petsc">I am having trouble linking with PETSc!</a>
- <li> <a href="#gfortran">I cannot link with BLAS or LAPACK even if the
- libraries exist</a>
- <li> <a href="#windows">Can I use <acronym>deal.II</acronym> on a
- Windows platform?</a>
- <li> <a href="#mac">Can I use <acronym>deal.II</acronym> on an
- Apple MacIntosh?</a>
- <li> <a href="#parallel">Does <acronym>deal.II</acronym> support parallel
- computing?</a>
- <li> <a href="#perl-bug">I can't build the online documentation under Cygwin!</a>
- <li> <a href="#cygwin-shared">My program compiles and links under Cygwin, but
- it issues a run-time error saying that <code>libXXX.DLL</code> cannot
- be found!</a>
- <li> <a href="#triangles">Can I use/implement triangles/tetrahedra
- in <acronym>deal.II</acronym>?</a>
- <li> <a href="#problem-types">Can I solve problem XXX with
- <acronym>deal.II</acronym>?</a>
- <li> <a href="#problem-howto">How do I solve problem XXX with
- <acronym>deal.II</acronym>?</a>
- <li> <a href="#problem-complex">Can I solve problems over complex numbers?</a>
- <li> <a href="#contribute">I want to contribute to the development
- of <acronym>deal.II</acronym>!</a>
- </ol>
-
-
-
-<dl>
- <dt><a name="nodata">
- I tried to install deal.II on system X and it does not work.
- </a></dt>
-
- <dd>
- <p>
- Even if people reading this list and especially people managing this list
- belong to the most able programmers in the universe (and a decent number of
- parallel universes), all of us need data to find errors. So, whatever went
- wrong, paste the error message into your email. If appropriate, add lines
- from the file producing the error.
- </p>
- </dd>
-
-
- <dt><a name="compiler">
- How do I change the compiler?
- </a></dt>
-
- <dd>
- <p>
- <acronym>deal.II</acronym> can be compiled by a number of compilers
- without problems (see the section <a
- href="readme.html#prerequisites">prerequisites</a> in the readme
- file). If the ./configure script does not pick the right one,
- selecting another is simple, and described in an
- <a href="http:readme.html#choose-compiler">according
- section</a> in the <a href="http:readme.html">readme file</a>.
- </p>
-
- </dd>
-
-
- <dt><a name="petsc">
- I am having trouble linking with PETSc!
- </a></dt>
-
- <dd>
- <p>
- Let's put it this way: the configuration of PETSc is really
- non-trivial, and it isn't made much easier by the
- documentation (or lack thereof) that the library's developers
- provide and the constant incompatible changes they make to
- everything. We've got the interface to PETSc working pretty well on
- many platforms, but there are cases where PETSc requires linking
- with other libraries that the deal.II Makefiles are unaware of.
- </p>
-
- <p>
- If you get linker errors about undefined symbols, try to figure out
- which library these functions reside in. If you can't manage to get
- this going yourself, feel free to send email to the mailing list.
- </p>
-
- <p>
- In general, try to get things going first by configuring PETSc with
- options <code>--with-shared=0 --with-mpi=0
- --with-clanguage=C++</code> and then configuring
- <acronym>deal.II</acronym> with the option
- <code>--disable-shared</code>.
- </p>
-
-
- <dt><a name="gfortran">
- I cannot link with BLAS or LAPACK even if the libraries exist
- </a></dt>
-
- <dd>
- <p>This is probably due to the introduction of the new GNU FORTRAN
- Compiler <tt>gfortran</tt>. If those libraries were compiled with
- <tt>gfortran</tt> and you have the old <tt>g77</tt> installed, then
- the library <tt>-lgfortran</tt> is missing. Or vice versa
- <tt>-lg2c</tt> might be missing. Check <tt>config.log</tt> for the
- test for BLAS to see if it complains about missing symbols
- indicating such a thing. If so, install the missing compiler.
- </p>
- </dd>
-
-
- <dt><a name="windows">
- Can I use <acronym>deal.II</acronym> on a Windows platform?
- </a></dt>
-
- <dd>
- <p>
- First the good news: yes, you can. Still, this answer needs to be
- more specific. The configuration program for
- <acronym>deal.II</acronym> expects a Unix-like environment. This is
- provided by the <a href="http://www.cygwin.com/">cygwin
- system</a>. You should try to use a current cygwin distribution.
- A look at the <a
- href="http://ganymed.iwr.uni-heidelberg.de/mailman/listinfo/dealii">mail
- archive</a> might be advisable in case of difficulties.
- </p>
-
- <p>
- Also note that on some installations of Cygwin, one of the system
- header files used the proprocessor to define <code>quad</code> to
- <code>quad_t</code>. Since <acronym>deal.II</acronym> uses the name
- <code>quad</code> as a function name, the name is sometimes
- replaced, sometimes not, depending on the order of include files and
- whether the respective system header was included at all. This leads
- to compilation errors.
- </p>
-
- <p>
- Since the offending preprocessor define is only active when
- <code>_POSIX_SOURCE</code> is not set, <acronym>deal.II</acronym>
- releases <em>after</em> version 3.4 set this flag, to avoid the
- problem, but releases up to and including version 3.4 may not
- work. For more information, refer to the
- <a href="http://www.dealii.org/mail/msg00773.html">mailing list
- thread on this subject</a>, and follow-up messages.
- </p>
-
-
- <h6>Other Windows compilers</h6>
- <p>
- As long as a compiler is sufficiently standards conforming, and has
- a command line interface, it may be used to compile the library. In
- order to do so, the automatic configuration needs to recognize the
- compiler, and be able to specify some flags, for example for
- optimization. Presently, except for gcc and Intel C++, we do not
- support any of the genuine Windows compilers, such as Visual C++, or
- Borland C++. However, if you want to add support for them, just look
- at how this is done in <code>aclocal.m4</code> for the existing
- compilers, and add support for the one you prefer. You may also want
- to get into contact with us on the matter.
- </p>
-
-
- </dd>
-
-
- <dt><a name="perl-bug">
- I can't build the online documentation under Cygwin!
- </a></dt>
-
- <dd>
- <p>
- The Perl utility from Cygwin distribution (up to version 5.6.1-2)
- contains a bug that causes a "permission denied" error with in-place
- editing (using the <code>-pi</code> switch). This bug prevents
- building the online documentation from the source files. To solve
- this problem there are two workarounds as described in an article on
- the <a
- href="http://sources.redhat.com/ml/cygwin-apps/2001-11/msg00736.html">Cygnus
- Solutions mailing list</a>. First, one should specify an
- explicit extension in all makefiles, i.e. replace all
- <code>-npi</code> or <code>-pi</code> options with
- <code>-npi~</code> or <code>-pi~</code> for example. Second, apply a
- patch to the source code of the perl utility and recompile.
- </p>
-
- </dd>
-
-
- <dt><a name="cygwin-shared">
- My program compiles and links under Cygwin, but it issues a
- run-time error saying that <code>libXXX.DLL</code> cannot
- be found!
- </a></dt>
-
- <dd>
- <p>
- With Version 5.1.0, <acronym>deal.II</acronym> creates and uses shared
- libraries (DLLs) under cygwin. These DLLs will be linked to your program
- at run-time, which requires Windows to know where the DLLs are stored.
- Windows looks for DLLs in the execution path of your program, in the
- Windows system directories, and in every directory specified in the
- <code>PATH</code> environment variable. To do this, type
- </p>
-
- <p>
- <code>export PATH=$PATH:/usr/local/lib/deal.II/lib</code>
- </p>
-
- <p>
- (or the place where you have installed deal.II, respectively) in the shell
- prior to execution, or add this line to <code>.bashrc</code> or
- <code>.bash_profile</code>.
- To disable shared libraries, run <code>./configure --disable-shared</code>
- and compile <acronym>deal.II</acronym> again (with <code>make all</code>).
- </p>
-
-
- </dd>
-
-
- <dt><a name="mac">
- Can I use <acronym>deal.II</acronym> on an Apple MacIntosh?
- </a></dt>
-
- <dd>
- <p>
- Yes, at least on the more modern OS X operating systems this works
- just fine, as long as the developer tools like the GCC compiler,
- PERL, etc are installed. The only issue we are currently aware of is
- that if <acronym>deal.II</acronym> is configured to interface with
- PETSc, then PETSc needs to be configured with the
- <code>--with-x=0</code> flag to prevent linking in the X11 libraries
- (you probably won't need them anyway).
- </p>
-
- </dd>
-
-
- <dt><a name="parallel">
- Does <acronym>deal.II</acronym> support parallel computing?
- </a></dt>
-
- <dd>
- <p>
- Yes. If you use the <code>--with-multithreading
- --enable-multithreading</code> flags when you run <code>./configure</code>
- (see the <a href="readme.html" target="body">README</a> file), then the
- library will be set up to use multiple threads for various tasks, and you
- can also use multiple threads in your program. See the example programs
- to see how to do the latter. On machines with more than one processor
- (i.e. SMP machines), using this functionality makes a lot of sense and can
- significantly accelerate a program.
- </p>
-
- <p>
- By default, <acronym>deal.II</acronym> does not support operations on
- clusters of computers that communicate via MPI. However, it also doesn't
- prohibit you from doing so in your application programs (and there are a
- number of programs that actually do this), it just doesn't implement
- anything that actively uses MPI functionality.
- </p>
-
- <p>
- On the other hand, newer versions of <acronym>deal.II</acronym> have
- interfaces to the <a href="http://www.mcs.anl.gov/petsc/"
- target="_top">PETSc</a> library that implements a lot of functionality for
- distributed linear algebra, i.e. for operations on vectors and matrices that
- are distributed across a cluster of machines coupled via MPI. By using these
- wrapper classes for linear algebra, it is possible to implement programs
- that work on truly large problems by distributing computations. In addition,
- we have functions that call into <a
- href="http://www-users.cs.umn.edu/~karypis/metis/index.html"
- target="_top">METIS</a> to generate partitionings of triangulations.
- </p>
-
- <p>
- For questions how to set up <acronym>deal.II</acronym> to use PETSc and
- METIS, refer to the <a href="readme.html">readme file</a>.
- </p>
-
- </dd>
-
-
- <a name="triangles"></a>
- <dt>Can I use/implement triangles/tetrahedra in
- <acronym>deal.II</acronym>?</dt>
-
- <dd>
- <p>
- No, you can't. The basic data structures are too much
- tailored to quadrilaterals and hexahedra. Implementing other cells
- amounts to re-implementing nearly all grid and DoF classes from
- scratch. On the other hand, the restriction to quadrilaterals and
- hexahedra avoids a large number of run-time computations and makes
- the library as fast as it is.
- </p>
-
-
- </dd>
-
-
- <a name="problem-types"></a>
- <dt>Can I solve problem XXX with <acronym>deal.II</acronym>?</dt>
-
- <dd>
- <p>
- The simple answer is: if it can be written as a PDE, then this is
- possible as evidenced by the many <a
- href="publications/toc.html">publications</a> in widely disparate
- fields obtained with the help of <acronym>deal.II</acronym>. The
- more complicated answer is: <acronym>deal.II</acronym>
- is not a problem-solving environment, it is a toolbox that supports
- you in solving a PDE by the method of finite elements. You will have
- to implement assembling matrices and right hand side vectors
- yourself, as well as nonlinear outer iterations, etc. However, you
- will not need to care about programming a triangulation class that
- can handle locally refined grids in one, two, and three dimensions,
- linear algebra classes, linear solvers, different finite element
- classes, etc.
- </p>
-
- <p>
- To give only a very brief overview of what is possible, here is a
- list of the nontrivial problems that were treated by the programs
- that the main authors alone wrote to date:
- <ul>
- <li> Time-dependent acoustic and elastic wave equation, including
- nonlocal absorbing boundary conditions;
- <li> Stokes flow discretized with the discontinuous Galerkin finite
- element method;
- <li> General hyperbolic problems including Euler flow, using the
- discontinuous Galerkin finite element method;
- <li> Distributed parameter estimation problems;
- <li> Mixed finite element discretization of a mortar multiblock formulation
- of the Laplace equation;
- <li> Large-deformation elasto-plasticity in the simulation of plate
- tectonics.
- </ul>
- </p>
-
- <p>
- To illustrate the complexity of the programs mentioned above we note
- that most of them include adaptive mesh refinement tailored to the
- efficient computation of specific quantities of physical interest
- and error estimation measured in terms of these quantities. This
- includes the solution of a so-called dual problems, that means
- e.g. for the wave equation the solution of a wave equation solved
- backward in time.
- </p>
-
- <p>
- Problems other users of <acronym>deal.II</acronym> have solved include:
- <ul>
- <li> Elastoplasticity;
- <li> Porous media flow;
- <li> Crystal growth simulations;
- <li> Fuel cell simulations and optimization;
- <li> Fluid-structure interaction problems;
- <li> Time dependent large deformation problems for metal forming;
- <li> Contact problems;
- <li> Viscoelastic deformation of continental plates;
- <li> Glacial ice flows;
- <li> Thermoelastoplastic metal forming;
- <li> Eulerian coordinates problems in biomechanical modeling.
- </ul>
- <p>
- Some images from these applications can be found on the
- <a
- href="http://www-dimat.unipv.it/heltai/wikideal/index.php/Main_Page"
- target="_top"><acronym>deal.II</acronym> Wiki</a>.
- Probably, many other problem types are solved by the many users
- which we do not know of directly. If someone would like to have his
- project added to this page, just contact us.
- </p>
-
- </dd>
-
-
- <a name="problem-howto"></a>
- <dt>How do I solve problem XXX
- with <acronym>deal.II</acronym>?</dt>
-
- <dd>
- <p>
- There is no general rule on how to attack implementing a program to
- solve your particular problem. However, the way most often taken is
- to look at one of the
- <a href="doxygen/tutorial/index.html"
- target="_top">example programs from the tutorial</a> and modify it
- such that it solves your equation. This way, a number of problems
- can be solved at relatively small effort.
- </p>
-
- <p>
- If your class of problem does not allow taking and modifying one of
- the examples programs, then you have to write something up
- yourself. The example programs may nevertheless be a good guide on
- how to program with <acronym>deal.II</acronym>.
- </p>
-
- </dd>
-
-
- <a name="problem-complex"></a>
- <dt>Can I solve problems over complex numbers?</dt>
-
- <dd>
- <p>
- Yes, you can, and it has been done numerous times with
- <acronym>deal.II</acronym>. However, we have a standard
- recommendation: consider such problems as systems of partial
- differential equations, where the individual components of the
- solution are the real and imaginary part of your unknown. The reason
- for this is that for complex-valued problems, the product
- <tt><u,v></tt> of two vectors is not the same as
- <tt><v,u></tt>, and it is very easy to get this wrong in many
- places. If you want to avoid these common traps, then the easiest
- way around is to split up you equation into two equations of real
- and imaginary part first, and then treat the resulting system as a
- system of real variables. This also makes the type of linear system
- clearer that you get after discretization, and tells you something
- about which solver may be adequate for it.
- </p>
-
- </dd>
-
-
- <a name="contribute"></a>
- <dt>I want to contribute to the development
- of <acronym>deal.II</acronym>!</dt>
-
- <dd>
- <p>
- <acronym>deal.II</acronym> is Open Source -- this not only implies
- that you as everyone else has access to the source codes, it also
- implies a certain development model: whoever would like to
- contribute to the further development is invited to do so!
- </p>
-
- <p>
- This model follows a small number of simple rules. The first and
- basic one is that if you have something that might be of interest to
- others as well, you are invited to send it to the list for possible
- inclusion into the library and use by others as well. Such additions
- useful to others are, for example:
- </p>
- <ul>
- <li> new backends for output in a new graphical format;
- <li> input filters for some kind of data;
- <li> tool classes that do something that might be interesting to use
- in other programs as well.
- </ul>
- <p>
- In general, once you start to use something you wrote for one
- project in a second project, this is something that would make up a
- good addition to the entire library!
- </p>
-
- <p>
- If you consider providing some code for inclusing into the library,
- these are the simple rules of gaining reputation in the Open Source
- community:
- <ul>
- <li> your reputation grows with the number and complexity of your
- contributions;
- <li> your reputation with the maintainers of the library also grows
- with the degree of conformance of your proposed additions with
- the administrative rules stated below;
- <li> originators of code are credited full authorship.
- </ul>
- </p>
-
- <p>
- In order to allow that a library remains a consistent piece of
- software, there are a number of administrative rules:
- <ul>
- <li> there are a number of maintainers that decide what goes into
- the library;
- <li> maintainers are benevolent, i.e. in general they want your
- addition to become part of the library;
- <li> however, they have to evaluate additions with respect to some
- criteria, among which are
- <ul>
- <li> value for others;
- <li> whether it fits into the general framework (meaning that
- if your contribution requires the installation of some
- obscure other library that people do not usually have, then
- that must be discussed; alternatively, a way must be provided
- to disable your contribution on machines that do not have this
- lib);
- <li> completeness and amount of documentation;
- <li> existence and completeness of error checking through
- assertions.
- </ul>
- </ul>
- </p>
-
- <p>
- However, again: the basic rule is that if you think your addition is
- interesting to others, there most probably is a way to get it into
- the library!
- </p>
- </dd>
-
-</dl>
-
-</body>
-</html>