From 61666fc87b3611d1bb23a0a6d3ad736db6df9a71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dieter=20Werthm=C3=BCller?= Date: Wed, 11 Sep 2024 19:17:42 +0200 Subject: [PATCH 1/5] Add possibility for e-current --- empymod/model.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/empymod/model.py b/empymod/model.py index 551f52b..913b8a5 100644 --- a/empymod/model.py +++ b/empymod/model.py @@ -379,8 +379,9 @@ def bipole(src, rec, depth, res, freqtime, signal=None, aniso=None, """ # Get kwargs with defaults. out = get_kwargs( - ['verb', 'ht', 'htarg', 'ft', 'ftarg', 'xdirect', 'loop', 'squeeze'], - [2, 'dlf', {}, 'dlf', {}, False, None, True], kwargs, + ['verb', 'ht', 'htarg', 'ft', 'ftarg', 'xdirect', 'loop', 'squeeze', + 'ecurrent'], + [2, 'dlf', {}, 'dlf', {}, False, None, True, False], kwargs, ) verb, ht, htarg, ft, ftarg, xdirect, loop, squeeze = out @@ -543,6 +544,10 @@ def bipole(src, rec, depth, res, freqtime, signal=None, aniso=None, # In case of QWE/QUAD, print Warning if not converged conv_warning(conv, htarg, 'Hankel', verb) + # Multiplication with frequency-dependent loop factors. + if ecurrent: + EM *= etaH[:, lsrc, None] + # Do f->t transform if required if signal is not None: EM, conv = tem(EM, EM[0, :], freq, time, signal, ft, ftarg) From e175d7c6f1513f1e0640455ac656a8c1003fe504 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dieter=20Werthm=C3=BCller?= Date: Wed, 11 Sep 2024 19:29:35 +0200 Subject: [PATCH 2/5] Forget to assign ecurrent --- empymod/model.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/empymod/model.py b/empymod/model.py index 913b8a5..430c0e1 100644 --- a/empymod/model.py +++ b/empymod/model.py @@ -383,7 +383,7 @@ def bipole(src, rec, depth, res, freqtime, signal=None, aniso=None, 'ecurrent'], [2, 'dlf', {}, 'dlf', {}, False, None, True, False], kwargs, ) - verb, ht, htarg, ft, ftarg, xdirect, loop, squeeze = out + verb, ht, htarg, ft, ftarg, xdirect, loop, squeeze, ecurrent = out # === 1. LET'S START ============ t0 = printstartfinish(verb) From 90e91f757dd41566d9f1fc9e1d3f5ae2343d68a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dieter=20Werthm=C3=BCller?= Date: Wed, 11 Sep 2024 19:37:37 +0200 Subject: [PATCH 3/5] Add to known_keys --- empymod/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/empymod/utils.py b/empymod/utils.py index 028a0a4..fa37273 100644 --- a/empymod/utils.py +++ b/empymod/utils.py @@ -1797,7 +1797,8 @@ def get_kwargs(names, defaults, kwargs): known_keys = set([ 'depth', 'ht', 'htarg', 'ft', 'ftarg', 'xdirect', 'loop', 'signal', 'ab', 'freqtime', 'freq', 'wavenumber', 'solution', 'cf', 'gain', - 'msrc', 'srcpts', 'mrec', 'recpts', 'strength', 'squeeze' + 'msrc', 'srcpts', 'mrec', 'recpts', 'strength', 'squeeze', + 'ecurrent', ]) # Loop over wanted parameters. From dca936b42ad8f8ccdf4ae23ba02f617f95955901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dieter=20Werthm=C3=BCller?= Date: Wed, 11 Sep 2024 19:39:42 +0200 Subject: [PATCH 4/5] Add some comments --- empymod/model.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/empymod/model.py b/empymod/model.py index 430c0e1..efd10d2 100644 --- a/empymod/model.py +++ b/empymod/model.py @@ -302,6 +302,9 @@ def bipole(src, rec, depth, res, freqtime, signal=None, aniso=None, If True, the output is squeezed. If False, the output will always be of ``ndim=3``, (nfreqtime, nrec, nsrc). + ecurrent : bool, default: False + TODO description ecurrent + Returns ------- @@ -310,6 +313,7 @@ def bipole(src, rec, depth, res, freqtime, signal=None, aniso=None, - If rec is electric, returns E [V/m]. - If rec is magnetic, returns H [A/m]. + - TODO description ecurrent; check for msrc=True EMArray is a subclassed ndarray with `.pha` and `.amp` attributes (only relevant for frequency-domain data). @@ -544,7 +548,7 @@ def bipole(src, rec, depth, res, freqtime, signal=None, aniso=None, # In case of QWE/QUAD, print Warning if not converged conv_warning(conv, htarg, 'Hankel', verb) - # Multiplication with frequency-dependent loop factors. + # Multiply with eta of the source layer to obtain the electric current. if ecurrent: EM *= etaH[:, lsrc, None] From 8d9085d3d21034cb4e88dbdf9df3e7a14074f58d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dieter=20Werthm=C3=BCller?= Date: Thu, 12 Sep 2024 15:06:37 +0200 Subject: [PATCH 5/5] Change to lrec instead lsrc --- empymod/model.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/empymod/model.py b/empymod/model.py index efd10d2..621fe2d 100644 --- a/empymod/model.py +++ b/empymod/model.py @@ -533,6 +533,11 @@ def bipole(src, rec, depth, res, freqtime, signal=None, aniso=None, src_rec_w *= np.tile(rec_w, isrc) sEM *= src_rec_w + # Multiply with eta of the rec-layer if ecurrent. + if ecurrent: + print(sEM.shape, etaH.shape, etaH[:, lrec, None].shape) + sEM *= etaH[:, lrec, None] + # Add this src-rec signal if nrec == nrecz: if nsrc == nsrcz: # Case 1: Looped over each src and each rec @@ -548,10 +553,6 @@ def bipole(src, rec, depth, res, freqtime, signal=None, aniso=None, # In case of QWE/QUAD, print Warning if not converged conv_warning(conv, htarg, 'Hankel', verb) - # Multiply with eta of the source layer to obtain the electric current. - if ecurrent: - EM *= etaH[:, lsrc, None] - # Do f->t transform if required if signal is not None: EM, conv = tem(EM, EM[0, :], freq, time, signal, ft, ftarg)