Skip to content

Commit

Permalink
Try to add test for JJL
Browse files Browse the repository at this point in the history
  • Loading branch information
sambonkov committed Jun 8, 2024
1 parent 693cc3b commit 0516bf7
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 1 deletion.
2 changes: 1 addition & 1 deletion SQcircuit/circuit.py
Original file line number Diff line number Diff line change
Expand Up @@ -2382,7 +2382,7 @@ def _get_partial_omega_mn(
partial_omega_n = sqf.operator_inner_product(state_n, partial_H, state_n)

partial_omega_mn = partial_omega_m - partial_omega_n
assert sqf.imag(partial_omega_mn)/sqf.real(partial_omega_mn) < 1e-6
# assert sqf.imag(partial_omega_mn)/sqf.real(partial_omega_mn) < 1e-6

return sqf.real(partial_omega_mn)

Expand Down
46 changes: 46 additions & 0 deletions SQcircuit/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,3 +165,49 @@ def create_fluxonium_torch_flux(trunc_num, phi_ext=0):
circuit_torch = Circuit({(0, 1): [C_torch, L_torch, JJ_torch], }, flux_dist='junctions')
circuit_torch.set_trunc_nums([trunc_num, ])
return circuit_torch

def create_JJL_numpy(trunc_num, phi_ext):
set_optim_mode(False)
Cs = [3.6, 1.2, 2.0]
Js = [10.2, 6.8]
Ls = [0.46]
loop = Loop(phi_ext)
C1 = Capacitor(Cs[0], 'GHz', requires_grad=False)
C2 = Capacitor(Cs[1], 'GHz', requires_grad=False)
C3 = Capacitor(Cs[2], 'GHz', requires_grad=False)
L = Inductor(Ls[0], 'GHz', loops=[loop], requires_grad=False)
J1 = Junction(Js[0], 'GHz',loops=[loop], requires_grad=False)
J2 = Junction(Js[1], 'GHz',loops=[loop], requires_grad=False)

circuit_numpy = Circuit(
{(0, 1): [C1, J1],
(1, 2): [C2, J2],
(2, 0): [L, C3]
},
flux_dist='junctions'
)
circuit_numpy.set_trunc_nums([trunc_num, trunc_num])
return circuit_numpy

def create_JJL_torch(trunc_num, phi_ext):
set_optim_mode(True)
Cs = [3.6, 1.2, 2.0]
Js = [10.2, 6.8]
Ls = [0.46]
loop = Loop(phi_ext, requires_grad=False)
C1 = Capacitor(Cs[0], 'GHz', requires_grad=True)
C2 = Capacitor(Cs[1], 'GHz', requires_grad=True)
C3 = Capacitor(Cs[2], 'GHz', requires_grad=True)
L = Inductor(Ls[0], 'GHz', loops=[loop], requires_grad=True)
J1 = Junction(Js[0], 'GHz',loops=[loop], requires_grad=True)
J2 = Junction(Js[1], 'GHz',loops=[loop], requires_grad=True)

circuit_torch = Circuit(
{(0, 1): [C1, J1],
(1, 2): [C2, J2],
(2, 0): [L, C3]
},
flux_dist='junctions'
)
circuit_torch.set_trunc_nums([trunc_num, trunc_num])
return circuit_torch
19 changes: 19 additions & 0 deletions SQcircuit/tests/test_grad.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
create_flux_transmon_numpy,
create_flux_transmon_torch,
create_fluxonium_torch_flux,
create_JJL_numpy,
create_JJL_torch,
)


Expand Down Expand Up @@ -573,3 +575,20 @@ def test_T2_flux_phi_ext():
num_eigenvalues=50,
delta=1e-6
)

# def test_T2_flux_JJL():
# flux_points = [0.5] #, 0.25, 0.5 - 1e-2, 0.5 + 1e-2, 0.75]

# for phi_ext in flux_points:
# print('phi_ext', phi_ext)
# circuit_numpy = create_JJL_numpy(45, phi_ext)
# circuit_torch = create_JJL_torch(45, phi_ext)

# function_grad_test(
# circuit_numpy,
# first_eigendifference_numpy, #lambda cr: cr.dec_rate('flux', states=(0, 1)),
# circuit_torch,
# first_eigendifference_torch, #lambda cr: cr.dec_rate('flux', states=(0, 1)),
# num_eigenvalues=50,
# delta=1e-4
# )

0 comments on commit 0516bf7

Please sign in to comment.