Knowledge base
MeshLesson 58 min read

How many cells do you actually need? The characteristic fire diameter D* in practice

Mesh resolution in FDS is set against the fire, not against the architectural drawing. Here is how to compute D*, turn it into a cell size and defend the choice in review — without burning core-hours for nothing.

The most common question at the start of an FDS project is “what mesh should I use?”, and the most common answer is “10 centimetres, that is what people do”. The trouble is that 10 cm is an excellent mesh for a 1 MW fire in a warehouse and a pointless one for a 10 MW fire in a car park, or for a 200 kW flame in a hotel room. Resolution in FDS is not a property of the building — it is a property of the fire you burn inside it.

The measure that sorts this out is the characteristic fire diameter, D*. Below: where it comes from, how to turn it into IJK in the &MESH namelist, where it stops being sufficient, and what each refinement really costs.

01

Resolving the fire, not the geometry

FDS solves fire as a large eddy simulation (LES): large flow structures are resolved directly, small ones are modelled. For the result to mean anything, the mesh has to resolve the plume structure — the combustion region, air entrainment and flame pulsation. If the whole flame fits into three cells, the solver has nothing to describe mixing with: temperature, velocity and soot production then come out of the sub-grid model rather than out of physics.

Hence the resolution criterion: what matters is not the cell size δx on its own but the ratio D*/δx — how many cells the characteristic size of the fire is spread across. The same 10 cm mesh gives D*/δx ≈ 10 for 1 MW and ≈ 24 for 10 MW: a solid working standard in the first case, and in the second an excess you pay for in compute time.

02

The formula and what sits inside it

D* = [ Q / (rho_inf * c_p * T_inf * sqrt(g)) ] ^ (2/5)

Q       [kW]          design fire heat release rate (HRR)
rho_inf = 1.204 kg/m3 ambient air density
c_p     = 1.005 kJ/(kg*K) specific heat of air
T_inf   = 293 K       ambient temperature
g       = 9.81 m/s2   gravitational acceleration

at normal conditions the denominator = 1110  ->  D* = (Q / 1110) ^ 0.4
Characteristic fire diameter — the definition from the FDS documentation

At normal conditions the denominator is constant at about 1110, so in practice you compute D* = (Q̇ / 1110)^0.4 with Q̇ in kilowatts. Everything else comes down to choosing one number: the design fire heat release rate.

03

What the numbers look like

The FDS documentation (User's Guide and Validation Guide) works with D*/δx values from 4 (coarse, exploratory) to 16 (fine, research grade). A practical starting point for design work sits around 10 — here is δx for three resolution levels:

Fire HRR Q̇D* [m]D*/δx = 4 (coarse)D*/δx = 10 (standard)D*/δx = 16 (fine)
1 MW0.960.240.0960.060
2.5 MW1.380.350.1380.086
5 MW1.830.460.1830.114
10 MW2.410.600.2410.151
Cell size δx [m] for typical design fire heat release rates

One thing here surprises people: a 10 MW fire does not need a finer mesh than a 1 MW fire — it needs a coarser one. A stronger fire is physically larger, so its structure fits into fewer, bigger cells. What really forces refinement is small fire sources and narrow geometry, not megawatts.

04

From δx to IJK: two rules when writing &MESH

The cell size from the table is a target, not an order. Put it through two filters before it reaches the input file.

  1. 01The geometry has to divide by δx. Cell faces should line up with walls, slabs and the edges of openings. FDS snaps geometry to the mesh anyway (OBST grows or disappears), so it is better to round δx to a value that divides your storey dimensions than to explain later where a wall 4 cm thicker came from.
  2. 02Cell counts should factor into 2, 3 and 5. The Poisson solver in FDS uses a fast transform and works efficiently when every number in IJK has the form 2^l · 3^m · 5^n. A prime in IJK (say 61) can slow the run noticeably for zero gain in accuracy.
  3. 03Keep cells as cubic as you can. Stretching a cell along one axis degrades the plume; an aspect ratio beyond roughly 2:1 should be a deliberate compromise, not a default.
&MESH IJK=60,48,36, XB=0.0,6.0, 0.0,4.8, 0.0,3.6 /

! 60 = 2^2 · 3 · 5      6.0 / 60 = 0.10 m
! 48 = 2^4 · 3          4.8 / 48 = 0.10 m
! 36 = 2^2 · 3^2        3.6 / 36 = 0.10 m
! 103,680 cells in total, cubic cells
A 6.0 × 4.8 × 3.6 m room, 1 MW fire, δx = 0.10 m (D*/δx ≈ 10)

Splitting the model across several meshes (parallel MPI runs) adds a third rule: meshes must meet cell to cell. Put the boundary where the flow is calm — it should not cut through the plume, a supply jet or a smoke vent.

&MESH ID='M1', IJK=60,48,36, XB= 0.0, 6.0, 0.0,4.8, 0.0,3.6 /
&MESH ID='M2', IJK=60,48,36, XB= 6.0,12.0, 0.0,4.8, 0.0,3.6 /
Two conforming meshes — the boundary sits away from the fire
05

What D* does not cover

The D* criterion is about the fire. Models contain elements whose characteristic size can be smaller than the plume — and then it is those, not the fire source, that set the mesh:

  • openings and gaps (a door left ajar, grilles, constrictions) — the opening itself needs several cells, otherwise the flow through it is fiction;
  • high-velocity supply jets and air curtains — the jet has to be resolved so it does not smear out in the first cell;
  • the near-wall layer when measuring surface temperatures (BNDF) and for buoyancy-driven smoke exhaust under the ceiling;
  • thin partitions and glazing — an object thinner than a cell will be rounded up to the cell size anyway.
06

Grid sensitivity study — what a reviewer expects

The D*/δx value on its own is not proof of correctness — it is a starting point. The argument that holds up in review is showing that the result stopped depending on the mesh. The minimum honest scope of such a study:

  • run the scenario on the target mesh and on a refined one (typically δx and 0.5·δx in the fire region);
  • compare the quantities your assessment rests on — visibility at 1.8 m, temperature in the evacuation plane, smoke layer height — not the “general look of the smoke” in Smokeview;
  • document the difference numerically and state whether it changes compliance with the criterion: a few per cent with margin to the threshold is an argument, 30% on a borderline result is not;
  • record the adopted D*, δx and the resulting D*/δx in the report, along with the cell count of each mesh.
07

The price of resolution: why “twice as fine” costs ~16× more

Halving the cell size gives eight times as many cells (three dimensions). On top of that the CFL stability condition ties the time step to the cell size, so a smaller cell forces roughly twice as many time steps for the same second of simulated time. Together: about a sixteenfold increase in compute cost per refinement level.

VariantδxCell countRelative cost
Target0.10 m103,680
Refined0.05 m829,440≈ 16×
The same model at two resolution levels

That is why refining “just in case” across the whole domain is the most expensive way of buying peace of mind. The cheaper and better-defended strategy is a mesh sized to D* throughout the model, with local refinement exactly where the result is decided: above the fire, in openings and around the measurement points.

Got a .fds file and want to know how long it will take and what it will cost at this mesh?

Check it in the estimator

Tags

MeshD*FDSCompute cost