Finesse 2.0

(Frequency domain INterfErometer Simulation SoftwarE)     

At GEO 600 we have created a fast and easy to use interferometer simulation to design and debug laser interferometers. We wanted to be able to simulate many different user-defined optical setups and we would like to playfully teach and learn more about laser optics. Finesse has a long pedigree and has benefited from years of real-life employment by the optics groups of gravitational wave detectors. We are committed to adapting the code to new challenges posed by new types of interferometry in future projects, maintaining the code and the trust which has been built through years of testing against experimental results.

virtual Finesse package
Download Simple Examples Tools Get the Source
Syntax Reference Complex Examples Documentation Git repository
User Forums History and Impact Changes Redmine page

Getting started with Finesse!

Trying out Finesse for yourself is very simple. The following steps guide you through the installation of the program and how to run a simple example. To do your own simulations you should read the manual and the syntax reference.

  • Download the binary distribution for your operating system (Windows, Linux, OS X) and unzip the zip file. This will create a directory with the following files: kat or kat.exe (the executable) and kat.ini, the initialisation file. In addition, you may want to try the program using my example input files, these have the extension *.kat. Download the examples here: and copy the *.kat files into the same same folder as the Finesse executable.
  • Finesse is a text-based application that you have to run from within a terminal or command window. You can start the program by typing `kat' (or `kat.exe', or `./kat', depending on your OS) which will print a small banner; `kat -h' will give you a short syntax reference for input files; `kat -hh' prints further help.
  • If you want Finesse to automatically generate graphical output, you have to have Gnuplot or Python installed and Finesse must know the correct command to start it (see the manual for more details). Finesse also generates a *.m file for each simulation, that can be used with Matlab to plot the result.
  • We use PyKat, to do our Finesse simulations from within IPython notebooks, and recommend this as the best way to perform and share real simulation tasks.

Please let me know if the above did not work for you!

Simple Finesse examples

We have collected a number of simple example files available for download as a zip file: In addition, this page features several examples that come with more explanation and visualisation in order to illustrate how you can use Finesse. Most of these examples below are taken from the review article Interferometer Techniques for Gravitational-Wave Detection published in Living Reviews in Relativity.

Reflection, transmission

Changing the refection and transmission of one mirror. The very first introduction to the Finesse syntax.

Length and Tunings

The phase of a light field reflected from a beam splitter; a short demonstration of how length and positions of optics are handled.

Modulation and Bessel functions

Phase modulation is applied to a laser beam to generate five pairs of sidebands; and the amplitude of the three first harmonics is plotted.

Video of a flashing cavity

How to use Finesse to make a video of the modes flashing in an optical cavity; recreating the typical monitor output of cavity experiments.

Radiation pressure effect

Shaking a mirror with light. An amplitude modulated laser beam is reflected of a suspended mirror to create a modulation of the mirror's position, a very simple demonstration of a radiation pressure simulation.

Squeezing and homodyne

We superimpose a laser beam with a squeezed vacuum input and detect the result with quantum noise detectors.


More complex Finesse examples

This section features examples that correspond to actual research work, mostly within the gravitational wave community. Some are simple, because they relate to quick laboratory tests; some others include the full set of a large gravitational wave detector. If you have an interesting or educational example from your own work, please let me know!

Cavity automatic alignment

Computing error signals for a cavity auto-alignment system (and keeping the cavity on resonance with Pound-Drever-Hall).

Virgo arm cavity commissioning

A set of 10 Finesse input files and a technical note describing the detector characterisation regarding the Virgo north arm cavity in 2004.

Advanced LIGO and LG33 modes

Modelling an Advanced LIGO arm cavity with the input laser beam being a Laguerre-Gauss (LG33) mode. A mirror surface map based on measured data is applied to the end mirror.

Optical spring

One of the most interesting effects of radiation pressure in interferometry is the optical spring. A slightly detuned cavity is used to create an optical spring between two mirrors.

Quantum-noise limited sensitivity

A simplified Advanced LIGO model is used to plot the quantum-noise limited sensitivity of an advanced gravitational wave detectors with suspended mirrors and high laser power.


Download Finesse

Get the executable for Linux, Windows and OS X of the latest stable version here. If you experience any problem with installing or running Finesse, please contact us, we are happy to help! You can try newer versions of Finesse by directly installing in from the source code.

The USB flash drive

Finesse USB flash drive

During the GWADW workshop in May 2014 in Japan we distributed USB flash drives to mark the release of Finesse 2.0. The USB drives contained the latest binaries along with a collection of documents (papers, notes and presentations) about Finesse that may be useful for those interested in optical simulations. Also included are Finesse input files for all the major gravitational wave detectors: Advanced LIGO, Advanced VIRGO, KAGRA, GEO600 and the Einstein Telescope, that you can experiment with. For those who did not attent the workshop we offer the USB drive image for download: (100 Mbytes zip file!)


  • The Finesse manual (see above) contains an extensive description of the program, describes its basic use as well as several advanced concepts. Furthermore the manual gives a detailed account of the physics and mathematics implemented for the numerical modelling.
  • Note that the manual can be slightly out of date. The most recent information about Finesse can be found in the Changes file.
  • The online Syntax reference is the best place to learn and recall how to read or write a Finesse input file. In addition starting Finesse with `kat -h' or `kat -hh' prints short help screens to the terminal output.

We will collect and provide more information related to Finesse here soon.

Tools and Utilities

Finesse is designed as a stand-alone program which performs one task per run as specified in a text input file. However, with additional tools or scripts you can greatly extend the power of Finesse. The following list links to pages which provide and explain three such tools:

  • PyKat: A new Python wrapper and set of tools for running Finesse, for example, for automating complex tasks or for post-processing simulation results. Try it out in an IPython notebook!
  • SimTools: Matlab utility functions for optical simulations. The package includes custom made Matlab functions to be used with Finesse, for example to read/write/edit Finesse input files, read the output files.
  • Compute Control matrices: To compute control matrices or, more generally, to perform a sequence of simulations from one single input file you can use the Perl script `mkat'.
  • Run Finesse on a Cluster (using Condor): If the simulation task takes a huge amount of computation time you can, in many cases, greatly speed up the computation by using a computer cluster. A Python script for Condor simplifies this process.
  • Call Finesse dynamically from Matlab/Octave: Finesse on its own is not very well suited for certain, more complex simulation tasks. For example, if you need non-linear couplings between several parameters or dynamic switching between various parameter tunings. In these cases it is very useful to let Finesse interact with Matlab/Octave. These Mex Files allow you to connect to a Finesse process via a network connection.
  • Editor colour scheme for Finesse files: For those who use Emacs, Vim, XEmacs or Notepad++ to create and edit Finesse input files, these syntax highlighting modes should be very useful.
  • Luxor is a graphical user interface for Finesse. This GUI written by Jan Harms provides the user with a clean and simple interface to use and run Finesse: You can create the input file graphically and run the simulation with a click of a button. Professional users of Finesse will probably prefer the command line approach as it offers more flexibility and control but Luxor is a great tool for the casual user.

Get the source, join the Finesse development!

Finesse is an open source project released under the GPL3 license. The source is available in a public git repository. We would like you to help us, with feedback and suggestions, by submitting example file or by contributing directly to the code development. Therefore we have setup a Redmine project site for Finesse. On these pages you will find information on the Finesse source code and how to get involved.