Skip to content

LEAK_PATH silently disables a fixed-temperature (TMP_FRONT) wall boundary condition #16337

@ManuelOsburg

Description

@ManuelOsburg

LEAK_PATH silently disables a fixed-temperature (TMP_FRONT) wall boundary condition

FDS version: FDS-6.11.0-0-g369a20b-release

Summary

When LEAK_PATH is added to a &SURF that defines a fixed-temperature boundary condition (TMP_FRONT with no MATL_ID — i.e. the default/INERT-type wall), the fixed-temperature condition is silently dropped on every face that has leakage outflow. There the surface temperature is no longer held at TMP_FRONT; it floats up to the adjacent gas temperature and the convective heat flux goes to zero, i.e. that face behaves adiabatically. Because the zone-leakage outflow is spread over the whole leak surface, the wall's role as a fixed-temperature heat sink is largely (in a pressurized compartment, essentially entirely) defeated — even though the leakage mass flow is negligible.

A surface that defines its thermal behaviour through MATL_ID (1-D heat conduction) with the same LEAK_PATH is not affected — conduction still works normally.

No warning or error is printed.

This matters because the canonical way to model envelope leakage in FDS is to put LEAK_PATH on the bounding wall/floor/ceiling surfaces; if those surfaces are also meant to be fixed-temperature (cold) walls, they silently become adiabatic.

Minimal reproduction

Two input files, identical except for one line (LEAK_PATH=1,0, on the wall surface). A 50 kW fire in a closed 3×3×3 m compartment; the walls are a fixed-temperature surface TMP_FRONT=20 °C; a pressure zone with a small leak is present in both.

issue_no_leak.fds (control — wall is NOT a leak path):

&HEAD CHID='issue_no_leak'/
&MESH ID='M1', IJK=15,15,15, XB=0.0,3.0,0.0,3.0,0.0,3.0/
&TIME T_END=120.0/
&MISC TMPA=20.0, SIMULATION_MODE='LES'/
&ZONE ID='Z1', XYZ=1.5,1.5,1.5, LEAK_AREA=0.001, LEAK_PRESSURE_EXPONENT=0.65, LEAK_REFERENCE_PRESSURE=50.0/
&REAC ID='PROPANE', FUEL='PROPANE', SOOT_YIELD=0.01, RADIATIVE_FRACTION=0.35/
&SURF ID='WALL',
      DEFAULT=.TRUE.,
      TMP_FRONT=20.0/
&SURF ID='FIRE', HRRPUA=50.0, RAMP_Q='RQ'/
&RAMP ID='RQ', T=0.0,F=0.0/
&RAMP ID='RQ', T=30.0,F=1.0/
&RAMP ID='RQ', T=120.0,F=1.0/
&VENT ID='BURNER', SURF_ID='FIRE', XB=1.0,2.0,1.0,2.0,0.0,0.0/
&DEVC ID='GAS_UPPER', QUANTITY='UPPER TEMPERATURE', XB=1.5,1.5,1.5,1.5,0.0,3.0/
&DEVC ID='WALL_T',    QUANTITY='WALL TEMPERATURE', XB=3.0,3.0,0.0,3.0,0.0,3.0, STATISTICS='SURFACE INTEGRAL'/
&DEVC ID='WALL_QNET', QUANTITY='NET HEAT FLUX',    XB=3.0,3.0,0.0,3.0,0.0,3.0, STATISTICS='SURFACE INTEGRAL'/
&TAIL/

issue_with_leak.fds is identical except the wall surface gains one line:

&SURF ID='WALL',
      DEFAULT=.TRUE.,
      LEAK_PATH=1,0,
      TMP_FRONT=20.0/

Expected vs. observed

TMP_FRONT = 20 °C in both cases. All values averaged over t = 90–120 s.

Primary evidence — global gas-phase energy budget (*_hrr.csv, no surface devices involved). These are the gas-phase source terms; negative = the gas loses heat to the walls / by radiation:

case Q_RADI Q_CONV Q_COND wall+radiation loss gas (upper layer)
issue_no_leak (control) −23.1 0.0 −20.9 −44.0 kW 89.6 °C
issue_with_leak −13.6 −9.6 −0.5 −23.6 kW 136.4 °C

Adding LEAK_PATH to the (identical) fixed-temperature wall nearly halves the heat the gas loses to the envelope (44 → 24 kW) and the compartment runs ~47 K hotter — even though the leakage mass flow itself is negligible.

Corroboration — surface quantities on the east wall (STATISTICS='SURFACE INTEGRAL'; the WALL TEMPERATURE integral ÷ 9 m² gives the area-mean):

case wall surface T net surface flux
issue_no_leak 20.0 °C (pinned at TMP_FRONT, correct) +6.3 kW (cold sink)
issue_with_leak 131.7 °C (floated to ≈ gas temp) +1.1 kW (≈ adiabatic)

Expected: both walls held at 20 °C and act as a cold sink; the LEAK_PATH case should differ only by the (negligible) leakage flow.
Observed: adding LEAK_PATH lets the TMP_FRONT surface float toward the gas temperature on every cell that has leak outflow, so it stops removing heat. (The effect is per-cell: only faces with outflow U_NORMAL>0 are affected, so the loss is reduced rather than going exactly to zero here. In a pressurized compartment fire essentially the whole envelope is in outflow during the hot phase, so the fixed-temperature/INERT walls become effectively adiabatic.)

Notes / scope

  • Trigger isolated to LEAK_PATH on the SURF. A &ZONE with leakage but no LEAK_PATH on the fixed-temperature surface behaves correctly (wall pinned at 20 °C).
  • ADIABATIC=.TRUE. and MATL_ID surfaces with the same LEAK_PATH behave as expected; only the fixed-temperature (TMP_FRONT/INERT, no MATL) surface is affected.
  • No diagnostic is emitted, so the effect is easy to miss in a large model.

Apparent cause in the source

(Line numbers from Source/ at commit e29dd78; behaviour reproduced with the 6.11.0-g369a20b release binary.)

Pressure-zone leakage is applied as a small HVAC outflow distributed uniformly over every LEAK_PATH surface cell, so those cells carry a nonzero B1%U_NORMAL (outflow, >0, while the zone is over-pressured). In wall.f90, SURFACE_HEAT_TRANSFER, the SPECIFIED_TEMPERATURE case:

IF (B1%U_NORMAL>TWENTY_EPSILON_EB) THEN
   B1%TMP_F = B1%TMP_G                ! any outflow -> surface temp := gas temp
ELSEIF (SF%TMP_FRONT>0._EB) THEN
   B1%TMP_F = TMP_0(BC%KKG) + EVALUATE_RAMP(...)*(SF%TMP_FRONT-TMP_0(BC%KKG))
ELSE
   B1%TMP_F = TMP_0(BC%KKG)
ENDIF
DTMP = B1%TMP_G - B1%TMP_F
B1%Q_CON_F = B1%HEAT_TRANS_COEF*DTMP   ! -> 0 when DTMP=0

TWENTY_EPSILON_EB = 20*EPSILON ≈ 4.4e-15, so an arbitrarily small leak outflow trips the first branch on every leak cell: TMP_F is set to the gas temperature, the convective flux DTMP goes to zero, and the face radiates at gas temperature — i.e. the fixed-temperature wall becomes adiabatic.

This U_NORMAL>0 ⇒ TMP_F=TMP_G branch is appropriate for a resolved supply/exhaust vent (one cannot impose a temperature on gas leaving the domain), but pressure-zone leakage is an explicitly subgrid flow smeared over the whole surface; tripping it discards the wall thermal BC. It also contradicts the documented modeling assumption for pressure-zone leakage (User Guide §10.3.2: the leaking gas is assumed to equilibrate "to the same temperature as the wall surface", which presupposes the wall keeps its specified temperature).

Notably the deposition routine already guards against this same spurious leak velocity (wall.f90, CALC_DEPOSITION: IF (ANY(SFD%LEAK_PATH>0)) U_NORMAL=0), but the SPECIFIED_TEMPERATURE thermal BC does not.

Suggested fix

Ignore the leakage-induced normal velocity when selecting the fixed-temperature branch, mirroring the deposition guard, e.g.:

IF (B1%U_NORMAL>TWENTY_EPSILON_EB .AND. .NOT.ANY(SF%LEAK_PATH>0)) THEN
   B1%TMP_F = B1%TMP_G
ELSEIF (SF%TMP_FRONT>0._EB) THEN
   ...

(or otherwise exclude the subgrid leak component of U_NORMAL from this test).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions