AI · Architecture · Fire engineering · Free source code

How I use Opus 5.5 to test a stadium for fire.

I gave Claude Code a stadium model and 1 prompt. It came back with a 30 second film: a fire in the west stand, 33,365 people getting out, and the smoke filling the roof.

Chiang Ning · chiangning.net · 23 Oct 2026
The 30 second film: 1 clock from ignition, 3D model on the left, plan diagram on the right.

A fire engineer's report gives you a number for the evacuation time. It rarely shows you where that number comes from: which exits get crowded, who waits, and for how long.

I wanted to see it. So I asked for a film. These are my prompts, what came back, what I rejected, and what it showed about the exits. A few people asked for the code, so the whole pipeline is free to download below.

Download the source code (zip, 72 KB) p390-stadium-fire.zip · Python pipeline · three.js film · README · free, no gate
In this article
  1. I gave it a model and 1 prompt
  2. The first version split the problem in 2
  3. Then I watched how people behaved
  4. What it showed about the exits
  5. Then I made it readable
  6. The source code
  7. What I would tell you before you copy it
The stadium in plan with the fire in the west stand and the crowd leaving

01I gave it a model and 1 prompt

The model was a SketchUp stadium I downloaded. This was the whole brief. (I've fixed typos in my prompts. Otherwise they're exactly as I typed them.)

new P folder. copy in this model. the idea is to create a 3D animation of this stadium for fire engineering analysis. 1. egress path: number of people exiting, where are the pinch points etc. Visualised using this 3D model from plan view. You can actually see people exiting and therefore identify the pinch area. 2. smoke simulation: visualise how smoke exhaust will work in the event of a fire. 16:9, 2 panels. Left panel is the 3D, takes up 2/3 of the screen. Right panel is a floor plan diagram showing a coloured diagram of egress, then smoke.

I used Claude Code running Opus 5.5 for all of it. It read the model before doing anything: 33,365 seats, 68 vomitories in 2 rows, a roof that rises from about 23 m at the inner edge to 26 m at the back, with an open oculus over the pitch.

Then it built 2 models of its own. A crowd model, where every person walks from their seat along the row, down the aisle and through a vomitory to 1 of 16 gates. And a smoke model, where smoke from the fire spreads under the roof like water poured upside down.

02The first version split the problem in 2

The first cut was 15 seconds of evacuation, then 15 seconds of smoke. It was correct and it told 2 separate stories. My note:

combine them. I want to see the fire location and then how people run away from the fire.

So it became 1 scenario on 1 clock. A fire starts in the upper west stand and grows to 5 MW. The 3 vomitories within 15 m of it are lost. Everyone else in the bowl has to find another way out.

03Then I watched how people behaved

This is where most of my prompts went. The numbers looked fine. The people didn't.

something weird, those people are just standing around the fire and waiting for others to evacuate. Naturally they would want to go away ASAP.
naturally those away from the fire source would be a bit delayed. Information takes time to register.
I think you need to consider that there are 2 alternative ways of escape. People in this situation will naturally go to the next exit.

Each one was a bug in behaviour, not in maths. People beside the fire now start moving in 10 to 30 seconds. People across the bowl wait for the alarm, 30 seconds to 4 minutes. Anyone stuck in a long queue switches to the next exit they can see.

I also asked it to bring in a second opinion: an agent briefed as an expert fire engineer, to review the work. It flagged that the first reaction times were too fast, that the fire and no-fire runs came from different versions of the model, and that the on-screen wording could mislead a client. All 3 were fixed.

People moving away from the fire in the west stand

04What it showed about the exits

This is the part worth saving. With the behaviour fixed, the film answers 4 questions a design team should ask.

Where is the fire, and how fast does it grow? A t² fast fire in the upper west stand, reaching 5 MW at about 5:30. That's an assumed design fire, not a measured one.

Which exits are affected? West 3, 4 and 5 are lost. Their people turn to the vomitories either side, so West 9 ends up with 831 people through one 2.2 m opening, and it's the last exit to clear, at 11:53.

Queues at the vomitories next to the lost exits

How long does it take, and what does the fire cost? The bowl clears in 9:55 with no fire, and 11:54 with it. 3 lost vomitories cost about 2 minutes for the whole stadium.

Who is challenged most? The lower tier. You can see it in the plan: the lower rows have no vomitories of their own, so they climb to the gangway and queue behind the upper tier. Their median time to leave the bowl is 4:43, against 3:26 for the upper tier. I spotted this watching the film before the numbers showed it:

your evacuation should look at how each floor evacuates, because it looks like the ground floor evacuation is slower
The lower tier queueing behind the upper tier at the gangway

So I asked for 1 design test: give the lower tier its own exits at the front, onto the pitch. With the fire, the bowl then clears in 9:18 instead of 11:54, and the lower tier's median drops from 4:43 to 2:52.

Comparison with pitch-side exits added for the lower tier

On smoke, the roof does its job. Because it rises to the back, smoke collects over the top rows, then spills out under the inner edge into the open roof from about 3:15. Over 20 minutes the smoke stays at least 3.3 m above the top seating row. The NFPA 101 standard for smoke-protected seating asks for 1.83 m.

Section through the fire showing the smoke layer under the roof

05Then I made it readable

The last rounds were about the film, not the analysis. A slow-motion moment where small call-out boxes explain what's happening beside the fire. An escape-time map where every seat is coloured by when its occupant got out. A section with a dimension from the smoke to the top row.

I also cut things. A fire brigade arriving to put the fire out:

cut out the fire fighting, it looks stupid.

And a coloured smoke map I couldn't read:

I'm not sure what this shot is showing. Remove if not adding more info.

06Where the judgement sat

AI did the making: reading the model, both simulations, the film, the music, and a fire engineering review of its own work. It didn't notice that people were waiting beside the fire, that the lower tier looked slow, or that a shot said nothing. I did. Most of my prompts were 1 line about something that looked wrong.

07The source code

The zip has everything Claude Code wrote for the film:

It doesn't include the stadium model (a third-party SketchUp model, not mine to share), the low-poly people pack (download it yourself), or the 500 MB of generated data, which the scripts rebuild from your own model. START-HERE.md in the zip says how to run it.

  1. Download the zip and open the folder in Claude Code.
  2. Add your own stadium as a .dae file.
  3. Ask it to work through the README with your model, and name the fire location.
  4. Watch the film and tell it where people look wrong.

The egress and smoke numbers are tuned to this stadium: vomitory positions, fire location and roof heights. Expect to adjust them for yours.

Download the source code (zip, 72 KB) p390-stadium-fire.zip · Python pipeline · three.js film · README · free, no gate

08What I would tell you before you copy it

This is an indicative study, not a fire engineering report. The crowd and smoke models are simplified and haven't been checked against published flow rates. The fire size, reaction times and exit widths are assumptions. A real performance solution needs a fire engineer, certified tools and the actual drawings.

The lower tier finding comes from this model's geometry. It needs checking against the real drawings before anyone acts on it.

What it's good for is the conversation before that: seeing which exits matter, where the queues form, and what a design change might buy you. Give it your model, name the fire location, and ask it to show you where people get stuck.

1 model. 1 prompt. Where people get stuck.

Stadium model: a downloaded third-party SketchUp model, not included in the download. Low-poly people: Low Poly People Free Sample Pack. Music: original, synthesised for this film.

Built with Claude Code (Opus 5.5) and three.js. Crowd and smoke models are my own indicative studies, not certified egress or CFD software.

Chiang Ning · chiangning.net