Skip to main content

momwire

A pure-Python method-of-moments antenna simulator with optional C++ accelerators (pybind11).

Extracted from antenna_designer.

Solvers

BSplineSolver (degree-d Galerkin, default d=1/2) is the default solver; HMatrixSolver and ArrayBlockSolver are structural accelerators built on top of it. SinusoidalSolver and SinusoidalGalerkinSolver reproduce NEC2's three-term basis (collocation and Galerkin testing respectively) as in-codebase NEC comparators. RazorSolver is the NEC-5 formulation twin: a tent basis with razor-blade (RWG mixed-potential path) testing, transcribed from the NEC-5 Users Manual rather than NEC2's, free space only. Because its testing rule — not its basis, which it shares with BSplineSolver(degree=1) — is NEC-5's own, it reproduces NEC-5's characteristic slow O(1/N) impedance walk without needing the (licensed) NEC-5 binary; see docs/razor-solver.md (momwire#309).

Install

python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -e .

macOS: the C++ accelerator uses Homebrew's OpenMP runtime, so brew install libomp is required — both to compile from source and to run the prebuilt Apple-Silicon wheel. The wheel deliberately does not bundle libomp (it links Homebrew's by absolute path) so that it shares a single OpenMP runtime with pynec-accel; two private copies in one process abort with OMP: Error #15 (or deadlock). Without libomp installed, the accelerator can't load and momwire warns and falls back to the slower pure-Python path. On Linux the system libgomp covers this, so no extra step is needed.

Test

pip install -e ".[test]"   # core + test deps (pytest, matplotlib, scikit-rf)
pytest tests/

The cross-validation against NEC2 (tests/test_pynec_backend.py) additionally needs PyNEC — a test-only dependency installed separately from a wheel (see below). Those tests skip cleanly when it isn't present; everything else runs without it.

Optional: PyNEC backend (test-only)

momwire can be cross-validated against NEC2 via PyNEC (the tests/test_pynec_backend.py suite); NEC2 also delivers ~5–10× faster single-frequency solves. PyNEC is a test-flow-only dependency — momwire's own solver never imports it.

Install the PyNEC wheel

Install PyNEC from the python-necpp fork's release. The distribution is named pynec-accel (the import name stays PyNEC); the wheels are self-contained — OpenBLAS is vendored (via scipy-openblas32), so no system BLAS, SWIG, or build toolchain is needed — and cover Linux, Windows, and macOS (arm64) on CPython 3.10–3.14:

pip install pynec-accel --no-index \
    --find-links https://github.com/stevenmburns/python-necpp/releases/expanded_assets/v1.7.6

--no-index ensures pip takes the fork's wheel rather than upstream PyNEC on PyPI (which is broken on current Python and lacks the OpenBLAS/OpenMP work). On macOS the wheel shares Homebrew's libomp (brew install libomp) rather than vendoring its own, so it can coexist with momwire's accelerator in one process. After install, from PyNEC import nec_context works and the cross-validation tests run; without it they're skipped (momwire itself needs no PyNEC).

Runtime thread pinning

The wheel links OpenBLAS and parallelises the NEC2 matrix fill with OpenMP. Pick thread counts up front:

export OMP_NUM_THREADS=$(nproc --all)   # PyNEC matrix fill
export OPENBLAS_NUM_THREADS=1           # muzzle numpy/scipy's idle pool

Pinning OPENBLAS_NUM_THREADS=1 stops numpy/scipy from spinning up their own OpenBLAS thread pool that contends with PyNEC's threads on the same cores. On a 100-director Yagi (2142 segs) this is worth ~8% wall time at NP=4.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

momwire-0.29.0.tar.gz (700.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

momwire-0.29.0-cp314-cp314-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.14Windows x86-64

momwire-0.29.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

momwire-0.29.0-cp314-cp314-macosx_14_0_arm64.whl (705.7 kB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

momwire-0.29.0-cp313-cp313-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.13Windows x86-64

momwire-0.29.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

momwire-0.29.0-cp313-cp313-macosx_14_0_arm64.whl (706.4 kB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

momwire-0.29.0-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12Windows x86-64

momwire-0.29.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

momwire-0.29.0-cp312-cp312-macosx_14_0_arm64.whl (706.3 kB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

momwire-0.29.0-cp311-cp311-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.11Windows x86-64

momwire-0.29.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

momwire-0.29.0-cp311-cp311-macosx_14_0_arm64.whl (701.1 kB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

momwire-0.29.0-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10Windows x86-64

momwire-0.29.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

momwire-0.29.0-cp310-cp310-macosx_14_0_arm64.whl (699.7 kB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

File details

Details for the file momwire-0.29.0.tar.gz.

File metadata

  • Download URL: momwire-0.29.0.tar.gz
  • Upload date:
  • Size: 700.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for momwire-0.29.0.tar.gz
Algorithm Hash digest
SHA256 0aaf483ace76cd111d832a27f8b31f31719ba0cbd6808f9b6f9eee00990a84a9
MD5 f6c2d84af635f5e5aac859477f39abe7
BLAKE2b-256 28b3703574014921920116d89f5da000dd32c9eed52e20c9ed755e0da66c0c2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for momwire-0.29.0.tar.gz:

Publisher: wheels.yml on stevenmburns/momwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file momwire-0.29.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: momwire-0.29.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for momwire-0.29.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 6cc904d97c6988949cf03095260b61c016afa9365cdd6ef64420354b9d68fe43
MD5 36b4b199cdae21cb961b2985f1b20260
BLAKE2b-256 1b41f32352fc8134905d49213cce50462877fbfd224e8e17cc6f1855a8a524ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for momwire-0.29.0-cp314-cp314-win_amd64.whl:

Publisher: wheels.yml on stevenmburns/momwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file momwire-0.29.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for momwire-0.29.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 436d0ab5cf1b813fd716c79592cc4865b0a5270b85e05da0349c1bff29fcb334
MD5 d21b8e5c47e5e6f2e97051ea26ce2b39
BLAKE2b-256 a90c2e0a5fcb48001278d275e492d2352f881ae09d20885061c52490b95b61cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for momwire-0.29.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on stevenmburns/momwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file momwire-0.29.0-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for momwire-0.29.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 20b27468b7decda640d34c483be3353db1e7de02a3ff379d69b8258b68cb2b3a
MD5 e5ea29d856c28811b0e34e8c856a7aee
BLAKE2b-256 d189743561bcaa256315d054048375a0beea379f723105198ef5e65ed23e6952

See more details on using hashes here.

Provenance

The following attestation bundles were made for momwire-0.29.0-cp314-cp314-macosx_14_0_arm64.whl:

Publisher: wheels.yml on stevenmburns/momwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file momwire-0.29.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: momwire-0.29.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for momwire-0.29.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b1877cdaf9b0d8b9fd3678e347a05912bcb7a169108672199ca34cc5b3d863a4
MD5 4242c0c2e8cb8e6b974b2d61d9dd6a2b
BLAKE2b-256 220be72f1fed039d663977461788f829b19e63e2757b02313db8829463a77c71

See more details on using hashes here.

Provenance

The following attestation bundles were made for momwire-0.29.0-cp313-cp313-win_amd64.whl:

Publisher: wheels.yml on stevenmburns/momwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file momwire-0.29.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for momwire-0.29.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 31a11f524d6a0a3b57820057cd06f9a6ba251c00c8e4b01e39df0881d262666c
MD5 50254e532929b5b732598905cfdcb688
BLAKE2b-256 450da194417c358c8a1eb4379b57172d64a1d4bf1b9f4d4d4380bb0863246048

See more details on using hashes here.

Provenance

The following attestation bundles were made for momwire-0.29.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on stevenmburns/momwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file momwire-0.29.0-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for momwire-0.29.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 23fa08a282ec6d41e487979839b900cf48e09f80d7b7d266ec0d18a53ce71d94
MD5 aa07e08f91e4f08c26dadb8179a4a049
BLAKE2b-256 c9b65ab870d80b618308df5a6e390937099835a5b013e6ef4067dcc2b5d90868

See more details on using hashes here.

Provenance

The following attestation bundles were made for momwire-0.29.0-cp313-cp313-macosx_14_0_arm64.whl:

Publisher: wheels.yml on stevenmburns/momwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file momwire-0.29.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: momwire-0.29.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for momwire-0.29.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 451468d1bb5ed10700c772968a9204291a59a3b0bed27bab903f97add2111e9a
MD5 49bfe19918ac7d3c9d865b32ee8f7524
BLAKE2b-256 db8f7fdb053076996796bb125846c911b85dd4ef76b3a12ff32b578c50aaf7cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for momwire-0.29.0-cp312-cp312-win_amd64.whl:

Publisher: wheels.yml on stevenmburns/momwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file momwire-0.29.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for momwire-0.29.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e6efe360150d818774bf6bd8552945cfbd3592246948d0aa837266f1e7e9f5ea
MD5 40a665ab99a0ad0535ec1e17e9915c84
BLAKE2b-256 9f65ffd8526738c2b82240090725b8a6c566052ddaad6f3c816b1100130af2a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for momwire-0.29.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on stevenmburns/momwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file momwire-0.29.0-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for momwire-0.29.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 863a816cf5310eda66b8396579067b348992f60a9fd4ce5ed83289f94b64fc70
MD5 df9087857877ce648bc0e168594d782a
BLAKE2b-256 05d8167122c8b1d38659484f4d33f7ff7e890c0ae69c12735d191bbf99fcb895

See more details on using hashes here.

Provenance

The following attestation bundles were made for momwire-0.29.0-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: wheels.yml on stevenmburns/momwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file momwire-0.29.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: momwire-0.29.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for momwire-0.29.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bf8b93b437401a8ba74d548362321e7ada30ba1766b3b0462d31b0e2f0675d26
MD5 6b5a20dfd2e0c141884553b45e806b1a
BLAKE2b-256 741467a38fc551d84bb60a443dfa125018fb3f40c5e69851ab284e5080bbe664

See more details on using hashes here.

Provenance

The following attestation bundles were made for momwire-0.29.0-cp311-cp311-win_amd64.whl:

Publisher: wheels.yml on stevenmburns/momwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file momwire-0.29.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for momwire-0.29.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4f2f20bbc90da995cbfba94ebc148ac5d5f760066ca6e261d79074f942b2a03f
MD5 e7d0a184a460fa3e07392eb09c6bee7f
BLAKE2b-256 1cef6c3d664c6a07b65a2dd6826f2385f424a031b1ee7a6de2432ee7971e982f

See more details on using hashes here.

Provenance

The following attestation bundles were made for momwire-0.29.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on stevenmburns/momwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file momwire-0.29.0-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for momwire-0.29.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 5558951ec7414c2fb1bb116db9cd721a37aad1c99cc58f4c939ee86176a1e3c2
MD5 4d5cf8eddb50946392f39af56e0d51a6
BLAKE2b-256 6564c943490fe0de32a02f31506adf8249b188985dc34bc0f61a3fa2b370830d

See more details on using hashes here.

Provenance

The following attestation bundles were made for momwire-0.29.0-cp311-cp311-macosx_14_0_arm64.whl:

Publisher: wheels.yml on stevenmburns/momwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file momwire-0.29.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: momwire-0.29.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for momwire-0.29.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0c96795b851a3df0bfb95ffc03d0f85f7106cfee78b5519b492820d41dda8bf1
MD5 7d931fbade3996840f437878db2032fa
BLAKE2b-256 f7cbb366d39a7374ae78a70b468c2bc2fb6db093e6f2575ec24bb324886f1b2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for momwire-0.29.0-cp310-cp310-win_amd64.whl:

Publisher: wheels.yml on stevenmburns/momwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file momwire-0.29.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for momwire-0.29.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a7127a13868a6ccc81f01fc316478d51787b319ccf10588151b383ff69c1e019
MD5 9c8282809832a1f7b47303ef41540feb
BLAKE2b-256 70ca5c9ef63436e8447d1ac0b532254ff6f55b2b717f8925643fa27073504e11

See more details on using hashes here.

Provenance

The following attestation bundles were made for momwire-0.29.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on stevenmburns/momwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file momwire-0.29.0-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for momwire-0.29.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 32454c4bba1947052d08a60a7efb53c198b1f71df374e63288c382857d9741be
MD5 c3d4989a03b300c56de8c81e5b7a241f
BLAKE2b-256 fc026b7da9be37c43d722da5c637fe34fd3a1fe2a8c61fc508948c91d6da6ce9

See more details on using hashes here.

Provenance

The following attestation bundles were made for momwire-0.29.0-cp310-cp310-macosx_14_0_arm64.whl:

Publisher: wheels.yml on stevenmburns/momwire

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.50.0

19 files

0.49.0

19 files

0.48.0

19 files

0.47.0

19 files

0.46.0

16 files

0.45.0

16 files

0.44.0

16 files

0.43.0

16 files

0.42.0

16 files

0.41.0

16 files

0.40.0

16 files

0.39.0

16 files

0.38.0

16 files

0.37.0

16 files

0.36.1

16 files

0.36.0

16 files

0.35.1

16 files

0.35.0

16 files

0.34.0

16 files

0.33.0

16 files

0.32.0

16 files

0.31.0

16 files

0.30.0

16 files

This release

0.29.0 This release

16 files

0.28.1

16 files

0.28.0

16 files

0.27.0

16 files

0.26.0

16 files

0.25.0

16 files

0.24.0

16 files

0.23.0

16 files

0.22.0

16 files

0.21.0

16 files

0.20.0

16 files

0.19.0

16 files

0.18.0

16 files

0.17.0

16 files

0.16.0

16 files

0.15.0

16 files

0.14.0

16 files

0.13.0

16 files

0.12.0

16 files

0.11.0

16 files

0.10.0

16 files

0.9.0

16 files

0.8.0

16 files

0.7.0

16 files

0.6.0

16 files

0.5.0

16 files

0.4.1

16 files

0.4.0

16 files

0.3.0

16 files

0.2.3

16 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page