This page is a brief roadmap for the development that's happening now, along with a few further-ahead tasks that are open to be tackled by anyone / everyone.
- Continue implementation of beam tracing:
- Ensure that all test cases match with Finesse 2 tracing.
- In particular, look into the tests for each constituent section/block of
the design.kat file
- Once these pass, test that tracing for the whole design file works
1a) Mode matching tools:
- Use optimisation routines (see scipy and pybobyqa packages) to perform mode-matching between cavities; pybobyqa can be used alongside beam tracing to find minimal mismatch values for user-specified degrees of freedom (e.g: finding optimal RoC of PR2, PR3 in PRC to match arm cavities).
- This task can be run concurrently with the next tasks as it is just a set of tools rather than necessary for running HOM simulations.
- Begin implementing HOM calculations into the matrix construction and solving part of the code.
- Beam tracing code needs to pass the test cases mentioned previously in order to start working on this properly (otherwise unable to test effectively).
- Port over the mirror map code from Finesse 2.
- Fsig implementation:
- Test mirror fsig result against Finesse 2
- Extend to at least beamsplitter and space, and test that basic cavities etc. match Finesse 2 results => At this point, the aligo design file should be working for signal calculations.
- Laser and modulator can be added after this, but are not vital for following work.
- Extend detectors to work for signals (especially photodetector) - We should also decide what information the sidebands need to carry around - consensus so far seems to be that each sideband also carries its conjugate
- Xaxis command:
- Once the signal calculations are in, I think this is the major blocker to being able to use the Finesse 3 for basic modelling.
- Quantum Matrix
- This needs implementing in its entirety, along with quantum detectors
Intermediate term tasks
- Polarisation - What was the end point of the polarisation branch? Either way, this should probably be looked into sooner rather than later.
- Parsing will be updated as we go, but there are some discrete tasks here:
funccommand - I can't remember if the consensus on this was to stick to formulc or use python, but it needs implementing
- Documentation - SLY is likely weird enough that we can't automatically document the kat file syntax here with Sphinx, but it might be worth a shot.
- Some commands could be removed, but we should decide e.g.
printnoisesare probably redundant.
- Sean's units handling in zero looks pretty good, and could easily be adapted to Finesse
- Logging - this is apparently quite simple to implement in python, by just logging everything and then filtering the output as desired, but we need to decide on how exactly we go about this.
- Code style / review - I don't think we reached a proper decision on what we're doing here. There's a
.pylintrcfile, do we want to do more than this while there's not too much code?
Long term tasks
- Mechanical and Electrical components
- Optimisation - components may need converting to Cython etc, this is likely to be a big area of investigation.