pycsamt.tdem.waveform#
Transmitter waveform models for TEM systems.
Classes
|
User-defined waveform supplied as paired time/current arrays. |
|
Half-sine transmitter current (used by some CSEM / airborne systems). |
|
Transmitter current with a finite linear ramp on switch-off. |
|
Ideal square-wave transmitter current (zero ramp time). |
- class pycsamt.tdem.waveform.SquareWaveform(base_frequency=25.0, duty_cycle=0.5, verbose=0, logger=None)[source]#
Bases:
_WaveformBaseIdeal square-wave transmitter current (zero ramp time).
The waveform alternates between +I and −I at
base_frequencyHz. For late-time TEM processing the waveform is treated as an ideal step turn-off, so this is the appropriate choice when ramp effects are negligible.- Parameters:
Examples
>>> from pycsamt.tdem.waveform import SquareWaveform >>> wf = SquareWaveform(base_frequency=25.0) >>> wf.half_period 0.02
- current_at(t)[source]#
Return the normalised transmitter current (0–1) at times t.
- Parameters:
t (array-like) – Times in seconds relative to the switch-off event at t = 0. Negative values are on-time; positive values are off-time.
- Returns:
Current envelope (dimensionless, in [0, 1]).
- Return type:
np.ndarray
- class pycsamt.tdem.waveform.RampWaveform(base_frequency=25.0, ramp_off=0.0001, ramp_on=0.0, duty_cycle=0.5, verbose=0, logger=None)[source]#
Bases:
_WaveformBaseTransmitter current with a finite linear ramp on switch-off.
The current decays linearly from 1 to 0 over
ramp_offseconds starting at t = 0 (the nominal switch-off instant). This is the waveform required for accurate early-time TEM processing where the ramp duration is comparable to the first measurement gates.- Parameters:
base_frequency (float) – Fundamental repetition rate in Hz.
ramp_off (float) – Duration of the current turn-off ramp in seconds.
ramp_on (float, optional) – Duration of the current turn-on ramp in seconds. Rarely needed; default 0.0 (ideal step turn-on).
duty_cycle (float, optional) – Fraction of the half-period at full current (before ramp). Default 0.5.
verbose (int)
logger (object | None)
Examples
>>> from pycsamt.tdem.waveform import RampWaveform >>> wf = RampWaveform(base_frequency=25.0, ramp_off=1e-4) >>> wf.ramp_off 0.0001
- current_at(t)[source]#
Return the normalised transmitter current (0–1) at times t.
- Parameters:
t (array-like) – Times in seconds relative to the switch-off event at t = 0. Negative values are on-time; positive values are off-time.
- Returns:
Current envelope (dimensionless, in [0, 1]).
- Return type:
np.ndarray
- class pycsamt.tdem.waveform.HalfSineWaveform(base_frequency=30.0, verbose=0, logger=None)[source]#
Bases:
_WaveformBaseHalf-sine transmitter current (used by some CSEM / airborne systems).
- Parameters:
Examples
>>> from pycsamt.tdem.waveform import HalfSineWaveform >>> wf = HalfSineWaveform(base_frequency=30.0) >>> round(wf.half_period, 6) 0.016667
- current_at(t)[source]#
Return the normalised transmitter current (0–1) at times t.
- Parameters:
t (array-like) – Times in seconds relative to the switch-off event at t = 0. Negative values are on-time; positive values are off-time.
- Returns:
Current envelope (dimensionless, in [0, 1]).
- Return type:
np.ndarray
- class pycsamt.tdem.waveform.CustomWaveform(t_waveform, i_waveform, *, base_frequency=25.0, verbose=0, logger=None)[source]#
Bases:
_WaveformBaseUser-defined waveform supplied as paired time/current arrays.
- Parameters:
Examples
>>> import numpy as np >>> from pycsamt.tdem.waveform import CustomWaveform >>> t = np.linspace(-0.02, 0.02, 200) >>> I = np.where(t < 0, 1.0, 0.0) >>> wf = CustomWaveform(t, I, base_frequency=25.0)
- current_at(t)[source]#
Return the normalised transmitter current (0–1) at times t.
- Parameters:
t (array-like) – Times in seconds relative to the switch-off event at t = 0. Negative values are on-time; positive values are off-time.
- Returns:
Current envelope (dimensionless, in [0, 1]).
- Return type:
np.ndarray