1. 23 Jan, 2021 1 commit
  2. 21 Jan, 2021 1 commit
  3. 19 Jan, 2021 1 commit
  4. 14 Jan, 2021 1 commit
  5. 10 Jan, 2021 1 commit
  6. 21 Oct, 2020 1 commit
    • Samuel Rowlinson's avatar
      Refactored finesse.element into three separate cython extensions · 2231a158
      Samuel Rowlinson authored
      As mentioned in the Alpha 1 milestone, finesse.element was in quite a bloated
      state so it needed refactoring. This commit refactored it into finesse.element
      (containing ModelElement, ElementWorkspace), finesse.symbols (containing all
      the symbol classes and relevant functions, dicts) and finesse.parameters which
      holds the Parameter, ParameterRef, etc. classes and the model_parameter, info_parameter
      decorator funcs.
      2231a158
  7. 08 Oct, 2020 1 commit
    • Sean Leavey's avatar
      Expand @model_parameter decorator to allow descriptions, add support for @info_parameter decorator · 89b497f4
      Sean Leavey authored
      This adds a decorator for registering "info parameters" on model elements,
      which can be used to define the attribute name of useful properties of the
      element alongside a description.
      
      It also expands the @model_parameter decorator to add a description
      argument.
      
      These descriptions are used to summarise the model and info parameters of
      each element in tables when the method `info()` is called that element.
      89b497f4
  8. 13 Jul, 2020 1 commit
  9. 01 Jul, 2020 1 commit
  10. 15 Jun, 2020 1 commit
  11. 05 Jun, 2020 1 commit
  12. 03 Jun, 2020 1 commit
  13. 31 May, 2020 1 commit
  14. 30 May, 2020 1 commit
    • Daniel Brown's avatar
      Fairly substantial change to allow electrical and mechanical nodes to have... · ca268b93
      Daniel Brown authored
      Fairly substantial change to allow electrical and mechanical nodes to have their own frequencies. This is done on a node-by-node basis, rather than a global optical frequency list. The reason being that each electrical path might have completely different frequencies and not interact with one another, same with mechanics.
      ca268b93
  15. 21 May, 2020 1 commit
  16. 19 May, 2020 1 commit
    • Samuel Rowlinson's avatar
      Switched last remaining mode scattering component (isolator) over to new knm... · 28c4ddf3
      Samuel Rowlinson authored
      Switched last remaining mode scattering component (isolator) over to new knm computing pattern, minor bug fixes
      
      All components (Mirror, Beamsplitter, Lens, Modulator, Isolator) now use the new scattering matrix
      Cythonised pattern. Isolator knm code was all commented out Python code before this commit, it has
      now been converted to using the same Cython code style for these calculations as the above objects.
      
      Removed the Is attributes from the above object workspaces as it is no longer required.
      
      Fixed an incorrect beam parameter being used in the Modulator update_changing_knm_workspaces function.
      28c4ddf3
  17. 14 May, 2020 1 commit
  18. 13 May, 2020 4 commits
  19. 12 May, 2020 2 commits
  20. 11 May, 2020 1 commit
  21. 02 May, 2020 1 commit
  22. 28 Apr, 2020 1 commit
  23. 27 Apr, 2020 1 commit
    • Daniel Brown's avatar
      Fixing signal simulations · ffd8817a
      Daniel Brown authored
      Adding in laser signals again
      
      Adding ConnectionSetting enum for ConnectorWorkspaces. This lets a component set the connection to be diagonal/matrix/disabled
      
      Added fill_za_zd_2 for fast factor times diagonal vector fill
      ffd8817a
  24. 25 Apr, 2020 1 commit
  25. 21 Apr, 2020 1 commit
    • Samuel Rowlinson's avatar
      A few optimisations for matrix-less simulations · 1bd24e00
      Samuel Rowlinson authored
      Holding a weakref to the attached space in `OpticalNode` once found
      to avoid needing to call graph methods to retrieve it again - this
      was one of the main bottlenecks in beam tracing as `.space` needs
      to be called many times for retrieving refractive indices for example.
      
      Adding a `gather_info` flag to `SimulationTraceSolution` constructor
      which gets set to False if the model is built (in a simulation) and
      the logging level is less than debug - the dictionaries of beam sizes,
      gouy phases for each node are not required in this case.
      
      Using `Gaussian.gouy` and `Gaussian.w_size` functions from `finesse.cmath`
      in `Space._set_gouy_phase` and `Laser._update_tem_gouy_phases` instead of
      `BeamParam.gouy` and `BeamParam.w`, respectively.
      
      These optimisations result in approx. 40% speed-up for the file
      `playground/profiling/nomatrix_roc_scan.py` compared to previous commit.
      1bd24e00
  26. 20 Apr, 2020 1 commit
    • Daniel Brown's avatar
      Substantial changes made to the backend. I have made Workspaces a more... · 1c8dca63
      Daniel Brown authored
      Substantial changes made to the backend. I have made Workspaces a more important object. These now contain everything a component/detector needs for filling. It also contains functions pointers which the BaseSimulation can call for filling. The workspace also defines whether refilling and such should occur so that we don't waste time repeatedly calling functions that are just boolean checking.
      
      Fill functions are now passed the workspace instead of a simulation. It should be possible to write C workspaces which contain no python objects, paired with C fill functions these can then release the GIL and we can potentially run them in parallel.
      
      There's still alot of code that needs tidying up and organsing better still before this is ready.
      1c8dca63
  27. 17 Apr, 2020 1 commit
    • Daniel Brown's avatar
      A lot of changes: · 575fb211
      Daniel Brown authored
      Changing on_build to on_init for elements, as this gets called before the matrix is fully built
      
      Matrix views are now handling the maxtrix filling and conjugation.
      
      SubCCSView1DArray is a new wrapper around PyObject* array which lets c code directly access cdefs and functions without having to ref count. So now we can iterate over matrix views with no python calls
      575fb211
  28. 11 Apr, 2020 1 commit
    • Daniel Brown's avatar
      Performance tuning. I've refactored a bunch of code for the eval_parameters.... · 9b013833
      Daniel Brown authored
      Performance tuning. I've refactored a bunch of code for the eval_parameters. is_changing was taking up way to much CPU time. is_changing should be called in on_build and the result cached. This happens now in Element._setup_changing_params. is_changing is now a Set(Parameters). Simulations.any_frequencies_changing is now an attribute to save that getting recalled again and again. Shaved 0.7s off of a 2s simulation.
      9b013833
  29. 10 Apr, 2020 1 commit
  30. 07 Apr, 2020 1 commit
  31. 06 Apr, 2020 1 commit
  32. 05 Apr, 2020 1 commit
  33. 31 Mar, 2020 1 commit
  34. 20 Mar, 2020 1 commit
    • Samuel Rowlinson's avatar
      Restructuring of attributes in BaseSimulation · ed9222e1
      Samuel Rowlinson authored
      Removed most properties in favour of readonly cdef attributes and improved
      how mode indices are stored and accessed through a simulation (via a readonly
      memory-view on the models' homs array)
      
      Documenting laser_fill_rhs function in matrixfill extension.
      
      Added a batch file (make.bat) for more convenient building of Cython extensions on Windows.
      ed9222e1
  35. 28 Feb, 2020 1 commit
  36. 20 Feb, 2020 1 commit
    • Phil Jones's avatar
      Fix matrix couplings when HOMs are present. · 40413da5
      Phil Jones authored
      The base simulation's `out` object was being initialised to an nx1 2-D
      matrix, and then set to an n-element 1-D array after the first
      calculation, causing errors due to the different shapes. The fix is to
      initialise `out` to be 1-D.
      40413da5