Trajectories

A trajectory bundles a quantum system, a control pulse, and a goal into the central object that problem templates consume.

Overview

Every trajectory type defines:

  • The state$x_k$ and its dynamics $x_{k+1} = \exp(\Delta t_k\, G(\boldsymbol{u}_k))\, x_k$
  • The initial condition$x_1 = x_{\text{init}}$
  • The goal$x_{\text{goal}}$ and associated fidelity metric

Trajectory Types

TypeDynamicsState $x_k$Fidelity $F$$\dim(x_k)$
UnitaryTrajectory$\dot{U} = -iH\,U$$\tilde{U} \in \mathbb{R}^{2d^2}$$\lvert\operatorname{tr}(U_g^\dagger U)\rvert^2 / d^2$$2d^2$
KetTrajectory$\dot{\psi} = -iH\,\psi$$\tilde{\psi} \in \mathbb{R}^{2d}$$\lvert\langle\psi_g\mid\psi\rangle\rvert^2$$2d$
DensityTrajectory$\dot{\rho} = \mathcal{G}\,\text{vec}(\rho)$$\tilde{\rho} \in \mathbb{R}^{d^2}$ (compact)$\operatorname{tr}(\rho_g\,\rho)$$d^2$
MultiKetTrajectory$\dot{\psi}_j = -iH\,\psi_j$multiple $\tilde{\psi}_j$coherent (see below)$2d \times n_{\text{states}}$
MultiDensityTrajectory$\dot{\rho}_j = \mathcal{G}\,\text{vec}(\rho_j)$multiple $\tilde{\rho}_j$weighted average (see below)$d^2 \times M$
SamplingTrajectoryper-system dynamicsper-system statesaverage fidelityvaries

The isomorphic state $x_k$ is always a real vector; see Isomorphisms for the conversions.

UnitaryTrajectory

For synthesizing quantum gates. The propagator satisfies $\dot{U} = G(\boldsymbol{u})\,U$ with $U(0) = I$.

Construction

using Piccolo

# Define system
H_drift = PAULIS[:Z]
H_drives = [PAULIS[:X], PAULIS[:Y]]
sys = QuantumSystem(H_drift, H_drives, [1.0, 1.0])

# Create pulse
T, N = 10.0, 100
times = collect(range(0, T, length = N))
pulse = ZeroOrderPulse(0.1 * randn(2, N), times)

# Create trajectory with goal
U_goal = GATES[:X]
qtraj = UnitaryTrajectory(sys, pulse, U_goal)
UnitaryTrajectory{ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, SciMLBase.ODESolution{ComplexF64, 3, Vector{Matrix{ComplexF64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, SciMLBase.ODEProblem{Matrix{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqLinear.MagnusAdapt4, OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Matrix{ComplexF64}}, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, OrdinaryDiffEqLinear.MagnusAdapt4Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, Nothing}, Nothing}, SciMLBase.DEStats, Nothing, Nothing, Nothing, Nothing}, Matrix{ComplexF64}}(QuantumSystem: levels = 2, n_drives = 2, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}(DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}([-0.028176293381213326 -0.03609942367027249 … 0.04114134302873276 0.05754329219083601; -0.08300173877540795 -0.025398958099339272 … -0.0035628088671766016 0.0030420531991268932], [0.0, 0.10101010101010101, 0.20202020202020202, 0.30303030303030304, 0.40404040404040403, 0.5050505050505051, 0.6060606060606061, 0.7070707070707071, 0.8080808080808081, 0.9090909090909091  …  9.090909090909092, 9.191919191919192, 9.292929292929292, 9.393939393939394, 9.494949494949495, 9.595959595959595, 9.696969696969697, 9.797979797979798, 9.8989898989899, 10.0], Union{}[], nothing, :left, DataInterpolations.ExtrapolationType.None, DataInterpolations.ExtrapolationType.None, FindFirstFunctions.Guesser{Vector{Float64}}([0.0, 0.10101010101010101, 0.20202020202020202, 0.30303030303030304, 0.40404040404040403, 0.5050505050505051, 0.6060606060606061, 0.7070707070707071, 0.8080808080808081, 0.9090909090909091  …  9.090909090909092, 9.191919191919192, 9.292929292929292, 9.393939393939394, 9.494949494949495, 9.595959595959595, 9.696969696969697, 9.797979797979798, 9.8989898989899, 10.0], Base.RefValue{Int64}(100), true), false, true), 10.0, 2, :u, [0.0, 0.0], [0.0, 0.0]), ComplexF64[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im], ComplexF64[0.0 + 0.0im 1.0 + 0.0im; 1.0 + 0.0im 0.0 + 0.0im], SciMLBase.ODESolution{ComplexF64, 3, Vector{Matrix{ComplexF64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, SciMLBase.ODEProblem{Matrix{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqLinear.MagnusAdapt4, OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Matrix{ComplexF64}}, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, OrdinaryDiffEqLinear.MagnusAdapt4Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, Nothing}, Nothing}, SciMLBase.DEStats, Nothing, Nothing, Nothing, Nothing}(Matrix{ComplexF64}[[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im], [0.9949658135575967 - 0.09983213739979396im 0.008286240989848327 + 0.0028128995922501927im; -0.00828624098984833 + 0.0028128995922501935im 0.9949658135575967 + 0.09983213739979394im], [0.9799872724124405 - 0.19868561622297895im 0.010737178940712636 + 0.005803861138518704im; -0.010737178940712638 + 0.005803861138518704im 0.97998727241244 + 0.1986856162229788im], [0.9553133602817907 - 0.2954461226242563im 0.0074092841419013756 - 0.0057510696319361225im; -0.007409284141901382 - 0.005751069631936118im 0.9553133602817906 + 0.2954461226242561im], [0.9209824103200249 - 0.38943517669752775im 0.00958040616124445 + 0.006313386529310145im; -0.009580406161244455 + 0.006313386529310147im 0.920982410320025 + 0.3894351766975276im], [0.8774541520690148 - 0.4795166053054841im 0.004164725351446999 + 0.010985959944367296im; -0.004164725351447004 + 0.010985959944367296im 0.877454152069015 + 0.479516605305484im], [0.8251150630713922 - 0.5648164117322982im -0.005657257932669425 + 0.011642558276802377im; 0.005657257932669423 + 0.011642558276802372im 0.8251150630713923 + 0.5648164117322979im], [0.7646007067922177 - 0.6443314852622815im -0.0033623488217024017 + 0.014539287566671114im; 0.003362348821702402 + 0.014539287566671106im 0.7646007067922178 + 0.6443314852622809im], [0.6960796942244178 - 0.7170807397204231im -0.004467636784117938 + 0.035331462353267805im; 0.004467636784117948 + 0.035331462353267805im 0.6960796942244173 + 0.7170807397204221im], [0.6208212324797584 - 0.7827475563366613im -0.001124925826560551 + 0.04342804270500875im; 0.0011249258265605645 + 0.043428042705008774im 0.6208212324797582 + 0.7827475563366605im]  …  [-0.9463284144663887 - 0.3181689737642491im 0.05683487334080913 + 0.0009128415404461268im; -0.05683487334080916 + 0.0009128415404458894im -0.9463284144663937 + 0.3181689737642501im], [-0.9735422306401168 - 0.22182470954326797im 0.054850778251599536 + 0.0008458850469614955im; -0.05485077825159954 + 0.0008458850469612331im -0.9735422306401214 + 0.22182470954326844im], [-0.9911639991953597 - 0.12311116049463354im 0.049205749547145745 + 0.004045129446392724im; -0.049205749547145766 + 0.004045129446392426im -0.9911639991953644 + 0.12311116049463362im], [-0.9981070523392606 - 0.02385122191504631im 0.056189274381153516 - 0.007496447713434735im; -0.05618927438115351 - 0.007496447713435005im -0.9981070523392656 + 0.023851221915045944im], [-0.9943339742363289 + 0.0755651161505038im 0.07147266779075696 - 0.021943533430839084im; -0.07147266779075691 - 0.021943533430839317im -0.994333974236334 - 0.07556511615050467im], [-0.9811001095849661 + 0.17500980567536187im 0.07908698128610114 - 0.023651475237303616im; -0.07908698128610096 - 0.023651475237303866im -0.9811001095849707 - 0.17500980567536317im], [-0.9583000379594643 + 0.2733684775090623im 0.08170739407933426 - 0.015956644510674647im; -0.08170739407933406 - 0.015956644510674956im -0.9583000379594687 - 0.2733684775090641im], [-0.9242605594070048 + 0.3680428017159658im 0.09998456891266859 - 0.017029398376631196im; -0.09998456891266816 - 0.0170293983766315im -0.9242605594070084 - 0.368042801715968im], [-0.8843866559108703 + 0.45866568174989225im 0.0819031063195131 - 0.02789115284312567im; -0.08190310631951264 - 0.0278911528431259im -0.884386655910873 - 0.45866568174989464im], [-0.8343145408146107 + 0.5449882657778342im 0.07650955658537803 - 0.032454967276096605im; -0.07650955658537753 - 0.03245496727609679im -0.8343145408146129 - 0.5449882657778368im]], nothing, nothing, [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9  …  9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10.0], Vector{Matrix{ComplexF64}}[[[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im]]], nothing, SciMLBase.ODEProblem{Matrix{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}(SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}(MatrixOperator(2 × 2), LinearAlgebra.UniformScaling{Bool}(true), nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, SciMLBase.DEFAULT_OBSERVED, nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(Dict{Symbol, Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(:U => CartesianIndices((2, 2)), :U_2_2 => CartesianIndex(2, 2), :U_1_1 => CartesianIndex(1, 1), :U_2_1 => CartesianIndex(2, 1), :U_1_2 => CartesianIndex(1, 2)), :t, Dict{Symbol, Float64}()), nothing, nothing), ComplexF64[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im], (0.0, 10.0), SciMLBase.NullParameters(), Base.Pairs(:tstops => [0.0, 0.1, 0.10101010101010101, 0.2, 0.20202020202020202, 0.3, 0.30303030303030304, 0.4, 0.40404040404040403, 0.5  …  9.5, 9.595959595959595, 9.6, 9.696969696969697, 9.7, 9.797979797979798, 9.8, 9.8989898989899, 9.9, 10.0]), SciMLBase.StandardODEProblem()), OrdinaryDiffEqLinear.MagnusAdapt4(), OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Matrix{ComplexF64}}, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, OrdinaryDiffEqLinear.MagnusAdapt4Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, Nothing}, Nothing}(SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}(MatrixOperator(2 × 2), LinearAlgebra.UniformScaling{Bool}(true), nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, SciMLBase.DEFAULT_OBSERVED, nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(Dict{Symbol, Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(:U => CartesianIndices((2, 2)), :U_2_2 => CartesianIndex(2, 2), :U_1_1 => CartesianIndex(1, 1), :U_2_1 => CartesianIndex(2, 1), :U_1_2 => CartesianIndex(1, 2)), :t, Dict{Symbol, Float64}()), nothing, nothing), Matrix{ComplexF64}[[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im], [0.9949658135575967 - 0.09983213739979396im 0.008286240989848327 + 0.0028128995922501927im; -0.00828624098984833 + 0.0028128995922501935im 0.9949658135575967 + 0.09983213739979394im], [0.9799872724124405 - 0.19868561622297895im 0.010737178940712636 + 0.005803861138518704im; -0.010737178940712638 + 0.005803861138518704im 0.97998727241244 + 0.1986856162229788im], [0.9553133602817907 - 0.2954461226242563im 0.0074092841419013756 - 0.0057510696319361225im; -0.007409284141901382 - 0.005751069631936118im 0.9553133602817906 + 0.2954461226242561im], [0.9209824103200249 - 0.38943517669752775im 0.00958040616124445 + 0.006313386529310145im; -0.009580406161244455 + 0.006313386529310147im 0.920982410320025 + 0.3894351766975276im], [0.8774541520690148 - 0.4795166053054841im 0.004164725351446999 + 0.010985959944367296im; -0.004164725351447004 + 0.010985959944367296im 0.877454152069015 + 0.479516605305484im], [0.8251150630713922 - 0.5648164117322982im -0.005657257932669425 + 0.011642558276802377im; 0.005657257932669423 + 0.011642558276802372im 0.8251150630713923 + 0.5648164117322979im], [0.7646007067922177 - 0.6443314852622815im -0.0033623488217024017 + 0.014539287566671114im; 0.003362348821702402 + 0.014539287566671106im 0.7646007067922178 + 0.6443314852622809im], [0.6960796942244178 - 0.7170807397204231im -0.004467636784117938 + 0.035331462353267805im; 0.004467636784117948 + 0.035331462353267805im 0.6960796942244173 + 0.7170807397204221im], [0.6208212324797584 - 0.7827475563366613im -0.001124925826560551 + 0.04342804270500875im; 0.0011249258265605645 + 0.043428042705008774im 0.6208212324797582 + 0.7827475563366605im]  …  [-0.9463284144663887 - 0.3181689737642491im 0.05683487334080913 + 0.0009128415404461268im; -0.05683487334080916 + 0.0009128415404458894im -0.9463284144663937 + 0.3181689737642501im], [-0.9735422306401168 - 0.22182470954326797im 0.054850778251599536 + 0.0008458850469614955im; -0.05485077825159954 + 0.0008458850469612331im -0.9735422306401214 + 0.22182470954326844im], [-0.9911639991953597 - 0.12311116049463354im 0.049205749547145745 + 0.004045129446392724im; -0.049205749547145766 + 0.004045129446392426im -0.9911639991953644 + 0.12311116049463362im], [-0.9981070523392606 - 0.02385122191504631im 0.056189274381153516 - 0.007496447713434735im; -0.05618927438115351 - 0.007496447713435005im -0.9981070523392656 + 0.023851221915045944im], [-0.9943339742363289 + 0.0755651161505038im 0.07147266779075696 - 0.021943533430839084im; -0.07147266779075691 - 0.021943533430839317im -0.994333974236334 - 0.07556511615050467im], [-0.9811001095849661 + 0.17500980567536187im 0.07908698128610114 - 0.023651475237303616im; -0.07908698128610096 - 0.023651475237303866im -0.9811001095849707 - 0.17500980567536317im], [-0.9583000379594643 + 0.2733684775090623im 0.08170739407933426 - 0.015956644510674647im; -0.08170739407933406 - 0.015956644510674956im -0.9583000379594687 - 0.2733684775090641im], [-0.9242605594070048 + 0.3680428017159658im 0.09998456891266859 - 0.017029398376631196im; -0.09998456891266816 - 0.0170293983766315im -0.9242605594070084 - 0.368042801715968im], [-0.8843866559108703 + 0.45866568174989225im 0.0819031063195131 - 0.02789115284312567im; -0.08190310631951264 - 0.0278911528431259im -0.884386655910873 - 0.45866568174989464im], [-0.8343145408146107 + 0.5449882657778342im 0.07650955658537803 - 0.032454967276096605im; -0.07650955658537753 - 0.03245496727609679im -0.8343145408146129 - 0.5449882657778368im]], [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9  …  9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10.0], Vector{Matrix{ComplexF64}}[[[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im]]], nothing, false, OrdinaryDiffEqLinear.MagnusAdapt4Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, Nothing}(ComplexF64[-0.8343145408146107 + 0.5449882657778342im 0.07650955658537803 - 0.032454967276096605im; -0.07650955658537753 - 0.03245496727609679im -0.8343145408146129 - 0.5449882657778368im], ComplexF64[-0.8350643605455973 + 0.5438306985867468im 0.07659019071039022 - 0.03239795839523322im; -0.07659019071038972 - 0.0323979583952334im -0.8350643605455994 - 0.5438306985867493im], ComplexF64[-0.8350643605455973 + 0.5438306985867468im 0.07659019071039022 - 0.03239795839523322im; -0.07659019071038972 - 0.0323979583952334im -0.8350643605455994 - 0.5438306985867493im], ComplexF64[2.0e-8 + 0.0im 1.0e-8 + 0.0im; 1.0e-8 + 0.0im 2.0e-8 + 0.0im], ComplexF64[0.5422249268563761 + 0.8380999561208006im -0.057747058423761065 - 0.04417208623728206im; 0.057747058423761134 - 0.04417208623728164im 0.5422249268563787 - 0.8380999561208027im], ComplexF64[0.0 + 0.0im 0.0 + 0.0im 0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im 0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im 0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im 0.0 + 0.0im 0.0 + 0.0im], ComplexF64[0.5433534462541961 + 0.8388158823216242im -0.06127735707636448 - 0.0268424678868235im; 0.06127735707636453 - 0.026842467886823138im 0.5433534462541987 - 0.8388158823216264im], ComplexF64[0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im], ComplexF64[-0.026280333825535494 - 0.004798585194573789im -0.5073226761672301 - 0.09921913190438862im; 0.5073226748859995 - 0.09921913254500407im -0.02628033938626926 + 0.004798579633839971im], nothing), nothing, false), false, 0, SciMLBase.DEStats(2159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1328, 828, 0.0), nothing, SciMLBase.ReturnCode.Success, nothing, nothing, nothing))

Solve and Analyze

qcp = SmoothPulseProblem(qtraj, N; Q = 100.0)
solve!(qcp; max_iter = 50)
fidelity(qcp)
0.9997914029235936

Extracting the Pulse

optimized_pulse = get_pulse(qcp.qtraj)
duration(optimized_pulse)
14.262180172049334

KetTrajectory

For state preparation: find controls that map $|\psi_{\text{init}}\rangle \to |\psi_{\text{goal}}\rangle$ (up to global phase). The fidelity is $F = |\langle\psi_{\text{goal}}|\psi(T)\rangle|^2$.

Construction

# Initial and goal states
ψ_init = ComplexF64[1, 0]  # |0⟩
ψ_goal = ComplexF64[0, 1]  # |1⟩

qtraj_ket = KetTrajectory(sys, pulse, ψ_init, ψ_goal)
KetTrajectory{ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, SciMLBase.ODESolution{ComplexF64, 2, Vector{Vector{ComplexF64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Vector{ComplexF64}}}, Nothing, SciMLBase.ODEProblem{Vector{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqLinear.MagnusAdapt4, OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Vector{ComplexF64}}, Vector{Float64}, Vector{Vector{Vector{ComplexF64}}}, Nothing, OrdinaryDiffEqLinear.MagnusAdapt4Cache{Vector{ComplexF64}, Vector{ComplexF64}, Matrix{ComplexF64}, Vector{ComplexF64}, Nothing}, Nothing}, SciMLBase.DEStats, Nothing, Nothing, Nothing, Nothing}}(QuantumSystem: levels = 2, n_drives = 2, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}(DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}([-0.028176293381213326 -0.03609942367027249 … 0.04114134302873276 0.05754329219083601; -0.08300173877540795 -0.025398958099339272 … -0.0035628088671766016 0.0030420531991268932], [0.0, 0.10101010101010101, 0.20202020202020202, 0.30303030303030304, 0.40404040404040403, 0.5050505050505051, 0.6060606060606061, 0.7070707070707071, 0.8080808080808081, 0.9090909090909091  …  9.090909090909092, 9.191919191919192, 9.292929292929292, 9.393939393939394, 9.494949494949495, 9.595959595959595, 9.696969696969697, 9.797979797979798, 9.8989898989899, 10.0], Union{}[], nothing, :left, DataInterpolations.ExtrapolationType.None, DataInterpolations.ExtrapolationType.None, FindFirstFunctions.Guesser{Vector{Float64}}([0.0, 0.10101010101010101, 0.20202020202020202, 0.30303030303030304, 0.40404040404040403, 0.5050505050505051, 0.6060606060606061, 0.7070707070707071, 0.8080808080808081, 0.9090909090909091  …  9.090909090909092, 9.191919191919192, 9.292929292929292, 9.393939393939394, 9.494949494949495, 9.595959595959595, 9.696969696969697, 9.797979797979798, 9.8989898989899, 10.0], Base.RefValue{Int64}(100), true), false, true), 10.0, 2, :u, [0.0, 0.0], [0.0, 0.0]), ComplexF64[1.0 + 0.0im, 0.0 + 0.0im], ComplexF64[0.0 + 0.0im, 1.0 + 0.0im], SciMLBase.ODESolution{ComplexF64, 2, Vector{Vector{ComplexF64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Vector{ComplexF64}}}, Nothing, SciMLBase.ODEProblem{Vector{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqLinear.MagnusAdapt4, OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Vector{ComplexF64}}, Vector{Float64}, Vector{Vector{Vector{ComplexF64}}}, Nothing, OrdinaryDiffEqLinear.MagnusAdapt4Cache{Vector{ComplexF64}, Vector{ComplexF64}, Matrix{ComplexF64}, Vector{ComplexF64}, Nothing}, Nothing}, SciMLBase.DEStats, Nothing, Nothing, Nothing, Nothing}(Vector{ComplexF64}[[1.0 + 0.0im, 0.0 + 0.0im], [0.9949658135575967 - 0.09983213739979396im, -0.00828624098984833 + 0.0028128995922501935im], [0.9799872724124405 - 0.19868561622297895im, -0.010737178940712638 + 0.005803861138518704im], [0.9553133602817907 - 0.2954461226242563im, -0.007409284141901382 - 0.005751069631936118im], [0.9209824103200249 - 0.38943517669752775im, -0.009580406161244455 + 0.006313386529310147im], [0.8774541520690148 - 0.4795166053054841im, -0.004164725351447004 + 0.010985959944367296im], [0.8251150630713922 - 0.5648164117322982im, 0.005657257932669423 + 0.011642558276802372im], [0.7646007067922177 - 0.6443314852622815im, 0.003362348821702402 + 0.014539287566671106im], [0.6960796942244178 - 0.7170807397204231im, 0.004467636784117948 + 0.035331462353267805im], [0.6208212324797584 - 0.7827475563366613im, 0.0011249258265605645 + 0.043428042705008774im]  …  [-0.9463284144663887 - 0.3181689737642491im, -0.05683487334080916 + 0.0009128415404458894im], [-0.9735422306401168 - 0.22182470954326797im, -0.05485077825159954 + 0.0008458850469612331im], [-0.9911639991953597 - 0.12311116049463354im, -0.049205749547145766 + 0.004045129446392426im], [-0.9981070523392606 - 0.02385122191504631im, -0.05618927438115351 - 0.007496447713435005im], [-0.9943339742363289 + 0.0755651161505038im, -0.07147266779075691 - 0.021943533430839317im], [-0.9811001095849661 + 0.17500980567536187im, -0.07908698128610096 - 0.023651475237303866im], [-0.9583000379594643 + 0.2733684775090623im, -0.08170739407933406 - 0.015956644510674956im], [-0.9242605594070048 + 0.3680428017159658im, -0.09998456891266816 - 0.0170293983766315im], [-0.8843866559108703 + 0.45866568174989225im, -0.08190310631951264 - 0.0278911528431259im], [-0.8343145408146107 + 0.5449882657778342im, -0.07650955658537753 - 0.03245496727609679im]], nothing, nothing, [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9  …  9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10.0], Vector{Vector{ComplexF64}}[[[1.0 + 0.0im, 0.0 + 0.0im]]], nothing, SciMLBase.ODEProblem{Vector{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}(SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}(MatrixOperator(2 × 2), LinearAlgebra.UniformScaling{Bool}(true), nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, SciMLBase.DEFAULT_OBSERVED, nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(Dict{Symbol, Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(:ψ_2 => 2, :ψ_1 => 1, :ψ => 1:2), :t, Dict{Symbol, Float64}()), nothing, nothing), ComplexF64[1.0 + 0.0im, 0.0 + 0.0im], (0.0, 10.0), SciMLBase.NullParameters(), Base.Pairs(:tstops => [0.0, 0.1, 0.10101010101010101, 0.2, 0.20202020202020202, 0.3, 0.30303030303030304, 0.4, 0.40404040404040403, 0.5  …  9.5, 9.595959595959595, 9.6, 9.696969696969697, 9.7, 9.797979797979798, 9.8, 9.8989898989899, 9.9, 10.0]), SciMLBase.StandardODEProblem()), OrdinaryDiffEqLinear.MagnusAdapt4(), OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Vector{ComplexF64}}, Vector{Float64}, Vector{Vector{Vector{ComplexF64}}}, Nothing, OrdinaryDiffEqLinear.MagnusAdapt4Cache{Vector{ComplexF64}, Vector{ComplexF64}, Matrix{ComplexF64}, Vector{ComplexF64}, Nothing}, Nothing}(SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}(MatrixOperator(2 × 2), LinearAlgebra.UniformScaling{Bool}(true), nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, SciMLBase.DEFAULT_OBSERVED, nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(Dict{Symbol, Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(:ψ_2 => 2, :ψ_1 => 1, :ψ => 1:2), :t, Dict{Symbol, Float64}()), nothing, nothing), Vector{ComplexF64}[[1.0 + 0.0im, 0.0 + 0.0im], [0.9949658135575967 - 0.09983213739979396im, -0.00828624098984833 + 0.0028128995922501935im], [0.9799872724124405 - 0.19868561622297895im, -0.010737178940712638 + 0.005803861138518704im], [0.9553133602817907 - 0.2954461226242563im, -0.007409284141901382 - 0.005751069631936118im], [0.9209824103200249 - 0.38943517669752775im, -0.009580406161244455 + 0.006313386529310147im], [0.8774541520690148 - 0.4795166053054841im, -0.004164725351447004 + 0.010985959944367296im], [0.8251150630713922 - 0.5648164117322982im, 0.005657257932669423 + 0.011642558276802372im], [0.7646007067922177 - 0.6443314852622815im, 0.003362348821702402 + 0.014539287566671106im], [0.6960796942244178 - 0.7170807397204231im, 0.004467636784117948 + 0.035331462353267805im], [0.6208212324797584 - 0.7827475563366613im, 0.0011249258265605645 + 0.043428042705008774im]  …  [-0.9463284144663887 - 0.3181689737642491im, -0.05683487334080916 + 0.0009128415404458894im], [-0.9735422306401168 - 0.22182470954326797im, -0.05485077825159954 + 0.0008458850469612331im], [-0.9911639991953597 - 0.12311116049463354im, -0.049205749547145766 + 0.004045129446392426im], [-0.9981070523392606 - 0.02385122191504631im, -0.05618927438115351 - 0.007496447713435005im], [-0.9943339742363289 + 0.0755651161505038im, -0.07147266779075691 - 0.021943533430839317im], [-0.9811001095849661 + 0.17500980567536187im, -0.07908698128610096 - 0.023651475237303866im], [-0.9583000379594643 + 0.2733684775090623im, -0.08170739407933406 - 0.015956644510674956im], [-0.9242605594070048 + 0.3680428017159658im, -0.09998456891266816 - 0.0170293983766315im], [-0.8843866559108703 + 0.45866568174989225im, -0.08190310631951264 - 0.0278911528431259im], [-0.8343145408146107 + 0.5449882657778342im, -0.07650955658537753 - 0.03245496727609679im]], [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9  …  9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10.0], Vector{Vector{ComplexF64}}[[[1.0 + 0.0im, 0.0 + 0.0im]]], nothing, false, OrdinaryDiffEqLinear.MagnusAdapt4Cache{Vector{ComplexF64}, Vector{ComplexF64}, Matrix{ComplexF64}, Vector{ComplexF64}, Nothing}(ComplexF64[-0.8343145408146107 + 0.5449882657778342im, -0.07650955658537753 - 0.03245496727609679im], ComplexF64[-0.8350643605455973 + 0.5438306985867468im, -0.07659019071038972 - 0.0323979583952334im], ComplexF64[-0.8350643605455973 + 0.5438306985867468im, -0.07659019071038972 - 0.0323979583952334im], ComplexF64[2.0e-8 + 0.0im, 1.0e-8 + 0.0im], ComplexF64[0.5422249268563761 + 0.8380999561208006im, 0.057747058423761134 - 0.04417208623728164im], ComplexF64[0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im], ComplexF64[0.5433534462541961 + 0.8388158823216242im, 0.06127735707636453 - 0.026842467886823138im], ComplexF64[0.0 + 0.0im, 0.0 + 0.0im], ComplexF64[-0.026280333825535494 - 0.004798585194573789im, 0.5073226748859995 - 0.09921913254500407im], nothing), nothing, false), false, 0, SciMLBase.DEStats(2159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1328, 828, 0.0), nothing, SciMLBase.ReturnCode.Success, nothing, nothing, nothing))

Solve

qcp_ket = SmoothPulseProblem(qtraj_ket, N; Q = 100.0)
solve!(qcp_ket; max_iter = 50)
fidelity(qcp_ket)
0.9999980412691527

MultiKetTrajectory

For gates defined by multiple state mappings with coherent phases. The fidelity enforces phase alignment across all state pairs:

\[F = \left| \frac{1}{n} \sum_{j=1}^{n} \langle \psi_{\text{goal},j} | \psi_j(T) \rangle \right|^2\]

This is strictly harder than per-state fidelity because relative phases must be correct for the mapping to represent a valid gate.

Construction

# Define state pairs: X gate maps |0⟩ → |1⟩ and |1⟩ → |0⟩
ψ0 = ComplexF64[1, 0]
ψ1 = ComplexF64[0, 1]

initial_states = [ψ0, ψ1]
goal_states = [ψ1, ψ0]

qtraj_multi = MultiKetTrajectory(sys, pulse, initial_states, goal_states)
MultiKetTrajectory{ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, SciMLBase.EnsembleSolution{ComplexF64, 3, Vector{SciMLBase.ODESolution{ComplexF64, 2, Vector{Vector{ComplexF64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Vector{ComplexF64}}}, Nothing, SciMLBase.ODEProblem{Vector{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqLinear.MagnusAdapt4, OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Vector{ComplexF64}}, Vector{Float64}, Vector{Vector{Vector{ComplexF64}}}, Nothing, OrdinaryDiffEqLinear.MagnusAdapt4Cache{Vector{ComplexF64}, Vector{ComplexF64}, Matrix{ComplexF64}, Vector{ComplexF64}, Nothing}, Nothing}, SciMLBase.DEStats, Nothing, Nothing, Nothing, Nothing}}}}(QuantumSystem: levels = 2, n_drives = 2, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}(DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}([-0.028176293381213326 -0.03609942367027249 … 0.04114134302873276 0.05754329219083601; -0.08300173877540795 -0.025398958099339272 … -0.0035628088671766016 0.0030420531991268932], [0.0, 0.10101010101010101, 0.20202020202020202, 0.30303030303030304, 0.40404040404040403, 0.5050505050505051, 0.6060606060606061, 0.7070707070707071, 0.8080808080808081, 0.9090909090909091  …  9.090909090909092, 9.191919191919192, 9.292929292929292, 9.393939393939394, 9.494949494949495, 9.595959595959595, 9.696969696969697, 9.797979797979798, 9.8989898989899, 10.0], Union{}[], nothing, :left, DataInterpolations.ExtrapolationType.None, DataInterpolations.ExtrapolationType.None, FindFirstFunctions.Guesser{Vector{Float64}}([0.0, 0.10101010101010101, 0.20202020202020202, 0.30303030303030304, 0.40404040404040403, 0.5050505050505051, 0.6060606060606061, 0.7070707070707071, 0.8080808080808081, 0.9090909090909091  …  9.090909090909092, 9.191919191919192, 9.292929292929292, 9.393939393939394, 9.494949494949495, 9.595959595959595, 9.696969696969697, 9.797979797979798, 9.8989898989899, 10.0], Base.RefValue{Int64}(100), true), false, true), 10.0, 2, :u, [0.0, 0.0], [0.0, 0.0]), Vector{ComplexF64}[[1.0 + 0.0im, 0.0 + 0.0im], [0.0 + 0.0im, 1.0 + 0.0im]], Vector{ComplexF64}[[0.0 + 0.0im, 1.0 + 0.0im], [1.0 + 0.0im, 0.0 + 0.0im]], [0.5, 0.5], SciMLBase.EnsembleSolution{ComplexF64, 3, Vector{SciMLBase.ODESolution{ComplexF64, 2, Vector{Vector{ComplexF64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Vector{ComplexF64}}}, Nothing, SciMLBase.ODEProblem{Vector{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqLinear.MagnusAdapt4, OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Vector{ComplexF64}}, Vector{Float64}, Vector{Vector{Vector{ComplexF64}}}, Nothing, OrdinaryDiffEqLinear.MagnusAdapt4Cache{Vector{ComplexF64}, Vector{ComplexF64}, Matrix{ComplexF64}, Vector{ComplexF64}, Nothing}, Nothing}, SciMLBase.DEStats, Nothing, Nothing, Nothing, Nothing}}}(SciMLBase.ODESolution{ComplexF64, 2, Vector{Vector{ComplexF64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Vector{ComplexF64}}}, Nothing, SciMLBase.ODEProblem{Vector{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqLinear.MagnusAdapt4, OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Vector{ComplexF64}}, Vector{Float64}, Vector{Vector{Vector{ComplexF64}}}, Nothing, OrdinaryDiffEqLinear.MagnusAdapt4Cache{Vector{ComplexF64}, Vector{ComplexF64}, Matrix{ComplexF64}, Vector{ComplexF64}, Nothing}, Nothing}, SciMLBase.DEStats, Nothing, Nothing, Nothing, Nothing}[SciMLBase.ODESolution{ComplexF64, 2, Vector{Vector{ComplexF64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Vector{ComplexF64}}}, Nothing, SciMLBase.ODEProblem{Vector{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqLinear.MagnusAdapt4, OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Vector{ComplexF64}}, Vector{Float64}, Vector{Vector{Vector{ComplexF64}}}, Nothing, OrdinaryDiffEqLinear.MagnusAdapt4Cache{Vector{ComplexF64}, Vector{ComplexF64}, Matrix{ComplexF64}, Vector{ComplexF64}, Nothing}, Nothing}, SciMLBase.DEStats, Nothing, Nothing, Nothing, Nothing}(Vector{ComplexF64}[[1.0 + 0.0im, 0.0 + 0.0im], [0.9949658135575967 - 0.09983213739979396im, -0.00828624098984833 + 0.0028128995922501935im], [0.9799872724124405 - 0.19868561622297895im, -0.010737178940712638 + 0.005803861138518704im], [0.9553133602817907 - 0.2954461226242563im, -0.007409284141901382 - 0.005751069631936118im], [0.9209824103200249 - 0.38943517669752775im, -0.009580406161244455 + 0.006313386529310147im], [0.8774541520690148 - 0.4795166053054841im, -0.004164725351447004 + 0.010985959944367296im], [0.8251150630713922 - 0.5648164117322982im, 0.005657257932669423 + 0.011642558276802372im], [0.7646007067922177 - 0.6443314852622815im, 0.003362348821702402 + 0.014539287566671106im], [0.6960796942244178 - 0.7170807397204231im, 0.004467636784117948 + 0.035331462353267805im], [0.6208212324797584 - 0.7827475563366613im, 0.0011249258265605645 + 0.043428042705008774im]  …  [-0.9463284144663887 - 0.3181689737642491im, -0.05683487334080916 + 0.0009128415404458894im], [-0.9735422306401168 - 0.22182470954326797im, -0.05485077825159954 + 0.0008458850469612331im], [-0.9911639991953597 - 0.12311116049463354im, -0.049205749547145766 + 0.004045129446392426im], [-0.9981070523392606 - 0.02385122191504631im, -0.05618927438115351 - 0.007496447713435005im], [-0.9943339742363289 + 0.0755651161505038im, -0.07147266779075691 - 0.021943533430839317im], [-0.9811001095849661 + 0.17500980567536187im, -0.07908698128610096 - 0.023651475237303866im], [-0.9583000379594643 + 0.2733684775090623im, -0.08170739407933406 - 0.015956644510674956im], [-0.9242605594070048 + 0.3680428017159658im, -0.09998456891266816 - 0.0170293983766315im], [-0.8843866559108703 + 0.45866568174989225im, -0.08190310631951264 - 0.0278911528431259im], [-0.8343145408146107 + 0.5449882657778342im, -0.07650955658537753 - 0.03245496727609679im]], nothing, nothing, [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9  …  9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10.0], Vector{Vector{ComplexF64}}[[[1.0 + 0.0im, 0.0 + 0.0im]]], nothing, SciMLBase.ODEProblem{Vector{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}(SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}(MatrixOperator(2 × 2), LinearAlgebra.UniformScaling{Bool}(true), nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, SciMLBase.DEFAULT_OBSERVED, nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(Dict{Symbol, Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(:ψ_2 => 2, :ψ_1 => 1, :ψ => 1:2), :t, Dict{Symbol, Float64}()), nothing, nothing), ComplexF64[1.0 + 0.0im, 0.0 + 0.0im], (0.0, 10.0), SciMLBase.NullParameters(), Base.Pairs(:tstops => [0.0, 0.1, 0.10101010101010101, 0.2, 0.20202020202020202, 0.3, 0.30303030303030304, 0.4, 0.40404040404040403, 0.5  …  9.5, 9.595959595959595, 9.6, 9.696969696969697, 9.7, 9.797979797979798, 9.8, 9.8989898989899, 9.9, 10.0]), SciMLBase.StandardODEProblem()), OrdinaryDiffEqLinear.MagnusAdapt4(), OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Vector{ComplexF64}}, Vector{Float64}, Vector{Vector{Vector{ComplexF64}}}, Nothing, OrdinaryDiffEqLinear.MagnusAdapt4Cache{Vector{ComplexF64}, Vector{ComplexF64}, Matrix{ComplexF64}, Vector{ComplexF64}, Nothing}, Nothing}(SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}(MatrixOperator(2 × 2), LinearAlgebra.UniformScaling{Bool}(true), nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, SciMLBase.DEFAULT_OBSERVED, nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(Dict{Symbol, Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(:ψ_2 => 2, :ψ_1 => 1, :ψ => 1:2), :t, Dict{Symbol, Float64}()), nothing, nothing), Vector{ComplexF64}[[1.0 + 0.0im, 0.0 + 0.0im], [0.9949658135575967 - 0.09983213739979396im, -0.00828624098984833 + 0.0028128995922501935im], [0.9799872724124405 - 0.19868561622297895im, -0.010737178940712638 + 0.005803861138518704im], [0.9553133602817907 - 0.2954461226242563im, -0.007409284141901382 - 0.005751069631936118im], [0.9209824103200249 - 0.38943517669752775im, -0.009580406161244455 + 0.006313386529310147im], [0.8774541520690148 - 0.4795166053054841im, -0.004164725351447004 + 0.010985959944367296im], [0.8251150630713922 - 0.5648164117322982im, 0.005657257932669423 + 0.011642558276802372im], [0.7646007067922177 - 0.6443314852622815im, 0.003362348821702402 + 0.014539287566671106im], [0.6960796942244178 - 0.7170807397204231im, 0.004467636784117948 + 0.035331462353267805im], [0.6208212324797584 - 0.7827475563366613im, 0.0011249258265605645 + 0.043428042705008774im]  …  [-0.9463284144663887 - 0.3181689737642491im, -0.05683487334080916 + 0.0009128415404458894im], [-0.9735422306401168 - 0.22182470954326797im, -0.05485077825159954 + 0.0008458850469612331im], [-0.9911639991953597 - 0.12311116049463354im, -0.049205749547145766 + 0.004045129446392426im], [-0.9981070523392606 - 0.02385122191504631im, -0.05618927438115351 - 0.007496447713435005im], [-0.9943339742363289 + 0.0755651161505038im, -0.07147266779075691 - 0.021943533430839317im], [-0.9811001095849661 + 0.17500980567536187im, -0.07908698128610096 - 0.023651475237303866im], [-0.9583000379594643 + 0.2733684775090623im, -0.08170739407933406 - 0.015956644510674956im], [-0.9242605594070048 + 0.3680428017159658im, -0.09998456891266816 - 0.0170293983766315im], [-0.8843866559108703 + 0.45866568174989225im, -0.08190310631951264 - 0.0278911528431259im], [-0.8343145408146107 + 0.5449882657778342im, -0.07650955658537753 - 0.03245496727609679im]], [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9  …  9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10.0], Vector{Vector{ComplexF64}}[[[1.0 + 0.0im, 0.0 + 0.0im]]], nothing, false, OrdinaryDiffEqLinear.MagnusAdapt4Cache{Vector{ComplexF64}, Vector{ComplexF64}, Matrix{ComplexF64}, Vector{ComplexF64}, Nothing}(ComplexF64[-0.8343145408146107 + 0.5449882657778342im, -0.07650955658537753 - 0.03245496727609679im], ComplexF64[-0.8350643605455973 + 0.5438306985867468im, -0.07659019071038972 - 0.0323979583952334im], ComplexF64[-0.8350643605455973 + 0.5438306985867468im, -0.07659019071038972 - 0.0323979583952334im], ComplexF64[2.0e-8 + 0.0im, 1.0e-8 + 0.0im], ComplexF64[0.5422249268563761 + 0.8380999561208006im, 0.057747058423761134 - 0.04417208623728164im], ComplexF64[0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im], ComplexF64[0.5433534462541961 + 0.8388158823216242im, 0.06127735707636453 - 0.026842467886823138im], ComplexF64[0.0 + 0.0im, 0.0 + 0.0im], ComplexF64[-0.026280333825535494 - 0.004798585194573789im, 0.5073226748859995 - 0.09921913254500407im], nothing), nothing, false), false, 0, SciMLBase.DEStats(2159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1328, 828, 0.0), nothing, SciMLBase.ReturnCode.Success, nothing, nothing, nothing), SciMLBase.ODESolution{ComplexF64, 2, Vector{Vector{ComplexF64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Vector{ComplexF64}}}, Nothing, SciMLBase.ODEProblem{Vector{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqLinear.MagnusAdapt4, OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Vector{ComplexF64}}, Vector{Float64}, Vector{Vector{Vector{ComplexF64}}}, Nothing, OrdinaryDiffEqLinear.MagnusAdapt4Cache{Vector{ComplexF64}, Vector{ComplexF64}, Matrix{ComplexF64}, Vector{ComplexF64}, Nothing}, Nothing}, SciMLBase.DEStats, Nothing, Nothing, Nothing, Nothing}(Vector{ComplexF64}[[0.0 + 0.0im, 1.0 + 0.0im], [0.008286240989848327 + 0.0028128995922501927im, 0.9949658135575967 + 0.09983213739979394im], [0.010737178940712636 + 0.005803861138518704im, 0.97998727241244 + 0.1986856162229788im], [0.0074092841419013756 - 0.0057510696319361225im, 0.9553133602817906 + 0.2954461226242561im], [0.00958040616124445 + 0.006313386529310145im, 0.920982410320025 + 0.3894351766975276im], [0.004164725351446999 + 0.010985959944367296im, 0.877454152069015 + 0.479516605305484im], [-0.005657257932669425 + 0.011642558276802377im, 0.8251150630713923 + 0.5648164117322979im], [-0.0033623488217024017 + 0.014539287566671114im, 0.7646007067922178 + 0.6443314852622809im], [-0.004467636784117938 + 0.035331462353267805im, 0.6960796942244173 + 0.7170807397204221im], [-0.001124925826560551 + 0.04342804270500875im, 0.6208212324797582 + 0.7827475563366605im]  …  [0.05683487334080913 + 0.0009128415404461268im, -0.9463284144663937 + 0.3181689737642501im], [0.054850778251599536 + 0.0008458850469614955im, -0.9735422306401214 + 0.22182470954326844im], [0.049205749547145745 + 0.004045129446392724im, -0.9911639991953644 + 0.12311116049463362im], [0.056189274381153516 - 0.007496447713434735im, -0.9981070523392656 + 0.023851221915045944im], [0.07147266779075696 - 0.021943533430839084im, -0.994333974236334 - 0.07556511615050467im], [0.07908698128610114 - 0.023651475237303616im, -0.9811001095849707 - 0.17500980567536317im], [0.08170739407933426 - 0.015956644510674647im, -0.9583000379594687 - 0.2733684775090641im], [0.09998456891266859 - 0.017029398376631196im, -0.9242605594070084 - 0.368042801715968im], [0.0819031063195131 - 0.02789115284312567im, -0.884386655910873 - 0.45866568174989464im], [0.07650955658537803 - 0.032454967276096605im, -0.8343145408146129 - 0.5449882657778368im]], nothing, nothing, [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9  …  9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10.0], Vector{Vector{ComplexF64}}[[[0.0 + 0.0im, 1.0 + 0.0im]]], nothing, SciMLBase.ODEProblem{Vector{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}(SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}(MatrixOperator(2 × 2), LinearAlgebra.UniformScaling{Bool}(true), nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, SciMLBase.DEFAULT_OBSERVED, nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(Dict{Symbol, Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(:ψ_2 => 2, :ψ_1 => 1, :ψ => 1:2), :t, Dict{Symbol, Float64}()), nothing, nothing), ComplexF64[0.0 + 0.0im, 1.0 + 0.0im], (0.0, 10.0), SciMLBase.NullParameters(), Base.Pairs(:tstops => [0.0, 0.1, 0.10101010101010101, 0.2, 0.20202020202020202, 0.3, 0.30303030303030304, 0.4, 0.40404040404040403, 0.5  …  9.5, 9.595959595959595, 9.6, 9.696969696969697, 9.7, 9.797979797979798, 9.8, 9.8989898989899, 9.9, 10.0]), SciMLBase.StandardODEProblem()), OrdinaryDiffEqLinear.MagnusAdapt4(), OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Vector{ComplexF64}}, Vector{Float64}, Vector{Vector{Vector{ComplexF64}}}, Nothing, OrdinaryDiffEqLinear.MagnusAdapt4Cache{Vector{ComplexF64}, Vector{ComplexF64}, Matrix{ComplexF64}, Vector{ComplexF64}, Nothing}, Nothing}(SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, SciMLOperators.MatrixOperator{ComplexF64, Matrix{ComplexF64}, SciMLOperators.FilterKwargs{Nothing, Val{()}}, SciMLOperators.FilterKwargs{Piccolo.Quantum.Rollouts.var"#update!#_construct_operator##2"{QuantumSystem{Piccolo.Quantum.QuantumSystems.var"#37#38"{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Int64}, Piccolo.Quantum.QuantumSystems.var"#39#40"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, Int64, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}, Vector{DriftTerm{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}, Returns{Float64}, Returns{Float64}}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Val{()}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}(MatrixOperator(2 × 2), LinearAlgebra.UniformScaling{Bool}(true), nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, SciMLBase.DEFAULT_OBSERVED, nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(Dict{Symbol, Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(:ψ_2 => 2, :ψ_1 => 1, :ψ => 1:2), :t, Dict{Symbol, Float64}()), nothing, nothing), Vector{ComplexF64}[[0.0 + 0.0im, 1.0 + 0.0im], [0.008286240989848327 + 0.0028128995922501927im, 0.9949658135575967 + 0.09983213739979394im], [0.010737178940712636 + 0.005803861138518704im, 0.97998727241244 + 0.1986856162229788im], [0.0074092841419013756 - 0.0057510696319361225im, 0.9553133602817906 + 0.2954461226242561im], [0.00958040616124445 + 0.006313386529310145im, 0.920982410320025 + 0.3894351766975276im], [0.004164725351446999 + 0.010985959944367296im, 0.877454152069015 + 0.479516605305484im], [-0.005657257932669425 + 0.011642558276802377im, 0.8251150630713923 + 0.5648164117322979im], [-0.0033623488217024017 + 0.014539287566671114im, 0.7646007067922178 + 0.6443314852622809im], [-0.004467636784117938 + 0.035331462353267805im, 0.6960796942244173 + 0.7170807397204221im], [-0.001124925826560551 + 0.04342804270500875im, 0.6208212324797582 + 0.7827475563366605im]  …  [0.05683487334080913 + 0.0009128415404461268im, -0.9463284144663937 + 0.3181689737642501im], [0.054850778251599536 + 0.0008458850469614955im, -0.9735422306401214 + 0.22182470954326844im], [0.049205749547145745 + 0.004045129446392724im, -0.9911639991953644 + 0.12311116049463362im], [0.056189274381153516 - 0.007496447713434735im, -0.9981070523392656 + 0.023851221915045944im], [0.07147266779075696 - 0.021943533430839084im, -0.994333974236334 - 0.07556511615050467im], [0.07908698128610114 - 0.023651475237303616im, -0.9811001095849707 - 0.17500980567536317im], [0.08170739407933426 - 0.015956644510674647im, -0.9583000379594687 - 0.2733684775090641im], [0.09998456891266859 - 0.017029398376631196im, -0.9242605594070084 - 0.368042801715968im], [0.0819031063195131 - 0.02789115284312567im, -0.884386655910873 - 0.45866568174989464im], [0.07650955658537803 - 0.032454967276096605im, -0.8343145408146129 - 0.5449882657778368im]], [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9  …  9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10.0], Vector{Vector{ComplexF64}}[[[0.0 + 0.0im, 1.0 + 0.0im]]], nothing, false, OrdinaryDiffEqLinear.MagnusAdapt4Cache{Vector{ComplexF64}, Vector{ComplexF64}, Matrix{ComplexF64}, Vector{ComplexF64}, Nothing}(ComplexF64[0.07650955658537803 - 0.032454967276096605im, -0.8343145408146129 - 0.5449882657778368im], ComplexF64[0.07659019071039022 - 0.03239795839523322im, -0.8350643605455994 - 0.5438306985867493im], ComplexF64[0.07659019071039022 - 0.03239795839523322im, -0.8350643605455994 - 0.5438306985867493im], ComplexF64[1.0e-8 + 0.0im, 2.0e-8 + 0.0im], ComplexF64[-0.057747058423761065 - 0.04417208623728206im, 0.5422249268563787 - 0.8380999561208027im], ComplexF64[0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im], ComplexF64[-0.06127735707636448 - 0.0268424678868235im, 0.5433534462541987 - 0.8388158823216264im], ComplexF64[0.0 + 0.0im, 0.0 + 0.0im], ComplexF64[-0.5073226761672301 - 0.09921913190438862im, -0.02628033938626926 + 0.004798579633839971im], nothing), nothing, false), false, 0, SciMLBase.DEStats(2159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1328, 828, 0.0), nothing, SciMLBase.ReturnCode.Success, nothing, nothing, nothing)], 0.517782767, true, SciMLBase.DEStats(4318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2656, 1656, 0.0)))

Solve

qcp_multi = SmoothPulseProblem(qtraj_multi, N; Q = 100.0)
solve!(qcp_multi; max_iter = 50)
fidelity(qcp_multi)
0.9999654067440789

DensityTrajectory

For open quantum systems governed by the Lindblad master equation. The state $\rho(t)$ evolves as $\dot{\vec\rho} = \mathcal{G}(\boldsymbol{u})\,\vec\rho$ where $\mathcal{G}$ is the Lindbladian superoperator (see Systems).

Internally the state is stored in the compact isomorphism: a real vector of dimension $d^2$ (not $2d^2$) that exploits Hermiticity. The Lindbladian generators are also compacted via $\mathcal{G}_c = P\,\mathcal{G}\,L$ (size $d^2 \times d^2$ instead of $2d^2 \times 2d^2$), giving roughly a 4× speedup in integration. See Isomorphisms for details.

Construction

# Open system with a weak dissipation operator
L = ComplexF64[0.1 0.0; 0.0 0.0]
open_sys = OpenQuantumSystem(
    PAULIS[:Z],
    [PAULIS[:X], PAULIS[:Y]],
    [1.0, 1.0];
    dissipation_operators = [L],
)

# Initial and goal density matrices
ρ_init = ComplexF64[1.0 0.0; 0.0 0.0]  # |0⟩⟨0|
ρ_goal = ComplexF64[0.0 0.0; 0.0 1.0]  # |1⟩⟨1|

T_density, N_density = 10.0, 50
times_density = collect(range(0, T_density, length = N_density))
pulse_density = ZeroOrderPulse(0.1 * randn(2, N_density), times_density)
qtraj_density = DensityTrajectory(open_sys, pulse_density, ρ_init, ρ_goal)
DensityTrajectory{ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, SciMLBase.ODESolution{ComplexF64, 3, Vector{Matrix{ComplexF64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, SciMLBase.ODEProblem{Matrix{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqTsit5.Tsit5{typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}, OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Matrix{ComplexF64}}, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, OrdinaryDiffEqTsit5.Tsit5Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}, Nothing}, SciMLBase.DEStats, Nothing, Nothing, Nothing, Nothing}}(OpenQuantumSystem: levels = 2, n_drives = 2, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}(DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}([-0.004439644389175317 0.10268290134939394 … -0.28222544918158116 0.10168929858928351; 0.15011150252669453 0.11551321903255701 … -0.056312875891996274 -0.11361824059048342], [0.0, 0.20408163265306123, 0.40816326530612246, 0.6122448979591837, 0.8163265306122449, 1.0204081632653061, 1.2244897959183674, 1.4285714285714286, 1.6326530612244898, 1.836734693877551  …  8.16326530612245, 8.36734693877551, 8.571428571428571, 8.775510204081632, 8.979591836734693, 9.183673469387756, 9.387755102040817, 9.591836734693878, 9.795918367346939, 10.0], Union{}[], nothing, :left, DataInterpolations.ExtrapolationType.None, DataInterpolations.ExtrapolationType.None, FindFirstFunctions.Guesser{Vector{Float64}}([0.0, 0.20408163265306123, 0.40816326530612246, 0.6122448979591837, 0.8163265306122449, 1.0204081632653061, 1.2244897959183674, 1.4285714285714286, 1.6326530612244898, 1.836734693877551  …  8.16326530612245, 8.36734693877551, 8.571428571428571, 8.775510204081632, 8.979591836734693, 9.183673469387756, 9.387755102040817, 9.591836734693878, 9.795918367346939, 10.0], Base.RefValue{Int64}(50), true), false, false), 10.0, 2, :u, [0.0, 0.0], [0.0, 0.0]), ComplexF64[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im], ComplexF64[0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im], SciMLBase.ODESolution{ComplexF64, 3, Vector{Matrix{ComplexF64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, SciMLBase.ODEProblem{Matrix{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqTsit5.Tsit5{typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}, OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Matrix{ComplexF64}}, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, OrdinaryDiffEqTsit5.Tsit5Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}, Nothing}, SciMLBase.DEStats, Nothing, Nothing, Nothing, Nothing}(Matrix{ComplexF64}[[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im], [0.9997752732989994 + 1.109783486251427e-17im 0.014861083246266523 - 0.0019363414428941626im; 0.014861083246266523 + 0.001936341442894162im 0.00022472670100069113 + 6.280743529281714e-21im], [0.9991103991672943 + 1.3735693459572137e-17im 0.029020857035695735 - 0.006782591545264942im; 0.029020857035695735 + 0.00678259154526494im 0.0008896008327059187 - 1.9695778995123862e-20im], [0.9984128574550103 + 3.962942484699088e-17im 0.03959901823277405 - 0.0038378120031010102im; 0.03959901823277405 + 0.0038378120031010094im 0.0015871425449902438 - 2.866942109237646e-20im], [0.9974353230967832 + 7.060419252077613e-18im 0.050471873005658745 - 0.002613632575597462im; 0.050471873005658745 + 0.0026136325755974584im 0.0025646769032174315 - 1.2541606711836918e-19im], [0.9963707991209549 + 5.8962946440955635e-18im 0.05820184307325268 - 0.014887766889969256im; 0.05820184307325268 + 0.014887766889969253im 0.0036292008790456886 - 9.88060892977125e-20im], [0.9951390392181806 - 2.2281855915035997e-19im 0.0629375351238767 - 0.029411968128066637im; 0.06293753512387672 + 0.029411968128066637im 0.004860960781820072 - 1.6609519422704355e-19im], [0.9968801105404665 - 1.645158083941029e-17im 0.04923944246636466 - 0.025891746883549633im; 0.04923944246636468 + 0.02589174688354964im 0.003119889459534458 - 5.599137966340109e-20im], [0.9984989912529776 - 1.9918415521261636e-17im 0.034604524790825736 - 0.016846217574925118im; 0.03460452479082575 + 0.016846217574925125im 0.0015010087470233976 - 1.0231871918548763e-19im], [0.9986773259859848 - 4.340028204256266e-17im 0.033409325077994864 - 0.013636412262152972im; 0.03340932507799487 + 0.013636412262152979im 0.0013226740140160943 + 1.137966254022461e-21im]  …  [0.8856001131137563 - 2.9625965338997067e-17im 0.26497918635630546 + 0.1673687660274637im; 0.2649791863563052 - 0.16736876602746373im 0.1143998868862476 - 1.1107999170951192e-17im], [0.8856601659601404 - 3.1445091985696544e-17im 0.2934156025934236 + 0.10949404444632992im; 0.2934156025934233 - 0.10949404444633003im 0.11433983403986347 - 1.0490297980407897e-17im], [0.8876315922375471 - 1.8778812359289393e-17im 0.3074573469681592 + 0.04393104424849914im; 0.3074573469681589 - 0.043931044248499286im 0.1123684077624569 - 5.9811953697084835e-18im], [0.8859230958719696 - 1.8555718961295435e-17im 0.31182195192322965 - 0.021273958462970585im; 0.3118219519232294 + 0.021273958462970373im 0.11407690412803417 - 8.278981628936905e-18im], [0.8636661829835706 - 3.5063339572232285e-18im 0.3294049657095782 - 0.07586406638616879im; 0.32940496570957806 + 0.0758640663861685im 0.13633381701643318 - 2.2595546684319337e-17im], [0.843726090428846 + 4.5896187002608496e-18im 0.3322257796352584 - 0.1336882843976025im; 0.33222577963525834 + 0.13368828439760216im 0.1562739095711576 - 3.030606184332497e-17im], [0.843636640302169 - 2.690985833949224e-19im 0.30093323977579906 - 0.1939560308225519im; 0.30093323977579906 + 0.19395603082255156im 0.15636335969783466 - 3.5477987499867075e-17im], [0.8437700991515553 + 8.809606636068592e-19im 0.25808103475202004 - 0.24769789314741836im; 0.2580810347520201 + 0.24769789314741797im 0.1562299008484482 - 3.4696177112854135e-17im], [0.8304817677889124 - 7.845488797586645e-18im 0.1979398869780062 - 0.31242181394829777im; 0.19793988697800635 + 0.3124218139482974im 0.16951823221109114 - 3.935502212103881e-17im], [0.8131825391507138 + 1.2783180346210404e-17im 0.12642911411852928 - 0.36303722363857555im; 0.12642911411852953 + 0.36303722363857527im 0.18681746084928957 - 4.848908183956728e-17im]], nothing, nothing, [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9  …  9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10.0], Vector{Matrix{ComplexF64}}[[[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im]]], nothing, SciMLBase.ODEProblem{Matrix{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}(SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}(Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}(OpenQuantumSystem: levels = 2, n_drives = 2, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}(DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}([-0.004439644389175317 0.10268290134939394 … -0.28222544918158116 0.10168929858928351; 0.15011150252669453 0.11551321903255701 … -0.056312875891996274 -0.11361824059048342], [0.0, 0.20408163265306123, 0.40816326530612246, 0.6122448979591837, 0.8163265306122449, 1.0204081632653061, 1.2244897959183674, 1.4285714285714286, 1.6326530612244898, 1.836734693877551  …  8.16326530612245, 8.36734693877551, 8.571428571428571, 8.775510204081632, 8.979591836734693, 9.183673469387756, 9.387755102040817, 9.591836734693878, 9.795918367346939, 10.0], Union{}[], nothing, :left, DataInterpolations.ExtrapolationType.None, DataInterpolations.ExtrapolationType.None, FindFirstFunctions.Guesser{Vector{Float64}}([0.0, 0.20408163265306123, 0.40816326530612246, 0.6122448979591837, 0.8163265306122449, 1.0204081632653061, 1.2244897959183674, 1.4285714285714286, 1.6326530612244898, 1.836734693877551  …  8.16326530612245, 8.36734693877551, 8.571428571428571, 8.775510204081632, 8.979591836734693, 9.183673469387756, 9.387755102040817, 9.591836734693878, 9.795918367346939, 10.0], Base.RefValue{Int64}(50), true), false, false), 10.0, 2, :u, [0.0, 0.0], [0.0, 0.0]), ComplexF64[0.08131825391507139 + 1.2783180346210406e-18im 0.012642911411852928 - 0.03630372236385756im; 0.0 + 0.0im 0.0 + 0.0im], SparseArrays.SparseMatrixCSC{ComplexF64, Int64}[sparse([1], [1], ComplexF64[0.010000000000000002 + 0.0im], 2, 2)], SparseArrays.SparseMatrixCSC{ComplexF64, Int64}[sparse([1], [1], ComplexF64[0.1 + 0.0im], 2, 2)]), LinearAlgebra.UniformScaling{Bool}(true), nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, SciMLBase.DEFAULT_OBSERVED, nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(Dict{Symbol, Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(:ρ_1_2 => CartesianIndex(1, 2), :ρ_2_2 => CartesianIndex(2, 2), :ρ => CartesianIndices((2, 2)), :ρ_1_1 => CartesianIndex(1, 1), :ρ_2_1 => CartesianIndex(2, 1)), :t, Dict{Symbol, Float64}()), nothing, nothing), ComplexF64[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im], (0.0, 10.0), SciMLBase.NullParameters(), Base.Pairs(:tstops => [0.0, 0.1, 0.2, 0.20408163265306123, 0.3, 0.4, 0.40816326530612246, 0.5, 0.6, 0.6122448979591837  …  9.387755102040817, 9.4, 9.5, 9.591836734693878, 9.6, 9.7, 9.795918367346939, 9.8, 9.9, 10.0]), SciMLBase.StandardODEProblem()), OrdinaryDiffEqTsit5.Tsit5{typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}(OrdinaryDiffEqCore.trivial_limiter!, OrdinaryDiffEqCore.trivial_limiter!, static(false)), OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Matrix{ComplexF64}}, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, OrdinaryDiffEqTsit5.Tsit5Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}, Nothing}(SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}(Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}(OpenQuantumSystem: levels = 2, n_drives = 2, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}(DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}([-0.004439644389175317 0.10268290134939394 … -0.28222544918158116 0.10168929858928351; 0.15011150252669453 0.11551321903255701 … -0.056312875891996274 -0.11361824059048342], [0.0, 0.20408163265306123, 0.40816326530612246, 0.6122448979591837, 0.8163265306122449, 1.0204081632653061, 1.2244897959183674, 1.4285714285714286, 1.6326530612244898, 1.836734693877551  …  8.16326530612245, 8.36734693877551, 8.571428571428571, 8.775510204081632, 8.979591836734693, 9.183673469387756, 9.387755102040817, 9.591836734693878, 9.795918367346939, 10.0], Union{}[], nothing, :left, DataInterpolations.ExtrapolationType.None, DataInterpolations.ExtrapolationType.None, FindFirstFunctions.Guesser{Vector{Float64}}([0.0, 0.20408163265306123, 0.40816326530612246, 0.6122448979591837, 0.8163265306122449, 1.0204081632653061, 1.2244897959183674, 1.4285714285714286, 1.6326530612244898, 1.836734693877551  …  8.16326530612245, 8.36734693877551, 8.571428571428571, 8.775510204081632, 8.979591836734693, 9.183673469387756, 9.387755102040817, 9.591836734693878, 9.795918367346939, 10.0], Base.RefValue{Int64}(50), true), false, false), 10.0, 2, :u, [0.0, 0.0], [0.0, 0.0]), ComplexF64[0.08131825391507139 + 1.2783180346210406e-18im 0.012642911411852928 - 0.03630372236385756im; 0.0 + 0.0im 0.0 + 0.0im], SparseArrays.SparseMatrixCSC{ComplexF64, Int64}[sparse([1], [1], ComplexF64[0.010000000000000002 + 0.0im], 2, 2)], SparseArrays.SparseMatrixCSC{ComplexF64, Int64}[sparse([1], [1], ComplexF64[0.1 + 0.0im], 2, 2)]), LinearAlgebra.UniformScaling{Bool}(true), nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, SciMLBase.DEFAULT_OBSERVED, nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(Dict{Symbol, Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(:ρ_1_2 => CartesianIndex(1, 2), :ρ_2_2 => CartesianIndex(2, 2), :ρ => CartesianIndices((2, 2)), :ρ_1_1 => CartesianIndex(1, 1), :ρ_2_1 => CartesianIndex(2, 1)), :t, Dict{Symbol, Float64}()), nothing, nothing), Matrix{ComplexF64}[[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im], [0.9997752732989994 + 1.109783486251427e-17im 0.014861083246266523 - 0.0019363414428941626im; 0.014861083246266523 + 0.001936341442894162im 0.00022472670100069113 + 6.280743529281714e-21im], [0.9991103991672943 + 1.3735693459572137e-17im 0.029020857035695735 - 0.006782591545264942im; 0.029020857035695735 + 0.00678259154526494im 0.0008896008327059187 - 1.9695778995123862e-20im], [0.9984128574550103 + 3.962942484699088e-17im 0.03959901823277405 - 0.0038378120031010102im; 0.03959901823277405 + 0.0038378120031010094im 0.0015871425449902438 - 2.866942109237646e-20im], [0.9974353230967832 + 7.060419252077613e-18im 0.050471873005658745 - 0.002613632575597462im; 0.050471873005658745 + 0.0026136325755974584im 0.0025646769032174315 - 1.2541606711836918e-19im], [0.9963707991209549 + 5.8962946440955635e-18im 0.05820184307325268 - 0.014887766889969256im; 0.05820184307325268 + 0.014887766889969253im 0.0036292008790456886 - 9.88060892977125e-20im], [0.9951390392181806 - 2.2281855915035997e-19im 0.0629375351238767 - 0.029411968128066637im; 0.06293753512387672 + 0.029411968128066637im 0.004860960781820072 - 1.6609519422704355e-19im], [0.9968801105404665 - 1.645158083941029e-17im 0.04923944246636466 - 0.025891746883549633im; 0.04923944246636468 + 0.02589174688354964im 0.003119889459534458 - 5.599137966340109e-20im], [0.9984989912529776 - 1.9918415521261636e-17im 0.034604524790825736 - 0.016846217574925118im; 0.03460452479082575 + 0.016846217574925125im 0.0015010087470233976 - 1.0231871918548763e-19im], [0.9986773259859848 - 4.340028204256266e-17im 0.033409325077994864 - 0.013636412262152972im; 0.03340932507799487 + 0.013636412262152979im 0.0013226740140160943 + 1.137966254022461e-21im]  …  [0.8856001131137563 - 2.9625965338997067e-17im 0.26497918635630546 + 0.1673687660274637im; 0.2649791863563052 - 0.16736876602746373im 0.1143998868862476 - 1.1107999170951192e-17im], [0.8856601659601404 - 3.1445091985696544e-17im 0.2934156025934236 + 0.10949404444632992im; 0.2934156025934233 - 0.10949404444633003im 0.11433983403986347 - 1.0490297980407897e-17im], [0.8876315922375471 - 1.8778812359289393e-17im 0.3074573469681592 + 0.04393104424849914im; 0.3074573469681589 - 0.043931044248499286im 0.1123684077624569 - 5.9811953697084835e-18im], [0.8859230958719696 - 1.8555718961295435e-17im 0.31182195192322965 - 0.021273958462970585im; 0.3118219519232294 + 0.021273958462970373im 0.11407690412803417 - 8.278981628936905e-18im], [0.8636661829835706 - 3.5063339572232285e-18im 0.3294049657095782 - 0.07586406638616879im; 0.32940496570957806 + 0.0758640663861685im 0.13633381701643318 - 2.2595546684319337e-17im], [0.843726090428846 + 4.5896187002608496e-18im 0.3322257796352584 - 0.1336882843976025im; 0.33222577963525834 + 0.13368828439760216im 0.1562739095711576 - 3.030606184332497e-17im], [0.843636640302169 - 2.690985833949224e-19im 0.30093323977579906 - 0.1939560308225519im; 0.30093323977579906 + 0.19395603082255156im 0.15636335969783466 - 3.5477987499867075e-17im], [0.8437700991515553 + 8.809606636068592e-19im 0.25808103475202004 - 0.24769789314741836im; 0.2580810347520201 + 0.24769789314741797im 0.1562299008484482 - 3.4696177112854135e-17im], [0.8304817677889124 - 7.845488797586645e-18im 0.1979398869780062 - 0.31242181394829777im; 0.19793988697800635 + 0.3124218139482974im 0.16951823221109114 - 3.935502212103881e-17im], [0.8131825391507138 + 1.2783180346210404e-17im 0.12642911411852928 - 0.36303722363857555im; 0.12642911411852953 + 0.36303722363857527im 0.18681746084928957 - 4.848908183956728e-17im]], [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9  …  9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10.0], Vector{Matrix{ComplexF64}}[[[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im]]], nothing, false, OrdinaryDiffEqTsit5.Tsit5Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}(ComplexF64[0.8131825391507138 + 1.2783180346210404e-17im 0.12642911411852928 - 0.36303722363857555im; 0.12642911411852953 + 0.36303722363857527im 0.18681746084928957 - 4.848908183956728e-17im], ComplexF64[0.813182483057209 + 1.2783202270363491e-17im 0.12642921069800409 - 0.36303723862725384im; 0.12642921069800434 + 0.36303723862725357im 0.18681751694279441 - 4.8489093238785756e-17im], ComplexF64[-0.19067751058011553 + 1.0408340855860843e-16im -0.7619790359078932 - 0.4278193691161184im; -0.7619790359078927 + 0.42781936911611895im 0.19067751058011556 - 5.551115123125783e-17im], ComplexF64[-0.1906775165999555 + 9.714451465470121e-17im -0.7619790511800388 - 0.42781933906808967im; -0.7619790511800383 + 0.4278193390680902im 0.19067751659995547 - 5.551115123125783e-17im], ComplexF64[-0.19067752280674638 + 6.938893903907228e-17im -0.7619790669264724 - 0.42781930808689106im; -0.761979066926472 + 0.42781930808689167im 0.19067752280674635 - 5.551115123125783e-17im], ComplexF64[-0.19067754423139024 + 6.938893903907227e-17im -0.7619791212801187 - 0.4278192011457619im; -0.7619791212801182 + 0.42781920114576233im 0.19067754423139027 - 8.326672684688674e-17im], ComplexF64[-0.19067754722356928 + 3.469446951953614e-17im -0.7619791288711821 - 0.4278191862102957im; -0.7619791288711816 + 0.42781918621029613im 0.19067754722356925 - 5.551115123125783e-17im], ComplexF64[0.10256332343260213 - 9.367506770274757e-17im -0.7978732010869367 - 0.18734845122942287im; -0.7978732010869362 + 0.18734845122942337im -0.10256332343260212 + 2.7755575615628914e-17im], ComplexF64[0.10256330827833669 - 4.8572257327350605e-17im -0.797873091011672 - 0.18734841664557222im; -0.7978730910116714 + 0.18734841664557272im -0.10256330827833669 + 5.551115123125783e-17im], ComplexF64[-1.4837859808686042e-8 + 6.011258690472781e-24im 1.8162244429537037e-9 - 1.2167713721115952e-8im; 1.816224442953701e-9 + 1.2167713721115954e-8im 1.4837859808686042e-8 - 3.70637664174442e-24im], ComplexF64[0.8131824612745646 + 1.2783192571645067e-17im 0.1264291236509385 - 0.363037287500528im; 0.12642912365093875 + 0.3630372875005277im 0.1868175387254388 - 4.8489099353298173e-17im], ComplexF64[-0.8183323790243439 + 3.3153080623026663e-16im 0.13119007491231566 - 0.8789019885608393im; 0.1311900749123155 + 0.8789019885608397im 1.250222514991851 - 3.1229541094842726e-16im], OrdinaryDiffEqCore.trivial_limiter!, OrdinaryDiffEqCore.trivial_limiter!, static(false)), nothing, false), false, 0, SciMLBase.DEStats(16983, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1778, 1052, 0.0), nothing, SciMLBase.ReturnCode.Success, nothing, nothing, nothing))

Solve and Analyze

The fidelity for density matrices is $F = \operatorname{tr}(\rho_{\text{goal}}\,\rho(T))$.

qcp_density = SmoothPulseProblem(qtraj_density, N_density; Q = 100.0, R = 1e-2)
solve!(qcp_density; max_iter = 150)
fidelity(qcp_density)
0.9948951115506884

MultiDensityTrajectory

For optimizing open quantum systems that must simultaneously steer multiple initial density matrices to their respective targets — e.g. process tomography or channel certification. All density matrices share a single control pulse and Lindblad generator. The fidelity is a weighted average:

\[F = \sum_{j=1}^{M} w_j\, \operatorname{tr}(\rho_{\text{goal},j}\,\rho_j(T)), \qquad \sum_j w_j = 1\]

Internally, M Lindblad ODEs are solved in parallel via DifferentialEquations.EnsembleProblem.

Construction

# Open system: 2-level atom with T₁ decay
L_decay = ComplexF64[0 0; 1 0]  ## |0⟩⟨1| collapse operator (decay rate = 1)
open_sys2 = OpenQuantumSystem(
    PAULIS[:Z],
    [PAULIS[:X], PAULIS[:Y]],
    [1.0, 1.0];
    dissipation_operators = [L_decay],
)

# Prepare two initial → goal pairs (e.g., two rows of a process matrix)
ρ0_a = ComplexF64[1 0; 0 0]  ## |0⟩⟨0|
ρ0_b = ComplexF64[0 0; 0 1]  ## |1⟩⟨1|
ρg_a = ComplexF64[0 0; 0 1]  ## |1⟩⟨1|
ρg_b = ComplexF64[1 0; 0 0]  ## |0⟩⟨0|

T_md, N_md = 10.0, 50
times_md = collect(range(0, T_md, length = N_md))
pulse_md = ZeroOrderPulse(0.1 * randn(2, N_md), times_md)

qtraj_md = MultiDensityTrajectory(
    open_sys2,
    pulse_md,
    [ρ0_a, ρ0_b],
    [ρg_a, ρg_b];
    weights = [0.5, 0.5],
)
MultiDensityTrajectory{ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, SciMLBase.EnsembleSolution{ComplexF64, 4, Vector{SciMLBase.ODESolution{ComplexF64, 3, Vector{Matrix{ComplexF64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, SciMLBase.ODEProblem{Matrix{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqTsit5.Tsit5{typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}, OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Matrix{ComplexF64}}, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, OrdinaryDiffEqTsit5.Tsit5Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}, Nothing}, SciMLBase.DEStats, Nothing, Nothing, Nothing, Nothing}}}}(OpenQuantumSystem: levels = 2, n_drives = 2, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}(DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}([-0.0340938045944418 -0.07115111856159236 … 0.06276944247676262 -0.11861423281380692; 0.071511694336847 0.06541724764536179 … -0.05947758402562164 0.04439552271966941], [0.0, 0.20408163265306123, 0.40816326530612246, 0.6122448979591837, 0.8163265306122449, 1.0204081632653061, 1.2244897959183674, 1.4285714285714286, 1.6326530612244898, 1.836734693877551  …  8.16326530612245, 8.36734693877551, 8.571428571428571, 8.775510204081632, 8.979591836734693, 9.183673469387756, 9.387755102040817, 9.591836734693878, 9.795918367346939, 10.0], Union{}[], nothing, :left, DataInterpolations.ExtrapolationType.None, DataInterpolations.ExtrapolationType.None, FindFirstFunctions.Guesser{Vector{Float64}}([0.0, 0.20408163265306123, 0.40816326530612246, 0.6122448979591837, 0.8163265306122449, 1.0204081632653061, 1.2244897959183674, 1.4285714285714286, 1.6326530612244898, 1.836734693877551  …  8.16326530612245, 8.36734693877551, 8.571428571428571, 8.775510204081632, 8.979591836734693, 9.183673469387756, 9.387755102040817, 9.591836734693878, 9.795918367346939, 10.0], Base.RefValue{Int64}(1), true), false, false), 10.0, 2, :u, [0.0, 0.0], [0.0, 0.0]), Matrix{ComplexF64}[[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im], [0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im]], Matrix{ComplexF64}[[0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im], [1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im]], [0.5, 0.5], SciMLBase.EnsembleSolution{ComplexF64, 4, Vector{SciMLBase.ODESolution{ComplexF64, 3, Vector{Matrix{ComplexF64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, SciMLBase.ODEProblem{Matrix{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqTsit5.Tsit5{typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}, OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Matrix{ComplexF64}}, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, OrdinaryDiffEqTsit5.Tsit5Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}, Nothing}, SciMLBase.DEStats, Nothing, Nothing, Nothing, Nothing}}}(SciMLBase.ODESolution{ComplexF64, 3, Vector{Matrix{ComplexF64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, SciMLBase.ODEProblem{Matrix{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqTsit5.Tsit5{typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}, OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Matrix{ComplexF64}}, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, OrdinaryDiffEqTsit5.Tsit5Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}, Nothing}, SciMLBase.DEStats, Nothing, Nothing, Nothing, Nothing}[SciMLBase.ODESolution{ComplexF64, 3, Vector{Matrix{ComplexF64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, SciMLBase.ODEProblem{Matrix{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqTsit5.Tsit5{typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}, OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Matrix{ComplexF64}}, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, OrdinaryDiffEqTsit5.Tsit5Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}, Nothing}, SciMLBase.DEStats, Nothing, Nothing, Nothing, Nothing}(Matrix{ComplexF64}[[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im], [0.9047818269212223 - 5.203288461167245e-19im 0.005944009024630907 - 0.0036244276137355896im; 0.005944009024630908 + 0.003624427613735588im 0.09521817307877772 - 4.61675100997992e-20im], [0.818535756145214 - 1.2877388372728851e-18im 0.009605305428221089 - 0.007400955743379559im; 0.00960530542822109 + 0.007400955743379558im 0.18146424385478607 - 3.554366228317312e-19im], [0.740376076087772 - 8.025292516088086e-18im 0.01071751918055446 - 0.012834409850701741im; 0.010717519180554462 + 0.012834409850701743im 0.25962392391222827 - 5.777229836118424e-19im], [0.6695856261287819 + 2.9438227138517877e-18im 0.00985593535228296 - 0.017075643738952175im; 0.009855935352282965 + 0.017075643738952182im 0.33041437387121836 - 6.549150385521906e-19im], [0.6060571078780578 - 1.0345410777070492e-17im 0.0067129298828777625 - 0.016034753969404222im; 0.006712929882877765 + 0.01603475396940423im 0.3939428921219421 - 4.292429559978102e-19im], [0.5486118605727207 - 2.0556724910815624e-18im 0.003628818184720486 - 0.015008629636227245im; 0.0036288181847204865 + 0.015008629636227254im 0.45138813942727923 - 9.72050816849439e-19im], [0.49607242187837153 + 6.44686499122857e-20im 0.00014843448131103367 - 0.015032791372404337im; 0.00014843448131103012 + 0.015032791372404347im 0.5039275781216281 - 8.925654202591325e-19im], [0.4484235060125665 + 1.5473228386699328e-18im -0.0019905541871531123 - 0.013242859635458267im; -0.001990554187153118 + 0.013242859635458274im 0.5515764939874331 - 8.1255178285335845e-19im], [0.40609281889660787 - 5.003036163721088e-18im -0.004598059655110663 - 0.014034480637455807im; -0.004598059655110668 + 0.014034480637455809im 0.5939071811033916 - 5.977086648991086e-18im]  …  [0.0005715159485898981 - 1.6282138401034822e-19im -0.021232001641854664 - 0.0007023928069854236im; -0.021232001641854653 + 0.0007023928069854222im 0.9994284840514102 - 6.756614365242939e-17im], [0.0004856470331412227 - 1.6581241373172128e-19im -0.019345410650162063 + 0.0016283012260181109im; -0.019345410650162053 - 0.001628301226018111im 0.9995143529668585 - 6.758256380499337e-17im], [0.0003966382321630667 - 1.4341689544794384e-19im -0.01666398292274499 + 0.004537158036753528im; -0.01666398292274498 - 0.004537158036753526im 0.9996033617678367 - 6.759842863137285e-17im], [0.00028611229894846607 - 1.148761758537542e-19im -0.011797113379140332 + 0.007614812901508163im; -0.01179711337914032 - 0.007614812901508158im 0.9997138877010514 - 6.761197666671268e-17im], [0.00032990796556976124 + 1.2903702492223993e-19im 0.006551638833862671 + 0.014368480836709746im; 0.006551638833862685 - 0.014368480836709741im 0.9996700920344301 - 6.761092398605276e-17im], [0.0008820242175130557 + 1.9760573340323507e-19im 0.023067025093045812 + 0.01662379744301324im; 0.02306702509304583 - 0.016623797443013236im 0.9991179757824871 - 6.870610751820543e-17im], [0.0005214088775877327 + 1.9691126652961808e-19im 0.018028684432723208 + 0.011409552489864241im; 0.01802868443272323 - 0.011409552489864234im 0.9994785911224126 - 4.0014744294440253e-17im], [0.00027783446749065624 + 1.2033629439996487e-19im 0.012860682721574942 + 0.007259033342632552im; 0.012860682721574958 - 0.007259033342632544im 0.9997221655325096 - 4.191033663311201e-17im], [0.0004023699577666609 + 4.5833938920910186e-20im 0.018516269894199907 - 0.0023145194857713478im; 0.01851626989419992 + 0.0023145194857713603im 0.9995976300422337 - 4.1901141665026685e-17im], [0.0006837911738075784 + 1.236256781527877e-20im 0.021977398082481652 - 0.012305676623063581im; 0.021977398082481666 + 0.012305676623063597im 0.9993162088261925 - 4.189737418802539e-17im]], nothing, nothing, [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9  …  9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10.0], Vector{Matrix{ComplexF64}}[[[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im]]], nothing, SciMLBase.ODEProblem{Matrix{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}(SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}(Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}(OpenQuantumSystem: levels = 2, n_drives = 2, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}(DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}([-0.0340938045944418 -0.07115111856159236 … 0.06276944247676262 -0.11861423281380692; 0.071511694336847 0.06541724764536179 … -0.05947758402562164 0.04439552271966941], [0.0, 0.20408163265306123, 0.40816326530612246, 0.6122448979591837, 0.8163265306122449, 1.0204081632653061, 1.2244897959183674, 1.4285714285714286, 1.6326530612244898, 1.836734693877551  …  8.16326530612245, 8.36734693877551, 8.571428571428571, 8.775510204081632, 8.979591836734693, 9.183673469387756, 9.387755102040817, 9.591836734693878, 9.795918367346939, 10.0], Union{}[], nothing, :left, DataInterpolations.ExtrapolationType.None, DataInterpolations.ExtrapolationType.None, FindFirstFunctions.Guesser{Vector{Float64}}([0.0, 0.20408163265306123, 0.40816326530612246, 0.6122448979591837, 0.8163265306122449, 1.0204081632653061, 1.2244897959183674, 1.4285714285714286, 1.6326530612244898, 1.836734693877551  …  8.16326530612245, 8.36734693877551, 8.571428571428571, 8.775510204081632, 8.979591836734693, 9.183673469387756, 9.387755102040817, 9.591836734693878, 9.795918367346939, 10.0], Base.RefValue{Int64}(50), true), false, false), 10.0, 2, :u, [0.0, 0.0], [0.0, 0.0]), ComplexF64[0.0 + 0.0im 0.0 + 0.0im; 0.0006837911738075784 + 1.236256781527877e-20im 0.021977398082481652 - 0.012305676623063581im], SparseArrays.SparseMatrixCSC{ComplexF64, Int64}[sparse([1], [1], ComplexF64[1.0 + 0.0im], 2, 2)], SparseArrays.SparseMatrixCSC{ComplexF64, Int64}[sparse([2], [1], ComplexF64[1.0 + 0.0im], 2, 2)]), LinearAlgebra.UniformScaling{Bool}(true), nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, SciMLBase.DEFAULT_OBSERVED, nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(Dict{Symbol, Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(:ρ_1_2 => CartesianIndex(1, 2), :ρ_2_2 => CartesianIndex(2, 2), :ρ => CartesianIndices((2, 2)), :ρ_1_1 => CartesianIndex(1, 1), :ρ_2_1 => CartesianIndex(2, 1)), :t, Dict{Symbol, Float64}()), nothing, nothing), ComplexF64[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im], (0.0, 10.0), SciMLBase.NullParameters(), Base.Pairs(:tstops => [0.0, 0.1, 0.2, 0.20408163265306123, 0.3, 0.4, 0.40816326530612246, 0.5, 0.6, 0.6122448979591837  …  9.387755102040817, 9.4, 9.5, 9.591836734693878, 9.6, 9.7, 9.795918367346939, 9.8, 9.9, 10.0]), SciMLBase.StandardODEProblem()), OrdinaryDiffEqTsit5.Tsit5{typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}(OrdinaryDiffEqCore.trivial_limiter!, OrdinaryDiffEqCore.trivial_limiter!, static(false)), OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Matrix{ComplexF64}}, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, OrdinaryDiffEqTsit5.Tsit5Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}, Nothing}(SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}(Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}(OpenQuantumSystem: levels = 2, n_drives = 2, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}(DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}([-0.0340938045944418 -0.07115111856159236 … 0.06276944247676262 -0.11861423281380692; 0.071511694336847 0.06541724764536179 … -0.05947758402562164 0.04439552271966941], [0.0, 0.20408163265306123, 0.40816326530612246, 0.6122448979591837, 0.8163265306122449, 1.0204081632653061, 1.2244897959183674, 1.4285714285714286, 1.6326530612244898, 1.836734693877551  …  8.16326530612245, 8.36734693877551, 8.571428571428571, 8.775510204081632, 8.979591836734693, 9.183673469387756, 9.387755102040817, 9.591836734693878, 9.795918367346939, 10.0], Union{}[], nothing, :left, DataInterpolations.ExtrapolationType.None, DataInterpolations.ExtrapolationType.None, FindFirstFunctions.Guesser{Vector{Float64}}([0.0, 0.20408163265306123, 0.40816326530612246, 0.6122448979591837, 0.8163265306122449, 1.0204081632653061, 1.2244897959183674, 1.4285714285714286, 1.6326530612244898, 1.836734693877551  …  8.16326530612245, 8.36734693877551, 8.571428571428571, 8.775510204081632, 8.979591836734693, 9.183673469387756, 9.387755102040817, 9.591836734693878, 9.795918367346939, 10.0], Base.RefValue{Int64}(50), true), false, false), 10.0, 2, :u, [0.0, 0.0], [0.0, 0.0]), ComplexF64[0.0 + 0.0im 0.0 + 0.0im; 0.0006837911738075784 + 1.236256781527877e-20im 0.021977398082481652 - 0.012305676623063581im], SparseArrays.SparseMatrixCSC{ComplexF64, Int64}[sparse([1], [1], ComplexF64[1.0 + 0.0im], 2, 2)], SparseArrays.SparseMatrixCSC{ComplexF64, Int64}[sparse([2], [1], ComplexF64[1.0 + 0.0im], 2, 2)]), LinearAlgebra.UniformScaling{Bool}(true), nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, SciMLBase.DEFAULT_OBSERVED, nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(Dict{Symbol, Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(:ρ_1_2 => CartesianIndex(1, 2), :ρ_2_2 => CartesianIndex(2, 2), :ρ => CartesianIndices((2, 2)), :ρ_1_1 => CartesianIndex(1, 1), :ρ_2_1 => CartesianIndex(2, 1)), :t, Dict{Symbol, Float64}()), nothing, nothing), Matrix{ComplexF64}[[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im], [0.9047818269212223 - 5.203288461167245e-19im 0.005944009024630907 - 0.0036244276137355896im; 0.005944009024630908 + 0.003624427613735588im 0.09521817307877772 - 4.61675100997992e-20im], [0.818535756145214 - 1.2877388372728851e-18im 0.009605305428221089 - 0.007400955743379559im; 0.00960530542822109 + 0.007400955743379558im 0.18146424385478607 - 3.554366228317312e-19im], [0.740376076087772 - 8.025292516088086e-18im 0.01071751918055446 - 0.012834409850701741im; 0.010717519180554462 + 0.012834409850701743im 0.25962392391222827 - 5.777229836118424e-19im], [0.6695856261287819 + 2.9438227138517877e-18im 0.00985593535228296 - 0.017075643738952175im; 0.009855935352282965 + 0.017075643738952182im 0.33041437387121836 - 6.549150385521906e-19im], [0.6060571078780578 - 1.0345410777070492e-17im 0.0067129298828777625 - 0.016034753969404222im; 0.006712929882877765 + 0.01603475396940423im 0.3939428921219421 - 4.292429559978102e-19im], [0.5486118605727207 - 2.0556724910815624e-18im 0.003628818184720486 - 0.015008629636227245im; 0.0036288181847204865 + 0.015008629636227254im 0.45138813942727923 - 9.72050816849439e-19im], [0.49607242187837153 + 6.44686499122857e-20im 0.00014843448131103367 - 0.015032791372404337im; 0.00014843448131103012 + 0.015032791372404347im 0.5039275781216281 - 8.925654202591325e-19im], [0.4484235060125665 + 1.5473228386699328e-18im -0.0019905541871531123 - 0.013242859635458267im; -0.001990554187153118 + 0.013242859635458274im 0.5515764939874331 - 8.1255178285335845e-19im], [0.40609281889660787 - 5.003036163721088e-18im -0.004598059655110663 - 0.014034480637455807im; -0.004598059655110668 + 0.014034480637455809im 0.5939071811033916 - 5.977086648991086e-18im]  …  [0.0005715159485898981 - 1.6282138401034822e-19im -0.021232001641854664 - 0.0007023928069854236im; -0.021232001641854653 + 0.0007023928069854222im 0.9994284840514102 - 6.756614365242939e-17im], [0.0004856470331412227 - 1.6581241373172128e-19im -0.019345410650162063 + 0.0016283012260181109im; -0.019345410650162053 - 0.001628301226018111im 0.9995143529668585 - 6.758256380499337e-17im], [0.0003966382321630667 - 1.4341689544794384e-19im -0.01666398292274499 + 0.004537158036753528im; -0.01666398292274498 - 0.004537158036753526im 0.9996033617678367 - 6.759842863137285e-17im], [0.00028611229894846607 - 1.148761758537542e-19im -0.011797113379140332 + 0.007614812901508163im; -0.01179711337914032 - 0.007614812901508158im 0.9997138877010514 - 6.761197666671268e-17im], [0.00032990796556976124 + 1.2903702492223993e-19im 0.006551638833862671 + 0.014368480836709746im; 0.006551638833862685 - 0.014368480836709741im 0.9996700920344301 - 6.761092398605276e-17im], [0.0008820242175130557 + 1.9760573340323507e-19im 0.023067025093045812 + 0.01662379744301324im; 0.02306702509304583 - 0.016623797443013236im 0.9991179757824871 - 6.870610751820543e-17im], [0.0005214088775877327 + 1.9691126652961808e-19im 0.018028684432723208 + 0.011409552489864241im; 0.01802868443272323 - 0.011409552489864234im 0.9994785911224126 - 4.0014744294440253e-17im], [0.00027783446749065624 + 1.2033629439996487e-19im 0.012860682721574942 + 0.007259033342632552im; 0.012860682721574958 - 0.007259033342632544im 0.9997221655325096 - 4.191033663311201e-17im], [0.0004023699577666609 + 4.5833938920910186e-20im 0.018516269894199907 - 0.0023145194857713478im; 0.01851626989419992 + 0.0023145194857713603im 0.9995976300422337 - 4.1901141665026685e-17im], [0.0006837911738075784 + 1.236256781527877e-20im 0.021977398082481652 - 0.012305676623063581im; 0.021977398082481666 + 0.012305676623063597im 0.9993162088261925 - 4.189737418802539e-17im]], [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9  …  9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10.0], Vector{Matrix{ComplexF64}}[[[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 0.0 + 0.0im]]], nothing, false, OrdinaryDiffEqTsit5.Tsit5Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}(ComplexF64[0.0006837911738075784 + 1.236256781527877e-20im 0.021977398082481652 - 0.012305676623063581im; 0.021977398082481666 + 0.012305676623063597im 0.9993162088261925 - 4.189737418802539e-17im], ComplexF64[0.0006837924468099401 + 1.2362506720883511e-20im 0.02197741387828825 - 0.012305699922838014im; 0.021977413878288263 + 0.01230569992283803im 0.9993162075531902 - 4.1897374188923833e-17im], ComplexF64[0.003475378361299332 - 1.2362506720883511e-20im 0.023796136595379033 - 0.10048557773060797im; 0.023796136595379005 + 0.10048557773060798im -0.0034753783612993324 + 1.2362506720883511e-20im], ComplexF64[0.0034753785013580925 - 1.2362506576233824e-20im 0.023796134099827962 - 0.1004855776944902im; 0.023796134099827927 + 0.10048557769449022im -0.0034753785013580925 + 1.2362506576233824e-20im], ComplexF64[0.0034753786457664944 + 9.605771082145852e-20im 0.02379613152677533 - 0.10048557765725064im; 0.023796131526775288 + 0.10048557765725065im -0.0034753786457664944 + 1.2362506427091912e-20im], ComplexF64[0.003475379144236424 + 9.605767696382214e-20im 0.023796122645093728 - 0.10048557752870647im; 0.023796122645093693 + 0.10048557752870647im -0.003475379144236423 + 1.2362540284728293e-20im], ComplexF64[0.0034753792138530427 + 9.605765307632216e-20im 0.023796121404672493 - 0.10048557751075385im; 0.02379612140467246 + 0.10048557751075386im -0.0034753792138530427 + 1.2362564172228287e-20im], ComplexF64[-0.005554454450841566 + 4.2131829966730647e-19im -0.07993493030611964 + 0.08065004011839477im; -0.0799349303061197 - 0.08065004011839476im 0.005554454450841565 + 1.2362569326895267e-20im], ComplexF64[-0.005554444109386617 + 8.549991701731247e-19im -0.07993486047385283 + 0.08065006022940334im; -0.07993486047385288 - 0.08065006022940333im 0.005554444109386617 + 1.1103466503033094e-16im], ComplexF64[2.906702125785611e-10 - 9.972134856678315e-27im 3.339100955399826e-9 - 5.8307525998435735e-9im; 3.339100955399827e-9 + 5.8307525998435735e-9im -2.906702125785611e-10 + 1.2225070683366594e-25im], ComplexF64[0.0006837926993831194 + 1.2362569326895267e-20im 0.021977415607672093 - 0.012305707225628106im; 0.021977415607672107 + 0.012305707225628121im 0.999316207300617 - 4.189737418802539e-17im], ComplexF64[0.029047159029910175 - 9.965320645690754e-19im 0.3257061973201333 - 0.5687495772592267im; 0.32570619732013334 + 0.5687495772592267im -0.01453848127151507 + 6.114625905295885e-18im], OrdinaryDiffEqCore.trivial_limiter!, OrdinaryDiffEqCore.trivial_limiter!, static(false)), nothing, false), false, 0, SciMLBase.DEStats(16647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1729, 1045, 0.0), nothing, SciMLBase.ReturnCode.Success, nothing, nothing, nothing), SciMLBase.ODESolution{ComplexF64, 3, Vector{Matrix{ComplexF64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, SciMLBase.ODEProblem{Matrix{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqTsit5.Tsit5{typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}, OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Matrix{ComplexF64}}, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, OrdinaryDiffEqTsit5.Tsit5Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}, Nothing}, SciMLBase.DEStats, Nothing, Nothing, Nothing, Nothing}(Matrix{ComplexF64}[[0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im], [5.9514554014605154e-5 - 1.565387875945428e-20im -0.006600532424726727 + 0.003992982941026657im; -0.006600532424726727 - 0.003992982941026656im 0.9999404854459855 + 1.5551367237376376e-17im], [0.00022431880458590608 - 2.173620347987873e-20im -0.011997880580970675 + 0.008961993073377575im; -0.011997880580970675 - 0.008961993073377571im 0.9997756811954142 + 4.1280724980182675e-17im], [0.000555298702936896 - 6.051749283508594e-20im -0.015191474145108375 + 0.018005360247468075im; -0.015191474145108378 - 0.01800536024746807im 0.9994447012970631 + 4.082975945325977e-17im], [0.0010084104919231456 - 1.1337432071159302e-19im -0.016403984620591238 + 0.027170367541416187im; -0.01640398462059125 - 0.02717036754141618im 0.998991589508077 + 4.082020006463216e-17im], [0.0006386192429642257 - 4.126460150401121e-20im -0.01280567903422535 + 0.02177359295762135im; -0.012805679034225368 - 0.021773592957621348im 0.9993613807570358 + 4.368386896437674e-17im], [0.00032636987249243243 + 1.3128232843474602e-19im -0.010337864712384319 + 0.014806978929677606im; -0.010337864712384338 - 0.01480697892967761im 0.9996736301275077 + 3.3385014537624023e-17im], [0.0007493721280052247 - 1.2769411501878087e-19im 0.004015334045084041 + 0.02706537602389422im; 0.004015334045084023 - 0.027065376023894226im 0.9992506278719945 + 3.473584620943367e-17im], [0.0019356676335346473 - 3.798015497432298e-19im 0.021767644872905917 + 0.038180886626058515im; 0.02176764487290589 - 0.03818088662605853im 0.9980643323664651 + 3.4703615052548396e-17im], [0.0010513200935460148 - 9.869035927941037e-21im 0.026486079574820156 + 0.018658959838111475im; 0.026486079574820128 - 0.018658959838111503im 0.9989486799064541 + 3.509796075636343e-17im]  …  [0.0004713205848150727 - 4.423897330822167e-19im -0.02162529158194836 - 0.00033083711543545346im; -0.02162529158194836 + 0.00033083711543545986im 0.9995286794151838 + 3.5287122486592634e-17im], [0.0003931855041509622 - 3.9807275104768686e-19im -0.01964173229771328 + 0.00204868651722954im; -0.019641732297713283 - 0.002048686517229533im 0.9996068144958478 + 3.524510617460838e-17im], [0.00031198599437398515 - 3.431172467044336e-19im -0.0168606015301569 + 0.0049849557085538026im; -0.016860601530156904 - 0.004984955708553797im 0.9996880140056248 + 3.5208272643694865e-17im], [0.0002091627636600761 - 2.9728966867810725e-19im -0.011895339339791004 + 0.00806946774011834im; -0.011895339339791009 - 0.008069467740118333im 0.9997908372363387 + 3.5175826879912396e-17im], [0.00026460257642007255 - 1.2810793415373795e-19im 0.00654828457807402 + 0.014811615832604676im; 0.006548284578074009 - 0.014811615832604668im 0.9997353974235786 + 3.5150940734497325e-17im], [0.0008289600909021722 + 1.1325911293349065e-19im 0.02314932999938443 + 0.01703807393089442im; 0.023149329999384422 - 0.017038073930894407im 0.9991710399090966 + 3.5858392278675414e-17im], [0.000471545670977168 + 7.540260221769822e-20im 0.01818302423035075 + 0.011780243854879493im; 0.01818302423035074 - 0.01178024385487948im 0.9995284543290216 + 2.0418998913644162e-17im], [0.00023012475677268082 + 1.5267424950067595e-20im 0.013073999817985396 + 0.007575466015529186im; 0.013073999817985382 - 0.0075754660155291755im 0.9997698752432257 + 6.704078622250091e-18im], [0.00035848527526197784 + 1.676539067033646e-19im 0.01877541037955301 - 0.002060443195921398im; 0.018775410379552996 + 0.0020604431959214083im 0.9996415147247363 + 6.713158795832896e-18im], [0.0006445763355435613 + 2.6717843471074195e-19im 0.022267443013087505 - 0.01211835910487062im; 0.022267443013087487 + 0.012118359104870623im 0.9993554236644545 + 6.736930378386983e-18im]], nothing, nothing, [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9  …  9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10.0], Vector{Matrix{ComplexF64}}[[[0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im]]], nothing, SciMLBase.ODEProblem{Matrix{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Base.Pairs{Symbol, Vector{Float64}, Nothing, @NamedTuple{tstops::Vector{Float64}}}, SciMLBase.StandardODEProblem}(SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}(Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}(OpenQuantumSystem: levels = 2, n_drives = 2, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}(DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}([-0.0340938045944418 -0.07115111856159236 … 0.06276944247676262 -0.11861423281380692; 0.071511694336847 0.06541724764536179 … -0.05947758402562164 0.04439552271966941], [0.0, 0.20408163265306123, 0.40816326530612246, 0.6122448979591837, 0.8163265306122449, 1.0204081632653061, 1.2244897959183674, 1.4285714285714286, 1.6326530612244898, 1.836734693877551  …  8.16326530612245, 8.36734693877551, 8.571428571428571, 8.775510204081632, 8.979591836734693, 9.183673469387756, 9.387755102040817, 9.591836734693878, 9.795918367346939, 10.0], Union{}[], nothing, :left, DataInterpolations.ExtrapolationType.None, DataInterpolations.ExtrapolationType.None, FindFirstFunctions.Guesser{Vector{Float64}}([0.0, 0.20408163265306123, 0.40816326530612246, 0.6122448979591837, 0.8163265306122449, 1.0204081632653061, 1.2244897959183674, 1.4285714285714286, 1.6326530612244898, 1.836734693877551  …  8.16326530612245, 8.36734693877551, 8.571428571428571, 8.775510204081632, 8.979591836734693, 9.183673469387756, 9.387755102040817, 9.591836734693878, 9.795918367346939, 10.0], Base.RefValue{Int64}(50), true), false, false), 10.0, 2, :u, [0.0, 0.0], [0.0, 0.0]), ComplexF64[0.0 + 0.0im 0.0 + 0.0im; 0.0006445763355435613 + 2.6717843471074195e-19im 0.022267443013087505 - 0.01211835910487062im], SparseArrays.SparseMatrixCSC{ComplexF64, Int64}[sparse([1], [1], ComplexF64[1.0 + 0.0im], 2, 2)], SparseArrays.SparseMatrixCSC{ComplexF64, Int64}[sparse([2], [1], ComplexF64[1.0 + 0.0im], 2, 2)]), LinearAlgebra.UniformScaling{Bool}(true), nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, SciMLBase.DEFAULT_OBSERVED, nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(Dict{Symbol, Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(:ρ_1_2 => CartesianIndex(1, 2), :ρ_2_2 => CartesianIndex(2, 2), :ρ => CartesianIndices((2, 2)), :ρ_1_1 => CartesianIndex(1, 1), :ρ_2_1 => CartesianIndex(2, 1)), :t, Dict{Symbol, Float64}()), nothing, nothing), ComplexF64[0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im], (0.0, 10.0), SciMLBase.NullParameters(), Base.Pairs(:tstops => [0.0, 0.1, 0.2, 0.20408163265306123, 0.3, 0.4, 0.40816326530612246, 0.5, 0.6, 0.6122448979591837  …  9.387755102040817, 9.4, 9.5, 9.591836734693878, 9.6, 9.7, 9.795918367346939, 9.8, 9.9, 10.0]), SciMLBase.StandardODEProblem()), OrdinaryDiffEqTsit5.Tsit5{typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}(OrdinaryDiffEqCore.trivial_limiter!, OrdinaryDiffEqCore.trivial_limiter!, static(false)), OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}, Vector{Matrix{ComplexF64}}, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, Nothing, OrdinaryDiffEqTsit5.Tsit5Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}, Nothing}(SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}, Nothing, Nothing}(Piccolo.Quantum.Rollouts.var"#rhs!#_construct_rhs##5"{OpenQuantumSystem{Piccolo.Quantum.QuantumSystems.var"#153#154"{Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Piccolo.Quantum.QuantumSystems.var"#155#156"{Vector{SparseArrays.SparseMatrixCSC{Float64, Int64}}, SparseArrays.SparseMatrixCSC{Float64, Int64}}, @NamedTuple{}}, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}, Matrix{ComplexF64}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, Vector{SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}(OpenQuantumSystem: levels = 2, n_drives = 2, ZeroOrderPulse{DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}}(DataInterpolations.ConstantInterpolation{Matrix{Float64}, Vector{Float64}, Vector{Union{}}, Float64}([-0.0340938045944418 -0.07115111856159236 … 0.06276944247676262 -0.11861423281380692; 0.071511694336847 0.06541724764536179 … -0.05947758402562164 0.04439552271966941], [0.0, 0.20408163265306123, 0.40816326530612246, 0.6122448979591837, 0.8163265306122449, 1.0204081632653061, 1.2244897959183674, 1.4285714285714286, 1.6326530612244898, 1.836734693877551  …  8.16326530612245, 8.36734693877551, 8.571428571428571, 8.775510204081632, 8.979591836734693, 9.183673469387756, 9.387755102040817, 9.591836734693878, 9.795918367346939, 10.0], Union{}[], nothing, :left, DataInterpolations.ExtrapolationType.None, DataInterpolations.ExtrapolationType.None, FindFirstFunctions.Guesser{Vector{Float64}}([0.0, 0.20408163265306123, 0.40816326530612246, 0.6122448979591837, 0.8163265306122449, 1.0204081632653061, 1.2244897959183674, 1.4285714285714286, 1.6326530612244898, 1.836734693877551  …  8.16326530612245, 8.36734693877551, 8.571428571428571, 8.775510204081632, 8.979591836734693, 9.183673469387756, 9.387755102040817, 9.591836734693878, 9.795918367346939, 10.0], Base.RefValue{Int64}(50), true), false, false), 10.0, 2, :u, [0.0, 0.0], [0.0, 0.0]), ComplexF64[0.0 + 0.0im 0.0 + 0.0im; 0.0006445763355435613 + 2.6717843471074195e-19im 0.022267443013087505 - 0.01211835910487062im], SparseArrays.SparseMatrixCSC{ComplexF64, Int64}[sparse([1], [1], ComplexF64[1.0 + 0.0im], 2, 2)], SparseArrays.SparseMatrixCSC{ComplexF64, Int64}[sparse([2], [1], ComplexF64[1.0 + 0.0im], 2, 2)]), LinearAlgebra.UniformScaling{Bool}(true), nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, SciMLBase.DEFAULT_OBSERVED, nothing, Piccolo.Quantum.Rollouts.PiccoloRolloutSystem{Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(Dict{Symbol, Union{Int64, AbstractVector{Int64}, CartesianIndex, CartesianIndices}}(:ρ_1_2 => CartesianIndex(1, 2), :ρ_2_2 => CartesianIndex(2, 2), :ρ => CartesianIndices((2, 2)), :ρ_1_1 => CartesianIndex(1, 1), :ρ_2_1 => CartesianIndex(2, 1)), :t, Dict{Symbol, Float64}()), nothing, nothing), Matrix{ComplexF64}[[0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im], [5.9514554014605154e-5 - 1.565387875945428e-20im -0.006600532424726727 + 0.003992982941026657im; -0.006600532424726727 - 0.003992982941026656im 0.9999404854459855 + 1.5551367237376376e-17im], [0.00022431880458590608 - 2.173620347987873e-20im -0.011997880580970675 + 0.008961993073377575im; -0.011997880580970675 - 0.008961993073377571im 0.9997756811954142 + 4.1280724980182675e-17im], [0.000555298702936896 - 6.051749283508594e-20im -0.015191474145108375 + 0.018005360247468075im; -0.015191474145108378 - 0.01800536024746807im 0.9994447012970631 + 4.082975945325977e-17im], [0.0010084104919231456 - 1.1337432071159302e-19im -0.016403984620591238 + 0.027170367541416187im; -0.01640398462059125 - 0.02717036754141618im 0.998991589508077 + 4.082020006463216e-17im], [0.0006386192429642257 - 4.126460150401121e-20im -0.01280567903422535 + 0.02177359295762135im; -0.012805679034225368 - 0.021773592957621348im 0.9993613807570358 + 4.368386896437674e-17im], [0.00032636987249243243 + 1.3128232843474602e-19im -0.010337864712384319 + 0.014806978929677606im; -0.010337864712384338 - 0.01480697892967761im 0.9996736301275077 + 3.3385014537624023e-17im], [0.0007493721280052247 - 1.2769411501878087e-19im 0.004015334045084041 + 0.02706537602389422im; 0.004015334045084023 - 0.027065376023894226im 0.9992506278719945 + 3.473584620943367e-17im], [0.0019356676335346473 - 3.798015497432298e-19im 0.021767644872905917 + 0.038180886626058515im; 0.02176764487290589 - 0.03818088662605853im 0.9980643323664651 + 3.4703615052548396e-17im], [0.0010513200935460148 - 9.869035927941037e-21im 0.026486079574820156 + 0.018658959838111475im; 0.026486079574820128 - 0.018658959838111503im 0.9989486799064541 + 3.509796075636343e-17im]  …  [0.0004713205848150727 - 4.423897330822167e-19im -0.02162529158194836 - 0.00033083711543545346im; -0.02162529158194836 + 0.00033083711543545986im 0.9995286794151838 + 3.5287122486592634e-17im], [0.0003931855041509622 - 3.9807275104768686e-19im -0.01964173229771328 + 0.00204868651722954im; -0.019641732297713283 - 0.002048686517229533im 0.9996068144958478 + 3.524510617460838e-17im], [0.00031198599437398515 - 3.431172467044336e-19im -0.0168606015301569 + 0.0049849557085538026im; -0.016860601530156904 - 0.004984955708553797im 0.9996880140056248 + 3.5208272643694865e-17im], [0.0002091627636600761 - 2.9728966867810725e-19im -0.011895339339791004 + 0.00806946774011834im; -0.011895339339791009 - 0.008069467740118333im 0.9997908372363387 + 3.5175826879912396e-17im], [0.00026460257642007255 - 1.2810793415373795e-19im 0.00654828457807402 + 0.014811615832604676im; 0.006548284578074009 - 0.014811615832604668im 0.9997353974235786 + 3.5150940734497325e-17im], [0.0008289600909021722 + 1.1325911293349065e-19im 0.02314932999938443 + 0.01703807393089442im; 0.023149329999384422 - 0.017038073930894407im 0.9991710399090966 + 3.5858392278675414e-17im], [0.000471545670977168 + 7.540260221769822e-20im 0.01818302423035075 + 0.011780243854879493im; 0.01818302423035074 - 0.01178024385487948im 0.9995284543290216 + 2.0418998913644162e-17im], [0.00023012475677268082 + 1.5267424950067595e-20im 0.013073999817985396 + 0.007575466015529186im; 0.013073999817985382 - 0.0075754660155291755im 0.9997698752432257 + 6.704078622250091e-18im], [0.00035848527526197784 + 1.676539067033646e-19im 0.01877541037955301 - 0.002060443195921398im; 0.018775410379552996 + 0.0020604431959214083im 0.9996415147247363 + 6.713158795832896e-18im], [0.0006445763355435613 + 2.6717843471074195e-19im 0.022267443013087505 - 0.01211835910487062im; 0.022267443013087487 + 0.012118359104870623im 0.9993554236644545 + 6.736930378386983e-18im]], [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9  …  9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10.0], Vector{Matrix{ComplexF64}}[[[0.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im]]], nothing, false, OrdinaryDiffEqTsit5.Tsit5Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), Static.False}(ComplexF64[0.0006445763355435613 + 2.6717843471074195e-19im 0.022267443013087505 - 0.01211835910487062im; 0.022267443013087487 + 0.012118359104870623im 0.9993554236644545 + 6.736930378386983e-18im], ComplexF64[0.0006445766565348519 + 2.6717857445332207e-19im 0.02226744700763356 - 0.012118364991036825im; 0.022267447007633542 + 0.012118364991036829im 0.9993554233434632 + 6.736930373471763e-18im], ComplexF64[0.0035255772727649523 + 9.254438152807328e-19im 0.02403045481523107 - 0.10116423456178274im; 0.024030454815231077 + 0.10116423456178271im -0.0035255772727649523 + 2.6717857445332207e-19im], ComplexF64[0.0035255773084052738 + 1.0338640297882315e-18im 0.02403045417912902 - 0.10116423455300433im; 0.02403045417912903 + 0.10116423455300429im -0.0035255773084052738 + 2.6717857719437375e-19im], ComplexF64[0.0035255773451524364 + 9.254438090443605e-19im 0.02403045352327226 - 0.10116423454395326im; 0.024030453523272252 + 0.10116423454395324im -0.003525577345152437 + 2.6717858068969446e-19im], ComplexF64[0.0035255774719965592 + 1.1422842471396166e-18im 0.0240304512593811 - 0.10116423451271074im; 0.024030451259381105 + 0.1011642345127107im -0.0035255774719965592 + 2.6717857709153925e-19im], ComplexF64[0.003525577489711689 + 9.254438223987075e-19im 0.024030450943204634 - 0.1011642345083474im; 0.024030450943204645 + 0.10116423450834734im -0.003525577489711689 + 2.6717856733534755e-19im], ComplexF64[-0.005496548233963382 - 2.8692637793862206e-18im -0.07970874750783037 + 0.07998560939384451im; -0.07970874750783037 - 0.07998560939384455im 0.005496548233963381 + 2.6717856542101036e-19im], ComplexF64[-0.005496545616309382 - 2.869263648675953e-18im -0.07970872982925593 + 0.07998561448500613im; -0.07970872982925595 - 0.07998561448500617im 0.005496545616309382 + 2.6717843471074195e-19im], ComplexF64[7.351667351869853e-11 + 3.034222107934217e-26im 8.453174979406074e-10 - 1.4760971181757302e-9im; 8.453174979406075e-10 + 1.4760971181757298e-9im -7.351667351869853e-11 - 4.5253150498298174e-35im], ComplexF64[0.0006445767213940454 + 2.6717856542101036e-19im 0.022267447449715982 - 0.012118366852130755im; 0.022267447449715965 + 0.012118366852130759im 0.9993554232786039 + 6.736930378386983e-18im], ComplexF64[0.007346931691204546 + 3.0322675790364025e-18im 0.08244173559088515 - 0.1439601198597941im; 0.08244173559088515 + 0.14396011985979407im -0.003677018735566078 - 2.2633869877601547e-27im], OrdinaryDiffEqCore.trivial_limiter!, OrdinaryDiffEqCore.trivial_limiter!, static(false)), nothing, false), false, 0, SciMLBase.DEStats(17085, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1770, 1077, 0.0), nothing, SciMLBase.ReturnCode.Success, nothing, nothing, nothing)], 0.032390866, true, SciMLBase.DEStats(33732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3499, 2122, 0.0)))

Rollout and Fidelity

qtraj_md_out = rollout(qtraj_md)
fidelity(qtraj_md_out)
0.49998039258086807
Note

Built-in optimization support for MultiDensityTrajectory (via SmoothPulseProblem) requires a Piccolissimo integrator that provides per-density Lindbladian dynamics. Rollout and fidelity evaluation work out of the box with any pulse type.

When to Use vs DensityTrajectory

ScenarioUse
Single initial stateDensityTrajectory
Process tomography / multiple initial statesMultiDensityTrajectory
Weighted importance across initial statesMultiDensityTrajectory with custom weights

SamplingTrajectory

For robust optimization over parameter variations. Created internally by SamplingProblem, this trajectory type stores multiple system variants sharing a single control pulse. The objective averages fidelity across all samples:

\[\bar{\ell} = \frac{1}{S}\sum_{s=1}^{S} \ell\!\bigl(x_N^{(s)},\, x_{\text{goal}}\bigr)\]

systems = [sys_nominal, sys_high, sys_low]
qcp_robust = SamplingProblem(qcp_base, systems)

Common Operations

Named Trajectory Integration

After solving, the NamedTrajectory stores the NLP decision vector at each of the $N$ knot points:

traj = get_trajectory(qcp)

# Controls at timestep k
u_1 = traj[1][:u]
u_1

# All timesteps
Δts = get_timesteps(traj)
length(Δts)
100

Internal Representation

States in the trajectory are real isomorphic vectors. Convert back to complex form with:

U = iso_vec_to_operator(traj[:Ũ⃗][:, end])     # unitary
ψ = iso_to_ket(traj[:ψ̃][:, end])               # ket
ρ = compact_iso_to_density(traj[:ρ⃗̃][:, end])   # density matrix

See Isomorphisms for details.

Best Practices

1. Match Pulse Type to Problem

# For SmoothPulseProblem
pulse = ZeroOrderPulse(controls, times)
qtraj = UnitaryTrajectory(sys, pulse, U_goal)
qcp = SmoothPulseProblem(qtraj, N)  # ✓

# For SplinePulseProblem
pulse = CubicSplinePulse(controls, tangents, times)
qtraj = UnitaryTrajectory(sys, pulse, U_goal)
qcp = SplinePulseProblem(qtraj)  # ✓

2. Initialize with Reasonable Controls

# Scale by drive bounds
max_amp = 0.1 * 1.0
initial_controls = max_amp * randn(2, N)
extrema(initial_controls)
(-0.2765577910346666, 0.27317472904412404)

See Also


This page was generated using Literate.jl.