From The FEniCS project
Contents |
General
Where is the manual?
There is some documentation in the documentation section. The manuals for UFC, FFC and SyFi are fairly complete and accurate, but the DOLFIN manual is in a sorry state. During its development, DOLFIN has undergone several major changes (improvements) to its interface which has made it challenging to keep the manual updated and accurate. However, as DOLFIN comes closer to a 1.0 release, the interfaces have stabilized considerably with the 0.9.x release series, which improves the forecasts for a manual in the near future.
Until then, DOLFIN is fairly well documented through a large number of demo programs available in both C++ and Python. These can all be found in the directory src/demo in the DOLFIN source tree.
Update: We have started work on a book project that will provide a comprehensive documentation of the FEniCS project, including tutorials and example programs.
How do I get help?
Send an email to the appropriate mailing list. Remember that you will need to subscribe before posting. Otherwise your email will be automatically dropped.
If you think you have found a bug or something is not working as expected, send us a code example, but please make an effort to create a minimal example, meaning something less than 10 lines of code is possible. The smaller your example is, the greater the chance that someone will invest their valuable time in tracking down your particular bug. Time is limited so make it attractive and simple for developers to help you out.
Does it run in parallel?
Yes! Starting with DOLFIN 0.9.3, FEniCS now runs in parallel.
Building, installation
What are the system requirement for FEniCS?
It has been known to compile and run on most GNU/Linux platforms, Mac OSX and Windows (with MinGW or Cygwin). The safest and easiest choice (and what most developers of FEniCS use) is Ubuntu GNU/Linux.
Do you provide packages for Debian or Ubuntu?
Yes! See the Download section. Any feedback (positive or negative) on the packages is appreciated. Send comments to deb-dev@fenics.org.
Update: FEniCS is slowly moving into Debian/Ubuntu and some packages are already available in the Debian testing/unstable distributions.
How should I configure, and build, DOLFIN for optimal performance and which external libraries should I install?
Howtos
How do I compute the difference between two functions (like the error in an approximation)
You need to define a form for the norm of the difference. As an example, to compute the L2 norm of the difference of two functions u_h (approximate solution) and u (exact solution) define the following form:
u_h = Function(element) u = Function(element) e = u_h - u M = e*e*dx
Then assemble the value of the functional M (a scalar) and take the square root to obtain the error in the L2 norm.
Other norms, like the H1 norm can be computed similarly:
M = e*e*dx + dot(grad(e), grad(e))*dx
However, it's important to note here that what gets computed is the norm of the difference between the approximate solution and the interpolation of the exact solution into the finite element space. This might not be what you want and you may be fooled when computing convergence rates etc. So to be on the safe side, use a higher order approximation for the exact solution:
k = <suitable value of k here, say k = 5>
Pk = FiniteElement("Lagrange", shape, k)
u = Function(Pq)
Update: use the new errornorm function:
eL2 = errornorm(u, uh, "L2) eH1 = errornorm(u, uh, "H1")
DOLFIN
I use DOLFIN from hg and after a update I get reports of missing files when running scons. What should I do?
Please run the configure step again:
scons configure
I get the warnings below when I run my program. How can I remove them?
[simula-x61:31124] mca: base: component_find: unable to open osc pt2pt: file not found (ignored) libibverbs: Fatal: couldn't read uverbs ABI version. -------------------------------------------------------------------------- [0,0,0]: OpenIB on host simula-x61 was unable to find any HCAs. Another transport will be used instead, although this may result in lower performance. --------------------------------------------------------------------------
Both of these warnings are Open MPI warnings and they can be removed by editing the file /etc/openmpi/openmpi-mca-params.conf. Open the file with your favorite editor and uncomment the line
btl = ^openib
This will get rid of the second warning message. Now, at the bottom of the file, type in the following line:
mca_component_show_load_errors = 0
This will get rid of the remaining warning.
FFC
How can I speed up FFC compilation?
Try compiling the form using a reduced the number of quadrature points for form evaluation e.g.
ffc -r quadrature -fquadrature_points=2 foo.form
How can I reduce the size of the generated header file?
You can switch off code generation for functions you don't intend to use e.g.
ffc -fno-evaluate_basis -fno-evaluate_basis_derivatives foo.form
The functions evaluate_basis() and evaluate_basis_derivatives() can be quite large for higher order and mixed elements.
Miscellaneous, offtopic
What is that WikiMedia skin you are using?
It is a hack based on the "Tango" theme from the Tango Desktop Project.

