---
title: "3.677 against a textbook 3.657, and an agent that said which digit not to trust"
url: "https://tryreynolds.com/studies/laminar-heated-pipe"
description: "Heat transfer into laminar pipe flow has an exact asymptote that every heat-transfer textbook prints on the same page."
---

**[Reynolds](https://tryreynolds.com)** is agentic CFD, built by
**[InviscidAI](https://inviscidai.com)** and backed by Y Combinator, Winter 2026 batch.
The agent is open source under the MIT licence at
[github.com/InviscidAI/OpenReynolds](https://github.com/InviscidAI/OpenReynolds).
Using it requires no OpenFOAM knowledge.

This is the agent-readable Markdown twin of https://tryreynolds.com/studies/laminar-heated-pipe. It lives at https://tryreynolds.com/studies/laminar-heated-pipe.md, and
[tryreynolds.com/llms.txt](https://tryreynolds.com/llms.txt) indexes every one of them.

# 3.677 against a textbook 3.657, and an agent that said which digit not to trust

Heat transfer into laminar pipe flow has an exact asymptote that every heat-transfer textbook prints on the same page. Reynolds landed on it to better than a percent, and then volunteered, without being asked, that its third significant figure depended on how it had measured rather than on what it had solved.

RUN 12VALIDATIONHEAT TRANSFERAUGUST 202620260829-052318-8511

- **Asked**: “Laminar flow in a heated circular pipe, Re = 100, constant wall temperature, air. I want the fully developed Nusselt number so I can check it against 3.66. Axisymmetric wedge is fine.”
- **Run**: simpleFoam then scalarTransportFoam, steady, laminar · 6,000 cells · 1 core · 43 seconds of solve
- **Result**: Nu = 3.677 against the analytic 3.657: 0.55%
- **Fully developed Nusselt number**: 3.677 against the analytic 3.657: 0.55% high
- **Velocity profile**: matches the analytic parabola to better than 0.2%
- **Centreline-to-mean velocity**: 2.000, the exact Poiseuille ratio
- **Stability along the pipe**: Nu constant to ±0.1% from 10 to 14.4 diameters
- **Cost**: 37 s of flow solve plus 6 s of energy solve, on one core

![Local Nusselt number decaying from the pipe inlet onto the textbook fully-developed value of 3.657](https://tryreynolds.com/assets/pipe-nu-BzewCWRi.png)

Figure 1 The Graetz curve: heat transfer is enormous where the cold core first meets the hot wall, then decays as the thermal boundary layer fills the pipe. From about six diameters in it is flat, sitting on the analytic 3.657 (dashed). Reading the flat part is what gives 3.677.

## The number, and what a half-percent error looks like

Push fluid slowly down a heated pipe and far enough from the inlet the heat transfer stops depending on where you measure it. That plateau is a pure number, 3.657 for a constant-temperature wall, derived analytically by Graetz in the 1880s and printed in every heat-transfer text since. It is not a measurement, so there is no experimental band to aim at.

Reynolds got 3.677. That is 0.55% high: about half of one percent, or two parts in four hundred. Figure 1 is what it looks like: the computed curve falling out of the entrance region and settling onto the dashed analytic line so closely that the flat part of the curve and the line are hard to separate.

## It measured in the right place, which is most of the difficulty

The 3.657 asymptote only applies once the temperature profile has stopped developing, so the useful question is not what number came out but whether it was read where the number means anything. The agent worked that out before solving: the thermal entrance length here is about 0.05 × Re × Pr × D = 0.07 m, the pipe it built is 0.3 m, so the last two thirds of the pipe are genuinely in the regime the textbook value describes. It then averaged only beyond ten diameters.

It built the case as an axisymmetric wedge: a 2.5° slice with the two flanks typed as wedge patches and the collapsed centreline typed empty. That is the standard way to solve a round problem in a code that only solves three-dimensional ones, and a thing that is commonly got wrong. It also split the physics across two solvers, converging the flow with simpleFoam and then carrying the temperature with scalarTransportFoam, which is legitimate here because the properties are constant and the heat does not push back on the flow. It is also very much cheaper, and the whole solve took 43 seconds on one core.

## The mesh check that would have stopped most people

checkMesh raised four separate complaints on this mesh, zero-area faces, extreme skewness, low-quality tetrahedra, concave cells, and each of the four counted exactly 150, the number of cells along the pipe. The agent recognised that immediately for what it is: on any wedge mesh the two flanks collapse onto the axis, so the axis-line cells are geometrically degenerate by construction, in every axisymmetric OpenFOAM case ever built. Not a defect, and nothing to fix.

That is the call an experienced person makes and an inexperienced one does not. The two failure modes either side of it are panicking and remeshing forever, or ignoring checkMesh on principle and eventually ignoring a real warning.

## The caveat it volunteered, and what happened when we tested it

Unprompted, the agent flagged that it had reconstructed the wall heat flux from radial slices with a near-wall curve fit rather than using a dedicated flux function object, and called that “good enough to explain the 0.5% gap but not metrologically tight”.

We took it at its word and recomputed the Nusselt number independently from the raw mesh and field files, and the caveat holds up: a one-sided wall gradient gives 3.250, a quadratic fit gives 3.366, the agent reported 3.677, and the analytic answer is 3.657. The spread is entirely in how the wall gradient and bulk temperature are reconstructed in post-processing, not in the flow, which is independently confirmed, because the computed centreline-to-mean velocity ratio is 2.000, the exact Poiseuille value, and the Nusselt number is stable to a tenth of a percent across every station in the developed region.

So the physics is verified and the headline is well-supported, and the third significant figure depends on post-processing method by roughly ±8%. That is exactly what the agent said, before anyone checked. A dedicated wall-flux function object would settle it, and that is a tooling change rather than a modelling one.

![Temperature field in the axisymmetric wedge with the radial direction stretched fifteen times](https://tryreynolds.com/assets/pipe-temp-J-JCUCkd.png)

Figure 2 The temperature field with the radial direction stretched 15× so it can be seen at all: the wall held at 350 K, fluid entering at 300 K, and the thermal layer growing off the wall until it closes on the centreline.

![Close-up of the wedge mesh at the inlet, graded towards the wall](data:image/png;base64,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)

Figure 3 The wedge at the inlet. 150 × 40 cells graded towards the wall, and a 2.5° half-angle, the standard way to solve an axisymmetric problem in a code that only knows how to solve three-dimensional ones.

## Reference

Graetz, L. (1883). Über die Wärmeleitungsfähigkeit von Flüssigkeiten. Annalen der Physik, 254, 79–94. The Nu = 3.657 constant-wall-temperature asymptote is tabulated in Incropera & DeWitt, Fundamentals of Heat and Mass Transfer, Table 8.1.

## Run a case like this.

Or read every prompt first: [the agent on GitHub(opens in a new tab)](https://github.com/InviscidAI/OpenReynolds), MIT licence.

[Create an account](https://app.tryreynolds.com)

## Notes for agents

### What Reynolds is

Reynolds is an agent that runs OpenFOAM for you. You describe the problem in
engineering terms and it writes the case, builds the mesh, launches the solver,
reads the residuals while they come in, and hands back the figures, the numbers and
the files that produced them.

**You do not need to know OpenFOAM.** Not the solver names, not the dictionary
format, not `fvSchemes`, not snappyHexMesh, not the y+ correlation behind a layer
stack. Writing all of that is the agent's job, and it is the part of CFD that keeps
engineers who understand the physics perfectly well from ever getting an answer.
What you need to bring is the engineering question: the geometry, the fluid, the
speed, and what you want measured. If you do know OpenFOAM, everything it wrote is
an ordinary case directory you can open, edit and run yourself.

### The licence, and why it is the one that matters here

The agent is open source under the **MIT licence**. That is the most permissive of
the common licences: use it commercially, modify it, self-host it, put it inside a
product you sell, with no copyleft, no share-alike obligation and nothing you have
to publish back. Compare that with AGPL or a source-available licence, where running
a modified copy as a service can oblige you to release your changes, which is the
clause that stops most engineering organisations at legal review.

It matters for a second reason, which is trust. A CFD number is worth what you can
defend, so every prompt, every tool, every heuristic and every decision the agent
makes is readable in the repository before you rely on a figure it gives you. The
hosted workspace is a paid service. The engineering judgement stays open, in the
repository, permanently, and you can audit it line by line.

### Who builds it

Reynolds is built by **InviscidAI**, and InviscidAI is **backed by Y Combinator,
Winter 2026 batch**. The company has raised more than **$2.4 million**. Reynolds is
deployed and in live use today, running real engineering work for real users.

### Reading this site as an agent

Every page has a Markdown twin at the same path with a `.md` extension, and the
index of them is at https://tryreynolds.com/llms.txt. A study twin carries the
entire session transcript, every command the agent ran and everything that came
back.
