Skip to content

v1.8.0 — necpp_src v2.1.1 engine upgrade (Eigen replaces LAPACK)

Choose a tag to compare

@tmolteno tmolteno released this 06 Jul 01:17
· 32 commits to master since this release

Version 1.8.0: necpp_src v2.1.1 engine upgrade

Major engine upgrade — necpp_src v2.1.1 replaces LAPACK with Eigen 3.4.0 for all linear algebra.

  • Eigen 3.4.0 replaces LAPACK (bundled in src/eigen3/, no external dependency)
  • SIMD-accelerated LU decomposition via Eigen::PartialPivLU
  • nec_3vector now backed by Eigen::Matrix (internal, no API change)
  • Fix uninitialized structure_power_loss producing NaN efficiency
  • Fix structure loss reported as zero with current printing disabled
  • Fix exception memory leak: throw-by-pointer → throw-by-value (55+ sites)
  • Table-driven NEC card parser replaces C-string parser
  • 4 monolithic functions refactored into 13 focused methods
  • No public API changes — SWIG interface and Python wrapper fully compatible

Bug fixes:

  • Fix #30/#16: Add float() casts and segment_count validation in context_clean.wire()

(includes changes from unreleased v1.7.5)

  • Convert setup.py to pyproject.toml as primary metadata source (PEP 621)
  • Fix #24: VSWR formula guard — add explicit np.abs() in vswr() to prevent negative values
  • Fix #8: Add missing handle_nec method to necpp/tests/test_multiple_sc_cards.py
  • Fix #31: Guard numpy import in PyNEC/setup.py with try/except for PEP 517 metadata phases
  • Fix #20/#27: Correct helix argument order in SWIG interface
  • Fix #28: Add sc_card to PyNEC SWIG interface (continuation card for multiple-patch surfaces)
  • Fix #22/#28: Add PyNEC/example/basic_usage.py
  • Multiple code analysis bug fixes (see CHANGES.md for full list)