History
Finesse 3 (2021–2026)
In 2020 Andreas Freise moved from Birmingham to the Vrije Universiteit Amsterdam and Nikhef, making Nikhef the new host of the Finesse project. Nikhef’s computer technology group started to support the project with at first Mischa Sallé, Jan Just Keiser and then Miron van der Kolk and Jéremié Gobeil providing professional support for the development, testing and maintenance of the software, which so far had always been in the hands of a scientists-only team.
Since releasing a first alpha version of Finesse 3 in 2021 we focussed on implementing most of the features of Finesse 2 and Pykat into Finesse 3 and verifying and validating the new results against reference results from previous versions. This was a long and thankless period because of the need to re-implement and test known features, instead of trying something new and interesting. In 2025 we started to work on brining the documentation up to date, which was the main missing item before we could release the first full release of Finesse 3.
Finesse 3 alpha (2017–2021)
During the first 4 years Finesse 3 was developed from scratch to the first public alpha release. The vision for Finesse 3 was provided by Daniel Brown, who had been lead developer on Finesse 2 and Pykat for several years. Daniel had a very clear idea about how a better Finesse should look like. In 2017 Andreas hired two new PhD students in Birmingham, Sam Rowlinson and Philip Jones, who were interested in developing part of a large scientific code base. Together we decided to take the risk to start a several-years long process to implementation Daniel’s vision. Soon after Sean Leavey joined our team, bringing in new ideas and interests that nicely complemented our existing plans.
Our initial research indicated that a combination of Python and Cython should fulfil our needs for an approachable and hackable code base which remains sufficiently fast. Only after several years we were able to confirm that our bet on Python and Cython was a good one: Python had gained in popularity and was the language of choice in many scientific institutions. And the performance of Cython for time-critical code could provide reasonable performance: the new code was slower than the pure C implementation but not significantly so.
During the initial development a few people beyond Daniel contributed key pieces of the new code: Sam Rawlinson developed the new beam tracing, and made significant contributions to the higher-order modes features, the integration with Cython, the code structure and design, and the Sphinx documentation. Philip Jones made key contributions to the quantum noise implementation, signal and noise features, the legacy parser, and the external Jupyter and Pygments extensions. Sean Leavey provided essential contributions to the new KatScript syntax, parser and command line interface, test suite, continuous integration tooling, the code structure and design, and the documentation.
The alpha release of Finesse 3 in 2021 was the milestone that confirmed that our ideas and choices for Finesse 3 were working. We therefore decided to put all out energy in this new code, not developing Finesse 2 nor Pykat any further.
Finesse 1 and 2 (2011–2023)
At the University of Birmingham Andreas had started a new research group with a focus on optical technology and interferometer design. Over the years many members of the research group contributed to or used Finesse for their research. In particular, PhD student Daniel Brown became lead programmer and improved the code overall while adding several new features. With Daniel’s efforts Finesse reached version 1.0 and was made available as open source. Charlotte Bond became a specialist in modelling higher-order optical modes and ensured mirror surface maps or strange beam shapes implemented correctly in Finesse. Keiko Kokeyama, Paul Fulda, Ludovico Carbone and Anna Green helped making Finesse a useful tool for the Advanced LIGO commissioning team. Mengyao Wang, Rebecca Palmer and Jan Harms helped Daniel with implementing radiation pressure effects and a full quantum noise treatment in the two-photon formalism.
Pykat (2014– to date)
Modelling the complex gravitational wave detectors often involves an iterative sequence of many tasks. From the beginning we have used scripting languages to prepare, run and post-process Finesse simulations, for example using Octave and Matlab. In 2014 we could see that Python would become one of the most common and powerful scripting tools in gravitational wave research. We therefore started to port our existing Matlab tools and scripts related to optical modelling to Python. In addition, Daniel Brown wrote a new comprehensive Python wrapper for running Finesse. These tools have been merged and then published as the open source package Pykat (https://git.ligo.org/finesse/pykat) with contributions Philip Jones, Samuel Rowlinson, Sean Leavey, Anna C.Green and Daniel Töyrä. Daniel Töyrä also created the online tutorials on modelling laser interferometry which were hosted ‘htttp://www.gwoptics.org/learn’.
Finesse beginnings (1997–2010)
Finesse has been originally developed by Andreas Freise during his PhD at GEO 600 (Frequency domain interferometer simulation with higher-order spatial modes). The idea for Finesse was first raised in 1997, when I (Andreas) was visiting the Max-Planck-Institute for Quantum Optics in Garching, to assist Gerhard Heinzel with his work on Dual Recycling at the 30 m prototype interferometer [10]. We were using optical simulations which were rather slow and not very flexible. At the same time Gerhard Heinzel had developed a linear circuit simulation ‘LISO’ that used a numerical algorithm to solve the set of linear equations representing an electronic circuit. The similarities of the two computational tasks and the outstanding performance of LISO lead to the idea to use the same methods for an optical simulation. Gerhard Heinzel kindly allowed me to copy the LISO source code which saved me much time and trouble in the beginning. In the following years Finesse was continually developed at the University in Hannover within the GEO project [11, 12]. Finesse has been frequently utilised during the commissioning of GEO 600 [13, 14, 15].
In those early days of the Finesse development, when the software was not much more than an idea, many people in the gravitational wave community have helped with feedback, bug reports and encouragement. Some of them are Seiji Kawamura, Guido Müller, Simon Chelkowski, Keita Kawabe, Osamu Miyakawa, Gabriele Vajente, Maddalena Mantovani, Alexander Bunkowski, Rainer Künnemeyer, Uta Weiland, Michaela Malec, Oliver Jennrich, James Mason, Julien Marque, Mirko Prijatelj, Jan Harms, Oliver Bock, Kentaro Somiya, Antonio Chiummo, Holger Wittel, Hartmut Grote, Bryan Barr, Sabina Huttner, Haixing Miao, Benjamin Jacobs, Stefan Ballmer, Nicolas Smith-Lefebvre, Daniel Shaddock and probably many more not mentioned here.
Gerhard Heinzel greatly supported the original development; he had the idea of using the LISO routines on interferometer problems and he provided his code for that purpose. Roland Schilling spent hours with Andreas on the phone discussing C and Fortran, or interferometers and optics. Ken Strain has been a constant source of help and support during the initial years of development. Jerome Degallaix has often helped with suggestions, examples and test results based on his code OSCAR to further develop and test Finesse. Paul Cochrane has made a big difference with his help on transforming the source code from its messy original form into a more professional package, including a test-suite, an API documentation and above all a readable source code.
Last but not least we would like to thank the GEO 600 group, especially Karsten Danzmann and Benno Willke, who allowed Andreas to work on Finesse in parallel to his experimental work on the GEO site. Finesse would not exist without their positive and open attitude towards science.