Controlled-source electromagnetic (CSEM) survey design for geothermal applications
2025 EasyGO Training, ETH Zürich
In the following three hours, we are going to design a controlled-source electromagnetic survey to monitor a near-surface geothermal project.
We will use empymod and emg3d to model
electromagnetic data in the diffusive regime.
CSEM_survey_design_EasygoON.pdf is a presentation with supporting information for this training.
9:00 - 10:00
Introduction ('20)
- Electromagnetic (EM) Geophysics
- Material property: resistivity
- Controlled-source electromagnetics
- EM modelling
Layered-Earth modelling with
empymodusingempymod.ipynb('30)
10:00 - 11:00
CSEM monitoring of an Aqufer Thermal Energy Storage (ATES) system ('20)
- ATES site at TU Delft
- Resistivity-temperature relationship
- Survey configurations and EM field components
Design a CSEM survey for monitoring the ATES site using
empymod_ATES.ipynb('30)Discussion on suitable survey design ('10)
11:15 - 12:15
- 3D modelling with
emg3dusingemg3d.ipynb('20) - Improve you CSEM survey design for monitoring the ATES site using
emg3d_ATES.ipynb('20) - Complexities of infrastructure for geothermal monitoring with EM ('10)
- Q&A and Further links ('10')
- In this Masterclass we will use Python within Jupyter Notebooks.
- For scientific computations I always advice against using your PC's Python installation; you should use dedicated Python installations for your coding.
- For various reasons I also advice to use Mambaforge, or alternatively the regular conda.
Download and install the corresponding Mambaforge for your OS: https://www.github.com/conda-forge/miniforge#miniforge
(Mambaforge uses mamba, the faster conda implementation, and sets conda-forge, the community maintained package repository, as default source.)
Download or clone the repo at https://github.com/emsig/easygo-training-em, and
cdto the directory.Install the environment with
mamba env create -f environment.yml
This will install an environment called
easygo-training-em.Activate the environment with
mamba activate easygo-training-em
Add this kernel to the recognized Jupyter kernels (optional, to have access from other envs as well) with
python -m ipykernel install --user --name easygo-training-em
Start Jupyter Lab
jupyter lab
The following google docs contains some further instructions, which might be useful (particular for Windows users): https://swu.ng/t20-python-setup
I will use Python 3.11. However, Python 3.7-3.11 should work; earlier versions might work, but potentially with older versions of the packages.
If you prefer to install the required packages in whatever other way, feel free to do so. Here the packages lists:
- Required:
empymod,emg3d,matplotlib,discretize,h5py,pooch,xarray;ipyml(for interactive plots in the Jupyter lab). - Optional:
scooby,mkl,tqdm.
MyBinder: I tested the repo on MyBinder, and it should work; however, be aware that it can take some time to start-up a virtual machine.
Google Colab: If you have a Google account you can also run it on Colab. You have to login in order to run it.
Full 3D electromagnetic modeller for 1D VTI media.
- Manual: https://empymod.emsig.xyz
- Gallery: https://empymod.emsig.xyz/en/stable/gallery
- Code: https://github.com/emsig/empymod
- Installation: https://empymod.emsig.xyz/en/stable/manual/installation.html
A multigrid solver for 3D electromagnetic diffusion.
- Manual: https://emg3d.emsig.xyz
- Gallery: https://emsig.xyz/emg3d-gallery/gallery
- Code: https://github.com/emsig/emg3d
- Installation: https://emg3d.emsig.xyz/en/stable/manual/installation.html
- SimPEG(emg3d): curvenote.com/@prisae/emg3d-as-solver-for-simpeg/hackathon-emg3d-inversion-in-simpeg
- pyGIMLi(empymod): github.com/gimli-org/transform2021 -> 6_Inversion_with_any_forward_operator.ipynb
- Website: disc2017.geosci.xyz
- SEG info: seg.org/Education/Courses/DISC/2017-DISC-Doug-Oldenburg
- Repo github.com/geoscixyz/em-apps
Software Underground (Swung) Transform Tutorials softwareunderground.org
- SimPEG 2020: youtu.be/jZ7Sj9cnnso
- SimPEG 2021: youtu.be/5MiaebDwWUQ
- pyGIMLi 2021: youtu.be/w3pu0H3dXe8
- pyGIMLi 2022: youtu.be/2Hu4gDnRzlU