Skip to content
SHD Sim
Menu

Validation/Conjugate heat transfer

Heat crossing a solid–fluid interface

Neither check needs a reference table. If both regions start at one temperature nothing may move; and with no heat source anywhere, no temperature may leave the range its own data started in.

VerificationIsothermal case holds to 5.5×10⁻⁴ K; heat crosses, undershooting by 0.03 K

Why this case

Conjugate heat transfer is a fluid and a solid solved together, exchanging heat across a shared wall. There is no closed-form answer for the geometry the product ships — but there are two statements that are exactly true of any such problem, and neither has a constant in it to argue about.

  • Isothermal invariance. If everything — both regions, every boundary — starts at one temperature, it must stay there, for ever. There is nothing to drive a change. Any drift is the coupled interface manufacturing heat.
  • The maximum principle. With the solid started hot and the fluid cold, and no source anywhere, no temperature in either region may leave the interval between the two starting values. That is a theorem about the heat equation, not a modelling assumption, and it holds at every instant on every mesh.

Together they cover the two ways a conjugate coupling fails: doing something when it should do nothing, and doing too much when it should do something. A third check covers the way this one actually failed, which was doing nothing when it should have done something.

PhysicsConjugate heat transfer, fluid and solid solved together
SolverchtMultiRegionFoam, two regions split from one mesh
GeometryThe duct with a solid block in it that the application writes
Both regions start at293.15 K
Case B starts the solid at400 K
Run to0.05 s (last write 0.0474966 s)
AgreementIsothermal case holds to 5.5 × 10⁻⁴ K; heat crosses the interface and nothing leaves its starting interval
Last run2026-08-27

As the application stages it, the duct carries 25.6 m/s at the inlet and is not isothermal — the flow accelerates around the block and the gas cools 2.35 K by expansion. That is compressible flow behaving correctly and it has nothing to say about the interface, so the inlet velocity is set to zero and nothing else is touched. What remains is the conjugate problem on its own.

What this case found

The interface condition as the solver resolved it, before and after
RunFluid sideSolid sideSolid temperature range
Before the fix, 2 szeroGradientzeroGradient400.0 – 400.0 K
After the fixcompressible::turbulentTemperatureCoupledBaffleMixedcompressible::turbulentTemperatureCoupledBaffleMixed399.9928 – 400.0 K
The same case, the same mesh, the same solver. Only the order of two blocks in the boundary-field dictionary differs.

A coupling that transfers nothing satisfies the maximum principle perfectly, which is exactly how this survived. So the check does not only ask whether the temperatures stayed inside their interval — it asks whether heat actually crossed, and refuses a run in which less than one per cent of the initial difference moved.

Result

Both cases, temperature range reached in each region
CaseRegionMinimum (K)Maximum (K)Samples
A — isothermalSolid293.15000293.1500064
A — isothermalFluid293.14945293.14998576
B — solid at 400 KSolid399.99280400.0000064
B — solid at 400 KFluid293.12178312.82965576
Case A must not move at all; case B must stay inside [293.15, 400] and must not stay still. Both regions in both cases are read from the written fields at 0.0474966 s.

In the isothermal case the solid is unchanged to every digit written and the fluid holds to 5.5 × 10⁻⁴ K of where it started, against the 0.01 K the check allows. The residual fluid motion is 2.2455 × 10⁻⁵ m/s — the flow has been stopped, and it stays stopped.

In the gradient case the fluid rises from 293.15 K to 312.82965 K in 0.0475 s while the solid falls to 399.9928 K. Heat crosses, in the right direction, and neither region exceeds 400 K.

The temperature range reached in the solid and the fluid in each of the two cases, against the interval the data started in
The full range each region reaches, in both cases, against the shaded interval its own data started in. The two isothermal bars are single lines at this scale, which is the result rather than a drawing artefact.

What the check now catches

Three things, in this order, because the first makes the other two meaningful:

  1. The interface condition the solver resolved, read from the written field rather than from the deck. A run whose interface came back as zeroGradient on either side is rejected before any temperature is examined.
  2. Isothermal invariance, to 0.01 K in both regions. Any drift here is the coupling manufacturing heat — an area weighting that does not match on the two sides, or a sign, produces exactly this and produces it immediately.
  3. The maximum principle, and the exchange it implies. Nothing may leave the starting interval by more than 0.1 K, and at least one per cent of the initial difference must have crossed. The second half of that is the part the defect would have failed; the first half it passed perfectly.

Repeat this yourself

Every case here is set up from the worked examples in the product, with no hand-editing of solver files — so you can run it, and get the same numbers. The free tier runs real cases up to 250,000 cells of fluids, or 100,000 nodes of solid, with no account needed to download and no time limit.

All validation cases · Written by the team building SHD Sim.