Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

QuantumOpticsBase.IncompatibleBases() error upon executing timeevolution.master_dynamic() #90

Closed
justin-phillips opened this issue Jul 8, 2022 · 6 comments

Comments

@justin-phillips
Copy link
Collaborator

I would like to apologize in advance if my formatting is not convenient here - I am new to dropping issues here on github and hope that the readability is okay. If you need any more information please let me know!

I had some simple simulations which ran fine for [email protected], but after the update to [email protected], they no longer run.

I have also tried running the examples on the website for [email protected] and they throw an error identical to the one I receive running my code. Reverting to [email protected] fixes the issue for both my own code and for the website examples.

The error QuantumOpticsBase.IncompatibleBases() is thrown on the line

 _, ρt = timeevolution.master_dynamic(tspan, ρᵢ_22, (t, ρ) -> (h(t, ρ), [J], [J], [γ]))

in the following example code. I have many simple simulations like this one which all throw the same error upon the line involving timeevolution.master_dynamic but which involve different numbers of lasers and ions, and different energy levels, laser parameters, etc.

using QuantumOptics
using QuantumOpticsBase
using IonSim
using DSP: periodogram
using LaTeXStrings
import PyPlot
const plt = PyPlot
plt.matplotlib.rc("xtick", top=false)
plt.matplotlib.rc("ytick", right=false, left=false)
plt.matplotlib.rc("axes", labelsize=20, titlesize=20, grid=true)
plt.matplotlib.rc("axes", linewidth=2)
plt.matplotlib.rc("grid", alpha=0.25, linestyle="--")
plt.matplotlib.rc("font", family="Palatino", weight="medium")
plt.matplotlib.rc("figure", figsize=(8,4))
plt.matplotlib.rc("xtick.major", width=2)
plt.matplotlib.rc("ytick.major", width=2);
c = 2.998e8

 """
Construct the System.
We have two identical calcium ions in a linear chain, exposed to two lasers with the same polarization
and electric field amplitude but detuned by a small detuning δ. This detuning causes an interference
pattern which beats in time. The spacing of the two ions in the chain means that they experience different
total laser intensities as the interference pattern beats, creating a differential AC Stark shift. This
causes the ions to accrue diffeQuantumOpticsBase.IncompatibleBases()rent overal phases via the displacement operation performed by the gate
depending on whether they are in the S or D manifold.
To simulate this, we will need two ion objects of the same species, and two laser objects as well. The lasers
point orthogonally to one another and at a 45 degree angle with respect to the ion chain (which is along ẑ).
"""

C1 = Ca40([("S1/2", -1/2), ("D5/2", -1/2)])

set_sublevel_alias!(C1, Dict("S" => ("S1/2", -1/2), "D" => ("D5/2", -1/2)))

C2 = Ca40([("S1/2", -1/2), ("D5/2", -1/2)])
set_sublevel_alias!(C2, Dict("S" => ("S1/2", -1/2), "D" => ("D5/2", -1/2)))

νᵣ = √14 * 1e6  # radial trap frequency
νₐ = 1.5e6  # axial trap frequency

# set carrier transition Rabi frequency to 500 kHz for L1, then set L2 Efield to be the same.
Ω_set = 5e5;

#setup

#initialize lasers
L1_22 = Laser()
L2_22 = Laser()

#ions
chain_22 = LinearChain(ions=[C1,C2], com_frequencies=(x=νᵣ, y=νᵣ, z=νₐ), vibrational_modes=(x=[1], z=[1]))
T_22 = Trap(configuration=chain_22, B=4e-4, Bhat=ẑ, δB=0, lasers=[L1_22,L2_22])

#laser properties
#no detuning
δ = 0
L1_22.λ = transitionwavelength(C1, ("S", "D"), T_22)
ω1 = 2 * π * c / transitionwavelength(C1, ("S", "D"), T_22)
ω2 = ω1 + δ
L2_22.λ = 2 * π * c / ω2

#crossing k-vector
L1_22.k = (x̂ - ẑ)/√2
L2_22.k = (x̂ + ẑ)/√2

#same polarization
L1_22.ϵ = ẑ
L2_22.ϵ = ẑ

#in phase
L1_22.ϕ = 0
L2_22.ϕ = 0

#set Efield
Efield_from_rabi_frequency!(Ω_set, T_22, 1, 1, ("S", "D"))
Efield_from_rabi_frequency!(Ω_set, T_22, 2, 1, ("S", "D"))

axial_22 = T_22.configuration.vibrational_modes.z[1]
radial_22 = T_22.configuration.vibrational_modes.x[1]

# set vibrational mode Hilbert space dimensions
axial_22.N = 4; radial_22.N = 4;

# set initial state
ρᵢ_ions_22 = dm(C1["S"]) ⊗ dm(C2["S"])
ρᵢ_axial_22 = thermalstate(axial_22, 0.5)
ρᵢ_radial_22 = thermalstate(radial_22, 0.5)
# Set initial state to ρᵢ = |↓, n̄ᵣ=0.5, n̄ₐ=0.5⟩
ρᵢ_22 = ρᵢ_ions_22 ⊗ ρᵢ_radial_22 ⊗ ρᵢ_axial_22;

@time begin
    τ = 5/Ω_set*1e6
    steps = 10000
    tspan = 0:τ/steps:τ

    #J = (-dm(C1["S"]) ⊗ dm(C2["S"]) + dm(C1["D"]) ⊗ dm(C2["D"])) ⊗ one(radial) ⊗ one(axial)  # Collapse operator
    J = one(ρᵢ_22)
    γ = 1e4 * 1e-6;

    h = hamiltonian(T_22, rwa_cutoff=1.5e6, lamb_dicke_order=2)
    
    _, ρt = timeevolution.master_dynamic(tspan, ρᵢ_22, (t, ρ) -> (h(t, ρ), [J], [J], [γ]))
    
    popSS = real(expect(ionprojector(T_22, "S","S"), ρt))
    popSD = real(expect(ionprojector(T_22, "S","D"), ρt))
    popDS = real(expect(ionprojector(T_22, "D","S"), ρt))
    popDD = real(expect(ionprojector(T_22, "D","D"), ρt))
    tot = popSS + popSD + popDS + popDD

    plt.plot(tspan, popSS, color="red", label=L"|SS\rangle")
    plt.plot(tspan, popSD + popDS, color="green", label=L"|SD\rangle + |DS\rangle")
    plt.plot(tspan, popDD, color="blue", label=L"|DD\rangle")
    plt.plot(tspan, tot, color="grey",label="Total")
    plt.xlabel("Time "*L"(\mu s)")
    plt.ylabel("Population")
    plt.legend(loc=1)
    plt.show()
end;

Here is my (cumbersome) stacktrace:

QuantumOpticsBase.IncompatibleBases()
Stacktrace:
[1] check_samebases
@ ~/.julia/packages/QuantumOpticsBase/BsFXI/src/bases.jl:184 [inlined]
[2] check_master(rho0::Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, H::Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}, J::Vector{Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, Jdagger::Vector{Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, SparseArrays.SparseMatrixCSC{ComplexF64, Int64}}}, rates::Vector{Float64})
@ QuantumOptics.timeevolution ~/.julia/packages/QuantumOptics/Aep8P/src/master.jl:410
[3] dmaster_h_dynamic!(drho::Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, f::var"#5#6", rates::Nothing, rho::Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, drho_cache::Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, t::Float64)
@ QuantumOptics.timeevolution ~/.julia/packages/QuantumOptics/Aep8P/src/master.jl:372
[4] dmaster_
@ ~/.julia/packages/QuantumOptics/Aep8P/src/master.jl:188 [inlined]
[5] df_
@ ~/.julia/packages/QuantumOptics/Aep8P/src/timeevolution_base.jl:23 [inlined]
[6] ODEFunction
@ ~/.julia/packages/SciMLBase/IJbT7/src/scimlfunctions.jl:1624 [inlined]
[7] initialize!(integrator::OrdinaryDiffEq.ODEIntegrator{OrdinaryDiffEq.DP5, true, Matrix{ComplexF64}, Nothing, Float64, SciMLBase.NullParameters, Float64, Float64, Float64, Float64, Vector{Matrix{ComplexF64}}, SciMLBase.ODESolution{ComplexF64, 3, Vector{Matrix{ComplexF64}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, SciMLBase.ODEProblem{Matrix{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, QuantumOptics.timeevolution.var"#df_#3"{QuantumOptics.timeevolution.var"#dmaster_#24"{Nothing, var"#5#6", Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}}, Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEq.DP5, OrdinaryDiffEq.InterpolationData{SciMLBase.ODEFunction{true, QuantumOptics.timeevolution.var"#df_#3"{QuantumOptics.timeevolution.var"#dmaster_#24"{Nothing, var"#5#6", Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}}, Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Vector{Matrix{ComplexF64}}, Vector{Float64}, Vector{Vector{Matrix{ComplexF64}}}, OrdinaryDiffEq.DP5Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, OrdinaryDiffEq.DP5ConstantCache{Float64, Float64}}}, DiffEqBase.DEStats}, SciMLBase.ODEFunction{true, QuantumOptics.timeevolution.var"#df_#3"{QuantumOptics.timeevolution.var"#dmaster_#24"{Nothing, var"#5#6", Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}}, Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, OrdinaryDiffEq.DP5Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, OrdinaryDiffEq.DP5ConstantCache{Float64, Float64}}, OrdinaryDiffEq.DEOptions{Float64, Float64, Float64, Float64, OrdinaryDiffEq.PIController{Rational{Int64}}, typeof(DiffEqBase.ODE_DEFAULT_NORM), typeof(LinearAlgebra.opnorm), Bool, SciMLBase.CallbackSet{Tuple{}, Tuple{SciMLBase.DiscreteCallback{DiffEqCallbacks.var"#30#31", DiffEqCallbacks.SavingAffect{QuantumOptics.timeevolution.var"#fout_#4"{Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, QuantumOptics.timeevolution.var"#fout#7"}, Float64, Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, DataStructures.BinaryMinHeap{Float64}, Vector{Float64}}, typeof(DiffEqCallbacks.saving_initialize), typeof(SciMLBase.FINALIZE_DEFAULT)}}}, typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK), DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, Nothing, Nothing, Int64, Tuple{}, Tuple{}, Tuple{}}, Matrix{ComplexF64}, ComplexF64, Nothing, OrdinaryDiffEq.DefaultInit}, cache::OrdinaryDiffEq.DP5Cache{Matrix{ComplexF64}, Matrix{ComplexF64}, Matrix{ComplexF64}, OrdinaryDiffEq.DP5ConstantCache{Float64, Float64}})
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/UG9Mz/src/perform_step/low_order_rk_perform_step.jl:791
[8] init(prob::SciMLBase.ODEProblem{Matrix{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, QuantumOptics.timeevolution.var"#df#3"{QuantumOptics.timeevolution.var"#dmaster#24"{Nothing, var"#5#6", Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}}, Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, alg::OrdinaryDiffEq.DP5, timeseries_init::Tuple{}, ts_init::Tuple{}, ks_init::Tuple{}, recompile::Type{Val{true}}; saveat::Tuple{}, tstops::Tuple{}, d_discontinuities::Tuple{}, save_idxs::Nothing, save_everystep::Bool, save_on::Bool, save_start::Bool, save_end::Bool, callback::SciMLBase.CallbackSet{Tuple{}, Tuple{SciMLBase.DiscreteCallback{DiffEqCallbacks.var"#30#31", DiffEqCallbacks.SavingAffect{QuantumOptics.timeevolution.var"#fout_#4"{Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, QuantumOptics.timeevolution.var"#fout#7"}, Float64, Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, DataStructures.BinaryMinHeap{Float64}, Vector{Float64}}, typeof(DiffEqCallbacks.saving_initialize), typeof(SciMLBase.FINALIZE_DEFAULT)}}}, dense::Bool, calck::Bool, dt::Float64, dtmin::Nothing, dtmax::Float64, force_dtmin::Bool, adaptive::Bool, gamma::Rational{Int64}, abstol::Float64, reltol::Float64, qmin::Rational{Int64}, qmax::Int64, qsteady_min::Int64, qsteady_max::Int64, beta1::Nothing, beta2::Nothing, qoldinit::Rational{Int64}, controller::Nothing, fullnormalize::Bool, failfactor::Int64, maxiters::Int64, internalnorm::typeof(DiffEqBase.ODE_DEFAULT_NORM), internalopnorm::typeof(LinearAlgebra.opnorm), isoutofdomain::typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), unstable_check::typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK), verbose::Bool, timeseries_errors::Bool, dense_errors::Bool, advance_to_tstop::Bool, stop_at_next_tstop::Bool, initialize_save::Bool, progress::Bool, progress_steps::Int64, progress_name::String, progress_message::typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), userdata::Nothing, allow_extrapolation::Bool, initialize_integrator::Bool, alias_u0::Bool, alias_du0::Bool, initializealg::OrdinaryDiffEq.DefaultInit, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/UG9Mz/src/solve.jl:456
[9] #solve#502
@ ~/.julia/packages/OrdinaryDiffEq/UG9Mz/src/solve.jl:4 [inlined]
[10] #solve_call#28
@ ~/.julia/packages/DiffEqBase/aAyno/src/solve.jl:433 [inlined]
[11] solve_up(prob::SciMLBase.ODEProblem{Matrix{ComplexF64}, Tuple{Float64, Float64}, true, SciMLBase.NullParameters, SciMLBase.ODEFunction{true, QuantumOptics.timeevolution.var"#df
#3"{QuantumOptics.timeevolution.var"#dmaster
#24"{Nothing, var"#5#6", Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}}, Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, sensealg::Nothing, u0::Matrix{ComplexF64}, p::SciMLBase.NullParameters, args::OrdinaryDiffEq.DP5; kwargs::Base.Pairs{Symbol, Any, NTuple{6, Symbol}, NamedTuple{(:reltol, :abstol, :save_everystep, :save_start, :save_end, :callback), Tuple{Float64, Float64, Bool, Bool, Bool, SciMLBase.CallbackSet{Tuple{}, Tuple{SciMLBase.DiscreteCallback{DiffEqCallbacks.var"#30#31", DiffEqCallbacks.SavingAffect{QuantumOptics.timeevolution.var"#fout_#4"{Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, QuantumOptics.timeevolution.var"#fout#7"}, Float64, Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, DataStructures.BinaryMinHeap{Float64}, Vector{Float64}}, typeof(DiffEqCallbacks.saving_initialize), typeof(SciMLBase.FINALIZE_DEFAULT)}}}}}})
@ DiffEqBase ~/.julia/packages/DiffEqBase/aAyno/src/solve.jl:772
[12] #solve#33
@ ~/.julia/packages/DiffEqBase/aAyno/src/solve.jl:756 [inlined]
[13] integrate(tspan::StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, df::QuantumOptics.timeevolution.var"#dmaster_#24"{Nothing, var"#5#6", Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}}, x0::Matrix{ComplexF64}, state::Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, dstate::Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, fout::QuantumOptics.timeevolution.var"#fout#7"; alg::OrdinaryDiffEq.DP5, steady_state::Bool, tol::Float64, save_everystep::Bool, saveat::StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, callback::Nothing, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ QuantumOptics.timeevolution ~/.julia/packages/QuantumOptics/Aep8P/src/timeevolution_base.jl:58
[14] integrate(tspan::StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, df::Function, x0::Matrix{ComplexF64}, state::Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, dstate::Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, fout::Function)
@ QuantumOptics.timeevolution ~/.julia/packages/QuantumOptics/Aep8P/src/timeevolution_base.jl:20
[15] #integrate#6
@ ~/.julia/packages/QuantumOptics/Aep8P/src/timeevolution_base.jl:74 [inlined]
[16] integrate
@ ~/.julia/packages/QuantumOptics/Aep8P/src/timeevolution_base.jl:71 [inlined]
[17] integrate_master(tspan::StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, df::Function, rho0::Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, fout::Nothing; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ QuantumOptics.timeevolution ~/.julia/packages/QuantumOptics/Aep8P/src/master.jl:231
[18] integrate_master
@ ~/.julia/packages/QuantumOptics/Aep8P/src/master.jl:228 [inlined]
[19] #master_dynamic#23
@ ~/.julia/packages/QuantumOptics/Aep8P/src/master.jl:189 [inlined]
[20] master_dynamic(tspan::StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, rho0::Operator{CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, CompositeBasis{Vector{Int64}, Tuple{IonSim.IonInstance{:Ca40}, VibrationalMode, VibrationalMode}}, Matrix{ComplexF64}}, f::Function)
@ QuantumOptics.timeevolution ~/.julia/packages/QuantumOptics/Aep8P/src/master.jl:187
[21] macro expansion
@ In[6]:62 [inlined]
[22] top-level scope
@ timing.jl:220
[23] eval
@ ./boot.jl:373 [inlined]
[24] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String)
@ Base ./loading.jl:1196

@jbroz11
Copy link
Member

jbroz11 commented Jul 9, 2022

This is weird. The temporary workaround is to use the QuantumOptics.jl samebases macro like this:

@samebases _, ρt = timeevolution.master_dynamic(tspan, ρᵢ_22, (t, ρ) -> (h(t, ρ), [J], [J], [γ]))

I'll try to figure out what's going on. @marwahaha it looks like this has something to do with IonInstance.

jbroz11 added a commit that referenced this issue Jul 9, 2022
@jbroz11 jbroz11 closed this as completed Jul 9, 2022
jbroz11 added a commit that referenced this issue Jul 9, 2022
@jbroz11 jbroz11 reopened this Jul 9, 2022
@jbroz11
Copy link
Member

jbroz11 commented Jul 9, 2022

Actually, it's still broken. Sorry about that. We might need to revert back to 0.3 @marwahaha

@marwahaha
Copy link
Member

Thanks for letting me know. I'll take a look this week.

@jbroz11
Copy link
Member

jbroz11 commented Jul 9, 2022

Now after https://github.com/HaeffnerLab/IonSim.jl/releases/tag/v0.4.2 it seems to be working.

@jbroz11 jbroz11 closed this as completed Jul 9, 2022
@marwahaha
Copy link
Member

Nice it got fixed. @jbroz11 could you add a test (perhaps the one that demonstrated the issue) documenting this behavior?

@jbroz11
Copy link
Member

jbroz11 commented Jul 10, 2022

This would have been caught by any of the test_dynamics tests, so we should be good when that's back up and running.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants