Source code for qiskit_metal.qlibrary.qubits.transmon_cross_fl

# -*- 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.
"""Child of transmon cross, adds a flux line (galvanic T) to the arm with the
DC SQUID."""
# pylint: disable=invalid-name
# Modification of Transmon Pocket Object to include a charge line (would be better to just make as a child)

import numpy as np
from qiskit_metal import draw, Dict
from qiskit_metal.qlibrary.qubits.transmon_cross import TransmonCross


[docs] class TransmonCrossFL(TransmonCross): # pylint: disable=invalid-name """The base `TransmonCrossFL` class. Inherits `TransmonCross` class Description: Simple Metal Transmon Cross object. Creates the X cross-shaped island, the "junction" on the south end, and up to 3 connectors on the remaining arms (claw or gap). 'claw_width' and 'claw_gap' define the width/gap of the CPW line that makes up the connector. Note, DC SQUID currently represented by single inductance sheet Add connectors to it using the `connection_pads` dictonary. See BaseQubit for more information. Flux line is added by default to the 'south' arm where the DC SQUID is located, default is a symmetric T style Default Options: Convention: Values (unless noted) are strings with units included, (e.g., '30um') * make_fl - (Boolean) If True, adds a flux line * t_top - length of the flux line for mutual inductance to the SQUID * t_inductive_gap - amount of metallization between the flux line and SQUID * t_offset - degree by which the tail of the T is offset from the center * t_width - width of the flux line's transmission line center trace * t_gap - dielectric gap of the flux line's transmission line .. image:: transmon_cross_fl.png .. meta:: Transmon Cross Flux Line """ component_metadata = Dict(short_name='Q', _qgeometry_table_poly='True', _qgeometry_table_path='True') """Component metadata""" default_options = Dict(make_fl=True, fl_options=Dict(t_top='15um', t_offset='0um', t_inductive_gap='3um', t_width='5um', t_gap='3um')) """Default drawing options""" TOOLTIP = """The base `TransmonCrossFL` class."""
[docs] def make(self): """Define the way the options are turned into QGeometry.""" super().make() if self.options.make_fl == True: self.make_flux_line()
#####################################################################
[docs] def make_flux_line(self): """Creates the charge line if the user has charge line option to TRUE.""" # Grab option values pf = self.p.fl_options p = self.p #Make the T flux line h_line = draw.LineString([(-pf.t_top / 2, 0), (pf.t_top / 2, 0)]) v_line = draw.LineString([(pf.t_offset, 0), (pf.t_offset, -0.03)]) parts = [h_line, v_line] # Move the flux line down to the SQUID parts = draw.translate( parts, 0, -(p.cross_length + p.cross_gap + pf.t_inductive_gap + pf.t_width / 2 + pf.t_gap)) # Rotate and translate based on crossmon location parts = draw.rotate(parts, p.orientation, origin=(0, 0)) parts = draw.translate(parts, p.pos_x, p.pos_y) [h_line, v_line] = parts # Adding to qgeometry table self.add_qgeometry('path', { 'h_line': h_line, 'v_line': v_line }, width=pf.t_width, layer=p.layer) self.add_qgeometry('path', { 'h_line_sub': h_line, 'v_line_sub': v_line }, width=pf.t_width + 2 * pf.t_gap, subtract=True, layer=p.layer) # Generating pin pin_line = v_line.coords self.add_pin("flux_line", points=pin_line, width=pf.t_width, gap=pf.t_gap, input_as_norm=True)