1. 23 Jan, 2021 1 commit
  2. 22 Jan, 2021 1 commit
  3. 21 Jan, 2021 2 commits
  4. 10 Jan, 2021 1 commit
  5. 15 Dec, 2020 1 commit
  6. 07 Dec, 2020 2 commits
  7. 23 Oct, 2020 1 commit
    • Samuel Rowlinson's avatar
      Using cy_expr for fast evaluation of changing symbolic ABCD matrix elements · 96392eaf
      Samuel Rowlinson authored
      Each relevant ConnectorWorkspace now stores an array of pointers to cy_expr
      containing the changing symbolic ABCD matrix elements (NULL if not changing).
      These are evaluated (with direct pointer access) during the update_parameter_values
      routine of each of these workspaces.
      This optimisation also allows for a cleaner API for ABCD methods of components,
      removing the _sim_cache argument and now just storing the full symbolic and
      corresponding numeric matrix in _abcd_matrices dict rather than a bunch of simulation
      stuff that needed to be reset / cleared on simulation completion. The method for
      updating ABCD matrices outside of simulations remains the same.
      Also fixed a bug in cy_expr_init which resulted in inconsistency between changing
      parameter target pointers used due to an incorrect method for finding the index.
  8. 21 Oct, 2020 2 commits
    • 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.
    • Sean Leavey's avatar
      Fix lots of documentation warnings · e035bade
      Sean Leavey authored
  9. 05 Oct, 2020 1 commit
    • Samuel Rowlinson's avatar
      Implementing GeometricParameter class for efficient updating of ABCD matrices · 6bd96f79
      Samuel Rowlinson authored
      Connector ABCD matrices were previously getting updated when a dependent parameter
      changed via the post_set handle passed to the model_parameter decorator; where this
      post_set method was Connector._evaluate_abcd_matrices. This meant that a Python call
      had to be performed whenever changing a geometric type parameter.
      As this method was getting the devil beaten out of it during any simulation where a
      RoC, focal length, etc. was changing, having this as a Python call was not ideal.
      A new GeometricParameter class (deriving from Parameter) has been created to fix this
      inefficiency. Now the GeometricParameter.update_abcd_matrices method (a C function) is
      called whenever the value of the parameter changes.
  10. 29 Sep, 2020 1 commit
  11. 23 Sep, 2020 1 commit
  12. 16 Sep, 2020 1 commit
  13. 21 Aug, 2020 1 commit
  14. 12 Jul, 2020 1 commit
    • Samuel Rowlinson's avatar
      Implementing CavityWorkspace for faster & cleaner cavity updating during simulation · dfcb5663
      Samuel Rowlinson authored
      This workspace makes use of the internal TraceTree of each cavity in the simulation
      trace forest to re-compute round-trip ABCD matrices (and dependencies, such as
      eigenmode, stability) if necessary. The ABCDSolution objects previously stored in
      Cavity are gone now as this solution is much cleaner and faster - also means caching
      of cavities in run_axes_scan of runners.pyx is no longer required.
      Duplication of code between Cavity and CavityWorkspace remains for now. This will be
      changed so that both use a single C based version (currently CavityWorkspace implements
      a fast C version of each update function whilst Cavity implements some Python methods
      for updating eigenmodes / stabilities and such).
      Also added in this commit is a work in progress trim method for TraceForest which
      will remove the need for checking traversed nodes during tree propagation beam tracing.
  15. 01 Jul, 2020 1 commit
  16. 18 May, 2020 1 commit
  17. 14 May, 2020 1 commit
  18. 13 May, 2020 1 commit
    • Samuel Rowlinson's avatar
      Moving Space.set_gouy_phase to Cython, other modal simulation updates · fe1c1b0e
      Samuel Rowlinson authored
      Further optimisations to the modal update stack, removing nearly all
      Python interactions now. Still need to Cythonise laser power coeff
      gouy phase updating.
      Implementing flag_knm_workspace_changing functions to set the scattering
      matrices which should be re-computed during the simulation. Currently just
      setting all is_changing flags to false until determine_changing_beam_params
      is implemented properly.
      Removed seemingly unnecessary extra Model.built call in actions.XNaxis.do which
      was duplicating simulation initialisations.
  19. 12 May, 2020 2 commits
  20. 11 May, 2020 5 commits
  21. 10 May, 2020 2 commits
  22. 09 May, 2020 2 commits
    • Daniel Brown's avatar
    • Daniel Brown's avatar
      Working on making actions more efficient in preparation for being able to... · 890d42ce
      Daniel Brown authored
      Working on making actions more efficient in preparation for being able to apply cythonised functions as actions. Trying out a similar idea with workspaces for an action. As an action is an abtract, it operates on a particular state being passed into it. So now there is a setup method which returns a workspace. That workspace holds all the releveant data and a pointer to a 'do' method, which accepts a workspace to act on. So before running, the action tree is traversed and the actions are setup, performing the action is then a more optimised method, potentially a cython call. This also opens up for moving locks into an action, as now the pre-step can be a fast call to a C function and not waste time in python land.
  23. 07 May, 2020 1 commit
  24. 06 May, 2020 1 commit
  25. 29 Apr, 2020 1 commit
  26. 22 Apr, 2020 1 commit
  27. 20 Apr, 2020 4 commits
    • 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.
    • Phil Jones's avatar
    • Phil Jones's avatar
      Change Xaxis action argument order. · c57540d4
      Phil Jones authored
      The order now matches that of the previously existing xNaxis functions
      in `finesse/analysis/axes.py`.
    • Samuel Rowlinson's avatar
      Caching of numeric round-trip ABCD matrices in cavities · e0e8c253
      Samuel Rowlinson authored
      The round-trip ABCD matrices for each cavity now get evaluated
      once, before the start of an axis sweep, if none of the parameters
      inside the cavity are changing. If any parameters are changing then
      the ABCDs are cached on each loop iteration.
      This caching is also applied indivually to the `Model.beam_trace` method,
      where checks are added to prevent re-evaluation if caching has already
      been performed as part of a simulation.
      Caching of the round-trip ABCDs results in approximately 40% speed-up in
      beam tracing for a full aLIGO file.