FFC: The FEniCS Form Compiler

FFC is a compiler for finite element variational forms. From a high-level description of the form, it generates efficient low-level C++ code that can be used to assemble the corresponding discrete operator (tensor). In particular, a bilinear form may be assembled into a matrix and a linear form may be assembled into a vector.

FFC may be used either from the command line (by invoking the ffc command) or as a Python module (import ffc).

FFC is part of the FEniCS project (http://www.fenicsproject.org) and functions as a just-in-time (JIT) compiler for DOLFIN.

For further introduction to FFC, open the FFC user manual available in the subdirectory doc/manual/ of this source tree, or try out the demos available in the subdirectory src/demo/ of this source tree.


This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.


  1. Python, version 2.7 or later

  2. The latest version of FIAT, Instant and UFL

    You need to have FIAT, Instant and UFL installed. They are available from the web page: https://bitbucket.org/fenics-project/.

  3. The Python NumPy module

  4. The Python Six module

  5. SWIG, version 2.0.0 or later for Python 2 and version 3.0.3 or later for Python 3


From February 2014, the code generation interface UFC is distributed as part of FFC, and the UFC repository has been merged into the FFC repository. From this point onwards, UFC version numbers are reset to the same version numbers as for FFC.