Repository navigation
BEAT Engine 0.6.0
This release corrects projected FEM-BEM interface coupling and batches Metal
field evaluation. Applications must adopt the published wheel and its SHA-256
and restart workers after upgrading.
Numerical correction and compatibility
- Use the same facewise-constant (DP0) interface flux for FEM weak loading and
BEM radiation, conserving pressure-weighted work as well as total flux. - Reject rank-deficient or poorly conditioned interface coefficient transfers.
Some previously accepted triangulations, including single-triangle and
three-colourable patches, now fail explicitly. Use an admissible interface
triangulation and verify convergence; refinement alone does not guarantee
admissibility. Seedocs/Projected interface flux.md. - Factor monolithic CPU/Metal Float32 coupled systems in Float64 on the host,
retaining Float32 output traces and GPU operator precision. This improves
coefficient accuracy in badly scaled electrodynamic systems. - Describe
interface_normal_derivativeas projected DP0 coefficients: each
physical face flux is the mean of its three vertex-indexed coefficients.
Usebem_boundary_neumannfor physical per-face flux.
Worker protocol and result schemas are unchanged. Numerical values can change
because the interface weak load has been corrected; prior results should be
recomputed and checked.
Backend execution
- Preserve the requested backend when building a coupled system without a cache.
- Batch Metal field outputs per excitation while preserving each output's
partition and reduction order. Update compiled Metal precompile coverage.
Qualification
Publication requires successful Linux, Windows and macOS CPU CI, Metal host
tests and the sweep benchmark on the exact tagged main commit. Final wheel
qualification must include CPU reference tests, Boundary Lab integration,
relevant CUDA coupled checks and Apple Silicon Metal device tests.
Record final artifact SHA-256 values, hardware, commands and outcomes in the
GitHub release before publishing. Contributor validation and hosted Metal
compilation are supporting evidence, not final-artifact GPU qualification.
Final artifact qualification record
- Tagged main commit:
1bb46da833a2a2d330d9b7d915a7ee5c31934812. - Exact-main CI: passed Linux, Windows and macOS CPU checks, Metal host checks and sweep benchmark. The sweep job required a retry after GitHub could not allocate a runner; the retry passed.
- Installed Linux-built wheel: CPU reference suite, CUDA qualification suite (including 27 GPU-resident coupled checks), and Boundary Lab installed-wheel integration passed on Windows. CUDA hardware: NVIDIA GeForce RTX 2080 Ti, driver 610.88, 11264 MiB VRAM.
- Boundary Lab candidate tests: 1346 passed, 27 skipped against the isolated 0.6.0 preparation wheel.
- Apple Silicon Metal final-wheel qualification: passed with the production-default compilation gate, as detailed below. The original UMFPACK timing failures are retained.
Existing CUDA precision limitation
The Vented_Sub fixture's 50 Hz voice-coil current differs by 0.134% between production CPU and CUDA (about 86 microamps), exceeding the 0.1% backend-agreement screen. BEAT 0.5.1 exhibits the same limitation at 0.135%; it is not new to 0.6.0. The other 20 quantity/frequency comparisons at 50, 100 and 200 Hz pass. The failed screen is retained, with no tolerance change.
A current-only comparison against the double-precision CPU reference gives 50 Hz errors of 0.011% for production CPU and 0.145% for CUDA. Use CPU when this low-current accuracy matters. These checks do not establish mesh convergence or accuracy for other models or frequencies. The release decision is to document this existing limitation and proceed, subject to final Metal qualification.
Verified release artifact hashes
The final wheel is byte-identical to the Linux CI wheel used for the installed-wheel CPU/CUDA and application integration checks above.
10db2ee28eb9a8675fa0131127a04eeaad61097328c3aac453721a5924187dd3 beat_engine-0.6.0-py3-none-any.whl
7f7e2adbcdc6c5596c1f2393eed68fffb12ee617c50336140dfc3317b1637bed beat_engine-0.6.0.tar.gz
Apple Silicon final-wheel qualification commands.
Apple Silicon qualification (2026-10-20)
Apple M4 MacBook Air (10 CPU / 8 GPU cores, 16 GB), macOS 26.6, Julia 1.12.6, Python 3.12.15. Isolated final-wheel installation; Metal available and compiled bundle loaded without fallback. All 83 source hashes reported by the Mac doctor match the published wheel contents.
Passed: runtests (including Metal coupled checks), metal_host_tests (672), metal_near_correction_tests (144), metal_kernel_coverage_tests (65), field_output_batch_tests (2424, including 681 Metal assertions), compiled_metal_worker_tests (357).
The original application qualification recipe incorrectly applied BLAB_COUPLED_FEM_SOLVER=umfpack to the compilation-budget gate, whose source explicitly specifies production defaults and whose inventory models MUMPS. Under that override it failed at 2328.4 ms and 2135.2 ms (sleep prevented), against 1500 ms. With the override removed, the production-default gate passed all 3 assertions: 669 ms, 3 coupled statements; source-fallback negative control 9567 ms. Both frequencies returned in every run. No wheel, tolerance or fixture changed. The application procedure is corrected; the failed UMFPACK runs remain in the attached evidence. UMFPACK is not qualified against this first-request compilation budget.
Attached beat-0.6.0-metal-qualification.tar.gz preserves the supplied reports and logs. This qualifies the engine wheel, not a Boundary Lab installer. No performance improvement claim is inferred from these single-run timings.