Skip to content
  • 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.
    96392eaf