Models#
Model definitions for qpdk.
- qpdk.models.bend_circular(*args, **kwargs)[source]#
S-parameter model for a circular bend, wrapped to to
straight().- Parameters:
args (Any)
kwargs (Unpack[StraightModelKwargs])
- Return type:
dict[tuple[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)]], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)]] | tuple[Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], int]] | tuple[Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], int]] | dict[tuple[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)]], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)]] | tuple[Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], int]] | tuple[Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], int]]
- qpdk.models.bend_euler(*args, **kwargs)[source]#
S-parameter model for an Euler bend, wrapped to to
straight().- Parameters:
args (Any)
kwargs (Unpack[StraightModelKwargs])
- Return type:
dict[tuple[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)]], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)]] | tuple[Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], int]] | tuple[Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], int]] | dict[tuple[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)]], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)]] | tuple[Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], int]] | tuple[Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], int]]
- qpdk.models.bend_s(*args, **kwargs)[source]#
S-parameter model for an S-bend, wrapped to to
straight().- Parameters:
args (Any)
kwargs (Unpack[StraightModelKwargs])
- Return type:
dict[tuple[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)]], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)]] | tuple[Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], int]] | tuple[Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], int]] | dict[tuple[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)]], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)]] | tuple[Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], int]] | tuple[Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], int]]
- qpdk.models.capacitor(f=Array([5.e+09], dtype=float64), capacitance=1e-15, z0=50)[source]#
Ideal capacitor () Sax model.
See [MP12] for details.
- Parameters:
f (Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) – Array of frequency points in Hz
capacitance (float) – Capacitance in Farads
z0 (int | float | complex) – Reference impedance in Ω. This may be retrieved from a scikit-rf Media object using z0 = media.z0.
- Returns:
S-parameters dictionary
- Return type:
sax.SType
- qpdk.models.coupler_straight(f=Array([5.e+09], dtype=float64), length=20.0, gap=0.27, cross_section='cpw')[source]#
S-parameter model for two coupled coplanar waveguides,
coupler_straight().- Parameters:
f (Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) – Array of frequency points in Hz
length (int | float) – Physical length of coupling section in µm
gap (int | float) – Gap between the coupled waveguides in µm
cross_section (CrossSection | str | dict[str, Any] | Callable[[...], CrossSection] | SymmetricalCrossSection | DCrossSection) – The cross-section of the CPW.
- Returns:
S-parameters dictionary
- Return type:
sax.SType
o2──────▲───────o3 │gap o1──────▼───────o4
- qpdk.models.gamma_0_load(f=Array([5.e+09], dtype=float64), gamma_0=0, n_ports=1)[source]#
Connection with given reflection coefficient.
- Parameters:
f (Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) – Array of frequency points in Hz
gamma_0 (int | float | complex) – Reflection coefficient Γ₀ of connection
n_ports (int) – Number of ports in component. The diagonal ports of the matrix are set to Γ₀ and the off-diagonal ports to 0.
- Returns:
S-parameters dictionary where \(S = \Gamma_0I_\text{n\_ports}\)
- Return type:
sax.SType
- qpdk.models.inductor(f=Array([5.e+09], dtype=float64), inductance=1e-12, z0=50)[source]#
Ideal inductor () Sax model.
See [MP12] for details.
- Parameters:
f (Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) – Array of frequency points in Hz
inductance (float) – Inductance in Henries
z0 (int | float | complex) – Reference impedance in Ω. This may be retrieved from a scikit-rf Media object using z0 = media.z0.
- Returns:
S-parameters dictionary
- Return type:
sax.SType
- qpdk.models.launcher(f=Array([5.e+09], dtype=float64), straight_length=200.0, taper_length=100.0, cross_section_big=None, cross_section_small='cpw')[source]#
S-parameter model for a launcher, effectively a straight section followed by a taper.
- Parameters:
f (Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) – Array of frequency points in Hz
straight_length (float) – Length of the straight section in µm.
taper_length (float) – Length of the taper section in µm.
cross_section_big (CrossSection | str | dict[str, Any] | Callable[[...], CrossSection] | SymmetricalCrossSection | DCrossSection | None) – Cross-section for the wide section.
cross_section_small (CrossSection | str | dict[str, Any] | Callable[[...], CrossSection] | SymmetricalCrossSection | DCrossSection) – Cross-section for the narrow section.
- Returns:
S-parameters dictionary
- Return type:
sax.SType
- qpdk.models.open(f=Array([5.e+09], dtype=float64), n_ports=1)[source]#
Electrical open connection Sax model.
- Parameters:
f (Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) – Array of frequency points in Hz
n_ports (int) – Number of ports to set as opened
- Returns:
S-parameters dictionary where \(S = I_\text{n\_ports}\)
- Return type:
sax.SType
- qpdk.models.quarter_wave_resonator_coupled(f=Array([5.e+09], dtype=float64), cross_section='cpw', length=5000, coupling_gap=0.27, coupling_straight_length=20)[source]#
Model for a quarter-wave coplanar waveguide resonator coupled to a probeline.
TODO: implement with purely sax circuits instead of skrf components. Sax circuit version is commented out above but gives differing results.
- o1────────────────────o2 ┬
- coupling_gap
short–resonator–────────────────────o3 ┴
- Parameters:
cross_section (CrossSection | str | dict[str, Any] | Callable[[...], CrossSection] | SymmetricalCrossSection | DCrossSection) – The cross-section of the CPW.
f (Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) – Frequency in Hz at which to evaluate the S-parameters.
length (float) – Total length of the resonator in μm.
coupling_gap (int | float) – Gap between the resonator and the probeline in μm.
coupling_straight_length (float) – Length of the coupling section in μm.
- Returns:
S-parameters dictionary
- Return type:
sax.SDict
- qpdk.models.rectangle(*args, **kwargs)[source]#
S-parameter model for a rectangular section, wrapped to to
straight().- Parameters:
args (Any)
kwargs (Unpack[StraightModelKwargs])
- Return type:
dict[tuple[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)]], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)]] | tuple[Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], int]] | tuple[Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], int]] | dict[tuple[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)]], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)]] | tuple[Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], int]] | tuple[Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], int]]
- qpdk.models.resonator_frequency(length, media, is_quarter_wave=True)[source]#
Calculate the resonance frequency of a quarter-wave resonator.
\[f &= \frac{v_p}{4L} \text{ (quarter-wave resonator)} \\ f &= \frac{v_p}{2L} \text{ (half-wave resonator)}\]There is some variation according to the frequency range specified for
mediadue to how \(v_p\) is calculated in skrf. The phase velocity is given by \(v_p = i \cdot \omega / \gamma\), where \(\gamma\) is the complex propagation constant and \(\omega\) is the angular frequency.See [MP12, Sim01] for details.
- Parameters:
length (float) – Length of the resonator in μm.
media (Media) – skrf media object defining the CPW (or other) properties.
is_quarter_wave (bool) – If True, calculates for a quarter-wave resonator; if False, for a half-wave resonator. default is True.
- Returns:
Resonance frequency in Hz.
- Return type:
float
- qpdk.models.short(f=Array([5.e+09], dtype=float64), n_ports=1)[source]#
Electrical short connections Sax model.
- Parameters:
f (Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) – Array of frequency points in Hz
n_ports (int) – Number of ports to set as shorted
- Returns:
S-parameters dictionary where \(S = -I_\text{n\_ports}\)
- Return type:
sax.SType
- qpdk.models.short_2_port(f=Array([5.e+09], dtype=float64))[source]#
Electrical short 2-port connection Sax model.
- Parameters:
f (Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray)
- Return type:
dict[tuple[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)]], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)]] | tuple[Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], int]] | tuple[Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], int]] | dict[tuple[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)]], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)]] | tuple[Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], int]] | tuple[Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], int]]
- qpdk.models.single_admittance_element(y=0.02)[source]#
Single admittance element Sax model.
See [MP12] for details.
- Parameters:
y (int | float | complex) – Admittance
- Returns:
S-parameters dictionary
- Return type:
sax.SType
- qpdk.models.single_impedance_element(z=50, z0=50)[source]#
Single impedance element Sax model.
See [MP12] for details.
- Parameters:
z (int | float | complex) – Impedance in Ω
z0 (int | float | complex) – Reference impedance in Ω. This may be retrieved from a scikit-rf Media object using z0 = media.z0.
- Returns:
S-parameters dictionary
- Return type:
sax.SType
- qpdk.models.straight(f=Array([5.e+09], dtype=float64), length=1000, cross_section='cpw')[source]#
S-parameter model for a straight waveguide.
See scikit-rf for details on analytical formulæ.
- Parameters:
f (Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) – Array of frequency points in Hz
length (int | float) – Physical length in µm
cross_section (CrossSection | str | dict[str, Any] | Callable[[...], CrossSection] | SymmetricalCrossSection | DCrossSection) – The cross-section of the waveguide.
- Returns:
S-parameters dictionary
- Return type:
sax.SType
- qpdk.models.straight_shorted(**kwargs)[source]#
S-parameter model for a straight waveguide with one shorted end.
This may be used to model a quarter-wave coplanar waveguide resonator.
Note
The port
o2is internally shorted and should not be used. It seems to be a Sax limitation that we need to define at least two ports.- Parameters:
kwargs (Unpack[StraightModelKwargs])
- Return type:
dict[tuple[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)]], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)]] | tuple[Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], int]] | tuple[Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], int]] | dict[tuple[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)]], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)]] | tuple[Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], int]] | tuple[Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], int]]
- qpdk.models.taper_cross_section(f=Array([5.e+09], dtype=float64), length=1000, cross_section_1='cpw', cross_section_2='cpw', n_points=50)[source]#
S-parameter model for a cross-section taper using linear interpolation.
Uses jax.scipy.interpolate.RegularGridInterpolator to efficiently interpolate media parameters (width and gap) along the taper length.
- Parameters:
f (Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) – Array of frequency points in Hz
length (int | float) – Physical length in µm
cross_section_1 (CrossSection | str | dict[str, Any] | Callable[[...], CrossSection] | SymmetricalCrossSection | DCrossSection) – Cross-section for the start of the taper.
cross_section_2 (CrossSection | str | dict[str, Any] | Callable[[...], CrossSection] | SymmetricalCrossSection | DCrossSection) – Cross-section for the end of the taper.
n_points (int) – Number of segments to divide the taper into for simulation.
- Return type:
dict[tuple[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)]], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)]] | tuple[Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], int]] | tuple[Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.singlemode.val_port, json_schema_input_type=~typing.Any)], int]] | dict[tuple[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)]], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)]] | tuple[Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array | ndarray, signedinteger, 1, PlainValidator(func=~sax.saxtypes.core.val_int_array_1d, json_schema_input_type=~typing.Any)], Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], int]] | tuple[Annotated[Array, complexfloating, PlainValidator(func=~sax.saxtypes.core.val_complex_array, json_schema_input_type=~typing.Any)], dict[Annotated[str, PlainValidator(func=~sax.saxtypes.multimode.val_port_mode, json_schema_input_type=~typing.Any)], int]]
- qpdk.models.tee(f=Array([5.e+09], dtype=float64))[source]#
Ideal 3-port power divider/combiner (T-junction).
- Parameters:
f (Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) – Array of frequency points in Hz
- Returns:
S-parameters dictionary
- Return type:
sax.SType
References#
David M. Pozar. Microwave Engineering. John Wiley & Sons, Inc., 4 edition, 2012. ISBN 978-0-470-63155-3.
Rainee Simons. Coplanar Waveguide Circuits, Components, and Systems. Number v. 165 in Wiley Series in Microwave and Optical Engineering. Wiley Interscience, New York, 2001. ISBN 978-0-471-22475-4 978-0-471-46393-1. doi:10.1002/0471224758.