Sources
EM source types and source time waveforms in WiTwin Maxwell
Overview#
Sources inject electromagnetic fields into the simulation domain. Every source takes an optional source_time waveform. If omitted, it defaults to a continuous wave (CW) at the simulation frequency.
Source Time Waveforms#
CW — Continuous Wave#
mw.CW(frequency=1.0e9, amplitude=1.0, phase=0.0)| Parameter | Default | Description |
|---|---|---|
frequency | required | Frequency in Hz. Must be > 0 |
amplitude | 1.0 | Peak amplitude |
phase | 0.0 | Initial phase in radians |
GaussianPulse#
A Gaussian-modulated sinusoidal pulse. Suitable for broadband multi-frequency simulations.
mw.GaussianPulse(frequency=1.0e9, fwidth=0.25e9, amplitude=1.0, phase=0.0)| Parameter | Default | Description |
|---|---|---|
frequency | required | Center frequency in Hz |
fwidth | required | Frequency width (bandwidth) in Hz |
amplitude | 1.0 | Peak amplitude |
phase | 0.0 | Initial phase in radians |
delay | None | Time delay in seconds. Defaults to 6 / (2π × fwidth) |
RickerWavelet#
A second-derivative Gaussian wavelet. Zero DC component, useful for seismic and acoustic simulations.
mw.RickerWavelet(frequency=1.0e9, amplitude=1.0)| Parameter | Default | Description |
|---|---|---|
frequency | required | Peak frequency in Hz |
amplitude | 1.0 | Peak amplitude |
delay | None | Time delay. Defaults to 4 / (π × frequency) |
Source Types#
PointDipole#
A point electric dipole source at a fixed position.
mw.PointDipole(
position=(0.0, 0.0, -0.06),
polarization="Ez",
width=0.04,
source_time=mw.GaussianPulse(frequency=1.0e9, fwidth=0.25e9, amplitude=50.0),
)| Parameter | Default | Description |
|---|---|---|
position | required | Source position (x, y, z) |
polarization | "Ez" | Polarization direction. One of "Ex", "Ey", "Ez", or a unit vector |
width | 0.02 | Source width. Must be > 0 |
profile | "gaussian" | Spatial profile. One of "gaussian", "ideal" |
source_time | None | Source waveform. Defaults to CW |
name | None | Optional source name |
PlaneWave#
A uniform plane wave propagating in a given direction.
mw.PlaneWave(
direction=(0.0, 0.0, 1.0),
polarization=(1.0, 0.0, 0.0),
source_time=mw.GaussianPulse(frequency=1.0e9, fwidth=0.25e9),
)| Parameter | Default | Description |
|---|---|---|
direction | (0, 0, 1) | Propagation direction unit vector. Must be orthogonal to polarization |
polarization | (1, 0, 0) | Polarization unit vector |
source_time | None | Source waveform |
injection | "soft" | Injection mode. "soft" or TFSF(bounds=...) |
injection_axis | None | Injection axis override. One of "x", "y", "z", or None |
name | None | Optional source name |
GaussianBeam#
A Gaussian beam focused at a given point.
mw.GaussianBeam(
direction=(0.0, 0.0, 1.0),
polarization=(1.0, 0.0, 0.0),
beam_waist=0.5,
focus=(0.0, 0.0, 0.0),
source_time=mw.GaussianPulse(frequency=1.0e9, fwidth=0.25e9),
)| Parameter | Default | Description |
|---|---|---|
direction | (0, 0, 1) | Propagation direction unit vector |
polarization | (1, 0, 0) | Polarization unit vector. Must be orthogonal to direction |
beam_waist | 0.5 | Beam waist radius. Must be > 0 |
focus | (0, 0, 0) | Focal point position |
source_time | None | Source waveform |
injection | "soft" | Injection mode. "soft" or TFSF(bounds=...) |
name | None | Optional source name |
ModeSource#
A modal source injecting a waveguide mode. Currently experimental.
mw.ModeSource(
position=(0.0, 0.0, 0.0),
size=(1.0, 1.0, 0.0),
mode_index=0,
direction="+",
source_time=mw.CW(frequency=1.0e9),
)| Parameter | Default | Description |
|---|---|---|
position | (0, 0, 0) | Source center position |
size | (1, 1, 0) | Source plane size. Exactly one component must be zero to define the injection plane |
mode_index | 0 | Mode index to inject. Must be >= 0 |
direction | "+" | Propagation direction. "+" or "-" |
polarization | "auto" | Polarization axis. "auto", "Ex", "Ey", "Ez", or a unit vector |
source_time | None | Source waveform |
Note
ModeSource is available but marked experimental. Behavior may change in future releases.
TFSF — Total Field / Scattered Field#
Defines a total-field/scattered-field injection region for use with PlaneWave or GaussianBeam:
mw.PlaneWave(
direction=(0.0, 0.0, 1.0),
polarization=(1.0, 0.0, 0.0),
injection=mw.TFSF(bounds=((-0.2, 0.2), (-0.2, 0.2), (-0.2, 0.2))),
)Next Steps#
- Monitors — record field data
- Simulation — run the simulation