tem-exp-rkfit: Fast Parallel Transient Electromagnetic Modelling using a Uniform-in-Time Approximation to the Exponential
This repository contains all code, data, and instructions necessary to reproduce the results presented in the Geophysical Journal International article:
"Fast parallel transient electromagnetic modelling using a uniform-in-time approximation to the exponential"
Authors: Ralph-Uwe Börner, Stefan Güttel
published in GJI on August 14, 2025
DOI: https://doi.org/10.1093/gji/ggaf319
We propose a novel method for computing transient electromagnetic (TEM) responses using a uniform-in-time rational approximation to the matrix exponential. The method is based on RKFIT and allows for efficient parallel computation.
git clone https://github.com/ruboerner/tem-exp-rkfit.git
cd tem-exp-rkfitSetup the Julia environment:
using Pkg
Pkg.activate(".")
Pkg.instantiate()Once you have installed the environment (see above), you can run the provided example script. To start Julia in the project environment with multiple worker processes, use the -p flag:
julia --project=. -p 8 run_RKFIT.jlThis would run Julia using 8 worker processes.
What the example does:
The script loads a finite element discretization that has been precomputed and stored in the JLD file disretization_3d_10ohmm.jld2 (Julia’s analogue of MATLAB’s .mat files). Specifically, it retrieves
- the stiffness matrix
K, - the mass matrix
M, - the observation operator
Q, and - the right-hand side vector
f.
These matrices and vectors are then available in memory.
Notes:
-p Nstarts Julia with N additional worker processes, which enables parallel execution viaDistributed.pmap,@everywhere, etc.- If you omit
-p, Julia runs in single-process mode. You can still add workers later programmatically:
using Distributed
addprocs(8) # same effect as -p 8This project is licensed under the MIT License. See the LICENSE file for details.
We thank the Geophysical Journal International reviewers and editor for their valuable feedback, and gratefully acknowledge the open-source Julia ecosystem that made this work possible.