TraceGroundCurrentDistribution

class pmrf.models.components.lines.microstrip.TraceGroundCurrentDistribution(slab_impedance: AbstractSurfaceImpedance = <factory>, ground_impedance: AbstractSurfaceImpedance = <factory>)

Bases: AbstractCurrentDistribution[MicrostripCrossSection]

Trace and ground plane charged as separate surfaces.

Wheeler’s rule bundles the strip faces, the edge-current crowding and the ground plane into a single geometry weight, so the ground plane’s share of conductor loss is invisible inside it. This strategy emits one (impedance, weight) pair per surface – the trace and the ground plane – each with its own surface impedance and its own width scaling, so the two can carry different frequency behaviour and different dc limits.

It is a peer of WheelerCurrentDistribution and of IncrementalInductanceCurrentDistribution, not a correction of either, and it is not the microstrip default; see Departures below.

Mathematical Formulation

The trace keeps Wheeler’s incremental-inductance weight, which is the quantity his exponential was fitted for,

\[k_t = \frac{2}{W}K_i,\qquad K_i = \exp\left[-1.2\left(\frac{\Re(Z_c)}{Z_0}\right)^{0.7}\right],\]

paired with slab_impedance, whose dc floor is expressed in the caller’s normalisation and therefore returns the trace’s exact dc resistance \(1/(\sigma W T)\) whatever \(k_t\) is.

The ground plane is charged separately at

\[k_g = \frac{1}{W_g},\]

with \(W_g\) the effective width of the ground-plane return current from _ground_return_effective_width(). The two pairs are summed by the caller, so the total weight is \(k_t + k_g\).

Resolved choices

\(K_i\) is applied to the trace only: Wheeler’s exponential is a fit to crowding at the strip’s edges, so charging the ground plane with it would be convenient rather than justified. It is worth 4-5% of the total weight – at \(\Re(Z_c)\) = 48.9 ohm, \(1.773/W\) as implemented against \(1.705/W\) with \(K_i\) on both terms.

The ground term has no dc limit of its own. At dc the return current spreads over the whole plane, so its resistance depends on the plane’s extent and copper weight, neither of which is a cross-section input. It is therefore held at its strong-skin form – HalfSpaceSurfaceImpedance by default, which vanishes as \(\sqrt{\omega}\) – making the dc limit exactly the trace’s. Supply a different ground_impedance if the plane geometry is known.

Departures, with their signs

At \(W\) = 4 mm, \(H\) = 1.6 mm, \(T\) = 35 um, \(\varepsilon_r\) = 4.335 (\(W/H\) = 2.5), the strong-skin weights are 468.4 per metre for this split, 385.7 for WheelerCurrentDistribution and 318.3 for IncrementalInductanceCurrentDistribution – so the split is 21.4% high against Wheeler’s 1942 fit and 47.1% high against the recession derivative.

This split therefore reports Wheeler’s fit as low, consistent with Holloway and Kuester’s reported 12-30% underprediction of measured loss, while IncrementalInductanceCurrentDistribution – from the same source, backed by an independent 2D field solve, a power-loss integral and a volumetric PEEC solve – reports it as high. The two cannot both be right. The contradiction is recorded rather than resolved; neither is described as the more accurate, and the microstrip default remains WheelerCurrentDistribution until it is settled.

Validating against an external 3D solver

The trace’s slab_impedance defaults to RootSumSquareSlabSurfaceImpedance, which corrects for finite strip thickness, while a 3D solver run with its skin-effect approximation neglects thickness in the current distribution and applies a plain half-space \(Z_s\) instead. Most solvers allow that approximation to be turned off, so check what the tool was run with. Where it is in force the two differ by 2-5% over \(t/\delta\) = 3.7-6.0, so a cross-tool comparison that leaves the default in place attributes that 2-5% to one tool or the other when it is purely a difference in surface-impedance model. Pass slab_impedance=HalfSpaceSurfaceImpedance() explicitly for such a comparison. See WheelerCurrentDistribution for the full note; the default is unchanged here.

Validity

\(W_g\) is quasi-static and assumes a uniform strip current, so it degrades where the strip’s own edge singularity dominates the ground distribution. The ground term carries no dc physics at all; see above. An unspecified thickness falls back to HalfSpaceSurfaceImpedance on the trace, which removes the dc floor with it.

References

Holloway, C. L., & Kuester, E. F. (1994). Edge shape effects and quasi-closed form expressions for the conductor loss of microstrip lines. Radio Science, 29(3), 539-559.

Wheeler, H. A. (1942). Formulas for the Skin Effect. Proceedings of the IRE, 30(9), 412-424.

cross_section_type

alias of MicrostripCrossSection

ground_impedance: AbstractSurfaceImpedance

Surface impedance of the ground plane. The default is the strong-skin half-space, which carries no dc floor – a deliberate choice, since the plane’s dc resistance is not a function of the cross-section.

slab_impedance: AbstractSurfaceImpedance

Finite-thickness surface impedance for the trace. Its dc floor is what anchors the default configuration’s dc resistance at \(1/(\sigma WT)\). Validating against an external half-space solver needs HalfSpaceSurfaceImpedance() passed here explicitly; see Validating against an external 3D solver.