supergrad.quantum_system.Fluxonium

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

dim

Returns truncated Hilbert space dimension

qdevice_type