- 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
- !Remove
flux_density_biot_savartbackwards-compatibility alias - !Upgrade
flux_density_linear_filament,vector_potential_linear_filament, andbody_force_density_linear_filamentfunctions- Now handle finite wire length and finite wire thickness analytically
- New
wire_radiusinput; 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::segmentmodule and available asflux_density_point_segmentandvector_potential_point_segmentfunctions
- Add
field_explorer.pyexample 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
- 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
- Use ternary instead of or-defaulting for array defaults in dipole functions
- Eliminates issue with ambiguous truthiness of arrays under some circumstances
- Use numpy borrow interface instead of manually borrowchecking numpy arrays
- 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
- Improve performance of dipole calcs
- 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)
- Rust
- Add methods for vector potential of a dipole in
physics::point_sourceandpython.rsbindings - Add
physics::volumetricmodule with methods for fields inside a uniformly magnetized sphere - Add
math::{clip_nan, switch_float}functions for branchless-in-assembly float selection operations
- Add methods for vector potential of a dipole in
- Python
- Add
vector_potential_dipolefunction - Add optional sphere radius input for dipole flux density
- Add
- 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
- Add method for calculating self-inductance for coaxial collection of ideal circular filaments.
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.
- Rust
- Add
dot3fandcross3f32-bit float variants
- Add
- 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
- Use mixed-precision method for
- Python
- Update dep versions
- Use latest rust backend version, which includes 1.4-2x speedup for flux_density_linear_filament Biot-Savart calcs
See archived changelogs for versions prior to 2.6.0.