Skip to content

fdm: dielectric-side eps on metal faces + richardson-refine cli paths#144

Closed
UnsignedChad wants to merge 1 commit into
mainfrom
sikit/fdm-eps-fix
Closed

fdm: dielectric-side eps on metal faces + richardson-refine cli paths#144
UnsignedChad wants to merge 1 commit into
mainfrom
sikit/fdm-eps-fix

Conversation

@UnsignedChad

Copy link
Copy Markdown
Owner

conductor cells store a placeholder eps that was getting harmonic-meaned into every metal/dielectric face coefficient, so every trace wore a fake low-eps skin half a cell thick. eps_eff came out ~25% low at the default cell size and fdm disagreed with the closed form by 15% on the demo board.

fix: metal-adjacent faces take the dielectric cell eps alone, in both the SOR stencil and the gauss-law charge integral so they stay consistent. the cli impedance paths now call the richardson-refined solve that was previously test-only. diff-pair path gets the same h/2h extrapolation with a fallback if it goes non-physical.

new regression test pins eps_eff against hammerstad (old code lands ~2.4 and fails it). result on demo_board USB_DP: fdm 74.77 down to 64.87 ohm vs closed-form 64.91. stripline net tightened to 2.5% cross-engine.

also corrected the CrossSection.h comment that claimed neumann side walls. solve() leaves the boundary ring at V=0 so the walls are grounded dirichlet. a too-tight box is now the dominant remaining error source.

heads up: fdm Z0 shifts up to ~15% vs the old biased numbers. anything tuned against the old output moves with it.

716 tests pass.

…i paths

Conductor cells store a placeholder eps_r that was harmonic-meaned into
every metal/dielectric face coefficient, wrapping traces in a fake low-eps
skin half a cell thick. eps_eff converged ~25% low at the default cell
size and the fdm/closed-form engines disagreed 15% on the demo board.
Metal faces now take the dielectric cell's eps alone (stencil + Gauss
surface stay consistent), production impedance paths use the existing
richardson-refined solve, and a regression test pins eps_eff against
Hammerstad. Engines now agree to 0.1% on demo_board USB_DP.
@UnsignedChad

Copy link
Copy Markdown
Owner Author

landed on main directly as dabc979, closing

@UnsignedChad UnsignedChad deleted the sikit/fdm-eps-fix branch June 9, 2026 22:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant