Inductance¶
This is a python library to calculate inductance. Mostly for the purposes of calcualting magnetically confined plasmas. It might someday actually contain some plasma physics, but lets not get too carried away.
Features¶
Self-inductance formulas
self inductance of circular, circular hollow, and rectangular section by Maxwell’s approximation
Lyle’s approximation for thick coil solenoid self inductances to 4th and 6th order.
Butterworth’s approximation for long solenoids
Lorentz’s perfect analytic solution for current sheet solenoids
Babic and Akyel’s approximation for thin solenoids
Mutual-inductance formulas
mutual inductance of filaments (Maxwell)
Filamentary models
utility functions to create filament arrays from rectangular definitions of coils and subcoils
calculation for filament array mutual inductance
calculation of filament array self inductance
Green’s functions
calculation of Green’s functions for Psi, Br, and Bz from filamented coils to points
with Numba, calculation of green’s functions for arbitrary grids of points
calculation fo Green’s functions for coil forces
Arbitrary coil shapes
rudimentary support for arbitrary wire filament coil shapes
Requirements¶
Inductance requires NumPy and uses Numba for acceleration. It is written in mostly pure python referencing academic articles for calculating inductances by various methods, most of which rely on elliptic functions. Inductance provides Numba accelerated pure python elliptic functions.
Numba is optional, though it is installed by default. Without it, Inductance falls back to pure python: everything still works, just slower, apart from the vectorized Green’s function helpers (BrGreenFil, BzGreenFil, AGreenFil), which stay callable but are no longer generalized ufuncs, so they need an explicit output array. The plan is to provide different options, including with alternative accelerators, such as JAX. The requirements are:
python >= 3.11
numpy >= 2.3
numba >= 0.63 — optional, installed by default on any python Numba supports
Installation¶
You can install inductance via pip from PyPI:
$ pip install inductance
That installs Numba too. On a python newer than Numba supports, it is skipped automatically so the install still succeeds; once Numba catches up, ask for it explicitly with:
$ pip install "inductance[numba]"
To install without Numba on a python that does support it:
$ pip install --no-deps inductance numpy
If Numba is installed but you want to bypass compilation — when debugging, or
under coverage — set NUMBA_DISABLE_JIT=1 in the environment instead.
Reference¶
Please see the [reference] for details.
Contributing¶
Contributions are very welcome. To learn more, see the Contributor Guide.
License¶
Distributed under the terms of the MIT license, inductance is free and open source software.
Issues¶
For now, this is a very early release. It is likely a new top level API will be developed as the library matures.
If you encounter any problems, please file an issue along with a detailed description.
Credits¶
This project was generated from @cjolowicz’s Hypermodern Python Cookiecutter template.