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} \, .\]In the case of dipoles and wires, the source is distributed onto the cells as fraction of the source length.
In the case of points, the adjoint of the trilinear interpolation is used to distribute it to the grid edges.
- Parameters:
- gridTensorMesh
Model grid; a
emg3d.meshes.TensorMeshinstance.- 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.TxElectricDipoleor, 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.- frequency{float, 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).frequency == None: Returns the real-valued, frequency-independent source vector. This basically excludes the multiplication by \(-\mathrm{i}\omega\mu_0\).
- strength{float, complex}, default: 1.0
Source strength (A), put through to
emg3d.electrodes.TxElectricDipoleor, 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.TxElectricDipoleor, ifelectric=False, toemg3d.electrodes.TxMagneticDipole.Only used if the provided source is not a source instance.- electricbool, default: True
If True,
emg3d.electrodes.TxElectricDipoleis used to get the source instance, elseemg3d.electrodes.TxMagneticDipole.Only used if the provided source is not a source instance.
- Returns:
- sfieldField
Source field (or source vector, if
frequency=None), aemg3d.fields.Fieldinstance.
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