From The FEniCS project - Website of Marek Gayer, Ph.D.

advertisement
1. FENICS/DOLFIN (uses numpy), LGPL
(864 / 64)
But also: FENICS FINITE ELEMENT: (1080 / 34)
http://www.fenics.org/wiki/DOLFIN
DOLFIN project is the C++ interface of FEniCS, providing a consistent PSE (Problem
Solving Environment) for solving ordinary and partial differential equations.
Here are some key features of "DOLFIN":
 Simple, consistent and intuitive object-oriented API
 Automatic and efficient evaluation of variational forms through FFC
 Automatic and efficient assembly of linear systems
 Support for general families of finite elements, including continuous and discontinuous
Lagrange finite elements of arbitrary order on triangles and tetrahedra through FIAT
 Support for arbitrary mixed elements, including Taylor-Hood
 High-performance parallel linear algebra through PETSc with simple C++ wrappers
 Triangular and tetrahedral meshes, including adaptive mesh refinement and mesh
hierarchies
 Multi-adaptive mcG(q)/mdG(q) and mono-adaptive cG(q)/dG(q) ODE solvers
 Support for a range of output formats for post-processing, including DOLFIN XML,
MATLAB, Octave, OpenDX, GiD, Tecplot and Paraview/VTK
 SWIG-generated Python interface PyDOLFIN (experimental) in addition to the standard
C++ interface
Requirements:
 The latest version of FFC
 The latest version of FIAT
 PETSc version 2.3.0
 Libxml2 (Debian package libxml2-dev)
Note that FFC and FIAT are only needed if you want to define new differential equations, not
if you are using one of the existing solvers/modules of DOLFIN.
What's New in This Release:
 The Python bindings for the new mesh library have been improved, and input/output is now
supported for mesh functions.
 DOLFIN has switched from Python Numeric to Python NumPy in the Python interface.
FEniCS Project
From The FEniCS project
FEniCS is free software for automated solution of differential equations. We provide software
tools for working with computational meshes, finite element variational formulations of
PDEs, ODE solvers and linear algebra.
To get started, visit the Gallery or take the Tutorial.
Projects
FEniCS is organized as a collection of sub projects/components.









DOLFIN, a C++/Python library for
solving differential equations
FErari, optimizations for evaluation of
variational forms
FFC, a compiler for finite element
variational forms
FIAT, tabulation of finite element
function spaces
Instant, simple inlining of C / C++
code in Python
Puffin, simple finite element solver for
Octave/MATLAB
SyFi, finite element engine based on
symbolic mathematics
UFC, a unified code generation
interface for form-compilers
Viper, minimalistic scientific plotter
and run-time visualization module
Vision
The vision of FEniCS is to set a new standard in Computational Mathematical Modeling
(CMM), which is the Automation of CMM (ACMM), towards the goals of generality,
efficiency, and simplicity, concerning mathematical methodology, implementation, and
application.
Computational Mathematical Modeling is the modern manifestation of the basic principle of
science: formulating mathematical equations (modeling) and solving equations (computation),
with the equations usually taking the form of differential/integral equations.
The traditional organization of a technical university follows the principle that each
department is devoted to the study of a particular differential equation with a particular set of
analytical/numerical methods. Today, the computer opens entirely new possibilities of
numerical solution of differential equations, and forces development to replace the traditional
organization based on the one equation - one department model.
Partners
FEniCS is a joint project between University of Chicago, Argonne National Laboratory,
Delft University of Technology, Royal Institute of Technology KTH, Simula Research
Laboratory, Finite Element Center and University of Cambridge (in order of
appearance).
+ support for both C++ and python
+ extensive manual, although some parts are slightly outdated
+ problem is entered in .form files, which are using own compiler FFC generated into .h, but
it has also JIT compiler, the writing is very close to mathematical description
+ form compiler allows us to combine generality with efficiency
+ more developers
+ has beautiful presentations:
Current and future plans for FEniCS (DOLFIN/FFC) (molto bello!!!)
Anders Logg, BIT Circus Stockholm (September 1 2006)
In user manual, see, there is explanation how to make poisson:
http://www.fenics.org/pub/documents/dolfin/dolfin-user-manual/dolfin-user-manual.pdf
In http://www.fenics.org/pub/documents/fenics/presentations/logg-geilo-2006-03/logggeilo-2006.pdf , there is a nice discussion about other softwares and overall goals of the
library
In slide 0, there are nice demonstrations, of how it may look in other softwares and how it
look in Fenics
http://www.fenics.org/pub/documents/fenics/presentations/logg-geilo-2006-03/logg-geilo2006-lecture-0.pdf
http://www.fenics.org/pub/documents/fenics/presentations/logg-geilo-2006-03/
In slide 5, there are nice samples of writing in integral form and appropriate representation in
FFC
http://www.fenics.org/pub/documents/fenics/presentations/logg-geilo-2006-03/logg-geilo2006-lecture-5.pdf
+ they even plan to make new mesh library!
- no paralel processing, yet, even planned (on the other hand, we do not need it) *
+ support for Gmsh and other software
+ support for Python, that seem that will have even more impact in simulation and computer
science
+ has packages for Debian and Ubuntu => easy installation
+ looks most professional, most exciting, and future development is for sure…
+ initial examples are much more simple then the case of LibMesh, on the other hand they
have already
prepared classes for Poisson and Dirichlet probléme
+ it is enough to write the math in variational form, the the rewrite to computer format is very
easy,
+ After seeing the examples and documentation, I think even for beginners this library would
be relatively easy, by my opinion easier entrance then with other libraries!
+ this library has 2x more references in Google scholar then libmesh (not counting
fenics)
+ change log seem to me that library is under continous and serious development
+ whole framework, more tasks will be solved and can be used
+ Support for a range of output formats for post-processing, including DOLFIN XML,
ParaView/Mayavi/VTK, OpenDX,
Tecplot, Octave, MATLAB, GiD (thanks to xml format...)
+ idea of point project and next generation FEM software seem to be good
- it seems there is no forum for fenics
+ prototyping can be made in python, see http://www.fenics.org/wiki/Tutorial ; this is by the
way easiest example to start on
+ own code is added by modules, authors claim there exists special coding practise how to do
it
+ automatation approach
+ first release 2002
+ best presentations, best manual; even from these, a person who not familiar with differential
equations and linear algebra will often have serious problems , howeever basic poisson
equation is in form one can understand (with help from Massimo Totar)
+ mesh is stored in xml format; i.e we can easily convert to another formats (if necessary)
+ Description I found on CFD Online (one of websites with great attendence) http://www.cfdonline.com/Links/soft.html - FEniCS - An open-source package for computational
mathematical modeling. Has some functionality to solve Navier-Stokes. Looks very nice.
FEniCS is being developed very quickly and can become very interesting for CFD people.
FEniCS and its sister projects are used extensively in education.
+ FFC
- more dependencies then libmesh
+ I cannot help myself, I have overall feeling that this is the best one!
From The FEniCS project
The FEniCS Form Compiler FFC provides state-of-the-art automatic and efficient evaluation
of general multilinear forms (variational formulations) for FEniCS. FFC functions as the
form evaluation system for DOLFIN but can also be used to compile forms for other systems.
FFC works as a compiler for multilinear forms by generating code (C or C++) for the
evaluation of a multilinear form given in mathematical notation. This new approach to form
evaluation makes it possible to combine generality with efficency; the form can be given in
mathematical notation and the generated code is as efficient as hand-optimized code.
+ Man-power
(while libmesh is done mostly by PhD students)
The FEniCS core team consists of the following people, committed to implementing
a new standard in CMM software:
Prof. Todd Dupont
Dept. of Computer Science
University of Chicago, USA
Dr. Johan Ho_man
Courant Institute of Mathematical Sciences, New York, USA
Prof. Claes Johnson
Dept. of Computational Mathematics
Chalmers University of Technology, G•oteborg, Sweden
Ass. Prof. Robert Kirby
Dept. of Computer Science
University of Chicago, Ill USA
Ass. Prof. Mats Larson
Dept. of Computational Mathematics
Chalmers University of Technology, G•oteborg, Sweden
Mr. Anders Logg
Dept. of Computational Mathematics
Chalmers University of Technology, G•oteborg, Sweden
Prof. Ridgway Scott
Dept. of Computer Science
University of Chicago, USA
* Does it run in parallel?
No, not yet. However, since we use PETSc as a linear algebra backend for DOLFIN, parallel
linear algebra is handled by PETSc. We are currently working on implementing parallel
assembly to complete the parallel support in FEniCS.
2. LibMesh (1620 / 32) - GPL
http://libmesh.sourceforge.net/
libMesh currently supports 1D, 2D, and 3D steady and transient finite element simulations.
The library makes use of high-quality, existing software whenever possible. PETSc is used for
the solution of linear systems on both serial and parallel platforms, and LASPack is included
with the library to provide linear solver support on serial machines. An optional interface to
SLEPc is also provided for solving both standard and generalized eigenvalue problems. A
complete list of external applications used in the library may be found here.
http://libmesh.sourceforge.net/ex3.php
http://libmesh.sourceforge.net/ex16.php
+ supports UNV format (which we can export from Salome)
+ is able to run paralel
+ enough presentations and examples
- syntax seem to be for me somewhat unclean
+ used by Rome
+ if problem is specified in 2D you can easily allegedly extend it to 3d (i.e. syntax is general)
- we can say that this library is defacto project of University of Texas, with no other subjects,
while Fenics is guaranteed by cooperation of many universities, see
http://libmesh.sourceforge.net/developers.php
+ libmesh-0.6.1-rc1 Notes (2007-10-14 14:26) libmesh-0.6.1-rc1.tar.gz Mirror 3688028 5
Platform-Independent Source .gz libmesh-0.6.0 Notes (2007-06-04 12:37) libmesh-0.6.0.tar.gz
Mirror 3513405 900 Platform-Independent Source .gz libmesh-0.5.0 Notes (2005-06-10 15:05)
(however same, even better situation is with Fenics)
3. Getfem++ (583 / 29) - LGPL
http://home.gna.org/getfem/
The Getfem++ project focuses on the development of a generic and efficient C++ library for
finite element methods. The goal is to provide a library allowing the computation of any
elementary matrix (even for mixed finite element methods) on the largest class of methods
and elements, and for arbitrary dimension (i.e. not only 2D and 3D problems).
It offers a complete separation between integration methods (exact or approximated),
geometric transformations (linear or not) and finite element methods of arbitrary degrees. It
can really relieve a more integrated finite element code of technical difficulties of elementary
computations.
Examples of available finite element method are : Pk on simplices in arbitrary degrees and
dimensions, Qk on parallelepipeds, P1, P2 with bubble functions, Hermite elements, Argyris
element, elements with hierarchic basis (for multigrid methods for instance), discontinuous Pk
or Qk, XFem, vectorial elements (RT0, Nedelec) ...
The addition of a new finite element method is relatively easy. Its description on the reference
element must be provided (in most of the cases, this is the description of the basis functions,
and nothing more). Extensions are provided for Hermite elements, piecewise polynomial,
non-polynomial, vectorial elements and XFem.
The library also includes the usual tools for finite elements such as assembly procedures for
classical PDEs, interpolation methods, computation of norms, mesh operations (including
automatic refinement), boundary conditions, post-processing tools such as extraction of slices
from a mesh ...
Getfem++ can be used to build very general finite elements codes, where the finite elements,
integration methods, dimension of the meshes, are just some parameters that can be changed
very easily, thus allowing a large spectrum of experimentations. Several examples are
provided (see the screenshot section).
Getfem++ has no meshing capabilities (apart regular meshes and a small attempt), hence it is
necessary to import meshes. Imports formats currently known by getfem are GiD , GmSH and
emc2 mesh files. However, given a mesh, it is possible to refine it automatically.
Gmm++
Getfem++ includes a generic matrix template library inspired by MTL and ITL.
Matlab interface
A Matlab® interface to this library is also provided. Hence it is possible to use Getfem++
without any knowledge of C++. Moreover, this interface provides some post-processing
functions which use matlab graphics. A great effort has been made to offer pictures that
represent precisely the finite element solution (i.e. preserve discontinuities across elements,
preserve polynomial order of f.e.m,..), and tools are provided for slice views with respect to a
plane/half space/cylindar/sphere, and streamlines. The pictures from the screenshot section
were all generated via the Matlab interface.
Python interface
A python interface is also available, it is very similar to the Matlab one, although it lacks the
graphical abilities of the Matlab interface.
Licence
Getfem++ is freely distributed under the terms of the Gnu Lesser General Public License.
===
4. Rheolef (925 / 23) - GPL
http://ljk.imag.fr/membres/Pierre.Saramito/rheolef/
- three man show
- last release almost 2 years
- Fenics is better
+ already integrated with salome
+ While sparse matrix and meshes are standard
tools in most _nite element libraries, rheolef is the only one to our knowledge that bases on
powerful variational concepts, such as spaces, _elds and bilinear forms.
- no paralel processing yet
+ source code seem to be very clear
SANDIA - TAHOE (??? / ???)
Note: – tahoe is name of lake in US, we cannot determine Google searches correctly…
Tahoe is a research-oriented, open source platform for the development of numerical methods
and material models. The goal of the work surrounding Tahoe is the simulation of stresses and
deformations for situations that cannot be treated by standard continuum simulation
techniques. These situations include material fracture or failure, interfacial adhesion and
debonding, shear banding, length-scale dependent elasticity and plasticity, and deformation in
small-scale structures. Aside from a collection of standard finite elements, Tahoe includes
meshfree simulation capability and particle methods. Tahoe includes a number of "cohesive"
approaches for modeling fracture. These include both surface and bulk constitutive models
that incorporate cohesive behavior. Tahoe is capable of performing static and transient
dynamic coupled-physics analysis in two and three dimensions. Many capabilities support
parallel execution.
http://tahoe.ca.sandia.gov/
+ 35 developers (registered at sourceforge…)
+ most alive forum I have seen from FEM software
- seem to be solving lot of things, which many we do not need:
- simulation of stresses of materiál…
- last stable release 2004, version 2.1
+ uses high performance components
+ looks professional by the name of copany SANDIA
FETK Overview (584 / 37)
http://www.fetk.org/
- does not use high performance tools, is too much ANSI-C (too much portable for
us)
- no CVS
- confusing website, manual
- outdated (2004, last version 0.1.2!!!)
OOFEM.org (3330 / 37) - GPL
http://www.oofem.org/
 Object oriented architecture
 Modular & extensible FEM kernel (OOFEMlib)





fully extensible - The kernel is extensible in any "direction". The possibility of adding
new element type, new material model with any type and number of internal history
parameters, new boundary conditions, numerical algorithms or analysis modules, as
well as ability to add and manage arbitrary degrees of freedom is matter of course.
independent problem formulation, numerical solution and data storage - The
kernel provides the independent abstractions for analysis, general numerical method
and data storage (sparse matrices). The component mapping concept allows to
formulate problem and numerical method independently and allows to use any
suitable numerical method for problem solution without changes. This concept is
further enhanced by abstract sparse matrix interface, allowing to formulate numerical
method independently on sparse matrix implementation.
full restart support - The kernel supports full restart from any previously saved state.
staggered analysis - allows to group basic problems together and to transfer and share
the solution fields between basic subproblems. The general design allows to use
different discretizations for the basic subproblems.
parallel processing support - based on domain decomposition and message passing
paradigms. Many analyses can be run in parallel and very good performance
scalability can be obtained on various platforms. Message passing concept is highly
portable across many platforms (including massively parallel computers, shared
memory systems and workstation clusters), For developers, general classes for
efficient inter domain communication are provided built over the abstract general layer
for message passing libraries.


-
efficient sparse solvers - direct as well as iterative solvers are available. Direct
solvers include symmetric and unsymmetric skyline solver and sparse direct solver,
iterative solvers support many sparse storage formats and come with several
preconditioners. Interfaces to third party linear solver libraries are available, including
IML, PETSc (serial and parallel), and SPOOLES.
adaptive analysis support - multiple domain concept. Support for error estimation
with various remeshing criteria, support for primary unknown and internal variables
mapping. Fast spatial localization algorithms based on tree techniques are available.
one man show
OOFEM is name of whole method (I found some articles about oofem but not
related to the software), pages found by Google will be less
Oo design is quite unusal, one has to derive a finite element problem from a
class…
Documentation is somewhat sparse and complex; could be better
Low funding of this project; i.e. future less obvious for me…
Many documents are just indexed from oofem domain…, so the Google weight is
lower
OFELI (339 / 32) - GPL
http://ofeli.sourceforge.net/
(Object Finite Element LIbrary) is an object oriented library of C++ classes for development
of finite element codes. Its main features are :
Various storage schemes of matrice (dense, sparse, skyline, tridiagonal).
Direct methods and preconditioned iterative strategies for the solution of linear systems of
equations.
Shape functions of most "popular" finite elements
Element arrays of most popular problems (Heat Transfer, Fluid Flow, Solid Mechanics,
Electromagnetics, ...).
The OFELI package is not only a library of classes for Finite Element developments. The
package contains in addition :
A guided tutorial to learn how to use and develop finite element codes using the library
More elaborated codes for various types of probléme
An extensive documentation in PDF and HTML formats
Utility programs to convert mesh and output files and to generate simple meshes
+fully supports windows
+ support for materials
- one man show
- no high performance componenets
FELYX - Finite Element LibrarY eXperiment
http://felyx.sourceforge.net/ (208 / 6)
* Documentation is only in German.
* This is GNU version of code made during PhD thesis, on which author no longer
works, last release June/2005, although there are listed some developers in SourceForge
* Destinated primarily to structural analysis(although general)
* No reference in Gogole scholár excerpt switzerland
* Title speak that this is more an experiment then a stable library
keyFE2 (381 / 1)
http://users.skynet.be/keyFE2/keyFE2.html
No reference in Google scholar, except the manual. No update for 3 years. One
developer. Natively whole application, although it could be used as a library as well.
Does not use high performance components. Oriented more to fluid flow probléme,
although author claim is general as well…
The Finite Element Library – FELIB (Fortran) – good
as tutoriál but only for Fortran developers
http://www.cse.scitech.ac.uk/msw/felib/felib-top.shtml - 1150 / 50
http://www.softeng.cse.clrc.ac.uk/felib4/ - download

A finite element library for the numerical solution of partial differential
equations. Very well documented/annotated source code, and comprehensive
introduction with tutorial examples make this an excellent choice for beginners.
The idea is to adapt the examples to your own purposes. The documentation is
part-complete and further program documents will be added over the next few
months. See also our review.
FE Tutorials and Introductory Material
http://homepage.usask.ca/~ijm451/finite/fe_resources/node131.html
FeaTure (1m) – too simple; i.e. non performance effective, does not rely on
high performance components, such as sparse matrices, 1 developer, non-gpl,
very short manual
Looks simple, maybe could be used for learning how to make custom finite element code…
http://www.tm.ctw.utwente.nl/onderzoek/DiekA/Feature/index.html
The deal.II,licence QPL (788 / ??) – considerable problem with
licence, see http://en.wikipedia.org/wiki/Q_Public_License , also it
is suited for adaptive meshes, which is not our case. There seem to
be better solutions then this…
http://www.dealii.org/
Mouse (229.000) – Finite Volume not element, furthermore 5 years absolutely no update
http://www.vug.uni-duisburg.de/MOUSE/
Code_Aster is a general purpose finite element code released under the GNU General Public
License.
Oriented for mechanical engineering, futhermore komplex appplication, 1 million of
lines of code…
www.code-aster.org
EXPDE (172 / 16)
http://www10.informatik.uni-erlangen.de/~pflaum/expde/Expde_Homepage.html
Not primary suited for general mesh for finite elements, uses own semi-unstructured
grid. Does not use any third party component, there is only one developer.
Elmer (32.700 – whole program, too
general)
Open Source Finite Element Software for Multiphysical Problems
Elmer is an open source multiphysical simulation software developed by CSC. Elmer
development was started 1995 in collaboration with Finnish Universities, research institutes
and industry.
Elmer includes physical models of fluid dynamics, structural mechanics, electromagnetics,
heat transfer and acoustics, for example. These are described by partial differential equations
which Elmer solves by the Finite Element Method (FEM).
These pages are intended to give information on the Elmer software and to improve the
information transfer in the Elmer community.
http://www.csc.fi/elmer/
FreeFem (12.100 – but it is rather whole PDE oriented programming language…)
http://www.freefem.org/
HMD for Computer Modeling Home
(13.700 – whole program…)
http://www.lumanmagnum.net/physics/heldeneng/
1. Introduction to the Finite Element Method (Hardcover)
"An Introduction to Finite Element Method" by J. N. Reddy.
http://www.amazon.com/Introduction-Finite-Element-MechanicalEngineering/dp/0072466855
2. Schaum's Outline of Finite Element Analysis (Paperback)
http://www.amazon.com/Schaums-Outline-Finite-Element-Analysis/dp/0070087148
3. The Finite Element Method: Linear Static and Dynamic Finite Element Analysis
(Paperback)
http://www.amazon.com/Finite-Element-Method-DynamicAnalysis/dp/0486411818/ref=pd_sim_b_shvl_img_3/105-9335020-9700446
4. Finite Elements for Electrical Engineers (Paperback)
http://www.amazon.com/Finite-Elements-Electrical-Engineers-Silvester/dp/0521449537
Programming the Finite Element Method (Paperback)
http://www.amazon.com/Programming-Finite-Element-MethodSmith/dp/0470849703/ref=pd_sim_b_shvl_img_6/105-9335020-9700446
Concepts and Applications of Finite Element Analysis, 4th Edition (Hardcover)
http://www.amazon.com/Concepts-Applications-Finite-ElementAnalysis/dp/0471356050/ref=pd_sim_b_shvl_img_1/105-9335020-9700446
The Finite Element Method: Its Basis and Fundamentals, Sixth Edition (Hardcover)
http://www.amazon.com/Finite-Element-Method-BasisFundamentals/dp/0750663200/ref=pd_sim_b_shvl_img_2/105-9335020-9700446
A First Course in the Finite Element Method (Hardcover)
http://www.amazon.com/First-Course-Finite-ElementMethod/dp/0534552986/ref=pd_sim_b_shvl_img_5/105-9335020-9700446
The Finite Element Method for Engineers (Hardcover)
http://www.amazon.com/Finite-Element-MethodEngineers/dp/0471370789/ref=pd_sim_b_shvl_img_8/105-9335020-9700446
Finite Element Procedures (Hardcover)
http://www.amazon.com/Finite-Element-Procedures-KlausJ%C3%83%C3%82%C2%BCrgen-Bathe/dp/097900490X/ref=pd_sim_b_shvl_img_6/1059335020-9700446
Download