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",),
)
ParameterDefaultDescription
namerequiredUnique monitor name
positionrequiredRecording 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],
)
ParameterDefaultDescription
namerequiredUnique monitor name
axis"z"Normal axis of the recording plane
position0.0Position along the normal axis
fields("Ez",)Field components to record
frequenciesNoneFrequencies to record at. Records all if None
compute_fluxFalseCompute 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],
)
ParameterDefaultDescription
namerequiredUnique monitor name
axis"z"Normal axis
position0.0Position along the normal axis
frequenciesNoneFrequencies 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="+",
)
ParameterDefaultDescription
namerequiredUnique 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
frequenciesNoneFrequencies to record at
compute_fluxFalseCompute 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],
)
ParameterDefaultDescription
namerequiredUnique monitor name
position(0, 0, 0)Monitor center position
size(1, 1, 0)Monitor plane size. Exactly one component must be zero
mode_index0Mode index to record. Must be >= 0
direction"+"Propagation direction. "+" or "-"
frequenciesNoneFrequencies to record at

Note

ModeMonitor is available but marked experimental.

Next Steps#