What your FDS case must provide
Read this before pointing --fds-dir at a case for the first time.
pyFDS-Evac never runs FDS. It reads the output of a finished FDS run. A deck written for some other purpose usually will not work as-is: it has to be told to dump the specific slices this tool samples.
The slices
&SLCF PBZ=1.6, QUANTITY='EXTINCTION COEFFICIENT' /
&SLCF PBZ=1.6, QUANTITY='VOLUME FRACTION', SPEC_ID='CARBON MONOXIDE' /
&SLCF PBZ=1.6, QUANTITY='VOLUME FRACTION', SPEC_ID='CARBON DIOXIDE' /
&SLCF PBZ=1.6, QUANTITY='VOLUME FRACTION', SPEC_ID='OXYGEN' /
&SLCF PBZ=1.6, QUANTITY='TEMPERATURE' /
&DUMP DT_SLCF=1.0 /Nothing here is dumped by default. FDS writes only what the deck asks for.
For the default species (soot), FDS records the extinction-coefficient
slice internally as SOOT EXTINCTION COEFFICIENT, and that is the exact
quantity name load_slice_sampler looks up
(fds-sampling.md).
| Slice | Feeds | If absent |
|---|---|---|
| Extinction coefficient | smoke-speed, visibility gating, GUI smoke layer | smoke speed reduction is switched off and visibility falls back to clear air; the run continues (see below). --constant-extinction restores smoke speed with a uniform K; visibility stays clear air |
| CO and CO2 and O2 | FED toxic dose | FED is switched off and the run continues (see below) |
| TEMPERATURE | heat FED (ISO 13571:2012 Eq. (9) or (10)), only with --enable-heat-fed | heat FED is switched off and the run continues (see below) |
TEMPERATURE at --heat-layer-height | the hot-layer temperature, only with --heat-regime layer | the run stops |
| INTEGRATED INTENSITY | radiant flux f·(U − 4σT_s⁴), only with --heat-radiant-source integrated-intensity; at the TEMPERATURE slice z, covering the same area | ValueError: the run stops (also for another z, or an agent inside only one of the two slices) |
It is all three gases or none of them; there is no partial FED. TEMPERATURE
is independent of that gate — it needs neither CO/CO2/O2 nor any &REAC
yield to work (see below), so a case can have heat FED without toxic FED
or vice versa.
EXTINCTION and EXTINCTION COEFFICIENT are two unrelated gas-phase output
quantities (FDS User Guide Table 22.4) — don’t confuse them. EXTINCTION
(Sec. 22.10.29) is a combustion-suppression flag with no units: 0 if the
extinction routine did not prevent combustion, 1 if it did, -1 if there was
no fuel or oxidizer. EXTINCTION COEFFICIENT (Sec. 22.10.5) is the light
extinction coefficient K [1/m] that the smoke-speed model actually needs.
If your deck has QUANTITY='EXTINCTION' where you meant the extinction
coefficient, fix it to QUANTITY='EXTINCTION COEFFICIENT' and rerun FDS.
Declaring a slice is not enough
The species also has to exist in the run. Under simple chemistry, OXYGEN,
NITROGEN, WATER VAPOR and CARBON DIOXIDE are always present, but
CARBON MONOXIDE only exists if CO_YIELD is set on &REAC, and SOOT only
if SOOT_YIELD is set. A plain &REAC FUEL='PROPANE' / cannot produce FED no
matter what &SLCF lines you add. Fix it at the source:
&REAC FUEL='CABLE_FUEL', C=3, H=5, O=0, N=1,
SOOT_YIELD=0.172, CO_YIELD=0.063, HCN_YIELD=0.006,
HEAT_OF_COMBUSTION=16400 /That is the t_junction reaction. Yields are fuel properties: take them from
your material’s data rather than copying these.
TEMPERATURE is the one exception: it is a core solved gas-phase variable in
every FDS run, not a species yield, so it needs no &REAC setup at all — the
&SLCF line above is sufficient on its own.
Silent failure modes
FED disabled. If CO, CO2 or O2 is missing, pyFDS-Evac carries on with
smoke speed only. If the heat FED is off too, the result has no FED at all:
fed_history is None, metrics has no fed_max, and
--output-fed-history writes no file. If the heat FED runs but the gas FED
does not, the FED history exists and its fed_cumulative column is all
zero, which looks exactly like a survivable fire. Check metrics["fed_max"],
or the warning, which is logged every time
(#137):
FED is disabled for <dir>: it has no CO slice, and all three of CO, CO2 and
O2 are needed. ...Heat FED disabled. The heat FED track is off unless --enable-heat-fed
is given. With it, the same applies as for the gases: if there is no
TEMPERATURE slice, heat FED is off, metrics has no heat_fed_max, and
any heat FED column in the history reads zero:
Heat FED is disabled for <dir>: it has no TEMPERATURE slice. ...Wrong slice height. --smoke-slice-height (default 1.6 m, FDS+Evac’s HUMAN_SMOKE_HEIGHT) is a
preference, not a filter: a case with one slice of a quantity uses it whatever
its height, and a mismatch never fails the run. A case you inherit often
carries a single slice at whatever height its author chose, so you can end up
sampling floor-level CO for standing agents. A warning fires only past 0.5 m.
The common case, a request of 1.6 m on a deck with a single slice at 2.0 m, is
0.4 m away and gives no warning
(#165). Beyond
0.5 m you see:
Requested a 'SOOT EXTINCTION COEFFICIENT' slice at z=0.50 m but the nearest
available in <dir> is at z=2.00 m ...Do not ignore these warnings. Nothing else will tell you.
Failure modes
| Symptom | Cause |
|---|---|
Warning: Smoke speed reduction is disabled for <dir>, and Visibility falls back to clear air for <dir> | No SOOT EXTINCTION COEFFICIENT slice: the deck never declared &SLCF QUANTITY='EXTINCTION COEFFICIENT', or the species was never tracked. Agents walk and see as in clear air. |
IndexError: No slice with quantity '...' found in <dir> | A direct library call on a case without that slice: the deck never declared that &SLCF, or the species was never tracked. |
Warning: FED is disabled for <dir> | CO, CO2 or O2 is missing. Check CO_YIELD on &REAC. |
Warning: Heat FED is disabled for <dir> | No TEMPERATURE slice. Add &SLCF QUANTITY='TEMPERATURE' — no &REAC change needed. |
| FED is zero everywhere and nobody is incapacitated | Either genuinely survivable, or FED never ran. Check for the warning above before concluding the former. |
ValueError: Point (x, y) is outside the sampled FDS slice domain | Walkable area extends past the slice extent. |
| Warning: requested slice at z=A, nearest is z=B | Your case has no slice near the height you asked for. |
Errors from the command line itself (wrong --fds-dir, conflicting flags)
are listed on Troubleshooting.