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#
Make
pandas
&scikit-learn
optional dependencies by @prisae in simpeg/simpeg#1514Dask races by @jcapriot in simpeg/simpeg#1469
Irls refactor by @domfournier in simpeg/simpeg#1349
Minimum python version update by @jcapriot in simpeg/simpeg#1522
Replace
ind_active
foractive_cells
in pf simulations by @santisoler in simpeg/simpeg#1520Move push to codecov to its own stage by @santisoler in simpeg/simpeg#1493
Minor fix in deprecation notice in docstrings by @santisoler in simpeg/simpeg#1535
Replace
indActive
andactInd
foractive_cells
in maps by @santisoler in simpeg/simpeg#1534Update tests and examples to use the new
UpdateIRLS
by @domfournier in simpeg/simpeg#1472Replace
indActive
in VRM simulations foractive_cells
by @santisoler in simpeg/simpeg#1536Test assigned values when passing deprecated args by @santisoler in simpeg/simpeg#1544
Use random seed when using
make_synthetic_data
in tests by @santisoler in simpeg/simpeg#1545Minor improvements to
UpdateIRLS
class by @santisoler in simpeg/simpeg#1529Replace
seed
forrandom_seed
in directives by @santisoler in simpeg/simpeg#1538Minor fixes to magnetic examples by @santisoler in simpeg/simpeg#1547
Support magnetic gradiometry using Choclo as engine by @santisoler in simpeg/simpeg#1543
Update usage of
random_seed
in one example by @santisoler in simpeg/simpeg#1549Replace
seed
forrandom_seed
inmodel_builder
by @santisoler in simpeg/simpeg#1548Replace old args for
active_cells
in EM static functions by @santisoler in simpeg/simpeg#1550Implement gravity equivalent sources with Choclo as engine by @santisoler in simpeg/simpeg#1527
Implement tmi derivatives with Choclo in magnetic simulation by @santisoler in simpeg/simpeg#1553
Implement magnetic eq sources with Choclo by @santisoler in simpeg/simpeg#1552
Update links in PR template by @santisoler in simpeg/simpeg#1554
Default solver by @jcapriot in simpeg/simpeg#1511
Fixes for most recent geoana 0.7 by @jcapriot in simpeg/simpeg#1557
Numpy2.0 and discretize 0.11.0 updates by @jcapriot in simpeg/simpeg#1558
Add missing seeds by @jcapriot in simpeg/simpeg#1560
Make use of meshes’
cell_bounds
property by @santisoler in simpeg/simpeg#1559Fix docstring of
SmoothnessFullGradient
by @santisoler in simpeg/simpeg#1562Fix math in docstring of eigenvalue_by_power_iteration by @santisoler in simpeg/simpeg#1564
Only warn about default solver when set in simulations by @santisoler in simpeg/simpeg#1565
Augmented receivers for airborne NSEM by @dccowan in simpeg/simpeg#1454
Try uploading all the coverage files at once. by @jcapriot in simpeg/simpeg#1569
Re-implement distance weighting and add a strategy comparison by @thibaut-kobold in simpeg/simpeg#1310
Remove empymod dependency by @jcapriot in simpeg/simpeg#1571