SimPEG 0.23.0 Release Notes#

November 3rd, 2024

Updates#

New features#

Full support for Numpy 2.0#

With this release SimPEG is fully compatible with Numpy 2.0.

Augmented receivers for airborne NSEM#

We added new types of receivers intended to be used for airborne natural-source EM simulations:

They extend the type of airborne NSEM surveys that can be simulated in SimPEG.

See simpeg/simpeg#1454 for more details.

Automatic selection of Solver#

This release includes a new get_default_solver() function that automatically selects a solver based on what you have installed on your system. For example, it’ll select Pardiso as the solver if you are running an Intel CPU and have pydiso installed in your system. Alternatively, it can choose Mumps if you are using Apple silicon and the python-mumps package is installed. If no fast solver is available, it’ll choose SciPy’s SparseLU solver.

Note

For those installing through conda-forge, conda install simpeg will now also grab better solvers for your system as well, consistent with simpeg’s solver priority.

Moreover, simulations will also use this function to get the default solver if no solver is being provided by the user, making it easier to run efficient finite volume simulations out of the box. See simpeg/simpeg#1511 for more information.

Support for magnetic gradiometry in Choclo-based magnetic simulations#

Now the magnetic simulations with engine="choclo" support forward modelling the magnetic gradiometry components and TMI derivatives. This fully extends the support of the Numba-based simulations to every field that can also be computed using engine="geoana".

See simpeg/simpeg#1543 and simpeg/simpeg#1553 for more information.

Numba-based implementation of gravity and equivalent sources#

This release includes new implementations of the gravity and magnetic equivalent sources using Choclo’s kernels and forward modelling functions and Numba to just-in-time compilations and parallelization, making them faster and more memory efficient.

See simpeg/simpeg#1552 and simpeg/simpeg#1527.

New UpdateIRLS directive#

We have renamed the simpeg.directives.UpdateIRLS directive for applying the Iterative Re-weighted Least-Squares during sparse norm inversions, that includes better argument names and an improved implementation. See simpeg/simpeg#1349 for more details.

Standardize arguments for active cells and random seeds#

We have standardize the name of the arguments for active cells in meshes through all functions and methods in SimPEG. We have deprecated the old names like indAct, ind_active and indActive in favor of active_cells.

The arguments for passing random seeds have also been standardized to random_seed. These arguments generalize a way to specify random states, allowing to take seeds as integers or instances of numpy.random.Generator.

Upgraded dependencies#

In SimPEG v0.23.0 we dropped support for Python versions <= 3.9. Python 3.8 met its end-of-life this year (October 2024). Python 3.10 is the minimum required version for Numpy 2.1.0. To keep up with the latest updates in the scientific Python ecosystem, we decided to set Python 3.10 as the minimum required version for SimPEG as well.

Moreover, we have increased the minimum required versions of discretize, geoana and pymatsolver in order to support Numpy 2.0. Lastly, now pandas, scikit-learn and empymod are optional dependencies (instead of required ones).

Documentation#

This release includes a few fixes to the documentation pages, like improvements to some magnetic examples, and fixes to docstrings and math of a few classes.

Bugfixes#

We have fixed some issues of Dask-based simulations that were running into race-conditions after one of the latest Dask updates. See simpeg/simpeg#1469 for more information.

Contributors#

Pull Requests#