# Probes (2D FDTD) A **probe** records one field component at a fixed grid location. It observes the simulation without injecting a value, producing a time history instead of a full spatial image. `add_probe(i, j, component)` returns an identifier used to retrieve the results: ```cpp const auto id = sim.add_probe(160, 128, fdtd::TMz::Component::Ez); sim.run(400); const auto values = sim.probe_data(id); const auto times = sim.probe_times(id); ``` Probes must be registered before the first run. Their records continue across subsequent runs, allowing a simulation to advance in smaller pieces without losing the earlier measurements. Electric and magnetic records have different timestamps. After the first step, an $E_z$ record corresponds to $\Delta t$, while an $H_x$ or $H_y$ record corresponds to $\Delta t/2$. `probe_times()` includes this offset from [[fdtd-cuda-time-stepping|time stepping]]. The driver records $E_z$ with `--probe I,J` and writes each trace to `probe_.csv`. Probe traces are useful for measuring pulse arrival, checking reflected signals, or comparing backends without storing every grid sample at every step.