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:

zero-pi circuit

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.