Troubleshooting

Find the message you see, then its cause and fix. Errors stop the run; warnings let it continue, often with part of the model switched off, so read them. The deck-side causes (missing slices, &REAC yields) are explained on What your FDS case must provide.

Errors

Command-line errors start with the name of the command you ran: pyfds-evac: for the installed command, run.py: in a source checkout, and __main__.py: for python -m pyfds_evac on Python 3.12 and 3.13.

MessageCauseFix
OSError: No simulations were found in the directory: DIR--fds-dir points at a directory without FDS output, for example one holding only the .fds deck.Point it at the directory with the .smv file of a finished FDS run.
ValueError: --inspect-fds requires --fds-dir--inspect-fds has nothing to inspect.Add --fds-dir.
ValueError: --vis-cache requires --enable-rerouting--vis-cache with --no-enable-rerouting.Drop one of the two; rerouting is on by default.
ValueError: --clear-air-visibility contradicts --fds-dir: …Clear-air sight on a deck with a fire.Drop --clear-air-visibility; with --fds-dir the smoke decides what agents see.
ValueError: --no-visibility and --clear-air-visibility conflictBoth flags given.Keep one.
ValueError: --heat-regime layer needs --heat-fed-method total-fluxThe layer regime is part of the total-flux method.Add --heat-fed-method total-flux.
ValueError: --heat-regime layer needs --heat-layer-height (or --heat-view-factor, --heat-layer-emissivity)These three have no default.Set all three; see Models › Heat.
ValueError: --heat-radiant-source integrated-intensity needs --heat-fed-method total-flux.As above, for the radiant source.Add --heat-fed-method total-flux.
ValueError: --heat-radiant-source integrated-intensity needs --heat-u-factor in [0.25, 1]; there is no default.f has no default.Set --heat-u-factor.
ValueError: DIR has no INTEGRATED INTENSITY slice. …The deck writes no INTEGRATED INTENSITY slice.Add &SLCF QUANTITY='INTEGRATED INTENSITY' at the slice height and rerun FDS.
pyfds-evac: error: argument --heat-u-factor: must be in [0.25, 1.0], got …f outside its range.Use a value in [0.25, 1].
pyfds-evac: error: Distribution '…': requested N agents but area can hold at most ~C. …A spawn area asks for more agents than the run’s capacity estimate. Also printed by --export-only.Lower number, or enlarge the polygon in distributions.<id>.coordinates.
pyfds-evac: error: Distribution '…': could not place the N requested agents (Only K of N could be placed. …). The capacity estimate ~C is an upper bound. …The count is within the estimate, but JuPedSim cannot place every agent, for example in a narrow area.As above.
pyfds-evac: error: Distribution '…': could not place the N requested agents (only K fit in the P parts left free). …The spawn area overlaps one placed before it, and the agents already there cut its free room into P parts that together seat only K.Lower number, enlarge the polygon, or move it off the other spawn area.
pyfds-evac: error: Distribution '…': could not place the N requested agents (agents of '…' leave no free area). …The agents of the named, overlapping spawn area leave no room for one more agent in this one.As above.
pyfds-evac: error: Distribution '…': JuPedSim could not add an agent to the simulation (…).JuPedSim refused an agent at a position the sampler gave, for example for an unknown journey or stage or a model parameter it rejects.Read JuPedSim’s message in the parentheses; the spawn area is not too small.
ValueError: Unknown routing cost_model '…'; expected one of ('gate', 'additive')routing.cost_model in the scenario JSON is not one of the two names. The match is exact and case-sensitive: "Gate" fails. Raised with rerouting on or off.Write "gate" or "additive", or drop the key for "gate"; see Scenario JSON.
ValueError: Distribution '…' sets desired_speed=… and v0=…; desired_speed is an alias of v0, set one of them (or the same for desired_speed_distribution and v0_distribution, desired_speed_std and v0_std)A spawn area sets an alias and its v0* key to different values.Set one of the two, or give both the same value; see Scenario JSON.
ValueError: Unknown speed_law '…'; expected one of ('lund', 'fridolf')Python only: a SmokeSpeedConfig built with another speed_law. No command-line option or JSON key sets it.Use "lund" or "fridolf", in lower case.
pyfds-evac-gui needs the GUI extra, which is not installed (missing module '…'). Install it with: pip install 'pyfds-evac[gui]'pyfds-evac-gui without the gui extra.Run pip install "pyfds-evac[gui]", or uv sync --extra gui in a source checkout.
pyfds-evac-tui needs the TUI extra, which is not installed (missing module '…'). Install it with: pip install 'pyfds-evac[tui]'pyfds-evac-tui without the tui extra.Run pip install "pyfds-evac[tui]", or uv sync --extra tui in a source checkout.
IndexError: No slice with quantity '…' found in DIRA direct library call (FdsFedField.from_fds, ExtinctionField.from_fds, load_slice_sampler) on a case without that slice. run.py warns instead.Add the slice to the deck, or check the case with --inspect-fds first.

The cost_model and alias errors appear when the run starts, after the FDS output is read. --show-config prints Errors: none for such a deck (#571).

pyfds-evac init

CommandStatusMeaning
pyfds-evac init DECK.fds0the scenario is written and runnable
3written, but not runnable (no exit, no agents, too many agents for a spawn area), or runnable with an input dropped at error level
1nothing written: the deck cannot be read, an argument is wrong, or -o holds a scenario the importer did not write
pyfds-evac init DECK.fds --check0the deck has the extinction-coefficient, CO, CO2 and O2 slices and &TIME T_END
3at least one of them is missing (a ✗ line names it and gives the &SLCF line to add)
1the deck cannot be read, the floor cannot be chosen, or an argument is wrong

A plain init prints the same slice check, but its exit status ignores it. Each message, its cause and its fix are in Usage › Messages and what to do.

Warnings that change the result

Message starts withWhat happenedFix
FED is disabled for DIR: it has no CO slice …No gas FED: the result has no FED at all, not zero FED (#137).Add the CO, CO₂ and O₂ slices and the &REAC yields.
Heat FED is disabled for DIR: it has no TEMPERATURE slice.--enable-heat-fed on a case without temperature.Add &SLCF QUANTITY='TEMPERATURE'.
Smoke speed reduction is disabled for DIR: …No extinction slice; agents walk at clear-air speed.Add the SOOT EXTINCTION COEFFICIENT slice, or pass --constant-extinction.
Visibility falls back to clear air for DIR: …No extinction slice for sign legibility.As above.
Requested a '…' slice at z=… m but the nearest available … is at z=… mNo slice within 0.5 m of --smoke-slice-height; the run reads another height.Add slices at 1.6 m, or set --smoke-slice-height to a height the deck has. A slice within 0.5 m is used without a warning (#165).
--heat-… has no effect without --enable-heat-fed.A heat option without the heat dose.Add --enable-heat-fed, or drop the option.
--heat-fed-threshold … departs from ISO 13571:2012 …A separate heat threshold is set.Intended if you set it; the manifest records it.
Distribution '…' sets no pre-movement; using the FDS+Evac default, a constant 10 s.The spawn area has no pre-movement keys.Set use_premovement and the premovement_* keys (Scenario JSON).
pyfds-evac: warning: import_report.json marks this scenario not runnablepyfds-evac init wrote the folder as not runnable and lists why. The run goes on, since the folder may have been fixed by hand after init; a stale cause can still stop it later.Fix what the reasons name and import again, or edit the folder by hand (Start from an FDS deck).

Harmless log lines

  • WARNING:root:Module csv: [Errno 2] No such file or directory: …_hrr.csv (and …_steps.csv), followed by “The error can be safely ignored if not requiring the csv module”: fdsreader looks for CSV output the case does not have. The command line prints each such warning once per run.
  • Reroute debug: … lines: a trace of the rerouting pass, printed with --debug.
  • Heat FED is off; pass --enable-heat-fed to accumulate it.: the heat dose is off by default, as in FDS+Evac.

Terminal UI

Messages of pyfds-evac-tui. How the terminal UI works is on Terminal UI.

MessageCauseFix
PYFDS_EVAC_TUI_THEME='…' is not a theme; choose from evac-dark, solarized-lightThe environment variable names a theme that does not exist.Unset it, or set it to one of the two themes.
“Terminal is W×H; the TUI needs 80×24.”The terminal is smaller than 80 × 24 characters.Resize the window or zoom out. A run continues meanwhile.
“No assets/ folder here. Start the TUI in a folder that holds one …”The terminal UI started in a folder without assets/.cd into the unpacked example zip of the Quickstart and start again, or use the Open file tab.
“This example ships the FDS deck only. Run FDS first, or continue without fire”The example has no FDS output.Run FDS on the deck, or choose No FDS (clear air); see What your FDS case must provide.
“Could not inspect the FDS folder: … The run is still allowed; Review shows Level 1.”The folder could not be read as FDS output.Check that the folder holds the .smv file; then choose “Inspect FDS folder” in the palette (ctrl+k).
“The run stopped without a result (process exit N).”The run’s process crashed or was killed.t shows the end of child.log; the full log is in the run folder.
Nothing was copied after c or y (the message reads “Sent to clipboard (OSC 52). If nothing was copied, …”)The terminal does not support OSC 52: macOS Terminal, or tmux without set -g set-clipboard on.Select the command shown on Review, or press s to write command.sh and run.py.

Known pitfalls

  • The progress line counts planned agents. With flow spawning it can show more agents than the final summary (#279).
  • evacuation_time with incapacitated agents is the end of the run, not an exit time; see Outputs › Reading the results.
Last updated on