Defining a custom circuit#
The Circuit
class supports all superconducting circuits consisting of capacitances, inductances, and Josephson junctions.
Example#
Consider the circuit of the zero-pi qubit:
The circuit is specified branch by branch, using the following syntax:
[1]:
zp_yaml = """# zero-pi
branches:
- ["JJ", 1,2, EJ = 10, 20]
- ["JJ", 3,4, EJ, 20]
- ["L", 2,3, 0.008]
- ["L", 4,1, 0.008]
- ["C", 1,3, 0.02]
- ["C", 2,4, 0.02]
"""
Alternatively, circuit specifications can be stored and loaded as yaml
files (same syntax as above). This is the necessary input to create a Circuit
object.
General procedure#
Custom circuit definition
A custom circuit is defined in terms of its nodes and branches. To get started, label all circuit nodes with integer numbers n=1,2,3,…
For each branch connecting two nodes:
specify branch type:
JJ
for Josephson junction,L
for inductance,C
for capacitance
record the labels of the two nodes connected by the branch
provide circuit-element parameters (EJ and ECJ, EL, and EC, respectively)
Graphical user interface (GUI) for defining custom circuits#
Superconducting Circuit Builder (developed by Ben McDonough) is a separate package that offers the GUI for defining custom circuits: the user can draw a circuit, and can export a corresponding YAML string of the circuit. The package is available here.