Fluctuating Finite Element Analysis is a new molecular modelling technique, built from the ground-up to support systems that are larger and more complex than those modelled by atomistic molecular dynamics. Instead of modelling biological systems as a collection of connected atoms, it models them as 3D volumes comprised of tetrahedrons. Unlike previous coarse-grained models, the models FFEA generates are visco-elastic continuum solids. Unlike other applications of Finite Element Analysis, these systems are subject to thermal fluctuations.

This technique has the potential to model large, complex systems, made of many molecules, and complex processes at the frontiers of molecular biology. As it does not not require an atomistic level of detail, it can also be used to simulate biological molecules that cannot be imaged using X-ray crystallography.


  • Protein Interactions:
    • A 6-12 Lennard-Jones Potential.
    • A repulsive potential that is proportional to the overlapping volume.
    • Specific interactions defined using precomputed potentials. More documentation can be found here.
    • Coulombic interactions [EXPERIMENTAL].
  • 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.
  • Analysis tools (equilibration, Euler characteristic, principal component analysis, geometric measurements) available on the command line and under a Python API.
  • Extensive test suite including checks of FFEA's simulation output against analytical results.



  • Boost (>=1.54.0) is used for ease of programming at the initialisation phase. Modules "system", "filesystem" and "program-options" are required. A bundle of version 1.63 is shipped with FFEA.
  • Eigen (>=3.2.1). FFEA uses Eigen to calculate and solve linear approximations to the model i.e. Elastic / Dynamic Network Models. CMake will download and use Eigen 3.3.2 if not told otherwise.
  • RngStreams1,2 is shipped with FFEA and used as Random Number Generator (RNG). RngStreams allows the FFEA to safely generate random numbers when running on a number of threads, as well as safe restarts, recovering the state of the RNGs in the last saved time step.
  • Tet_a_tet3 is shipped with FFEA and used to detect element overlapping in the steric repulsion module.
  • Doxygen (>= 1.8) [OPTIONAL] is used to generate the documentation.
  • PyMOL (>=1.8) [OPTIONAL] can be used, using the plugin we provide, to visualise FFEA systems and trajectories as well as molecular and EM systems.
  • mtTkinter (0.4) is shipped with FFEA and used in the PyMOL plugin, allowing safe threading.
  • GTS (>=0.7.6)[OPTIONAL]. The GNU Triangulated Surface Libraries allowing the manipulation and coarsening of surface profiles.
  • NETGEN or TETGEN [OPTIONAL]. Programs which convert surface profile into volumetric meshes to be used by FFEA.
  • pyPcazip4 [OPTIONAL] 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.

1: P L'Ecuyer, "Good Parameter Sets for Combined Multiple Recursive Random Number Generators", (1999) Oper Res, 47(1):159-164.
2: P L'Ecuyer et al. "An Objected-Oriented Random-Number Package with Many Long Streams and Substreams", (2002) Oper Res, 50(6):1073-1075.
3: F Ganovelli, et al. "Fast tetrahedron-tetrahedron overlap algorithm", (2002) J.Graphics Tools. 7(2):17-25.
3: A Shkurti, et al. "pyPcazip: A PCA-based toolkit for compression and analysis of molecular simulation data", (2016) SoftwareX. 7:44-50.


FFEA is maintained by a small but dedicated team at the University of Leeds. If you want to see where we can take FFEA, then you can:

  • Use the software for something cool
  • Send bug reports and feature requests to our issue tracker
  • Fork us



  • Albert Solernou
  • Ben Hanson
  • Robin Richardson
  • Rob Welch



We want to thank everybody who has helped in making FFEA possible, from summer students, to experimental professors, we would not be here without you:

  • Stan Burgess
  • Stephen Muench
  • Tom Ridley
  • Kerrie Smith
  • Joanna Leng
  • Thijs van der Heijden
  • Kees Storm
  • Paul van der Schoot
  • Toni Collis
  • Neelofer Banglawala
  • Jana Boltersdorf
  • Ondřej Vysocký
  • Guanhao Lu
  • Jonathan Boyle
  • Mike Croucher
  • Christopher Woods
  • Katrina Goldman
  • Matthew Faulkner
  • Ashley Fenton