rydiqule.timesolvers.solve_eom_stack

rydiqule.timesolvers.solve_eom_stack(eoms_base: ndarray, const: ndarray, eom_time_r: ndarray, const_r: ndarray, eom_time_i: ndarray, const_i: ndarray, time_inputs: List[Callable[[float], complex]], t_eval: ndarray, init_cond: ndarray, solver, **kwargs) ndarray[source]

Solve a stack of equations of motion with shape (*l, n, n) in the time domain.

Companion function to solve_time(), but can be invoked on its for equations already formatted.

Parameters:
  • eoms_base (numpy.ndarray) – Array of shape (*l, n, n) representing the part of equations of motion of the system which do not respond to external fields.

  • const (numpy.ndarray) – constant term of shape (n,) added in differential equations. Typically generated by generate_eom().

  • eoms_time_r (list[numpy.ndarray]) – list of arrays of shape (basis_size^2-1, basis_size^2-1) representing the parts of the OBEs with a real-valued time-dependence. In the solver, this array will be multiplied by a time-dependent rabi frequency. Typically a matrix of mostly zeros, with non-zero terms corresponding to a particular time-dependent coupling

  • const_r (numpy.ndarray) – Constant term of shape (n,) added in a real time-dependent portion of differential equations. Typically generated by generate_eom_time().

  • eoms_time_i (numpy.ndarray) – list of arrays of shape (basis_size^2-1, basis_size^2-1) representing the parts of the OBEs with an imaginary-valued time-dependence. In the solver, this array will be multiplied by a time-dependent rabi frequency.

  • const_i (numpy.ndarray) – constant term of shape (n,) added in an imaginary time-dependent portion of differential equations. Typically generated by generate_eom_time().

  • t_eval (numpy.ndarray) – 1-D array of times, in microseconds, at which to evaluate the solution. Does not affect evaluations in the solve.

  • time_inputs (list[function float->float]) – List of functions which represent the rabi frequency of a field as a function of time. list length should be identical to the length of obes_time. In the solver, the i th time input will be evaluated at time t and multiplied by the i th entry of obes_time.

  • tuple(float) (time_range) – Pair of values represent the start and end time, in microseconds, of the simulation.

  • init_cond (numpy.ndarray or None, optional) – Density matrix representing the initial state of the system. If specified, the shape should be either (n) in the case of a single initial condition for all parameter values, or should be of shape (*l, n) matching the output shape of a steady state solve if the initial condition may be different for different combinations of parameters. If None, will solve the problem in the steady state with all time-dependent fields “off” and use the solution as the initial condition for the time behavior. Other possible manual options might include a matrix populated by zeros representing the entire population in the ground state. Defaults to None.

Returns:

Flattened solution array corresponding to time points.

Return type:

numpy.ndarray