Source code for qiskit_metal.analyses.hamiltonian.transmon_CPB_analytic
# -*- coding: utf-8 -*-# This code is part of Qiskit.## (C) Copyright IBM 2017, 2021.## This code is licensed under the Apache License, Version 2.0. You may# obtain a copy of this license in the LICENSE.txt file in the root directory# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.## Any modifications or derivative works of this code must retain this# copyright notice, and modified files need to carry a notice indicating# that they have been altered from the originals."""Models the transmon qubit in the cooper-pair charge basisand calculate the exact (analytic) solutions@author: Nick Lanzillo (IBM)"""# pylint: disable=invalid-nameimportnumpyasnpfromscipy.specialimportmathieu_a
[docs]classHcpb_analytic:""" Analytic version of Hamiltonian-model Cooper pair box (Hcpb) class. Used calculate the exact eigenvalues for arbitrary Ej, Ec, ng values. """def__init__(self,Ej:float=None,Ec:float=None,ng:float=0.5):""" Generate a Cooper-pair box (CPB) model. Arguments: 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) """self._Ej=Ejself._Ec=Ecself._ng=ngself.evals=Noneself.evecs=None# Generate the diagonal and offdiagonal components of the Hamiltonian#self._gen_operators()# compute the eigenvectors and eigenvalues of the CPB# all properties can be derived from these#self._calc_H()
[docs]defevalue_k(self,k:int):""" Return the eigenvalue of the Hamiltonian for level k. Arguments: k (int): Index of the eigenvalue Returns: float: eigenvalue of the Hamiltonian """ifself._ng==0:index=k+1.0-((k+1.0)%2.0)else:index=k+1.0-((k+1.0)%2.0)+2.0*self._ng*((-1.0)**(k-0.5*(np.sign(self._ng)-1.0)))self.evals=self._Ec*mathieu_a(index,-0.5*self._Ej/self._Ec)#return self.evals[k]returnself.evals