DatasheetLine

class pmrf.models.components.lines.DatasheetLine(length: Any = 1.0, zn: Any = 50.0, vf: Any = 1.0, k1: Any = 0.0, k2: Any = 0.0, loss_coeffs_normalized: bool = False, *, name: str | None = None, z0: complex = 50 + 0j)

Bases: RLGCLine

Transmission line defined by common datasheet parameters (nominal impedance and velocity/loss factors). Includes skin effect (k1) and dielectric loss (k2).

Mathematical Formulation

The normalized loss coefficients (\(k_{1,norm}\), \(k_{2,norm}\)) depend on loss_coeffs_normalized. Attenuation variables scale natively with \(\sqrt{\omega}\) and \(\omega\):

\[\alpha_c = k_{1,norm} \cdot \frac{\ln(10)}{20} \cdot \sqrt{\omega}\]
\[\alpha_d = k_{2,norm} \cdot \frac{\ln(10)}{20} \cdot \omega\]

Resulting in the per-unit-length components:

\[R = 2 z_n \alpha_c\]
\[L = \frac{z_n}{v_f c}\]
\[G = \frac{2 \alpha_d}{z_n}\]
\[C = \frac{1}{z_n v_f c}\]

Example

import pmrf as prf
from pmrf.core import DatasheetLine

cable = DatasheetLine(
    zn=50.0,
    vf=0.69,  # Velocity factor (e.g., solid PTFE)
    k1=0.2,   # Skin effect loss factor
    k2=0.01,  # Dielectric loss factor
    length=1.0
)

freq = prf.Frequency(start=0.1, stop=10, npoints=201, unit='ghz')
s = cable.s(freq)
Variables:
  • zn (Parameter, default=50.0) – Nominal characteristic impedance.

  • vf (Parameter, default=1.0) – Velocity factor (ratio of propagation speed to the speed of light).

  • k1 (Parameter, default=0.0) – Skin effect loss factor.

  • k2 (Parameter, default=0.0) – Dielectric loss factor.

  • loss_coeffs_normalized (bool, default=False) – If True, k1 and k2 are evaluated directly without normalizing to 100MHz references.

  • freq_bounds (tuple | None, default=None) – Angular frequency limits (start, stop) used to scale epr_slope. Defaults to the analysis array bounds.

rlgc(freq: Frequency) tuple[Array, Array, Array, Array]

Calculates the frequency-dependent RLGC parameters.

Parameters:

freq (Frequency) – The frequency axis.

Returns:

The R, L, G, and C parameter vectors.

Return type:

tuple

k1: Parameter = 0.0
k2: Parameter = 0.0
loss_coeffs_normalized: bool = False
vf: Parameter = 1.0
zn: Parameter = 50.0