This project was started by Dieter Werthmüller at Delft University of Technology as part of the Gitaro.JIM project (till 05/2021, emg3d v1.0.0), funded through MarTERA as part of Horizon 2020, a funding scheme of the European Research Area. Dieter would like to thank his current employers who allow him to maintain and further develop the code after the initial funding ended, namely:

For a list of code contributors see

There are various contributors who improved emg3d not through code commits but through discussions and help on Slack at SWUNG and at SimPEG, thanks to both communities. Special thanks to @jokva (general), @banesullivan (visualization), @joferkington (interpolation), @jcapriot (volume averaging), and @sgkang (inversion).

Historical credits#

The core of emg3d is a complete rewrite and redesign of the multigrid code by Wim A. Mulder ([Muld06], [Muld07], [Muld08], [MuWS08]), developed at Shell and at TU Delft. Various authors contributed to the original code, amongst others, Tom Jönsthövel ([JoOM06]; improved solver for strongly stretched grids), Marwan Wirianto ([WiMS10], [WiMS11]; computation of time-domain data), and Evert C. Slob ([SlHM10]; analytical solutions). The original code was written in Matlab, where the most time- and memory-consuming parts were sped up through mex-files (written in C). It included multigrid with or without BiCGSTAB, VTI resistivity, semicoarsening, and line relaxation; the number of cells had to be powers of two, and coarsening was done only until the first dimension was at two cells. As such it corresponded roughly to emg3d v0.3.0.

See the References section in the manual for the full citations and a more extensive list.