Finesse

(Frequency domain INterfErometer Simulation SoftwarE)

At GEO 600 we have created a fast and easy to use interferometer simulation. We want to design and debug laser interferometers with a simple but powerful tool. We want 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. While some of the code is ten years old 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: Finesse_examples.zip 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 installed and Finesse must know the correct command to start it. You can add the command for calling Gnuplot on your system to the file `kat.ini' (see the manual for more details). Alternatively you can use Matlab to create plots from the output data: Finesse automatically generates a *.m file for each simulation, which will plot the result when called.
  • You should test the program with one of the example files: e.g. `kat bessel.kat' will cause the program to calculate light field amplitudes behind a phase modulator as a function of the modulation strength (modulation index). The calculated data will be written to `bessel.out'; also batch files (`bessel.gnu', `bessel.m') for plotting the data with Gnuplot and Matlab will be created and Gnuplot will be started (if available).

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

If you are not very comfortable with running programs from the command line, you might want to check out the graphical user interface Luxor. On the other hand, if you want to know more about the internals, why not have a look at the source and contribute to the development of Finesse?

Simple Finesse examples

We have collected a number of simple example files available for download as a zip file: Finesse_examples.zip. This collection currently contains 12 files, most of which are also included in the manual. 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. They demonstrate very simple concepts, the basic usage and some of the syntax of Finesse.

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.

 

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.

 

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.

Documentation

  • 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 if (often) slightly out of date. The most recent information about Finesse can be found in the Changes page on the Redmine project site.
  • 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. 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 the Finesse source code an information on how to get involved.