supergrad.quantum_system.Fluxonium#
- class supergrad.quantum_system.Fluxonium(ec: float = None, ej: float = None, el: float = None, constant: bool = False, phiext: float = None, put_phiext_on_inductor: bool = True, num_basis: int = 400, truncated_dim: int = 10, basis: str = 'phase', n_max: int = 0, phi_max: float = 15.707963267948966, is_basis_sym: bool = False, name: str = 'fluxonium', var: dict = None, drive_for_state_phase: str = 'charge', **kwargs)[source]#
Class for the fluxonium qubit.
When considering time-varying external flux, the phiext should be on EL. See PRB 99, 174512 (2019) Note that Transmon EL=0.
- Parameters:
ec (float, optional) – charging energy in unit GHz
ej (float, optional) – Josephson energy in unit GHz
el (float, optional) – inductive energy in unit GHz
constant (bool) – True for manually setting parameters, False for using haiku’s parameters management.
phiext – phi external parameters for fluxonium, in unit of flux quanta
put_phiext_on_inductor – Whether to put the external flux term in the EL term (True) or EJ term (False).
num_basis – Number of basis functions
truncated_dim – Number of eigenenergies to construct the Hilbert space.
basis – Basis set, can be {‘charge’, ‘phase’, ‘phase_only’}.
n_max – charge basis range [-n_max, n_max). Override phi_max if both specified
phi_max – phi basis range [-phi_max, phi_max), must be multiple of pi
is_basis_sym – Is basis forced to be [-n, … +n] instead of [-n, … +n-1].
name – module name
var – the device parameters variance
drive_for_state_phase – This is to specify which drive is used, so eigenstates are rotated to let <i|drive|i+1> be real positive Possible values are “charge” and “phase”. Default is “charge”.
- __init__(ec: float | None = None, ej: float | None = None, el: float | None = None, constant: bool = False, phiext: float | None = None, put_phiext_on_inductor: bool = True, num_basis: int = 400, truncated_dim: int = 10, basis: str = 'phase', n_max: int = 0, phi_max: float = 15.707963267948966, is_basis_sym: bool = False, name: str = 'fluxonium', var: dict | None = None, drive_for_state_phase: str = 'charge', **kwargs) None[source]#
Methods
__init__([ec, ej, el, constant, phiext, ...])add_lcj_params_variance([var])Function to add variance to (device parameters).
create_d2phi()Computes \(\frac{d^2}{d \phi^2}\)
create_dphi()Computes \(\frac{d}{d \phi}\)
create_n()Computes charge matrix.
create_phi()Computes the phi matrix.
create_t()Computes kinetic matrix in phase/charge basis.
create_v()Computes potential matrix.
eigenenergies([unify_state_phase])Returns array of eigenvalues.
idling_hamiltonian()Create the Hamiltonian matrix of the qubit.
n_operator(**kwargs)- returns:
Returns the \(n = - i d/d\phi\) operator in the phase basis.
params_dict()Returns parameters keyed by name for this module and submodules.
phi_operator(**kwargs)- returns:
Returns the phi operator in the phase basis.
set_charge_basis(n_max[, num_n])Initializes parameters for charge basis.
set_n_phi_transform()Computes the unitary transformation between n and phi.
set_phi_basis(phi_max[, num_phi, phi_step])Initializes parameters for phase basis.
state_dict()Returns state keyed by name for this module and submodules.
transform_n_to_phi(mat)Run change of basis of matrix from charge basis to phase basis
transform_phi_to_n(mat)Run change of basis of matrix from phi basis to n basis
unify_state_phase(operator)Adjusts the phase of eigenstates to meet the condition <i|m|i+1> matrix elements are real positive.
Attributes
dimReturns truncated Hilbert space dimension
qdevice_type