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:
RLGCLineTransmission 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