Maintenance will be performed on,,, and on Tuesday 22nd September 2020 starting at approximately 9am MST.It is expected to take around 15 minutes and there will be a short period of downtime towards the end of the maintenance window. Please address any comments, questions, or concerns to

  1. 17 Sep, 2020 3 commits
    • Samuel Rowlinson's avatar
      Some more useful beam tracing / mode matching tools · 4d28293d
      Samuel Rowlinson authored
      Added a symbolic_trace method (to Model) and corresponding solution object, providing
      symbolic expressions for beam parameters, accumulated Gouy phases and composite ABCD
      matrices along an arbitrary path of the model. The solution object then exposes some
      convenience methods for retrieving acc. Gouy phases over parts of the path, beam-sizes
      at specific nodes or components etc.
      Implemented a cavity_mismatch function which computes a mismatch figure-of-merit between
      all the cavities of the model (or between just two cavities if specified).
      Added an enable_only argument to Model.beam_trace which will switch off all dependencies
      apart from the ones given in this arg - this is used by the cavity_mismatch function.
    • Phil Jones's avatar
      Fix motion detectors. · f17742f2
      Phil Jones authored
    • Phil Jones's avatar
      Fix special $fs variable in legacy parser. · 8e3db9de
      Phil Jones authored
      Previously, fsigs were created after detectors, meaning that detectors
      couldn't reference "$fs" and "$mfs" properly (and this check wasn't
      being performed anyway). This is fixed by constructing fsigs first.
  2. 16 Sep, 2020 2 commits
  3. 15 Sep, 2020 3 commits
    • Samuel Rowlinson's avatar
      Allowing use of Port objects for source node of Cavities · a24980dc
      Samuel Rowlinson authored
      I was previously only allowing OpticalNode instances as the source node, but
      a Port can be given now too - where the source is then defined as the output
      optical node of the port given.
    • Samuel Rowlinson's avatar
      Making sure TotalReflectionErrors get caught in ctracer when constructing trees · 9dc326b0
      Samuel Rowlinson authored
      Previously, if a user had a file with beamsplitters which caused total reflections, these
      exceptions were being ignored in the cdef methods of TraceForest - resulting in nasty
      error messages.
    • Samuel Rowlinson's avatar
      Minor convenience changes · d81094d0
      Samuel Rowlinson authored
      Propagating q_in to next output node if first node of path is an input node
      in Model.acc_gouy.
      Added as_bp flag (default: True) to BeamParam.eval method for determining whether
      returned value should be a BeamParam instance or just a complex number (or iterable
      of complex numbers, if using array parameter substitutions).
  4. 09 Sep, 2020 1 commit
  5. 08 Sep, 2020 1 commit
  6. 04 Sep, 2020 1 commit
  7. 02 Sep, 2020 1 commit
    • Samuel Rowlinson's avatar
      Minor bug fixes and improvements · 1dc8f5d2
      Samuel Rowlinson authored
      Fixed bugs in Model.ABCD and Model.utility_trace when specifying from, to nodes
      rather than a pre-computed path.
      Added support for using Ports as keys to beam trace solution object such that
      a dict of input, output node beam params are returned.
  8. 01 Sep, 2020 1 commit
    • Samuel Rowlinson's avatar
      Fixes #170, #171 · fefaf4e2
      Samuel Rowlinson authored
      Typo fixed in Model.acc_gouy resulting in errors when from_node, to_node are specified.
      Checking that startnode arg in Model.beam_trace is of type OpticalNode before continuing.
      Removed deepcopy operation from data property of BaseTraceSolution - no need for this copy.
  9. 25 Aug, 2020 1 commit
    • Samuel Rowlinson's avatar
      Minor convenience changes · 152d4134
      Samuel Rowlinson authored
      Allowed `gaussian.transform_beam_param` function to handle array-like q1 argument. Also
      updated `BeamParam.overlap` and `BeamParam.mismatch` to support array computation rather
      than just singular beam parameters.
      Automatically switching Model to modal, if not already, when adding a bp/cp/gouy/knm detector.
  10. 21 Aug, 2020 1 commit
  11. 20 Aug, 2020 1 commit
    • Samuel Rowlinson's avatar
      Changing the way beam trace solution objects are displayed · ef887455
      Samuel Rowlinson authored
      Updated the `__str__` method of SimulationTraceSolution to use the
      Model trace forest for making a string of trees with beam parameters
      displayed at each node. This allows one to more easily see the order
      in which traces were performed when printing the trace solution.
  12. 19 Aug, 2020 3 commits
  13. 18 Aug, 2020 11 commits
  14. 17 Aug, 2020 1 commit
    • Samuel Rowlinson's avatar
      Refs #166 -- improvements and bug fixes for unique TraceTree construction · 063d1915
      Samuel Rowlinson authored
      Keeping track of node coverage during planting of the TraceForest now, with some
      checks to avoid duplicating sub-trees from multiple sources. This works in most
      common cases, and correctly trims the sub-trees which should be overwritten by higher
      priority trees. More complicated cases involving branches at AR surface beam splitters
      are still unstable for now, but likely easier to fix with these changes.
      Also improved how TraceForest and TraceTree instances get displayed when converting
      to str and printing -> forests in particular now show the index (i.e. tracing priority)
      of each tree along with the dependency sub-heading as before.
      Minor change to Model.add when adding Cavity / Gauss objects - the model will now be
      switched to modal (with maxtem 0) automatically if it was not modal already.
      Started adding some test cases for TraceForest construction, with todo comments on
      the cases which need to be added for completion.
  15. 15 Aug, 2020 1 commit
  16. 14 Aug, 2020 1 commit
  17. 13 Aug, 2020 1 commit
    • Samuel Rowlinson's avatar
      Refs #166 -- switching to bfs_tree from dfs_tree in TraceTree construction from node · ca0697cf
      Samuel Rowlinson authored
      Depth-first-search was resulting in some nodes not being visited when constructing
      trace tree instances where symmetric flag is true (i.e. the default behaviour, where opposite
      nodes will have q set to -q*) as the source node of the adjacency tree was being marked
      as already visited. Switching this to a breadth-first-search seems to, nominally, fix this issue
      as the broader paths from a source are visited first now.
      Leaving this issue open for now as not completely sure that this will conclusively fix
      the problem - and may cause other issues as it's a fairly fundamental change to the
      TraceTree construction which is used in many places.
  18. 06 Aug, 2020 1 commit
    • Samuel Rowlinson's avatar
      Fixing #165 · 4c2a55cb
      Samuel Rowlinson authored
      Backwards propagated gauss node trees were being erroneously marked as
      source trees, leading to overwrites of the original forward propagated
      tree during the tracing. This has been fixed now by making sure the
      is_gauss flag passed to `TraceTree.from_node` remains False when making
      the backwards tree.
  19. 03 Aug, 2020 1 commit
    • Samuel Rowlinson's avatar
      Changed default behaviour of Operation.eval when substituting parameters · b496d002
      Samuel Rowlinson authored
      Meshgrid construction of multiple array-like substitutions must be enabled
      via the `grids` argument to `eval`. This avoids needing to specify nogrids
      arg when using `eval` in the "base" code (i.e. for interal simulation code). It
      also means that the default behaviour is to allow numpy to attempt broadcasting
      of the array substitutions given instead of trying to make grids straight away.
      This commit also moves a couple of common "constant" calculations (f0, k0) into the
      initialisation of a BaseSimulation (storing in `model_data`) rather than re-computing
      on every call to the re-fill matrix functions of surfaces.
  20. 29 Jul, 2020 1 commit
  21. 28 Jul, 2020 1 commit
  22. 24 Jul, 2020 1 commit
    • Samuel Rowlinson's avatar
      Improvements to TraceForest - removing duplicate sub-trees · c6d949c9
      Samuel Rowlinson authored
      Added a trim method to TraceForest which walks through the trees
      and removes duplicate branches. This avoids needing to keep track
      of which nodes have been traversed during the tracing routine, providing
      another optimisation (reducing the CPython interaction for beam tracing during
      a simulation to effectively zero).
      Also fixed an issue in adding beam splitter branch trees (now done recursively
      to catch all missing paths) and a bug where a single node tree could be added
      to the forest for a backwards gauss propagation where nothing is present before
      the gauss node.
  23. 22 Jul, 2020 1 commit