# Virgo model

Interferometer for Finesse 3. Can be used with the
[finesse-virgo](https://gitlab.com/ifosim/finesse/finesse-virgo)
package.

## Get started

For simple use, `layout` file can be used. A layout is a list of files
separated by new line to load in order to create a
[finesse3](https://finesse.ifosim.org) model. The "simple" model
present some quick model with little components which allows to
manipulate easily a finesse model.
The "finesse-virgo" model correspond to the model available in the
[finesse-virgo package](https://git.ligo.org/ifosim/finesse-virgo).

## Sections

Katscript files are organized in different types, which are `values`,
`optical setup`, `link`, `cavities definition`, `degree of freedom`,
`detectors` and `after variables`.

### variables

Contains values used in the setup.

It can defines variable which depends of components in the setup for
preprocessing (finesse-virgo package for example) too.

### components

Defined part of the optical setup (Laser, Mirror, etc.) or set of parts.

### links

Link together parts of the optical setup defined before

### cavities

Defines Finesse3 cavity

### degree of freedom

Defines Finesse3 degree of freedom

### detectors

Add Finesse3 detectors

## Getting started

Code example to build a Virgo model with these scripts.

```py
    from pathlib import Path

    layout_file = Path("layout/finesse-virgo/no_benches") # path to layout file
    with layout_file.open() as f:
        files = f.read().splitlines() # convert layout file to list of path
    virgo = Virgo(
        files_to_parse = files, # create model with the given list of path
    )
```

The advantage of this is the control we have over the interferometer
 simulation, and the readibility. Tracking change is also easier,
variable definition being detached from setup configuration.