A multigrid solver for 3D electromagnetic diffusion.
Project description
A multigrid solver for 3D electromagnetic diffusion with tri-axial electrical anisotropy. The matrix-free solver can be used as main solver or as preconditioner for one of the Krylov subspace methods implemented in scipy.sparse.linalg, and the governing equations are discretized on a staggered Yee grid. The code is written completely in Python using the NumPy/SciPy-stack, where the most time- and memory-consuming parts are sped up through jitted numba-functions.
More information
For more information regarding installation, usage, contributing, roadmap, bug reports, and much more, see
Website: https://emsig.github.io,
Documentation: https://emg3d.readthedocs.io,
Source Code: https://github.com/emsig/emg3d,
Examples: https://emsig.github.io/emg3d-gallery.
Features
Multigrid solver for 3D electromagnetic (EM) diffusion with regular grids (where source and receiver can be electric or magnetic).
Compute the 3D EM field in the complex frequency domain or in the real Laplace domain.
Includes also routines to compute the 3D EM field in the time domain.
Can be used together with the SimPEG-framework.
Can be used as a standalone solver or as a pre-conditioner for various Krylov subspace methods implemented in SciPy, e.g., BiCGSTAB (scipy.sparse.linalg.bicgstab) or CGS (scipy.sparse.linalg.cgs).
Tri-axial electrical anisotropy.
Isotropic magnetic permeability.
Semicoarsening and line relaxation.
Grid-size can be anything.
As a multigrid method it scales with the number of unknowns N and has therefore optimal complexity O(N).
Installation
You can install emg3d either via conda (preferred):
conda install -c conda-forge emg3d
or via pip:
pip install emg3d
Minimum requirements are Python version 3.7 or higher and the modules scipy and numba. Various other packages are recommended or required for some advanced functionalities (xarray, discretize, matplotlib, h5py, empymod, scooby). Consult the installation notes in the manual for more information regarding installation, requirements, and soft dependencies.
Citation
If you publish results for which you used emg3d, please give credit by citing Werthmüller et al. (2019):
Werthmüller, D., W. A. Mulder, and E. C. Slob, 2019, emg3d: A multigrid solver for 3D electromagnetic diffusion: Journal of Open Source Software, 4(39), 1463; DOI: 10.21105/joss.01463.
All releases have a Zenodo-DOI, which can be found on 10.5281/zenodo.3229006.
See CREDITS for the history of the code.
License information
Copyright 2018-2021 The emg3d Developers.
Licensed under the Apache License, Version 2.0, see the LICENSE-file.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.