Skip to main content

A multigrid solver for 3D electromagnetic diffusion.

Project description

emg3d logo

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

Features

  • Multigrid solver for 3D electromagnetic (EM) diffusion with regular grids.

  • Calculate the 3D EM field in the complex frequency domain or in the real Laplace 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 prisae emg3d

or via pip:

pip install emg3d

Required are Python version 3.7 or higher and the modules NumPy, SciPy, and numba; discretize (from SimPEG) is highly recommended.

If you are new to Python we recommend using a Python distribution, which will ensure that all dependencies are met, specifically properly compiled versions of NumPy and SciPy; we recommend using Anaconda. If you install Anaconda you can simply start the Anaconda Navigator, add the channel prisae and emg3d will appear in the package list and can be installed with a click.

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, provided on the release-page.

See CREDITS for the history of the code.

License information

Copyright 2018-2019 The emg3d Developers.

Licensed under the Apache License, Version 2.0, see the LICENSE-file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

emg3d-0.8.0.tar.gz (62.4 kB view hashes)

Uploaded Source

Built Distribution

emg3d-0.8.0-py3-none-any.whl (59.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page