Models ====== airbridge --------- .. autofunction:: qpdk.models.airbridge .. plot:: :caption: :func:`qpdk.models.airbridge` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import airbridge freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = airbridge(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() bend_circular ------------- .. autofunction:: qpdk.models.bend_circular .. plot:: :caption: :func:`qpdk.models.bend_circular` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import bend_circular freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = bend_circular(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() bend_euler ---------- .. autofunction:: qpdk.models.bend_euler .. plot:: :caption: :func:`qpdk.models.bend_euler` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import bend_euler freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = bend_euler(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() bend_s ------ .. autofunction:: qpdk.models.bend_s .. plot:: :caption: :func:`qpdk.models.bend_s` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import bend_s freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = bend_s(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() coupler_ring ------------ .. autofunction:: qpdk.models.coupler_ring .. plot:: :caption: :func:`qpdk.models.coupler_ring` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import coupler_ring freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = coupler_ring(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() coupler_straight ---------------- .. autofunction:: qpdk.models.coupler_straight .. plot:: :caption: :func:`qpdk.models.coupler_straight` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import coupler_straight freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = coupler_straight(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() coupling_strength_to_capacitance -------------------------------- .. autofunction:: qpdk.models.coupling_strength_to_capacitance cpw_cpw_coupling_capacitance ---------------------------- .. autofunction:: qpdk.models.cpw_cpw_coupling_capacitance cpw_epsilon_eff --------------- .. autofunction:: qpdk.models.cpw_epsilon_eff cpw_parameters -------------- .. autofunction:: qpdk.models.cpw_parameters cpw_thickness_correction ------------------------ .. autofunction:: qpdk.models.cpw_thickness_correction cpw_z0 ------ .. autofunction:: qpdk.models.cpw_z0 cpw_z0_from_cross_section ------------------------- .. autofunction:: qpdk.models.cpw_z0_from_cross_section dispersive_shift ---------------- .. autofunction:: qpdk.models.dispersive_shift dispersive_shift_to_coupling ---------------------------- .. autofunction:: qpdk.models.dispersive_shift_to_coupling double_island_transmon ---------------------- .. autofunction:: qpdk.models.double_island_transmon .. plot:: :caption: :func:`qpdk.models.double_island_transmon` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import double_island_transmon freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = double_island_transmon(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() double_island_transmon_with_bbox -------------------------------- .. autofunction:: qpdk.models.double_island_transmon_with_bbox .. plot:: :caption: :func:`qpdk.models.double_island_transmon_with_bbox` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import double_island_transmon_with_bbox freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = double_island_transmon_with_bbox(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() double_island_transmon_with_resonator ------------------------------------- .. autofunction:: qpdk.models.double_island_transmon_with_resonator .. plot:: :caption: :func:`qpdk.models.double_island_transmon_with_resonator` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import double_island_transmon_with_resonator freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = double_island_transmon_with_resonator(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() double_pad_transmon ------------------- .. autofunction:: qpdk.models.double_pad_transmon .. plot:: :caption: :func:`qpdk.models.double_pad_transmon` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import double_pad_transmon freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = double_pad_transmon(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() double_pad_transmon_with_bbox ----------------------------- .. autofunction:: qpdk.models.double_pad_transmon_with_bbox .. plot:: :caption: :func:`qpdk.models.double_pad_transmon_with_bbox` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import double_pad_transmon_with_bbox freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = double_pad_transmon_with_bbox(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() double_pad_transmon_with_resonator ---------------------------------- .. autofunction:: qpdk.models.double_pad_transmon_with_resonator .. plot:: :caption: :func:`qpdk.models.double_pad_transmon_with_resonator` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import double_pad_transmon_with_resonator freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = double_pad_transmon_with_resonator(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() ec_to_capacitance ----------------- .. autofunction:: qpdk.models.ec_to_capacitance ej_ec_to_frequency_and_anharmonicity ------------------------------------ .. autofunction:: qpdk.models.ej_ec_to_frequency_and_anharmonicity ej_to_inductance ---------------- .. autofunction:: qpdk.models.ej_to_inductance el_to_arm_inductance -------------------- .. autofunction:: qpdk.models.el_to_arm_inductance el_to_inductance ---------------- .. autofunction:: qpdk.models.el_to_inductance electrical_short_2_port ----------------------- .. autofunction:: qpdk.models.electrical_short_2_port .. plot:: :caption: :func:`qpdk.models.electrical_short_2_port` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import electrical_short_2_port freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = electrical_short_2_port(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() flipmon ------- .. autofunction:: qpdk.models.flipmon .. plot:: :caption: :func:`qpdk.models.flipmon` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import flipmon freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = flipmon(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() flipmon_with_bbox ----------------- .. autofunction:: qpdk.models.flipmon_with_bbox .. plot:: :caption: :func:`qpdk.models.flipmon_with_bbox` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import flipmon_with_bbox freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = flipmon_with_bbox(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() flipmon_with_resonator ---------------------- .. autofunction:: qpdk.models.flipmon_with_resonator .. plot:: :caption: :func:`qpdk.models.flipmon_with_resonator` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import flipmon_with_resonator freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = flipmon_with_resonator(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() fluxonium --------- .. autofunction:: qpdk.models.fluxonium .. plot:: :caption: :func:`qpdk.models.fluxonium` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import fluxonium freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = fluxonium(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() fluxonium_coupled ----------------- .. autofunction:: qpdk.models.fluxonium_coupled .. plot:: :caption: :func:`qpdk.models.fluxonium_coupled` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import fluxonium_coupled freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = fluxonium_coupled(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() fluxonium_with_bbox ------------------- .. autofunction:: qpdk.models.fluxonium_with_bbox .. plot:: :caption: :func:`qpdk.models.fluxonium_with_bbox` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import fluxonium_with_bbox freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = fluxonium_with_bbox(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() fluxonium_with_resonator ------------------------ .. autofunction:: qpdk.models.fluxonium_with_resonator .. plot:: :caption: :func:`qpdk.models.fluxonium_with_resonator` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import fluxonium_with_resonator freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = fluxonium_with_resonator(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() indium_bump ----------- .. autofunction:: qpdk.models.indium_bump .. plot:: :caption: :func:`qpdk.models.indium_bump` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import indium_bump freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = indium_bump(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() interdigital_capacitor ---------------------- .. autofunction:: qpdk.models.interdigital_capacitor .. plot:: :caption: :func:`qpdk.models.interdigital_capacitor` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import interdigital_capacitor freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = interdigital_capacitor(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() josephson_junction ------------------ .. autofunction:: qpdk.models.josephson_junction .. plot:: :caption: :func:`qpdk.models.josephson_junction` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import josephson_junction freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = josephson_junction(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() launcher -------- .. autofunction:: qpdk.models.launcher lc_resonator ------------ .. autofunction:: qpdk.models.lc_resonator .. plot:: :caption: :func:`qpdk.models.lc_resonator` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import lc_resonator freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = lc_resonator(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() lc_resonator_coupled -------------------- .. autofunction:: qpdk.models.lc_resonator_coupled .. plot:: :caption: :func:`qpdk.models.lc_resonator_coupled` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import lc_resonator_coupled freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = lc_resonator_coupled(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() lumped_element_resonator ------------------------ .. autofunction:: qpdk.models.lumped_element_resonator .. plot:: :caption: :func:`qpdk.models.lumped_element_resonator` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import lumped_element_resonator freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = lumped_element_resonator(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() meander_inductor ---------------- .. autofunction:: qpdk.models.meander_inductor .. plot:: :caption: :func:`qpdk.models.meander_inductor` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import meander_inductor freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = meander_inductor(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() meander_inductor_inductance_analytical -------------------------------------- .. autofunction:: qpdk.models.meander_inductor_inductance_analytical measurement_induced_dephasing ----------------------------- .. autofunction:: qpdk.models.measurement_induced_dephasing microstrip_epsilon_eff ---------------------- .. autofunction:: qpdk.models.microstrip_epsilon_eff microstrip_thickness_correction ------------------------------- .. autofunction:: qpdk.models.microstrip_thickness_correction microstrip_z0 ------------- .. autofunction:: qpdk.models.microstrip_z0 nxn --- .. autofunction:: qpdk.models.nxn .. plot:: :caption: :func:`qpdk.models.nxn` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import nxn freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = nxn(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() open ---- .. autofunction:: qpdk.models.open .. plot:: :caption: :func:`qpdk.models.open` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import open freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = open(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() plate_capacitor --------------- .. autofunction:: qpdk.models.plate_capacitor .. plot:: :caption: :func:`qpdk.models.plate_capacitor` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import plate_capacitor freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = plate_capacitor(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() propagation_constant -------------------- .. autofunction:: qpdk.models.propagation_constant purcell_decay_rate ------------------ .. autofunction:: qpdk.models.purcell_decay_rate quarter_wave_resonator_coupled ------------------------------ .. autofunction:: qpdk.models.quarter_wave_resonator_coupled .. plot:: :caption: :func:`qpdk.models.quarter_wave_resonator_coupled` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import quarter_wave_resonator_coupled freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = quarter_wave_resonator_coupled(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() qubit_with_resonator -------------------- .. autofunction:: qpdk.models.qubit_with_resonator .. plot:: :caption: :func:`qpdk.models.qubit_with_resonator` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import qubit_with_resonator freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = qubit_with_resonator(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() rectangle --------- .. autofunction:: qpdk.models.rectangle .. plot:: :caption: :func:`qpdk.models.rectangle` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import rectangle freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = rectangle(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() resonator --------- .. autofunction:: qpdk.models.resonator .. plot:: :caption: :func:`qpdk.models.resonator` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import resonator freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = resonator(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() resonator_coupled ----------------- .. autofunction:: qpdk.models.resonator_coupled .. plot:: :caption: :func:`qpdk.models.resonator_coupled` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import resonator_coupled freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = resonator_coupled(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() resonator_frequency ------------------- .. autofunction:: qpdk.models.resonator_frequency resonator_half_wave ------------------- .. autofunction:: qpdk.models.resonator_half_wave .. plot:: :caption: :func:`qpdk.models.resonator_half_wave` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import resonator_half_wave freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = resonator_half_wave(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() resonator_linewidth_from_q -------------------------- .. autofunction:: qpdk.models.resonator_linewidth_from_q resonator_quarter_wave ---------------------- .. autofunction:: qpdk.models.resonator_quarter_wave .. plot:: :caption: :func:`qpdk.models.resonator_quarter_wave` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import resonator_quarter_wave freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = resonator_quarter_wave(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() series_impedance ---------------- .. autofunction:: qpdk.models.series_impedance .. plot:: :caption: :func:`qpdk.models.series_impedance` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import series_impedance freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = series_impedance(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() short ----- .. autofunction:: qpdk.models.short .. plot:: :caption: :func:`qpdk.models.short` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import short freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = short(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() short_2_port ------------ .. autofunction:: qpdk.models.short_2_port .. plot:: :caption: :func:`qpdk.models.short_2_port` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import short_2_port freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = short_2_port(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() shunt_admittance ---------------- .. autofunction:: qpdk.models.shunt_admittance .. plot:: :caption: :func:`qpdk.models.shunt_admittance` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import shunt_admittance freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = shunt_admittance(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() shunted_transmon ---------------- .. autofunction:: qpdk.models.shunted_transmon .. plot:: :caption: :func:`qpdk.models.shunted_transmon` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import shunted_transmon freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = shunted_transmon(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() squid_junction -------------- .. autofunction:: qpdk.models.squid_junction .. plot:: :caption: :func:`qpdk.models.squid_junction` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import squid_junction freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = squid_junction(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() straight -------- .. autofunction:: qpdk.models.straight .. plot:: :caption: :func:`qpdk.models.straight` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import straight freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = straight(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() straight_double_open -------------------- .. autofunction:: qpdk.models.straight_double_open .. plot:: :caption: :func:`qpdk.models.straight_double_open` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import straight_double_open freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = straight_double_open(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() straight_microstrip ------------------- .. autofunction:: qpdk.models.straight_microstrip .. plot:: :caption: :func:`qpdk.models.straight_microstrip` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import straight_microstrip freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = straight_microstrip(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() straight_open ------------- .. autofunction:: qpdk.models.straight_open .. plot:: :caption: :func:`qpdk.models.straight_open` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import straight_open freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = straight_open(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() straight_shorted ---------------- .. autofunction:: qpdk.models.straight_shorted .. plot:: :caption: :func:`qpdk.models.straight_shorted` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import straight_shorted freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = straight_shorted(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() taper_cross_section ------------------- .. autofunction:: qpdk.models.taper_cross_section .. plot:: :caption: :func:`qpdk.models.taper_cross_section` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import taper_cross_section freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = taper_cross_section(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() transmission_line_s_params -------------------------- .. autofunction:: qpdk.models.transmission_line_s_params transmon_coupled ---------------- .. autofunction:: qpdk.models.transmon_coupled .. plot:: :caption: :func:`qpdk.models.transmon_coupled` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import transmon_coupled freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = transmon_coupled(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() transmon_with_resonator ----------------------- .. autofunction:: qpdk.models.transmon_with_resonator .. plot:: :caption: :func:`qpdk.models.transmon_with_resonator` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import transmon_with_resonator freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = transmon_with_resonator(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() tsv --- .. autofunction:: qpdk.models.tsv .. plot:: :caption: :func:`qpdk.models.tsv` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import tsv freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = tsv(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() unimon_coupled -------------- .. autofunction:: qpdk.models.unimon_coupled .. plot:: :caption: :func:`qpdk.models.unimon_coupled` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import unimon_coupled freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = unimon_coupled(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() unimon_energies --------------- .. autofunction:: qpdk.models.unimon_energies unimon_frequency_and_anharmonicity ---------------------------------- .. autofunction:: qpdk.models.unimon_frequency_and_anharmonicity unimon_hamiltonian ------------------ .. autofunction:: qpdk.models.unimon_hamiltonian xmon_transmon ------------- .. autofunction:: qpdk.models.xmon_transmon .. plot:: :caption: :func:`qpdk.models.xmon_transmon` S-parameters for :math:`f\in[1,10]\,\mathrm{GHz}`. import jax.numpy as jnp from qpdk.models import xmon_transmon freq = jnp.linspace(1e9, 10e9, 501) freq_ghz = freq / 1e9 s_model = xmon_transmon(f=freq) for (pout, pin), sij in s_model.items(): i = int(pout[-1]) # "o2" -> 2 j = int(pin[-1]) # "o1" -> 1 if i >= j: plt.plot( freq_ghz, 20 * jnp.log10(jnp.abs(sij)), label = "$S_{" + str(i) + str(j) + "}$" ) plt.xlabel("Frequency [GHz]", fontsize=12) plt.ylabel("Magnitude [dB]", fontsize=12) plt.grid(True) plt.legend() plt.show() References ---------- .. bibliography:: :filter: docname in docnames