solve_time_segment_single_sine_wave

solve_time_segment_single_sine_wave(solver, y0s, noise_coeffs, time_segment, method, batch_size, rng=None)

Solve a constant-envelope single-sine segment.

The method simulates one sine period on identity initial conditions, then reconstructs the full segment from powers of the single-cycle propagator.

Note

This method applies to segments with a single nonzero driving frequency and a constant envelope. Instead of simulating the full segment directly, it simulates only one sine period and uses that result to reconstruct the full propagator.

If \(T = 1 / f\) is the period of the drive, then the full evolution is reconstructed from the single-cycle propagator according to

\[U(nT + \tau) = U(\tau) [U(T)]^n, \qquad 0 \leq \tau < T.\]

In practice, Simphony projects the requested evaluation times into a single period, solves the dynamics there once on identity initial conditions, and then reconstructs the full-segment evolution by taking matrix powers of the single-cycle propagator. This can reduce both memory usage and runtime substantially for long constant-envelope pulses.

Parameters:
  • solver (Solver) – Solver instance used to propagate the segment.

  • y0s (List[ndarray | Array]) – Initial states or operators, one per simulated shot.

  • noise_coeffs (List[Sequence[float]]) – Shot-dependent noise strengths aligned with y0s.

  • time_segment – Prepared time segment containing the projected single-cycle simulation data.

  • method (str) – Low-level integration method passed through to Solver.solve_batch().

  • batch_size (int | None) – Optional shot-batch size for batched simulation.

  • rng – Optional simulation-local random number generator used for jittered time-grid construction.

Return type:

SolverResult

Returns:

Solver result on time_segment.simulation.t_eval reconstructed from the simulated single-cycle propagator.