Finesse
(an interferometer simulation tool)
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 | Source | |
| Syntax Reference | Complex Examples | Documentation | Luxor | |
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).
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.
Download Finesse
Get the executable for Linux, Windows and OS X here:
- Download Finesse 0.99.8 for Linux
- Download Finesse 0.99.8 for OS X
- Download Finesse 0.99.8 for Windows
- The Finesse manual for 0.99.8 - pdf file with more than 150 pages
- README - the Finesse README file, a short intro
- INSTALL - installation instructions
- Finesse download page - all Finesse related files and binaries
- Luxor - a graphical user interface for Finesse
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.
- 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:
- 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, 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!
Over the next weeks we will open the developer tools and access to the source code of Finesse to all. Watch this space!