The FEniCS Project is a collaborative project for the development of innovative concepts and tools for automated scientific computing, with a particular focus on automated solution of differential equations by finite element methods. FEniCS has an extensive list of features, including automated solution of finite element variational problems, automated error control and adaptivity, automated parallelization, a comprehensive library of finite elements, high performance linear algebra and many more. FEniCS is organized as a collection of interoperable components that together form the FEniCS Project. These components include the problem-solving environment DOLFIN, the form compiler FFC, the finite element tabulator FIAT, the just-intime compiler Instant, the code generation interface UFC, the form language UFL and a range of additional components.
Automatic Code Generation
A unique feature that makes FEniCS stand out among finite element libraries is its extensive use of automated code generation. Code generation is the key to a successful combination of generality and efficiency: allowing general systems of nonlinear partial differential equations to be expressed with ease in a language very close to mathematics, and to be solved with optimal performance on the most advanced supercomputers. For any given PDE, FEniCS generates application-specific highly optimized code targeted specifically to the given problem and the chosen discretization method.
The FEniCS Project was initiated in 2003 in collaboration between researchers from Chalmers University of Technology in Gothenburg and the University of Chicago. It has since grown to a large international project with contributors from around the world, most notably Simula Research Laboratory, University of Cambridge, KTH Royal Institute of Technology, Baylor University and Charles University in Prague.
Recent and Ongoing Developments
FEniCS supports high performance, distributed parallel simulations for large-scale applications, based on efficient implementation of scalable distributed meshes, distributed mesh refinement, parallel IO and access to high performance parallel linear algebra backends, such as PETSc. Simulations of elliptic problems with over 12 billion degrees of freedom have been performed.
Driven by the needs of users applying FEniCS to ever more advanced models, the performance of the symbolic framework in UFL and code generation process in FFC has received a targeted profiling effort. The new FEniCS component UFLACS released as part of FEniCS 1.5 brings dramatic improvements to the performance and memory usage of the symbolic framework and code generation machinery. In addition, a new approach to code generation has been introduced in the first release of the UFLACS project. In UFLACS, a clever value numbering scheme is applied to efficiently deal with large tensor algebra expression trees produced by the Automatic Differentiation of complicated PDEs such as highly nonlinear solid mechanics models or fully coupled fluid-structure interaction problems. UFLACS also adds support for iso-parametric elements to FEniCS.
With version 1.5 of FEniCS, initial support has been added for the formulation of multimesh finite element methods. These are finite element methods formulated on two or more distinct, nonmatching, and potentially overlapping meshes. The multimesh framework allows for the formulation of efficient finite element methods on complex and dynamic geometries, by removing the need for costly mesh generation and regeneration. Multimesh support in FEniCS includes special integration measures for expressing stabilized finite element methods involving integrals on cut cells, interfaces and overlaps involving many meshes.
For more information see the website: http://fenicsproject.org