get_source_field¶
-
emg3d.fields.
get_source_field
(grid, source, frequency, **kwargs)[source]¶ Return source field for provided source and frequency.
The source term is given in Equation 2 of [Muld06],
\[-\mathrm{i} \omega \mu_0 \mathbf{J}_\mathrm{s} \, .\]The adjoint of the trilinear interpolation is used to distribute the points to the grid edges, which corresponds to the discretization of a Dirac ([PlDM07]).
- Parameters
- gridTensorMesh
Model grid; a
emg3d.meshes.TensorMesh
instance.- source{Tx*, tuple, list, ndarray)
Any source object from
emg3d.electrodes
(recommended usage).If it is a list, tuple, or ndarray it is in the case of a dipole put through to
emg3d.electrodes.TxElectricDipole
or, ifelectric=False
, toemg3d.electrodes.TxMagneticDipole
. If it has more than two points it is put through toemg3d.electrodes.TxElectricWire
. Consult the documentation of the respective classes for the format, but it is recommended to provide directly the classes.- frequencyfloat, default: None
Source frequency (Hz), used to compute the Laplace parameter
s
. Either positive or negative:frequency > 0
: Frequency domain, hence \(s = \mathrm{i}\omega = 2\mathrm{i}\pi f\) (complex);frequency < 0
: Laplace domain, hence \(s = f\) (real).
- strength{float, complex}, default: 1.0
Source strength (A), put through to
emg3d.electrodes.TxElectricDipole
or, ifelectric=False
, toemg3d.electrodes.TxMagneticDipole
.Only used if the provided source is not a source instance.- lengthfloat, default: 1.0
Dipole length (m), put through to
emg3d.electrodes.TxElectricDipole
or, ifelectric=False
, toemg3d.electrodes.TxMagneticDipole
.Only used if the provided source is not a source instance.- electricbool, default: True
If True,
emg3d.electrodes.TxElectricDipole
is used to get the source instance, elseemg3d.electrodes.TxMagneticDipole
.Only used if the provided source is not a source instance.
- Returns
- sfieldField
Source field, a
emg3d.fields.Field
instance.
Examples
In [1]: import emg3d ...: import numpy as np ...: In [2]: # Create a simple grid, 8 cells of length 100 m in each ...: # direction, centered around the origin. ...: hx = np.ones(8)*100 ...: grid = emg3d.TensorMesh([hx, hx, hx], origin=(-400, -400, -400)) ...: grid # For QC ...: Out[2]: TensorMesh: 512 cells MESH EXTENT CELL WIDTH FACTOR dir nC min max min max max --- --- --------------------------- ------------------ ------ x 8 -400.00 400.00 100.00 100.00 1.00 y 8 -400.00 400.00 100.00 100.00 1.00 z 8 -400.00 400.00 100.00 100.00 1.00 In [3]: # Create an electric dipole source from ...: # x1=y1=z1=0 to x2=100, y2=z2=0; strength=100 A. ...: source = emg3d.TxElectricDipole( ...: [[0, 0, 0], [100, 0, 0]], strength=100) ...: source # For QC ...: Out[3]: TxElectricDipole: 100.0 A; e1={0.0; 0.0; 0.0} m; e2={100.0; 0.0; 0.0} m In [4]: # Get the corresponding source field for f=0.5 Hz. ...: sfield = emg3d.get_source_field(grid, source, frequency=0.5) ...: sfield # For QC ...: Out[4]: Field: electric; 8 x 8 x 8; 1,944