Non-linear inductor
- class qucat.NonLinearInductor(node_minus, node_plus, *args)[source]
A class representing a non-linear inductor
- Parameters:
node_minus (integer) – Index corresponding to one node of the inductor
node_minus – Index corresponding to the other node of the inductor
args (List of <float> or list of <str> or <float>,<str>) – These arguments characterize the contribution of this element to the system Hamiltonian (see below). If only labels are provided, a value for every label should be passed as a keyword argument in subsequent function calls (ex: E_1 = 1e9, E_1 = 1e6). This is the best way to proceed if one wants to sweep the value of this element. Indeed, the most computationally expensive part of the analysis is performed upon initializing the circuit, subsequently changing the value of a component and re-calculating a quantity such as the frequency or anharmonicity can be performed much faster.
Notes
A non-linear inductor allows the simulation of an arbitrary contribution to the inductive energy. The element is parametrized by a list of labels or values. For example, if three labels [a,b,c] are provided, the contribution \(U\) of this element to the Hamiltonian is
\(U/h = \frac{a}{2!}\phi^2 + \frac{b}{3!}\phi^3 + \frac{c}{4!}\phi^4\)
The parameters are assumed to be given in units of Herz. To create a Josephson junction, with energy
\(U = E_J(1 - \cos\phi) \simeq \frac{E_J}{2}\phi^2 - \frac{E_J}{4!}\phi^4\)
one should use : \(a =E_J/h, b = 0, c = -E_J/h\). Note that this element is polarized, since odd orders are non zero in general. So orientation matters.
Once the hamiltonian decomposed into eigenmodes, the hamiltonian of the circuit writes :
:math:` H = sum_m{hbar omega_m hat{a}^dagger_m hat{a}_m} + sum_j sum_{ngeq 3}frac{partial^{n} U_j}{partial phi^{n}}bigg|_0hat{phi}_j^n`
with : - \(\hat{\phi}_j\) being the phase across the j-th non linear element - \(m\) the modes of the circuit - \(\omega_m/2\pi\) the frequency of the \(m\)-th mode - \(\hat{a}_m\) the annihilator of the \(m\)-th mode - \(U_j(\phi)\) the inductive energy of the j-th non linear dipole, assuming its minimum is for \(\phi = 0\)
Using \(\hat{\phi}_j = \sum_m \phi_{zpf, m, j}\hat{\phi}_m = \sum_m \phi_{zpf, m, j}(\hat{a}^\dagger_m + \hat{a}_m)\) :
\(H = \sum_m{\hbar \omega_m \hat{a}^\dagger_m \hat{a}_m} + \sum_j \sum_{n\geq 3}\frac{\partial^{n} U_j}{\partial \phi^{n}}[\sum_m \phi_{zpf, m, j}(\hat{a}^\dagger_m + \hat{a}_m)]^n\)
At fourth order, following the QuCAT formalism (applying rotating wave approximation) and adding the third order terms, we obtain
\(H = \hbar\sum_m \big[( \omega_m - \sum_{n}\frac{\chi_{mn}}{2})\hat{a}_m^\dagger\hat{a}_m-\frac{A_m}{2} \hat{a}_m^\dagger \hat{a}_m^\dagger \hat{a}_m \hat{a}_m -\sum_{n}\chi_{mn}\hat{a}_m^\dagger \hat{a}_m \hat{a}_n^\dagger \hat{a}_n\big] + \sum_{m, n, o}(\gamma_{mno}^* \hat{a}_m^\dagger \hat{a}_n^\dagger \hat{a}_o + \gamma_{mno} \hat{a}_m \hat{a}_n \hat{a}_o^\dagger)\)
the
qucat.Qcircuit.three_waves()returns the term \(\gamma_{mno}\).- anharmonicity(mode, **kwargs)[source]
Returns the contribution of this non-linear inductor to the (Kerr) anharmonicity of a given normal mode.
Returned in units of Hertz, not angular frequency.
- Parameters:
kwargs – Values for un-specified circuit components, ex:
L=1e-9.mode (integer) – where 0 designates the lowest frequency mode, and the others are arranged in order of increasing frequency
- Returns:
contribution of this inductor to the anharmonicity of a given normal mode
- Return type:
Notes
The quantity returned is the anharmonicity of the mode
mif this inductor were the only inductor present in the circuit (i.e. if all the others were replaced by linear inductors).The total anharmonicity of a mode (in first order perturbation theory) is obtained by summing these contribution over all modes.
For more details, see https://arxiv.org/pdf/1908.10342.pdf
- three_term(mode1, mode2, mode3, **kwargs)[source]
Returns the contribution of this non-linear inductor to the three waves-mixing coeficient of a normal mode
Returned in units of Hertz, not angular frequency.
- Parameters:
kwargs – Values for un-specified circuit components,
mode1 (integer)
mode2 (integer)
mode3 (integer)
- Returns:
contribution of this non-linear inductor to the three waves-mixing coeficient of a given normal mode
- Return type:
Notes
The quantity returned is the three waves-mixing coeficient of the modes
mode1,mode2andmode3if this inductor were the only inductor present in the circuit (i.e. if all the others were replaced by linear inductors). This is the coefficient for \(a_1 a_2 a^\dagger_3\).The total three wave coefficient (in first order perturbation theory) is obtained by summing these contribution over all modes.
- zpf(mode, quantity, **kwargs)
Returns contribution of a mode to the zero-point fluctuations of a quantity for this component.
The quantity can be current (in units of Ampere), voltage (in Volts), charge (in electron charge), or flux (in units of the reduced flux quantum, \(\hbar/2e\)).
- Parameters:
mode (integer) – Determine what mode to consider, where 0 designates the lowest frequency mode, and the others are arranged in order of increasing frequency
quantity (string) – One of ‘current’, ‘flux’, ‘charge’, ‘voltage’
kwargs – Values for un-specified circuit components, ex:
L=1e-9.
- Returns:
contribution of the
modeto the zero-point fluctuations of thequantity- Return type:
Notes
This quantity is calculated by multiplying the voltage transfer function \(T_{rc}\) (between a reference component \(r\) and the annotated component \(c\) ), with \(X_{zpf,m,r}\), the zero-point fluctuations of \(\hat{X}\) at the reference component.
Note that resistors make the transfer function \(T_{rc}\), and hence this quantity, complex.
For more detail on the underlying theory, see https://arxiv.org/pdf/1908.10342.pdf.