mirror of
https://github.com/vale981/fibre_walk_project_code
synced 2025-03-05 09:51:39 -05:00
get rid of that d/2 nonsense
This commit is contained in:
parent
27bcba8287
commit
d5e74d718e
7 changed files with 423 additions and 98 deletions
104
scripts/experiments/005_mean_displacement_semi_analytic.py
Normal file
104
scripts/experiments/005_mean_displacement_semi_analytic.py
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
"""
|
||||||
|
Just a quick hack prior to the re-calculation of the full phase
|
||||||
|
diagram.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
from rabifun.system import *
|
||||||
|
from rabifun.plots import *
|
||||||
|
from rabifun.utilities import *
|
||||||
|
import scipy
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
|
||||||
|
def self_energy(ω, g, ε):
|
||||||
|
"""
|
||||||
|
Calculate the self-energy of the system.
|
||||||
|
|
||||||
|
:param g: The coupling strengths.
|
||||||
|
:param ε: The bath energies.
|
||||||
|
"""
|
||||||
|
return np.sum(np.abs(g[None, :] / (ω[:, None] - ε[None, :])) ** 2, axis=1)
|
||||||
|
|
||||||
|
|
||||||
|
def coefficients(ω, g, ε):
|
||||||
|
coeff = 1 / (1 + self_energy(ω, g, ε))
|
||||||
|
|
||||||
|
return coeff / np.sum((coeff))
|
||||||
|
|
||||||
|
|
||||||
|
def characteristic_poly(g: np.ndarray, ε: np.ndarray, η_A: float = 0):
|
||||||
|
g2 = np.abs(g) ** 2
|
||||||
|
|
||||||
|
def poly(ω):
|
||||||
|
s = ω[0] + ω[1] * 1j
|
||||||
|
res = s + 1j * η_A - np.sum(g2 / (s - ε))
|
||||||
|
return (res * res.conjugate()).real
|
||||||
|
|
||||||
|
return poly
|
||||||
|
|
||||||
|
|
||||||
|
def hamiltonian(g: np.ndarray, ε: np.ndarray, η_A: float = 0):
|
||||||
|
H = np.diag([-1j * η_A, *ε])
|
||||||
|
H[0, 1:] = g
|
||||||
|
H[1:, 0] = np.conj(g)
|
||||||
|
return H
|
||||||
|
|
||||||
|
|
||||||
|
def a_site_population(t, ω, coeff):
|
||||||
|
return (
|
||||||
|
np.abs(np.sum(coeff[None, :] * np.exp(-1j * ω[None, :] * t[:, None]), axis=1))
|
||||||
|
** 2
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def make_params(ω_c=0.1 / 2, N=10, gbar=1 / 3):
|
||||||
|
"""
|
||||||
|
Make a set of parameters for the system with the current
|
||||||
|
best-known settings.
|
||||||
|
"""
|
||||||
|
return Params(
|
||||||
|
η=0.5,
|
||||||
|
Ω=13,
|
||||||
|
δ=1 / 4,
|
||||||
|
ω_c=ω_c,
|
||||||
|
g_0=ω_c * gbar,
|
||||||
|
laser_detuning=0,
|
||||||
|
N=2 * N + 2,
|
||||||
|
N_couplings=N,
|
||||||
|
measurement_detuning=0,
|
||||||
|
α=0,
|
||||||
|
rwa=False,
|
||||||
|
flat_energies=False,
|
||||||
|
correct_lamb_shift=True,
|
||||||
|
laser_off_time=0,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test():
|
||||||
|
params = make_params(N=10, gbar=1 / 3)
|
||||||
|
params.flat_energies = False
|
||||||
|
params.α = 0.0
|
||||||
|
params.correct_lamb_shift = True
|
||||||
|
|
||||||
|
runtime = RuntimeParams(params)
|
||||||
|
t = time_axis(params, recurrences=1.5)
|
||||||
|
g = runtime.g / 2
|
||||||
|
ε = runtime.bath_ε
|
||||||
|
H = hamiltonian(g, ε.real, 0 * params.η / 2)
|
||||||
|
|
||||||
|
ω = np.linalg.eigvals(H)
|
||||||
|
M = np.linalg.eig(H).eigenvectors
|
||||||
|
Minv = np.linalg.inv(M)
|
||||||
|
v0 = Minv[:, 0]
|
||||||
|
|
||||||
|
coeff = M[0, :] * v0.T
|
||||||
|
print(coeff)
|
||||||
|
|
||||||
|
# coeff /= np.abs(np.sum(coeff))
|
||||||
|
# coeff = coefficients(ω, g, ε)
|
||||||
|
|
||||||
|
plt.cla()
|
||||||
|
plt.plot(t, a_site_population(t, ω, coeff))
|
||||||
|
plt.ylim(0, 1)
|
||||||
|
return ω
|
|
@ -5,7 +5,7 @@ import itertools
|
||||||
# %% interactive
|
# %% interactive
|
||||||
|
|
||||||
|
|
||||||
def make_params(ω_c=0.1 / 2, N=10, gbar=1 / 3):
|
def make_params(ω_c=0.1 / 2, N=10, gbar=1 / 3, compensate=2):
|
||||||
"""
|
"""
|
||||||
Make a set of parameters for the system with the current
|
Make a set of parameters for the system with the current
|
||||||
best-known settings.
|
best-known settings.
|
||||||
|
@ -23,7 +23,7 @@ def make_params(ω_c=0.1 / 2, N=10, gbar=1 / 3):
|
||||||
α=0,
|
α=0,
|
||||||
rwa=False,
|
rwa=False,
|
||||||
flat_energies=False,
|
flat_energies=False,
|
||||||
correct_lamb_shift=True,
|
correct_lamb_shift=compensate,
|
||||||
laser_off_time=0,
|
laser_off_time=0,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ def decay_rwa_analysis():
|
||||||
|
|
||||||
ω_c = 0.05
|
ω_c = 0.05
|
||||||
Ns = [5, 10, 20]
|
Ns = [5, 10, 20]
|
||||||
gbar = 1 / 3
|
gbar = 1 / 3 / 2
|
||||||
|
|
||||||
fig = make_figure("decay_test", figsize=(15, len(Ns) * 3))
|
fig = make_figure("decay_test", figsize=(15, len(Ns) * 3))
|
||||||
ax_ns = fig.subplots(len(Ns), 2)
|
ax_ns = fig.subplots(len(Ns), 2)
|
||||||
|
@ -57,7 +57,7 @@ def decay_rwa_analysis():
|
||||||
|
|
||||||
for i, N in enumerate(Ns):
|
for i, N in enumerate(Ns):
|
||||||
params = make_params(ω_c=ω_c, N=N, gbar=gbar)
|
params = make_params(ω_c=ω_c, N=N, gbar=gbar)
|
||||||
params.laser_off_time = params.lifetimes(0)
|
params.laser_off_time = 0
|
||||||
params.initial_state = make_zero_intial_state(params)
|
params.initial_state = make_zero_intial_state(params)
|
||||||
params.initial_state[1] = 1
|
params.initial_state[1] = 1
|
||||||
|
|
||||||
|
@ -65,9 +65,9 @@ def decay_rwa_analysis():
|
||||||
|
|
||||||
ax_real, ax_corrected = ax_ns[i]
|
ax_real, ax_corrected = ax_ns[i]
|
||||||
|
|
||||||
t = time_axis(params, recurrence_time(params) * 1.1 / params.lifetimes(1), 0.1)
|
t = time_axis(params, recurrences=1.1, resolution=0.1)
|
||||||
|
|
||||||
for α in [0, 2]:
|
for α in np.linspace(0, 2, 5):
|
||||||
params.α = α
|
params.α = α
|
||||||
sol_nonrwa, sol_rwa = solve_nonrwa_rwa(t, params)
|
sol_nonrwa, sol_rwa = solve_nonrwa_rwa(t, params)
|
||||||
|
|
||||||
|
@ -75,6 +75,7 @@ def decay_rwa_analysis():
|
||||||
results[(N, α, False)] = sol_nonrwa
|
results[(N, α, False)] = sol_nonrwa
|
||||||
param_dict[(N, α)] = params
|
param_dict[(N, α)] = params
|
||||||
|
|
||||||
|
color = None
|
||||||
for correct, rwa in itertools.product([True, False], [True, False]):
|
for correct, rwa in itertools.product([True, False], [True, False]):
|
||||||
sol = sol_rwa if rwa else sol_nonrwa
|
sol = sol_rwa if rwa else sol_nonrwa
|
||||||
ax = ax_corrected if correct else ax_real
|
ax = ax_corrected if correct else ax_real
|
||||||
|
@ -82,14 +83,15 @@ def decay_rwa_analysis():
|
||||||
if correct:
|
if correct:
|
||||||
y = correct_for_decay(sol, params)
|
y = correct_for_decay(sol, params)
|
||||||
|
|
||||||
ax.plot(
|
l = ax.plot(
|
||||||
sol.t,
|
sol.t,
|
||||||
np.abs(y[a_site]) ** 2,
|
np.abs(y[a_site]) ** 2,
|
||||||
label=f"{'rwa' if rwa else ''} α={α}",
|
label=f"{'rwa' if rwa else ''} α={α}",
|
||||||
linestyle="--" if rwa else "-",
|
linestyle="--" if rwa else "-",
|
||||||
alpha=0.5 if rwa else 1,
|
alpha=0.5 if rwa else 1,
|
||||||
color=f"C{α}",
|
color=color,
|
||||||
)
|
)
|
||||||
|
color = l[0].get_color()
|
||||||
|
|
||||||
ax_real.set_title(f"Real, N={N}")
|
ax_real.set_title(f"Real, N={N}")
|
||||||
ax_corrected.set_title(f"Decay Removed, N={N}")
|
ax_corrected.set_title(f"Decay Removed, N={N}")
|
||||||
|
|
Binary file not shown.
|
@ -1,6 +1,6 @@
|
||||||
change_id: snsvmqorzwxnvuvwsrsxqqmukqyspwkw
|
change_id: wykwpsvmtrzvwtunotxnzokztpyrnsrx
|
||||||
commit_id: 6ec1859dba940a2ada3aefedc5adea2cb436339f
|
commit_id: 94f23ecee30914b5163f14fd5af637a8777b42cc
|
||||||
description: 'RESULTS: make some nice demos'
|
description: ''
|
||||||
extra_meta:
|
extra_meta:
|
||||||
Ns:
|
Ns:
|
||||||
- 5
|
- 5
|
||||||
|
@ -9,20 +9,36 @@ extra_meta:
|
||||||
params:
|
params:
|
||||||
? !!python/tuple
|
? !!python/tuple
|
||||||
- 5
|
- 5
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- &id001 !!python/object/apply:numpy.dtype
|
||||||
|
args:
|
||||||
|
- f8
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
state: !!python/tuple
|
||||||
|
- 3
|
||||||
|
- <
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
- -1
|
||||||
|
- -1
|
||||||
- 0
|
- 0
|
||||||
: &id001 !!python/object:rabifun.system.Params
|
- !!binary |
|
||||||
|
AAAAAAAAAAA=
|
||||||
|
: &id002 !!python/object:rabifun.system.Params
|
||||||
N: 12
|
N: 12
|
||||||
N_couplings: 5
|
N_couplings: 5
|
||||||
correct_lamb_shift: true
|
correct_lamb_shift: 2
|
||||||
drive_off_time: null
|
drive_off_time: null
|
||||||
dynamic_detunting: &id002 !!python/tuple
|
dynamic_detunting: &id003 !!python/tuple
|
||||||
- 0
|
- 0
|
||||||
- 0
|
- 0
|
||||||
flat_energies: false
|
flat_energies: false
|
||||||
g_0: 0.016666666666666666
|
g_0: 0.008333333333333333
|
||||||
initial_state: !!python/object/apply:numpy.core.multiarray._reconstruct
|
initial_state: !!python/object/apply:numpy.core.multiarray._reconstruct
|
||||||
args:
|
args:
|
||||||
- &id003 !!python/name:numpy.ndarray ''
|
- &id004 !!python/name:numpy.ndarray ''
|
||||||
- !!python/tuple
|
- !!python/tuple
|
||||||
- 0
|
- 0
|
||||||
- !!binary |
|
- !!binary |
|
||||||
|
@ -31,7 +47,7 @@ extra_meta:
|
||||||
- 1
|
- 1
|
||||||
- !!python/tuple
|
- !!python/tuple
|
||||||
- 14
|
- 14
|
||||||
- &id004 !!python/object/apply:numpy.dtype
|
- &id005 !!python/object/apply:numpy.dtype
|
||||||
args:
|
args:
|
||||||
- c16
|
- c16
|
||||||
- false
|
- false
|
||||||
|
@ -52,32 +68,62 @@ extra_meta:
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
||||||
laser_detuning: 0
|
laser_detuning: 0
|
||||||
laser_off_time: 0.0
|
laser_off_time: 0
|
||||||
measurement_detuning: 0
|
measurement_detuning: 0
|
||||||
rwa: false
|
rwa: false
|
||||||
"\u03A9": 13
|
"\u03A9": 13
|
||||||
"\u03B1": 2
|
"\u03B1": !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAAAEA=
|
||||||
"\u03B4": 0.25
|
"\u03B4": 0.25
|
||||||
"\u03B7": 0.5
|
"\u03B7": 0.5
|
||||||
"\u03C9_c": 0.05
|
"\u03C9_c": 0.05
|
||||||
? !!python/tuple
|
? !!python/tuple
|
||||||
- 5
|
- 5
|
||||||
- 2
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
: *id001
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA4D8=
|
||||||
|
: *id002
|
||||||
|
? !!python/tuple
|
||||||
|
- 5
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA8D8=
|
||||||
|
: *id002
|
||||||
|
? !!python/tuple
|
||||||
|
- 5
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA+D8=
|
||||||
|
: *id002
|
||||||
|
? !!python/tuple
|
||||||
|
- 5
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAAAEA=
|
||||||
|
: *id002
|
||||||
? !!python/tuple
|
? !!python/tuple
|
||||||
- 10
|
- 10
|
||||||
- 0
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
: &id005 !!python/object:rabifun.system.Params
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAAAAA=
|
||||||
|
: &id006 !!python/object:rabifun.system.Params
|
||||||
N: 22
|
N: 22
|
||||||
N_couplings: 10
|
N_couplings: 10
|
||||||
correct_lamb_shift: true
|
correct_lamb_shift: 2
|
||||||
drive_off_time: null
|
drive_off_time: null
|
||||||
dynamic_detunting: *id002
|
dynamic_detunting: *id003
|
||||||
flat_energies: false
|
flat_energies: false
|
||||||
g_0: 0.016666666666666666
|
g_0: 0.008333333333333333
|
||||||
initial_state: !!python/object/apply:numpy.core.multiarray._reconstruct
|
initial_state: !!python/object/apply:numpy.core.multiarray._reconstruct
|
||||||
args:
|
args:
|
||||||
- *id003
|
- *id004
|
||||||
- !!python/tuple
|
- !!python/tuple
|
||||||
- 0
|
- 0
|
||||||
- !!binary |
|
- !!binary |
|
||||||
|
@ -86,7 +132,7 @@ extra_meta:
|
||||||
- 1
|
- 1
|
||||||
- !!python/tuple
|
- !!python/tuple
|
||||||
- 24
|
- 24
|
||||||
- *id004
|
- *id005
|
||||||
- false
|
- false
|
||||||
- !!binary |
|
- !!binary |
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
@ -97,32 +143,62 @@ extra_meta:
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
laser_detuning: 0
|
laser_detuning: 0
|
||||||
laser_off_time: 0.0
|
laser_off_time: 0
|
||||||
measurement_detuning: 0
|
measurement_detuning: 0
|
||||||
rwa: false
|
rwa: false
|
||||||
"\u03A9": 13
|
"\u03A9": 13
|
||||||
"\u03B1": 2
|
"\u03B1": !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAAAEA=
|
||||||
"\u03B4": 0.25
|
"\u03B4": 0.25
|
||||||
"\u03B7": 0.5
|
"\u03B7": 0.5
|
||||||
"\u03C9_c": 0.05
|
"\u03C9_c": 0.05
|
||||||
? !!python/tuple
|
? !!python/tuple
|
||||||
- 10
|
- 10
|
||||||
- 2
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
: *id005
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA4D8=
|
||||||
|
: *id006
|
||||||
|
? !!python/tuple
|
||||||
|
- 10
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA8D8=
|
||||||
|
: *id006
|
||||||
|
? !!python/tuple
|
||||||
|
- 10
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA+D8=
|
||||||
|
: *id006
|
||||||
|
? !!python/tuple
|
||||||
|
- 10
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAAAEA=
|
||||||
|
: *id006
|
||||||
? !!python/tuple
|
? !!python/tuple
|
||||||
- 20
|
- 20
|
||||||
- 0
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
: &id006 !!python/object:rabifun.system.Params
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAAAAA=
|
||||||
|
: &id007 !!python/object:rabifun.system.Params
|
||||||
N: 42
|
N: 42
|
||||||
N_couplings: 20
|
N_couplings: 20
|
||||||
correct_lamb_shift: true
|
correct_lamb_shift: 2
|
||||||
drive_off_time: null
|
drive_off_time: null
|
||||||
dynamic_detunting: *id002
|
dynamic_detunting: *id003
|
||||||
flat_energies: false
|
flat_energies: false
|
||||||
g_0: 0.016666666666666666
|
g_0: 0.008333333333333333
|
||||||
initial_state: !!python/object/apply:numpy.core.multiarray._reconstruct
|
initial_state: !!python/object/apply:numpy.core.multiarray._reconstruct
|
||||||
args:
|
args:
|
||||||
- *id003
|
- *id004
|
||||||
- !!python/tuple
|
- !!python/tuple
|
||||||
- 0
|
- 0
|
||||||
- !!binary |
|
- !!binary |
|
||||||
|
@ -131,7 +207,7 @@ extra_meta:
|
||||||
- 1
|
- 1
|
||||||
- !!python/tuple
|
- !!python/tuple
|
||||||
- 44
|
- 44
|
||||||
- *id004
|
- *id005
|
||||||
- false
|
- false
|
||||||
- !!binary |
|
- !!binary |
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
@ -148,18 +224,45 @@ extra_meta:
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
AAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
||||||
laser_detuning: 0
|
laser_detuning: 0
|
||||||
laser_off_time: 0.0
|
laser_off_time: 0
|
||||||
measurement_detuning: 0
|
measurement_detuning: 0
|
||||||
rwa: false
|
rwa: false
|
||||||
"\u03A9": 13
|
"\u03A9": 13
|
||||||
"\u03B1": 2
|
"\u03B1": !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAAAEA=
|
||||||
"\u03B4": 0.25
|
"\u03B4": 0.25
|
||||||
"\u03B7": 0.5
|
"\u03B7": 0.5
|
||||||
"\u03C9_c": 0.05
|
"\u03C9_c": 0.05
|
||||||
? !!python/tuple
|
? !!python/tuple
|
||||||
- 20
|
- 20
|
||||||
- 2
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
: *id006
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA4D8=
|
||||||
|
: *id007
|
||||||
|
? !!python/tuple
|
||||||
|
- 20
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA8D8=
|
||||||
|
: *id007
|
||||||
|
? !!python/tuple
|
||||||
|
- 20
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA+D8=
|
||||||
|
: *id007
|
||||||
|
? !!python/tuple
|
||||||
|
- 20
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAAAEA=
|
||||||
|
: *id007
|
||||||
function: decay_rwa_analysis
|
function: decay_rwa_analysis
|
||||||
name: 001_decay_test
|
name: 001_decay_test
|
||||||
refers_to: ./figs/001_decay_test.pdf
|
refers_to: ./figs/001_decay_test.pdf
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 2.6 MiB |
|
@ -1,24 +1,40 @@
|
||||||
change_id: snsvmqorzwxnvuvwsrsxqqmukqyspwkw
|
change_id: wykwpsvmtrzvwtunotxnzokztpyrnsrx
|
||||||
commit_id: 049b547f220987c6bb63165a9a020b20b1c4377b
|
commit_id: e4399f86a81e8dc0fbbe24226b948db60bd83807
|
||||||
description: 'RESULTS: make some nice demos'
|
description: ''
|
||||||
function: decay_rwa_analysis
|
function: decay_rwa_analysis
|
||||||
param_dict:
|
param_dict:
|
||||||
? !!python/tuple
|
? !!python/tuple
|
||||||
- 5
|
- 5
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- &id001 !!python/object/apply:numpy.dtype
|
||||||
|
args:
|
||||||
|
- f8
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
state: !!python/tuple
|
||||||
|
- 3
|
||||||
|
- <
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
- null
|
||||||
|
- -1
|
||||||
|
- -1
|
||||||
- 0
|
- 0
|
||||||
: &id001 !!python/object:rabifun.system.Params
|
- !!binary |
|
||||||
|
AAAAAAAAAAA=
|
||||||
|
: &id002 !!python/object:rabifun.system.Params
|
||||||
N: 12
|
N: 12
|
||||||
N_couplings: 5
|
N_couplings: 5
|
||||||
correct_lamb_shift: true
|
correct_lamb_shift: 2
|
||||||
drive_off_time: null
|
drive_off_time: null
|
||||||
dynamic_detunting: &id002 !!python/tuple
|
dynamic_detunting: &id003 !!python/tuple
|
||||||
- 0
|
- 0
|
||||||
- 0
|
- 0
|
||||||
flat_energies: false
|
flat_energies: false
|
||||||
g_0: 0.016666666666666666
|
g_0: 0.008333333333333333
|
||||||
initial_state: !!python/object/apply:numpy.core.multiarray._reconstruct
|
initial_state: !!python/object/apply:numpy.core.multiarray._reconstruct
|
||||||
args:
|
args:
|
||||||
- &id003 !!python/name:numpy.ndarray ''
|
- &id004 !!python/name:numpy.ndarray ''
|
||||||
- !!python/tuple
|
- !!python/tuple
|
||||||
- 0
|
- 0
|
||||||
- !!binary |
|
- !!binary |
|
||||||
|
@ -27,7 +43,7 @@ param_dict:
|
||||||
- 1
|
- 1
|
||||||
- !!python/tuple
|
- !!python/tuple
|
||||||
- 14
|
- 14
|
||||||
- &id004 !!python/object/apply:numpy.dtype
|
- &id005 !!python/object/apply:numpy.dtype
|
||||||
args:
|
args:
|
||||||
- c16
|
- c16
|
||||||
- false
|
- false
|
||||||
|
@ -48,32 +64,62 @@ param_dict:
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
||||||
laser_detuning: 0
|
laser_detuning: 0
|
||||||
laser_off_time: 0.0
|
laser_off_time: 0
|
||||||
measurement_detuning: 0
|
measurement_detuning: 0
|
||||||
rwa: false
|
rwa: false
|
||||||
"\u03A9": 13
|
"\u03A9": 13
|
||||||
"\u03B1": 2
|
"\u03B1": !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAAAEA=
|
||||||
"\u03B4": 0.25
|
"\u03B4": 0.25
|
||||||
"\u03B7": 0.5
|
"\u03B7": 0.5
|
||||||
"\u03C9_c": 0.05
|
"\u03C9_c": 0.05
|
||||||
? !!python/tuple
|
? !!python/tuple
|
||||||
- 5
|
- 5
|
||||||
- 2
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
: *id001
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA4D8=
|
||||||
|
: *id002
|
||||||
|
? !!python/tuple
|
||||||
|
- 5
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA8D8=
|
||||||
|
: *id002
|
||||||
|
? !!python/tuple
|
||||||
|
- 5
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA+D8=
|
||||||
|
: *id002
|
||||||
|
? !!python/tuple
|
||||||
|
- 5
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAAAEA=
|
||||||
|
: *id002
|
||||||
? !!python/tuple
|
? !!python/tuple
|
||||||
- 10
|
- 10
|
||||||
- 0
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
: &id005 !!python/object:rabifun.system.Params
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAAAAA=
|
||||||
|
: &id006 !!python/object:rabifun.system.Params
|
||||||
N: 22
|
N: 22
|
||||||
N_couplings: 10
|
N_couplings: 10
|
||||||
correct_lamb_shift: true
|
correct_lamb_shift: 2
|
||||||
drive_off_time: null
|
drive_off_time: null
|
||||||
dynamic_detunting: *id002
|
dynamic_detunting: *id003
|
||||||
flat_energies: false
|
flat_energies: false
|
||||||
g_0: 0.016666666666666666
|
g_0: 0.008333333333333333
|
||||||
initial_state: !!python/object/apply:numpy.core.multiarray._reconstruct
|
initial_state: !!python/object/apply:numpy.core.multiarray._reconstruct
|
||||||
args:
|
args:
|
||||||
- *id003
|
- *id004
|
||||||
- !!python/tuple
|
- !!python/tuple
|
||||||
- 0
|
- 0
|
||||||
- !!binary |
|
- !!binary |
|
||||||
|
@ -82,7 +128,7 @@ param_dict:
|
||||||
- 1
|
- 1
|
||||||
- !!python/tuple
|
- !!python/tuple
|
||||||
- 24
|
- 24
|
||||||
- *id004
|
- *id005
|
||||||
- false
|
- false
|
||||||
- !!binary |
|
- !!binary |
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
@ -93,32 +139,62 @@ param_dict:
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
laser_detuning: 0
|
laser_detuning: 0
|
||||||
laser_off_time: 0.0
|
laser_off_time: 0
|
||||||
measurement_detuning: 0
|
measurement_detuning: 0
|
||||||
rwa: false
|
rwa: false
|
||||||
"\u03A9": 13
|
"\u03A9": 13
|
||||||
"\u03B1": 2
|
"\u03B1": !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAAAEA=
|
||||||
"\u03B4": 0.25
|
"\u03B4": 0.25
|
||||||
"\u03B7": 0.5
|
"\u03B7": 0.5
|
||||||
"\u03C9_c": 0.05
|
"\u03C9_c": 0.05
|
||||||
? !!python/tuple
|
? !!python/tuple
|
||||||
- 10
|
- 10
|
||||||
- 2
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
: *id005
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA4D8=
|
||||||
|
: *id006
|
||||||
|
? !!python/tuple
|
||||||
|
- 10
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA8D8=
|
||||||
|
: *id006
|
||||||
|
? !!python/tuple
|
||||||
|
- 10
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA+D8=
|
||||||
|
: *id006
|
||||||
|
? !!python/tuple
|
||||||
|
- 10
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAAAEA=
|
||||||
|
: *id006
|
||||||
? !!python/tuple
|
? !!python/tuple
|
||||||
- 20
|
- 20
|
||||||
- 0
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
: &id006 !!python/object:rabifun.system.Params
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAAAAA=
|
||||||
|
: &id007 !!python/object:rabifun.system.Params
|
||||||
N: 42
|
N: 42
|
||||||
N_couplings: 20
|
N_couplings: 20
|
||||||
correct_lamb_shift: true
|
correct_lamb_shift: 2
|
||||||
drive_off_time: null
|
drive_off_time: null
|
||||||
dynamic_detunting: *id002
|
dynamic_detunting: *id003
|
||||||
flat_energies: false
|
flat_energies: false
|
||||||
g_0: 0.016666666666666666
|
g_0: 0.008333333333333333
|
||||||
initial_state: !!python/object/apply:numpy.core.multiarray._reconstruct
|
initial_state: !!python/object/apply:numpy.core.multiarray._reconstruct
|
||||||
args:
|
args:
|
||||||
- *id003
|
- *id004
|
||||||
- !!python/tuple
|
- !!python/tuple
|
||||||
- 0
|
- 0
|
||||||
- !!binary |
|
- !!binary |
|
||||||
|
@ -127,7 +203,7 @@ param_dict:
|
||||||
- 1
|
- 1
|
||||||
- !!python/tuple
|
- !!python/tuple
|
||||||
- 44
|
- 44
|
||||||
- *id004
|
- *id005
|
||||||
- false
|
- false
|
||||||
- !!binary |
|
- !!binary |
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
@ -144,17 +220,44 @@ param_dict:
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
AAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
||||||
laser_detuning: 0
|
laser_detuning: 0
|
||||||
laser_off_time: 0.0
|
laser_off_time: 0
|
||||||
measurement_detuning: 0
|
measurement_detuning: 0
|
||||||
rwa: false
|
rwa: false
|
||||||
"\u03A9": 13
|
"\u03A9": 13
|
||||||
"\u03B1": 2
|
"\u03B1": !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAAAEA=
|
||||||
"\u03B4": 0.25
|
"\u03B4": 0.25
|
||||||
"\u03B7": 0.5
|
"\u03B7": 0.5
|
||||||
"\u03C9_c": 0.05
|
"\u03C9_c": 0.05
|
||||||
? !!python/tuple
|
? !!python/tuple
|
||||||
- 20
|
- 20
|
||||||
- 2
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
: *id006
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA4D8=
|
||||||
|
: *id007
|
||||||
|
? !!python/tuple
|
||||||
|
- 20
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA8D8=
|
||||||
|
: *id007
|
||||||
|
? !!python/tuple
|
||||||
|
- 20
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAA+D8=
|
||||||
|
: *id007
|
||||||
|
? !!python/tuple
|
||||||
|
- 20
|
||||||
|
- !!python/object/apply:numpy.core.multiarray.scalar
|
||||||
|
- *id001
|
||||||
|
- !!binary |
|
||||||
|
AAAAAAAAAEA=
|
||||||
|
: *id007
|
||||||
refers_to: outputs/001_decay_test.pkl
|
refers_to: outputs/001_decay_test.pkl
|
||||||
source: scripts/simulations/001_full_system_rwa_analysis.py
|
source: scripts/simulations/001_full_system_rwa_analysis.py
|
||||||
|
|
|
@ -63,7 +63,7 @@ class Params:
|
||||||
initial_state: np.ndarray | None = None
|
initial_state: np.ndarray | None = None
|
||||||
"""The initial state of the system."""
|
"""The initial state of the system."""
|
||||||
|
|
||||||
correct_lamb_shift: bool = True
|
correct_lamb_shift: float = 1
|
||||||
"""Whether to correct for the Lamb shift by tweaking the detuning."""
|
"""Whether to correct for the Lamb shift by tweaking the detuning."""
|
||||||
|
|
||||||
def __post_init__(self):
|
def __post_init__(self):
|
||||||
|
@ -93,7 +93,7 @@ class Params:
|
||||||
if not self.flat_energies:
|
if not self.flat_energies:
|
||||||
raise ValueError("Rabi splitting is only defined for flat energies.")
|
raise ValueError("Rabi splitting is only defined for flat energies.")
|
||||||
|
|
||||||
return np.sqrt((self.Ω * self.g_0) ** 2 + (self.ω_c * self.Ω) ** 2)
|
return np.sqrt((self.Ω * self.g_0 * 2) ** 2 + (self.ω_c * self.Ω) ** 2)
|
||||||
|
|
||||||
|
|
||||||
class RuntimeParams:
|
class RuntimeParams:
|
||||||
|
@ -110,12 +110,14 @@ class RuntimeParams:
|
||||||
decay_rates = -1j * np.repeat(params.η / 2, params.N + 2)
|
decay_rates = -1j * np.repeat(params.η / 2, params.N + 2)
|
||||||
Ωs = freqs + decay_rates
|
Ωs = freqs + decay_rates
|
||||||
|
|
||||||
self.drive_frequencies, self.detunings, self.drive_amplitudes = (
|
self.drive_frequencies, self.detunings, self.g = (
|
||||||
drive_frequencies_and_amplitudes(params)
|
drive_frequencies_and_amplitudes(params)
|
||||||
) # linear frequencies!
|
) # linear frequencies!
|
||||||
|
|
||||||
|
self.g *= 2 * np.pi
|
||||||
self.Ωs = Ωs
|
self.Ωs = Ωs
|
||||||
self.diag_energies = (
|
self.bath_ε = 2 * np.pi * self.detunings - 1j * params.η / 2
|
||||||
|
self.ε = (
|
||||||
2
|
2
|
||||||
* np.pi
|
* np.pi
|
||||||
* np.concatenate(
|
* np.concatenate(
|
||||||
|
@ -128,13 +130,18 @@ class RuntimeParams:
|
||||||
+ decay_rates
|
+ decay_rates
|
||||||
)
|
)
|
||||||
|
|
||||||
self.detuned_Ωs = freqs - self.diag_energies.real
|
self.detuned_Ωs = freqs - self.ε.real
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"{self.__class__.__name__}(Ωs={self.Ωs}, drive_frequencies={self.drive_frequencies}, drive_amplitudes={self.drive_amplitudes})"
|
return f"{self.__class__.__name__}(Ωs={self.Ωs}, drive_frequencies={self.drive_frequencies}, drive_amplitudes={self.g})"
|
||||||
|
|
||||||
|
|
||||||
def time_axis(params: Params, lifetimes: float, resolution: float = 1):
|
def time_axis(
|
||||||
|
params: Params,
|
||||||
|
lifetimes: float | None = None,
|
||||||
|
recurrences: float | None = None,
|
||||||
|
resolution: float = 1,
|
||||||
|
):
|
||||||
"""Generate a time axis for the simulation.
|
"""Generate a time axis for the simulation.
|
||||||
|
|
||||||
:param params: system parameters
|
:param params: system parameters
|
||||||
|
@ -146,9 +153,15 @@ def time_axis(params: Params, lifetimes: float, resolution: float = 1):
|
||||||
smaller value yields more points in the time axis.
|
smaller value yields more points in the time axis.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return np.arange(
|
tmax = 0
|
||||||
0, params.lifetimes(lifetimes), resolution * np.pi / (params.Ω * params.N)
|
if lifetimes is not None:
|
||||||
)
|
tmax = params.lifetimes(lifetimes)
|
||||||
|
elif recurrences is not None:
|
||||||
|
tmax = recurrence_time(params) * recurrences
|
||||||
|
else:
|
||||||
|
raise ValueError("Either lifetimes or recurrences must be set.")
|
||||||
|
|
||||||
|
return np.arange(0, tmax, resolution * np.pi / (params.Ω * params.N))
|
||||||
|
|
||||||
|
|
||||||
def eom_drive(t, x, ds, ωs, rwa, detuned_Ωs):
|
def eom_drive(t, x, ds, ωs, rwa, detuned_Ωs):
|
||||||
|
@ -160,12 +173,11 @@ def eom_drive(t, x, ds, ωs, rwa, detuned_Ωs):
|
||||||
:param ωs: linear drive frequencies
|
:param ωs: linear drive frequencies
|
||||||
"""
|
"""
|
||||||
|
|
||||||
ds = 2 * np.pi * ds
|
|
||||||
if rwa:
|
if rwa:
|
||||||
coupled_indices = 2 + len(ds)
|
coupled_indices = 2 + len(ds)
|
||||||
det_matrix = np.zeros((len(x), len(x)))
|
det_matrix = np.zeros((len(x), len(x)))
|
||||||
det_matrix[1, 2:coupled_indices] = ds / 2
|
det_matrix[1, 2:coupled_indices] = ds
|
||||||
det_matrix[2:coupled_indices, 1] = ds / 2
|
det_matrix[2:coupled_indices, 1] = ds
|
||||||
driven_x = det_matrix @ x
|
driven_x = det_matrix @ x
|
||||||
else:
|
else:
|
||||||
det_matrix = detuned_Ωs[:, None] - detuned_Ωs[None, :]
|
det_matrix = detuned_Ωs[:, None] - detuned_Ωs[None, :]
|
||||||
|
@ -176,7 +188,7 @@ def eom_drive(t, x, ds, ωs, rwa, detuned_Ωs):
|
||||||
|
|
||||||
det_matrix = np.exp(-1j * det_matrix * t)
|
det_matrix = np.exp(-1j * det_matrix * t)
|
||||||
|
|
||||||
driven_x = np.sum(ds * np.sin(2 * np.pi * ωs * t)) * (det_matrix @ x)
|
driven_x = np.sum(2 * ds * np.sin(2 * np.pi * ωs * t)) * (det_matrix @ x)
|
||||||
|
|
||||||
return driven_x
|
return driven_x
|
||||||
|
|
||||||
|
@ -199,7 +211,7 @@ def make_righthand_side(runtime_params: RuntimeParams, params: Params):
|
||||||
"""The right hand side of the equation of motion."""
|
"""The right hand side of the equation of motion."""
|
||||||
|
|
||||||
def rhs(t, x):
|
def rhs(t, x):
|
||||||
differential = runtime_params.diag_energies * x
|
differential = runtime_params.ε * x
|
||||||
|
|
||||||
if params.rwa:
|
if params.rwa:
|
||||||
x[0] = 0
|
x[0] = 0
|
||||||
|
@ -209,7 +221,7 @@ def make_righthand_side(runtime_params: RuntimeParams, params: Params):
|
||||||
differential += eom_drive(
|
differential += eom_drive(
|
||||||
t,
|
t,
|
||||||
x,
|
x,
|
||||||
runtime_params.drive_amplitudes,
|
runtime_params.g,
|
||||||
runtime_params.drive_frequencies,
|
runtime_params.drive_frequencies,
|
||||||
params.rwa,
|
params.rwa,
|
||||||
runtime_params.detuned_Ωs,
|
runtime_params.detuned_Ωs,
|
||||||
|
@ -266,7 +278,7 @@ def solve(t: np.ndarray, params: Params, **kwargs):
|
||||||
(np.min(t), np.max(t)),
|
(np.min(t), np.max(t)),
|
||||||
initial,
|
initial,
|
||||||
vectorized=False,
|
vectorized=False,
|
||||||
# max_step=2 * np.pi / (params.Ω * params.N_couplings),
|
max_step=2 * np.pi / (params.Ω * params.N),
|
||||||
t_eval=t,
|
t_eval=t,
|
||||||
method="DOP853",
|
method="DOP853",
|
||||||
atol=1e-7,
|
atol=1e-7,
|
||||||
|
@ -350,8 +362,9 @@ def drive_frequencies_and_amplitudes(
|
||||||
amplitudes /= np.sum(amplitudes)
|
amplitudes /= np.sum(amplitudes)
|
||||||
amplitudes = params.Ω * params.g_0 * np.sqrt(amplitudes)
|
amplitudes = params.Ω * params.g_0 * np.sqrt(amplitudes)
|
||||||
|
|
||||||
|
# FIXME: this is twice too big
|
||||||
if not params.flat_energies and params.correct_lamb_shift:
|
if not params.flat_energies and params.correct_lamb_shift:
|
||||||
Δs -= np.sum(amplitudes**2 / Δs)
|
Δs -= np.sum(amplitudes**2 / Δs) * params.correct_lamb_shift**2
|
||||||
|
|
||||||
ωs = ((np.arange(1, params.N_couplings + 1) - params.δ) * params.Ω) - Δs
|
ωs = ((np.arange(1, params.N_couplings + 1) - params.δ) * params.Ω) - Δs
|
||||||
return ωs, Δs, amplitudes
|
return ωs, Δs, amplitudes
|
||||||
|
|
Loading…
Add table
Reference in a new issue