Monitors
Monitor types for field and flux recording in WiTwin Maxwell
Overview#
Monitors record field data during simulation. Add them to the scene before running:
scene.add_monitor(mw.PointMonitor("probe", (0.0, 0.0, 0.06), fields=("Ez",)))After the simulation, read monitor data from the result:
data = result.monitor("probe")["data"]PointMonitor#
Records field components at a single point.
mw.PointMonitor(
name="probe",
position=(0.0, 0.0, 0.06),
fields=("Ez",),
)| Parameter | Default | Description |
|---|---|---|
name | required | Unique monitor name |
position | required | Recording point (x, y, z) |
fields | ("Ez",) | Field components to record. Any of "Ex", "Ey", "Ez", "Hx", "Hy", "Hz" |
PlaneMonitor#
Records field components over an infinite axis-aligned plane.
mw.PlaneMonitor(
name="field_slice",
axis="z",
position=0.0,
fields=("Ez",),
frequencies=[1.0e9],
)| Parameter | Default | Description |
|---|---|---|
name | required | Unique monitor name |
axis | "z" | Normal axis of the recording plane |
position | 0.0 | Position along the normal axis |
fields | ("Ez",) | Field components to record |
frequencies | None | Frequencies to record at. Records all if None |
compute_flux | False | Compute Poynting flux through the plane |
normal_direction | "+" | Normal direction for flux. "+" or "-" |
FluxMonitor#
A convenience wrapper around PlaneMonitor that automatically selects the correct tangential field components for flux computation.
mw.FluxMonitor(
name="flux",
axis="z",
position=0.0,
frequencies=[1.0e9],
)| Parameter | Default | Description |
|---|---|---|
name | required | Unique monitor name |
axis | "z" | Normal axis |
position | 0.0 | Position along the normal axis |
frequencies | None | Frequencies to record at |
normal_direction | "+" | Normal direction for flux |
FinitePlaneMonitor#
Records field components over a finite axis-aligned plane with explicit position and size.
mw.FinitePlaneMonitor(
name="face",
position=(0.0, 0.0, 0.1),
size=(0.5, 0.5, 0.0),
fields=("Ex", "Ey", "Hx", "Hy"),
frequencies=[1.0e9],
compute_flux=True,
normal_direction="+",
)| Parameter | Default | Description |
|---|---|---|
name | required | Unique monitor name |
position | (0, 0, 0) | Center position. The zero-size axis defines the plane normal |
size | (1, 1, 0) | Plane size. Exactly one component must be zero |
fields | ("Ez",) | Field components to record |
frequencies | None | Frequencies to record at |
compute_flux | False | Compute Poynting flux. Requires all tangential field components |
normal_direction | "+" | Normal direction for flux |
ClosedSurfaceMonitor#
A closed surface composed of FinitePlaneMonitor faces for computing total radiated power.
# Convenience box constructor
monitor = mw.ClosedSurfaceMonitor.box(
"power",
position=(0.0, 0.0, 0.0),
size=(0.4, 0.4, 0.4),
frequencies=[1.0e9],
)
scene.add_monitor(monitor)Or construct manually from faces:
mw.ClosedSurfaceMonitor(
name="power",
faces=[face_x_neg, face_x_pos, face_y_neg, face_y_pos, face_z_neg, face_z_pos],
frequencies=[1.0e9],
)Note
ClosedSurfaceMonitor requires balanced face areas — each axis must have equal positive and negative face areas. Use ClosedSurfaceMonitor.box() to avoid area balance errors.
ModeMonitor#
Records modal overlap at a waveguide cross-section. Currently experimental.
mw.ModeMonitor(
name="mode",
position=(0.0, 0.0, 0.0),
size=(1.0, 1.0, 0.0),
mode_index=0,
direction="+",
frequencies=[1.0e9],
)| Parameter | Default | Description |
|---|---|---|
name | required | Unique monitor name |
position | (0, 0, 0) | Monitor center position |
size | (1, 1, 0) | Monitor plane size. Exactly one component must be zero |
mode_index | 0 | Mode index to record. Must be >= 0 |
direction | "+" | Propagation direction. "+" or "-" |
frequencies | None | Frequencies to record at |
Note
ModeMonitor is available but marked experimental.
Next Steps#
- Materials — material models and dispersive media
- Simulation — run the simulation