.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "gallery/educational/halfspace_vs_dipole.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_gallery_educational_halfspace_vs_dipole.py: Comparison of half-space solutions ================================== Comparing of the functions ``analytical`` with ``dipole`` for a half-space and a fullspace-solution, where ``dipole`` internally uses ``kernel.fullspace`` for the fullspace solution (``xdirect=True``), and ``analytical`` uses internally ``kernel.halfspace``. Both in the frequency and in the time domain. .. GENERATED FROM PYTHON SOURCE LINES 10-15 .. code-block:: Python import empymod import numpy as np import matplotlib.pyplot as plt plt.style.use('ggplot') .. GENERATED FROM PYTHON SOURCE LINES 16-20 Time Domain ----------- Define models ~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 20-37 .. code-block:: Python src = [0, 0, 100] rec = [2000, 500, 200] res = [2e14, 2.5] aniso = [1, 2] time = np.logspace(-2, 3, 301) # Collect parameters inpEM = {'src': src, 'rec': rec, 'freqtime': time, 'verb': 0} inpEMdip = inpEM.copy() inpEMdip['htarg'] = {'pts_per_dec': -1} modHS = {'res': res, 'aniso': aniso} modFS = {'res': res[1], 'aniso': aniso[1]} all_abs = [11, 12, 13, 21, 22, 23, 31, 32, 33] .. GENERATED FROM PYTHON SOURCE LINES 38-40 Plot result ~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 40-48 .. code-block:: Python def plot_t(EM, HS, title, i): plt.figure(title, figsize=(10, 8)) plt.subplot(i) plt.semilogx(time, EM) plt.semilogx(time, HS, '--') .. GENERATED FROM PYTHON SOURCE LINES 49-50 Impulse HS .. GENERATED FROM PYTHON SOURCE LINES 50-60 .. code-block:: Python plt.figure('Impulse HS') i = 330 for ab in all_abs: i += 1 EM = empymod.dipole(**inpEMdip, **modHS, ab=ab, signal=0, depth=0) HS = empymod.analytical(**inpEM, **modFS, solution='dhs', ab=ab, signal=0) plot_t(EM, HS, 'Impulse HS', i) plt.suptitle('Impulse HS') .. image-sg:: /gallery/educational/images/sphx_glr_halfspace_vs_dipole_001.png :alt: Impulse HS :srcset: /gallery/educational/images/sphx_glr_halfspace_vs_dipole_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 61-62 Switch-on HS .. GENERATED FROM PYTHON SOURCE LINES 62-72 .. code-block:: Python plt.figure('Switch-on HS') i = 330 for ab in all_abs: i += 1 EM = empymod.dipole(**inpEMdip, **modHS, ab=ab, signal=1, depth=0) HS = empymod.analytical(**inpEM, **modFS, solution='dhs', ab=ab, signal=1) plot_t(EM, HS, 'Switch-on HS', i) plt.suptitle('Switch-on HS') .. image-sg:: /gallery/educational/images/sphx_glr_halfspace_vs_dipole_002.png :alt: Switch-on HS :srcset: /gallery/educational/images/sphx_glr_halfspace_vs_dipole_002.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 73-74 Switch-off HS .. GENERATED FROM PYTHON SOURCE LINES 74-84 .. code-block:: Python plt.figure('Switch-off HS') i = 330 for ab in all_abs: i += 1 EM = empymod.dipole(**inpEMdip, **modHS, ab=ab, signal=-1, depth=0) HS = empymod.analytical(**inpEM, **modFS, solution='dhs', ab=ab, signal=-1) plot_t(EM, HS, 'Switch-off HS', i) plt.suptitle('Switch-off HS') .. image-sg:: /gallery/educational/images/sphx_glr_halfspace_vs_dipole_003.png :alt: Switch-off HS :srcset: /gallery/educational/images/sphx_glr_halfspace_vs_dipole_003.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 85-86 Impulse FS .. GENERATED FROM PYTHON SOURCE LINES 86-96 .. code-block:: Python plt.figure('Impulse FS') i = 330 for ab in all_abs: i += 1 EM = empymod.dipole(**inpEMdip, **modFS, ab=ab, signal=0, depth=[]) HS = empymod.analytical(**inpEM, **modFS, solution='dfs', ab=ab, signal=0) plot_t(EM, HS, 'Impulse FS', i) plt.suptitle('Impulse FS') .. image-sg:: /gallery/educational/images/sphx_glr_halfspace_vs_dipole_004.png :alt: Impulse FS :srcset: /gallery/educational/images/sphx_glr_halfspace_vs_dipole_004.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 97-98 Switch-on FS .. GENERATED FROM PYTHON SOURCE LINES 98-108 .. code-block:: Python plt.figure('Switch-on FS') i = 330 for ab in all_abs: i += 1 EM = empymod.dipole(**inpEMdip, **modFS, ab=ab, signal=1, depth=[]) HS = empymod.analytical(**inpEM, **modFS, solution='dfs', ab=ab, signal=1) plot_t(EM, HS, 'Switch-on FS', i) plt.suptitle('Switch-on FS') .. image-sg:: /gallery/educational/images/sphx_glr_halfspace_vs_dipole_005.png :alt: Switch-on FS :srcset: /gallery/educational/images/sphx_glr_halfspace_vs_dipole_005.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 109-110 Switch-off FS .. GENERATED FROM PYTHON SOURCE LINES 110-122 .. code-block:: Python plt.figure('Switch-off FS') i = 330 for ab in all_abs: i += 1 # Switch-off EM = empymod.dipole(**inpEMdip, **modFS, ab=ab, signal=-1, depth=[]) HS = empymod.analytical(**inpEM, **modFS, solution='dfs', ab=ab, signal=-1) plot_t(EM, HS, 'Switch-off FS', i) plt.suptitle('Switch-off FS') .. image-sg:: /gallery/educational/images/sphx_glr_halfspace_vs_dipole_006.png :alt: Switch-off FS :srcset: /gallery/educational/images/sphx_glr_halfspace_vs_dipole_006.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 123-125 Frequency domain ---------------- .. GENERATED FROM PYTHON SOURCE LINES 125-139 .. code-block:: Python inpEM['freqtime'] = 1/time inpEMdip['freqtime'] = 1/time def plot_f(EM, HS, title, i): plt.figure(title, figsize=(10, 8)) plt.subplot(i) plt.semilogx(1/time, EM.real) plt.semilogx(1/time, HS.real, '--') plt.semilogx(1/time, EM.imag) plt.semilogx(1/time, HS.imag, '--') .. GENERATED FROM PYTHON SOURCE LINES 140-141 Halfspace .. GENERATED FROM PYTHON SOURCE LINES 141-151 .. code-block:: Python i = 330 for ab in all_abs: i += 1 EM = empymod.dipole(**inpEMdip, **modHS, ab=ab, depth=0) HS = empymod.analytical(**inpEM, **modFS, solution='dhs', ab=ab) plot_f(EM, HS, 'Frequency HS', i) plt.figure('Frequency HS') plt.suptitle('Frequency HS') .. image-sg:: /gallery/educational/images/sphx_glr_halfspace_vs_dipole_007.png :alt: Frequency HS :srcset: /gallery/educational/images/sphx_glr_halfspace_vs_dipole_007.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 152-153 Fullspace .. GENERATED FROM PYTHON SOURCE LINES 153-163 .. code-block:: Python plt.figure('Frequency FS') i = 330 for ab in all_abs: i += 1 EM = empymod.dipole(**inpEMdip, **modFS, ab=ab, depth=[]) HS = empymod.analytical(**inpEM, **modFS, solution='dfs', ab=ab) plot_f(EM, HS, 'Frequency FS', i) plt.suptitle('Frequency FS') .. image-sg:: /gallery/educational/images/sphx_glr_halfspace_vs_dipole_008.png :alt: Frequency FS :srcset: /gallery/educational/images/sphx_glr_halfspace_vs_dipole_008.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 164-166 .. code-block:: Python empymod.Report() .. raw:: html
Sat Jan 17 19:16:10 2026 UTC
OS Linux (Ubuntu 22.04) CPU(s) 2 Machine x86_64
Architecture 64bit RAM 7.6 GiB Environment Python
File system ext4
Python 3.11.12 (main, May 6 2025, 10:45:53) [GCC 11.4.0]
numpy 2.3.5 scipy 1.17.0 numba 0.63.1
empymod 2.5.4.dev4+g4866dc83a libdlf 0.3.0 IPython 9.9.0
matplotlib 3.10.8


.. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 6.627 seconds) **Estimated memory usage:** 193 MB .. _sphx_glr_download_gallery_educational_halfspace_vs_dipole.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: halfspace_vs_dipole.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: halfspace_vs_dipole.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: halfspace_vs_dipole.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_