1. 22 Jan, 2021 1 commit
  2. 19 Jan, 2021 1 commit
  3. 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
  4. 20 Oct, 2020 1 commit
    • Samuel Rowlinson's avatar
      Refactoring components/matrixfill extension code into separate, sensible locations · 4913e79e
      Samuel Rowlinson authored
      As noted in the Alpha 1 milestone, the matrixfill extension was bloated with code
      from several iterations of development. This has now been refactored into relevant
      component and detector workspace extensions, with the ElementWorkspace and BaseCValues
      structures now sitting in finesse.element. The matrixfill extension has been removed
      now that its code has been distributed to better locations.
      4913e79e
  5. 14 Oct, 2020 1 commit
  6. 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
  7. 18 Aug, 2020 1 commit
  8. 15 Aug, 2020 1 commit
  9. 01 Jul, 2020 1 commit
  10. 15 Jun, 2020 1 commit
  11. 13 Jun, 2020 1 commit
  12. 10 Jun, 2020 1 commit
  13. 09 Jun, 2020 2 commits
  14. 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
  15. 08 Apr, 2020 2 commits
  16. 16 Dec, 2019 1 commit
  17. 02 Sep, 2019 1 commit
  18. 31 Aug, 2019 1 commit
  19. 30 Aug, 2019 1 commit
  20. 21 Aug, 2019 1 commit
  21. 14 Aug, 2019 1 commit
  22. 08 Jul, 2019 1 commit
    • Samuel Rowlinson's avatar
      Changed np.matrix to np.array for ABCD matrices, trying new structure for · d54ae79b
      Samuel Rowlinson authored
      coupling coefficient calculations (only in Mirror currently).
      
      Using np.array instead of np.matrix is advised by the numpy/scipy developers as
      the latter could be deprecated/removed eventually; and the former has support for
      convenient matrix multiplication as of Python 3.5.
      
      Adding a new code structure for computing coupling coefficient matrices (in Mirror) which
      should make it easier to fit together once we have knm_map and knm_aperture matrix fields
      in this class. It may also make sense to add symbolic knm fields to the new MirrorKnmMatrices
      data class when attempting to implement analytic coupling coefficient computations via sympy
      (or otherwise) in the near future.
      d54ae79b
  23. 01 Jul, 2019 1 commit
  24. 07 Jun, 2019 1 commit
    • Samuel Rowlinson's avatar
      Changing the way HOM n, m indices are stored in Model · 572f463a
      Samuel Rowlinson authored
      The Model now has a select_modes method for adding specific modes to a Model, as
      well as a more traditional maxtem setter for including all nodes up to a specific
      order. Changed this HOM storage from a list to a np.ndarray with dtype=(np.intc, 2) -
      it should be easy to just pass this off to the Knm extension to compute the
      necessary couplings when that's sorted out (removing the need for the Model._c_homs
      attribute to do this).
      572f463a
  25. 20 May, 2019 1 commit
    • Phil Jones's avatar
      Add initial support for quantum noise calculations. · 639a71bb
      Phil Jones authored
      The QuantumNoiseDetector can now be used to get the amplitude spectral
      density of the quantum noise at a node. Components that can be a source
      of quantum noise via e.g. losses can define a `_fill_qnoise_rhs` method,
      akin to the existing `_fill_rhs` for light sources. Currently, quantum
      noise sources include open ports, laser noise, and mirror and
      beamsplitter losses.
      639a71bb
  26. 29 Apr, 2019 1 commit
    • Samuel Rowlinson's avatar
      Changes to Model API in preparation for HOM implementation (WIP) · 969fa822
      Samuel Rowlinson authored
      Added maxtem property to the Model class in addition to a spatial_type attribute
      which tells us whether a model is currently in the plane wave or modal basis. These
      attributes can be specified on construction of the Model.
      
      The line model.homs.append("00") is no longer required for plane-wave (nor HOM)
      models - the homs list is kept empty for plane-wave models whilst it is filled
      with the necessary modes for modal models.
      
      Each components' _on_build (and _fill_matrix where necessary) will now check for
      whether a simulation is modal or not and set the coupling matrix sizes accordingly.
      969fa822
  27. 08 Apr, 2019 1 commit
    • Phil Jones's avatar
      Initial work on splitting frequencies into sources and dependents. · e68737aa
      Phil Jones authored
      All frequency objects are now represented by some linear combination of
      various `SourceFrequency` objects. These sources are the only things
      that actually store a numerical value, making updating the same
      frequency at various points in a simulation much easier.
      e68737aa
  28. 28 Mar, 2019 1 commit
    • Phil Jones's avatar
      Improving start-up time. · 5a568381
      Phil Jones authored
      This is mostly moving some heavy imports (e.g. scipy) to where they are
      used, and generating the version info at build time rather than using
      `pkg_resources` which is *very* slow. Reduces start-up time for a real
      install (not development) to ~.16s on my machine.
      
      In the future, we should check the runtime cost of putting `import`s
      within some of these functions.
      5a568381
  29. 17 Mar, 2019 1 commit
  30. 08 Mar, 2019 1 commit
    • Daniel Brown's avatar
      Adding in feedback example · 8617d0e4
      Daniel Brown authored
      Changing Filter -> FilterZPK, accepts (z,p,k) tuple as input on c
      
      Changing photodiode p nodes to n nodes due to port.number error
      
      Switching off space phase signal at the moment, was throwing an error about not being able to find the submatrix
      
      Changing default styling of plots
      8617d0e4
  31. 10 Feb, 2019 2 commits