Hcpb#
- class Hcpb(nlevels: int = 15, Ej: float | None = None, Ec: float | None = None, ng: float = 0.5)[source]#
Hamiltonian-model Cooper pair box (Hcpb) class.
Used to model analytically the CPB Hamiltonian quickly and efficiently. Solves in charge basis tridiagonal eigenvalue problem for arbitrary Ej, Ec, ng values.
As long as nlevels remains fixed the number of charge states considered does not change and it does not recreate the arrays, just recomputes the properties
Returns all properties of interest for the CPB.
Generate a Cooper-pair box (CPB) model.
- Parameters:
nlevels (int) – Number of charge states of the CPB [-nlevels, nlevels+1]
Ej (float) – Josephson energy of the JJ
Ec (float) – Charging energy of the CPB
ng (float) – Offset charge of the CPB (ng=0.5 is the sweet spot). ng only needs to run between -0.5 and 0.5. ng is defined in units of cooper pairs (2e)
Example use:
H = Hcpb(nlevels=15, Ej=13971.3, Ec=295.2, ng=0.001) print(f''' Transmon frequencies ω01/2π = {H.fij(0,1): 6.0f} MHz α/2π = {H.anharm(): 6.0f} MHz ''')
import matplotlib.pyplot as plt for k in range (3): ψ, θ = H.psi_k(k) plt.plot(θ, ψ.real+ψ.imag, label=f"|{k}>") # it's in either quadrature, but not both plt.xlabel("Junction phase θ (wrapped in the interval [-π, π])") plt.ylabel("Re(ψ(θ))") plt.legend(title="Level")
Attributes
- Ec#
Return Ec.
- Ej#
Returns Ej.
- ng#
Return ng.
- nlevels#
Return the number of levels.
Methods
- anharm()[source]#
Compute the anharmonicity of the CPB.
- Returns:
Anharmonicty defined as E12-E01
- Return type:
float
- evalue_k(k: int)[source]#
Return the eigenvalue of the Hamiltonian for level k.
- Parameters:
k (int) – Index of the eigenvalue
- Returns:
eigenvalue of the Hamiltonian
- Return type:
float
- evec_k(k: int)[source]#
Return the eigenvector of the CPB Hamiltonian for level k.
- Parameters:
k (int) – Index of eigenvector
- Returns:
Eigenvector of the |k> level of the CPB Hamiltonian
- Return type:
array
- fij(i: int, j: int)[source]#
Compute the transition energy (or frequency) between states.
|i> and |j>.
- Parameters:
i (int) – Index of state |i>
j (int) – Index of state |j>
- Returns:
Eij, the transition energy
- Return type:
float
- h0_to_qutip(n_transmon: int)[source]#
Wrapper around Qutip to output the diagonalized Hamiltonian truncated up to n levels of the transmon for modeling.
- Parameters:
n_transmon (int) – Truncate up to n levels of the Transmon Hamiltonian
- Returns:
Returns a Qutip Qobj for the diagonalized transmon
- Return type:
Qobj
- n_ij(i: int, j: int)[source]#
Compute the value of the number operator for coupling elements together in the energy eigen-basis.
- Parameters:
i (int) – |i> Index of the transmon
j (int) – |j> Index of the transmon
- Returns:
Matrix element corresponding to the number operator in the transmon basis n_ij = |<i|n|j>|
- Return type:
float
- n_to_qutip(n_transmon: int, thresh=None)[source]#
Wrapper around Qutip to output the number operator (charge) for the Transmon Hamiltonian in the energy eigen-basis. Used for computing the coupling between other elements in the system.
- Parameters:
n_transmon (int) – Number of energy levels to consider
thresh (float) – Threshold for keeping small values in the number operator i.e n_{i,i+2} terms drop off exponentially. If None retain all terms. Defaults to None
- Returns:
Returns a Qutip Qobj corresponding to the number operator for defining couplings in the energy eigen-basis.
- Return type:
Qobj
- params_from_freq_fixEC(f01: float, Ec: float, **kwargs)[source]#
Find transmon Ej given a fixed EC and frequency.
- Parameters:
f01 (float) – Desired qubit frequency
Ec (float) – Qubit EC (4ECn^2) in same units as f01
- Returns:
Ej in same units
- Return type:
float
- params_from_spectrum(f01: float, anharm: float, **kwargs)[source]#
Method to work backwards from a desired transmon frequency and anharmonicty to extract the target Ej and Ec for design and fabrication. Updates the class to include these Ej and Ec as the new values for extracting properties.
- Parameters:
f01 (float) – Desired qubit frequency
anharm (float) – Desired qubit anharmonicity (should be negative)
- Keyword Arguments:
least_squares (Passed to) –
- Returns:
Ej and Ec of the transmon Hamiltonian corresponding to the f01 and anharmonicty of the device
- Return type:
(float, float)
- psi_k(k: int, pts: int = 1001)[source]#
Return the wavevector of the CPB Hamiltonian in the flux basis. Made compact over the interval of [-pi, pi].
- Parameters:
k (int) – index of wavevector corresponding to the |k> eigenstate
pts (int) – Number of points to approximate the wavevector in the interval [-pi, pi]. Defaults to 1001.
- Returns:
Wavevector corresponding the |k> eigenstate
- Return type:
array