Geometry
A model made to be built is not a model made to be solved.
An authored building model exists to describe construction. It carries layers, joints, fabrication tolerances, and elements that are there so that somebody can build them. A simulation model exists to be solved. It wants closed volumes, surfaces that are genuinely shared between two spaces rather than merely touching, and no detail finer than the physics can see.
These two are not versions of each other, and the gap between them is not a defect in either. Getting from one to the other is a translation — and like every translation, it needs a stated criterion for what is allowed to change.
A simplification is legitimate when nothing the physics can see has changed.
Which makes the failures precise rather than a matter of taste. A simplification is illegitimate when it opens the envelope, creates an overlap that was not there, moves material somewhere it does not belong, or leaves the geometry ambiguous enough that two careful readers would get two different answers.
Notice what is not in that list: whether the author drew it that way. Authored intent is a reason to look closely at something. It is not, by itself, a reason to keep it in a model built to answer a different question.
What actually goes wrong
Across real projects the same three families come back, and they behave very differently.
- Gaps. Two elements that visually meet but leave a thin void between them. A solver does not see a drawing convention; it sees an opening, and the building leaks through something nobody drew.
- Duplicates and overlaps. The same wall present twice, or two elements sharing volume. Energy gets counted twice; a mesh generator produces a surface that faces both ways.
- Detail below resolution. Sub-millimetre bends and offsets that are meaningless to the physics and fatal to meshing, because they survive simplification as degenerate slivers rather than disappearing cleanly.
Where translation has to stop
Some conditions have no single correct reading. Two walls that cross may be an error or a deliberate detail. A space with no enclosing boundary may be an omission or a shaft. Choosing silently is how a pipeline produces a model that looks right and is quietly wrong — and a quietly wrong model is worse than none, because nobody audits a number that looks reasonable.
So the correct output, in those cases, is the ambiguity itself: named, located, and handed back. Automatic correction belongs only where exactly one repair is geometrically possible.
Resolution
Where you measure decides what you learn.
Every result is reported at some resolution, and the choice is usually made without being noticed — a building total, an annual figure, a floor average. Averaging looks like a formatting decision. It is a modelling decision, and it can reverse the conclusion.
The clearest case is wind-driven ventilation. Rank the prevailing wind directions by total airflow through the building and one direction wins. Rank the same directions by the air change rate achieved in each individual room, and a different one does — because the winner at building scale is often the direction that lets air short-circuit between two well-placed openings without ever entering the rest of the plan.
The general rule follows directly: report at the resolution of the decision being made. If the question is whether one classroom will be comfortable in September, a building average cannot answer it, however precisely it is computed.
Benchmarks
A predicted number means nothing on its own.
An energy intensity, a reverberation time, a carbon figure: each becomes useful only against a reference. And there are two very different references, answering two very different questions. A code target says whether the design is permitted. Measured building stock says whether it is ordinary. Confusing them produces confident statements about the wrong thing.
When the comparison is against measured stock, two methodological choices decide whether it holds up under scrutiny.
- Percentiles belong on the records, not on a curve. Survey data comes with sampling weights, and percentiles should be computed directly from the weighted records. Fitting a smooth distribution first makes a nicer chart and quietly inserts an assumption nobody asked for.
- Thin categories get suppressed, not smoothed. Because weights vary, the count of surveyed buildings behind a category overstates how much that category can support. The honest move is to compute how much information is really there and, where it is too little, withhold the precise figure rather than publish false precision.
Measured stock describes buildings as operated — with their vacancies, their overridden setpoints and their broken controls. A new design compared against it is being compared to reality, not to an intention. That is usually the comparison you want, and it is never the same question as compliance.
Reproducibility
A result you cannot reproduce is an opinion.
Engineering results get challenged. Not usually maliciously — a reviewer asks where a number came from, a design changes and the study has to be re-run, a year passes and somebody needs the same analysis on a similar building. A result that cannot be regenerated exactly cannot survive any of that.
Which makes reproducibility a design requirement rather than housekeeping. Three things follow from it, and all three are unglamorous.
- The same input gives the same output. On any machine, in any order. Anything that quietly varies between runs — an iteration order, an unseeded random draw, a floating tolerance — is a defect, even when the numbers look close enough.
- Versions are named. A result is reproducible only against a stated version of every engine that touched it. Solvers change between releases, and they should — but then the result belongs to a version.
- What gets checked is what gets produced. Verification has to run on the artefact that will actually be used, from a fresh run — never on an intermediate state, and never on the run that produced the fix. It is remarkably easy to prove that a problem is solved using the one execution in which it happened not to occur.
Language models
Useful at the edges, disqualified in the middle.
Language models are genuinely useful in engineering software, and they are most often put exactly where they do the most damage. The line we draw is simple: they may help a person understand or describe a result, and they may never participate in producing one.
Appropriate
- Turning a diagnostic into a sentence someone can act on.
- Drafting the narrative sections of a report from computed results.
- Translating a plain-language request into a run configuration, shown for confirmation before anything runs.
Disqualified
- Interpreting, repairing or simplifying geometry.
- Meshing, solving, or any part of the numerical chain.
- Post-processing, or producing any number that reaches a report.
- Deciding whether a model is sound enough to run.
The reason is the section above. A component that can answer differently on a second run breaks reproducibility for everything downstream of it, and reproducibility is what makes the rest of the work defensible.