This project allows to numerically study Aharonov-Casher qubit, namely calculate wavefunctions and energy levels, visualize energy spectra, evaluate decay rates and etc. The main feature of this objected-oriented code is save time and recources - once the Hamiltonian was solved for certain point, the information about energies and wavefunctions is stored and can be used in futher calculations.
Download files
wavefunction1d.py
ACstate.py
ACqubit.py
import to your .ipynb or .py file and start playing!
One can create an instance of ACQubit class, providing the dict of qubit parameters (E_CL, E_L, E_J, E_C, dE_J
in GHz)
ACQB15 = ACQubit (E_CL = 15,
E_L = 0.87,
E_J = 33,
E_C = 8,
dE_J = 3 )
or
param_dict = {'E_CL': 15, 'E_J' : 33, 'E_C' : 8, 'dE_J' : 3 }
ACQB15 = ACQubit (**param_dict)
Qubit can be set in certain state (n_g and fi_ext), energy and WF of the state are calculated. One the Hamiltonian for certain state was diagonalized, we can use WFs and Es without recalculations.
ACstate methods allow to calculate E, WFs, matrix elements
ACqubit methods are wrappers for interation over range of parameters and plotting.
The Hamiltonian of the qubit can be found in ACstate.py module, calc_WF
function
-
set_state(ng , fi_ext)
creates (or retrieves, if was created before) attribute, corresponds to the given gate chargeng
(in units of e) and the external fluxfi_ext
(in rad). Energies and wavefuctions can be calculated for particular state, see more detail in the next section -
iterate_fi( fi_ext_list, ng, get_function, *args)
iterates overfi_ext_list
for givenng
, returns the np.array of resultsget_function(*args)
for each point. List ofget_functions
see in the next section -
iterate_fi( ng_list, fi_ext, get_function, *args)
iterates overng_ext_list
for givenfi_ext
, returns the np.array of resultsget_function(*args)
for each point. List ofget_functions
see in the next section -
plot_spectrum( fi_ext_list, ng_list, bands, ax = None )
plots E_0i transitions vsfi_ext_list
, for i listed inbands
, for gate charges fromng_list
on given plt.axis or create new. Returns axis -
plot_bands( ax, fi_ext_list, ng_list, bands )
!! unify all plotting procedures -
plot_chi_i( fi_ext_list, ng_list, i , freq, ax = None )
-
plot_fi_ij( fi_ext_list, ng_list, i, j , ax = None )
-
plot_n_ij( fi_ext_list, ng_list, i, j , ax = None )
-
plot_psi_ij( fi_ext_list, ng_list, i, j )
-
plot_bands_Psi( fi_ext_list, ng_list, bands )
-
calc_WF( fi_grid , Q_grid )
calculates wavefunctions and energies for givenfi_grid = [min_fi, max_fi, N_pts]
andQ_grid = [min_Q, max_Q]
-
get_WF()
checks if wavefunctions and energies are already calculated, and calculates if necessary -
get_E(i)
returns energy ofi
-th level, or array of all levels ifi
is not given -
get_Psi( band, q)
returns 1d wavefunction of fi at the levelband
, and certain charge variableq
(not confuse with induced gate charge!)get_fi_ij( i, j )
returns phase matrix element between statesi
andj
-
get_n_ij( i, j )
returns charge matrix element between statesi
andj
-
get_psi_ij( i, j )
returns overlapping of statesi
andj
-
get_chi_i( i, freq )
!! add coupling returns dispersive shift of the resonator with frequencyfreq
, when qubit is in the statei
-
get_T1(fi_ext, ng, i = 0, j = 1)
!!kill fiext, ng, add noise ampl