Features · Model and deck

The gap nobody checks is between the model and the file.

You describe a building. Software turns that description into a solver input file. The solver reads the file. Three artefacts, each internally consistent — and no conventional workflow ever asks whether they describe the same building.

The seam

Both halves can be right and the whole still wrong.

In the run that started all of this, the model declared sixteen leakage paths. The deck was emitted. The model validated. The deck was valid input. Every check passed. And the leakage in that deck did nothing at all, because a solver needs three separate things to be present before a leak path exists, and one of them was missing. Miss any one and the leakage is silently ignored — no warning, no error, just a sealed building and a confident answer.

The check that was supposed to catch this could not. It read whether the model declared leakage, which it did. It never read the file the solver was given. It reported "conforms" on a run whose leakage was inert.

A conformance check that reads the model instead of the deck can only ever confirm that the model agrees with itself.

It now reads what the solver reads. Declared leakage paths are reconciled against the zones, areas and surfaces actually present in the emitted file, and against whether those surfaces were ever applied to anything. A leak surface that exists but is attached to no obstruction is dead, and dead surfaces are named individually.

What reconciliation covers

Line by line, in both directions.

Missing means the model asked for it and the deck has not got it. Differs means both have it and they do not agree. Either state blocks.

Declared in the modelReconciled against the deck
Leakage paths Zone definitions, leak areas, leak surfaces, and whether each surface reached an obstruction. Paths to outside air are distinguished from internal ones — a building whose leakage is all internal is sealed, however many paths it has.
Openings Declared clear area against the area actually emitted after the grid snapped it, per opening, with closed doors excluded because zero is correct for them.
Ventilation systems Fan duty, damper free area and which systems the mechanical checks covered — stated explicitly, because an empty result reads as "checked, nothing wrong".
Design fire Burner footprint against declared fire area. Solvers burn heat-release-per-area multiplied by the snapped footprint, which is not the number you typed.
Controls and devices Every declared control has a device in the deck, and every device that was supposed to fire during the run actually did.
Glazing and failure criteria Temperature and, where specified, pressure failure — and which of the two the assessment was actually run on.
Why a declarative model

You describe the building, not the mesh.

Ashbeck takes a declared building — levels, spaces, openings, shafts, systems, leakage, a design fire, an assessment window — and derives everything else. That is not a convenience feature. It is what makes the checks possible. A hand-built solver input file has no declared intent to check against; the file is the intent, so any error in it is invisible by construction.

It also means the same building can be re-solved at a different resolution, with a different measure applied, or against a comparative baseline, without anyone rebuilding geometry by hand and introducing a fresh set of transcription errors.

The model is validated before anything is meshed. References to spaces that do not exist, systems serving nothing, openings with no shared face between the two spaces they claim to connect — all of it fails at the description stage, where it is cheap, rather than after a run.

Fingerprinting

Every document can be traced to the exact model that produced it.

The emitted deck carries a fingerprint of the model it came from, and the report carries both. If someone asks in eighteen months whether the issued document corresponds to revision C or revision D of the scheme, that is a lookup rather than an argument.

This matters more than it sounds. The most common way a competent team ships a wrong document is not a modelling error — it is issuing the right analysis of the wrong revision.

Bring us a model you do not trust.

The most useful demonstration we can give is on a scheme where something has already gone slightly wrong and nobody can find it. That is the case this was built for.