(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.
|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.
Changing the refection and transmission of one mirror. The very first introduction to the Finesse syntax.
The phase of a light field reflected from a beam splitter; a short demonstration of how length and positions of optics are handled.
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!
Computing error signals for a cavity auto-alignment system (and keeping the cavity on resonance with Pound-Drever-Hall).
A set of 10 Finesse input files and a technical note describing the detector characterisation regarding the Virgo north arm cavity in 2004.
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.
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.
- Download Finesse 1.1 for Windows (64bit)
- Download Finesse 1.1 for Windows (32bit)
- Download Finesse 1.1 for Linux (64bit)
- Download Finesse 1.1 for Linux (32bit)
- Download Finesse 1.1 for OS X (64 bit, 10.7 and higher)
- Download Finesse 1.1 for OS X (32 bit, 10.5 and higher)
- The Finesse manual for 1.0 - pdf file with more than 180 pages
- Finesse_examples.zip a set of Finesse example files
- Dowload the free review article Interferometer Techniques for Gravitational-Wave Detection
for more Finesse examples linked to a text-book like introdcution to laser optics
- README - the Finesse README file, a short intro
- INSTALL - installation instructions
- CHANGES - list of changes between revisions
- old download page - other related files and binaries
- Luxor - a graphical user interface for Finesse
- 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.
- Build Finesse from the source code: short and simple instructions on how to download the source code and compile Finesse.
- User Forums: Ask questions about Finesse and search the archive of previously asked questions.
- Report a bug: If you find a bug, please submit it here, so it will be added to the issues track list.
- Developer Wiki pages: You want to join the development? Find out here how to get started!
- Browse the source code: You can browse the source code online and track the differences between different revisions.
- Changes between different version: This Wiki page collects short descriptions of the changes to the latest version of Finesse.