Skip to content

Latest commit

 

History

History
123 lines (90 loc) · 4.72 KB

File metadata and controls

123 lines (90 loc) · 4.72 KB

Changelog

4.0.1 2025-03-12

Changed

  • Update readme
  • Update python docs
  • Unmask saved figure during tests so that the figure is built for docs
  • Update build_docs script
  • Add lengthwise discretization slider to field explorer example

4.0.0 2025-03-03

Added

  • !Remove flux_density_biot_savart backwards-compatibility alias
  • !Upgrade flux_density_linear_filament, vector_potential_linear_filament, and body_force_density_linear_filament functions
    • Now handle finite wire length and finite wire thickness analytically
    • New wire_radius input; A-field blends quandratically to a nonzero value at wire center, B-field blends linearly to zero
      • Both match ideal behavior of uniform current density cylinder
    • Old point-source segment formulations moved to point_source::segment module and available as flux_density_point_segment and vector_potential_point_segment functions
  • Add field_explorer.py example with plots comparing linear filament and point-segment calcs
  • Improve parallelism heuristics to use half of available parallelism as heuristic for physical cores
    • Prevents oversubscription on systems with hyperthreading
  • Use x86-64-v3 reference CPU instead of manually listing instruction sets

3.1.0 2025-12-19

Added

  • Add method inductance_matrix_axisymmetric_coaxial_rectangular_coils to calculate inductance matrix for a set of coaxial coils with rectangular cross-section and prescribed current density per coil section

3.0.3 2025-11-06

Changed

  • Use ternary instead of or-defaulting for array defaults in dipole functions
    • Eliminates issue with ambiguous truthiness of arrays under some circumstances

3.0.2 2025-11-05

Changed

  • Use numpy borrow interface instead of manually borrowchecking numpy arrays

3.0.1 2025-11-05

Changed

  • Rust
    • Improve performance of dipole calcs
      • Now >1Gelem/s throughput including magnetized sphere fallback and nan clipping
    • Update benchmarks to use latest version of criterion
  • Python
    • Use latest rust backend with improved dipole calc perf
    • Eliminate duplicate wheel builds during deployment
      • Maturin now builds for all supported python versions automatically in the same job; matrix on python versions is no longer necessary
      • Later, this can be further reduced to single wheels by building for a stable abi3 target
    • Remove support for python 3.9 (leaving long term support)

3.0.0 2025-10-29

Added

  • Rust
    • Add methods for vector potential of a dipole in physics::point_source and python.rs bindings
    • Add physics::volumetric module with methods for fields inside a uniformly magnetized sphere
    • Add math::{clip_nan, switch_float} functions for branchless-in-assembly float selection operations
  • Python
    • Add vector_potential_dipole function
    • Add optional sphere radius input for dipole flux density

Changed

  • Rust
    • !Require sphere radius input for dipole flux density
    • Update dependencies
    • Use more codegen units and don't do LTO for debug builds
    • Use more mul_add in flux_circular_filament
    • Use multiplication instead of pow in dipole calcs
  • Python
    • !Enable more instruction sets for x86 processors
    • Replace flatten() with ravel() everywhere to reduce copies

2.7.0 2025-10-15

Added

  • Add method for calculating self-inductance for coaxial collection of ideal circular filaments.

2.6.0 2025-10-15

Substantial performance improvement for flux_density_linear_filament Biot-Savart methods. This also improves performance in calculations that use these methods, such as linear filament body force density calcs.

Added

  • Rust
    • Add dot3f and cross3f 32-bit float variants

Changed

  • Rust
    • Use mixed-precision method for flux_density_linear_filament_scalar
    • High-dynamic-range part of the calc is still done using 64-bit floats
    • Low-dynamic-range part of the calc is now done using 32-bit floats
      • All addition operations in 32-bit section are done using fused multiply-add operations, usually chained to defer roundoff to final operation. As a result, total roundoff error accumulated in this section is minimal.
    • Return is upcast back to 64-bit float to support precise summation downstream
    • 1.4-2x speedup without any meaningful loss of precision
      • No change to unit test tolerances needed; unlike an all-32-bit implementation, this mixed-precision method passes all the same tests as the 64-bit-only method
  • Python
    • Update dep versions
    • Use latest rust backend version, which includes 1.4-2x speedup for flux_density_linear_filament Biot-Savart calcs

Earlier Versions

See archived changelogs for versions prior to 2.6.0.