Check out our new publication for KOBRA, FFEA's counterpart for slender biological molecules, and part of the FFEA software.


  • Protein-protein interactions:
    • A 6-12 Lennard-Jones Potential.
    • A repulsive potential that is proportional to the overlapping volume.
    • Specific interactions defined using [precomputed potentials](
  • Kinetic state changes can be simulated together with the continuum model to account for conformational changes and binding events.
  • Conversion tools for EM density data and atomistic structures into FFEA simulations.
  • A plugin for PyMOL, allowing the visualisation of FFEA systems and trajectories.
  • Initialisation and analysis tools available on the command line and under a Python API.
  • KOBRA model for slender biological objects such as coiled-coils
  • Lees-Edwards boundary conditions.
  • An extremely high degree of reproducity - check out our integration tests!
  • Distance restraints with harmonic potentials, such as springs.

Getting Started

FFEA is free to download and use under the GPLv3 software license. We provide binary releases, and building from source is relatively painless.







  • C and C++ compilers (GCC >=6.3.0 or Intel >=15). There is some C++ code written using the C++11 standard, and so CMake will ensure that you have a recent enough compiler. FFEA will compile with GCC 6.3.0 or Intel 15, but we suggest using an up to date compiler to get the best performance.
  • CMake (>=2.8.11). Required for building FFEA.
  • Python (2.7.X). Used to run the FFEA tools modules, in addition to unit and integration tests to verify that FFEA was correctly built. The NumPy, SciPy and Matplotlib libraries are required. FFEA tools is currently incompatible with Python 3, but an upgrade is in progress.


  • PyMOL(>=1.8, though 1.8 is recommended). Used to visualise FFEA systems and trajectories, with the plugin we provide.
  • NETGEN or TETGEN. Programs which convert surface profile into volumetric meshes to be used by FFEA. Essential if you want to generate meshes from experimental imaging data. We suggest TETGEN!
  • Doxygen (>=1.8). Builds the FFEA documentation. Some mathematical formulae will not render correctly if LaTeX is not found.


  • MDanalysis (>=0.18.0). Used during rod parameterisation. If you don't plan to use KOBRA rods, you can ignore this.
  • pyPcazip. Some of the Python FFEA analysis tools interact with the pyPcazip Principal Component Analysis libraries in order to generate standard PCA output (eigensystems, projections, animations etc) equivalent to those obtained from equivalent MD simulations. See here for their wiki.
  • GTS (>=0.7.6). The GNU Triangulated Surface Libraries allowing the manipulation and coarsening of surface profiles.
  • Meshlab. An open soure system for processing and editing 3D triangular meshes.


  • Boost (>=1.54.0). Used for ease of programming at the initialisation phase. Modules "system", "filesystem" and "program-options" are required. Boost 1.63 is included with FFEA, but this can be adjusted.
  • Eigen (>=3.2.10). FFEA uses Eigen to calculate and solve linear approximations to the model i.e. Elastic / Dynamic Network Models. Eigen 3.3.7 will be downloaded by CMake, but this can be adjusted.
  • RngStreams. Allows FFEA to safely generate random numbers when running on a number of threads, as well as safe restarts, recovering the state of the random number generators in the last saved time step.
  • Tet_a_tet. Used to detect element overlapping in the steric repulsion module.
  • mtTkinter (0.4). Used in the PyMOL plugin, allowing safe threading.


Do you have a research question that FFEA could help to answer?

  • Try FFEA and let us know how you're using the software.
  • Send bug reports, questions and feature requests to our issue tracker.
  • Fork us and help develop FFEA!

If you have questions and comments, please contact us! For biophysics, contact Sarah Harris ( For finite elements, contact Oliver Harlen ( For KOBRA and stochastic enquiries, contact Daniel Read ( For software engineering, contact Joanna Leng (