A dashboard reports a pipe surface at 12°C and an air dew point near 11.1°C. The nominal margin is positive. That result can reverse when the input readings have plausible bounds.

This is an invented room-air example, not a sensor specification or a measured installation. Assume air temperature of 22 ± 0.3°C, relative humidity of 50 ± 3 percentage points, and surface temperature of 12 ± 0.5°C. Treat these as bounded inputs; they are not standard deviations.

Calculate the nominal value and the bounds

Use a liquid-water Magnus approximation with constants 17.62 and 243.12°C. These coefficients appear in the WMO humidity training material, page 13. With RH expressed as a percentage, define:

gamma = ln(RH / 100) + 17.62 * T / (243.12 + T)

dew_point = 243.12 * gamma / (17.62 - gamma)

For this warm-air range, dew point increases with both temperature and RH. The upper dew-point bound therefore uses the upper air-temperature and RH bounds together. Compare it with the lower surface-temperature bound.

import math def dew_point_c(t, rh): if not all(math.isfinite(x) for x in (t, rh)): raise ValueError("Inputs must be finite") if not (0 <= t <= 50 and 0 < rh <= 100): raise ValueError("Example scope: 0..50 C and 0 < RH <= 100") g = math.log(rh / 100) + 17.62 * t / (243.12 + t) dp = 243.12 * g / (17.62 - g) if dp < 0: raise ValueError("This example excludes subzero dew points") return dp nominal = 12.0 - dew_point_c(22.0, 50.0) lower = 11.5 - dew_point_c(22.3, 53.0) upper = 12.5 - dew_point_c(21.7, 47.0) print(f"Nominal margin: {nominal:.2f} C") # 0.91 C print(f"Margin bounds: {lower:.2f} to {upper:.2f} C") # Margin bounds: -0.75 to 2.61 C assert lower < 0 < upper assert math.isclose(dew_point_c(22, 100), 22) assert dew_point_c(22, 53) > dew_point_c(22, 50) 

The nominal dew point is 11.09°C. Across the stated input box, it ranges from 9.89°C to 12.25°C. Subtracting the upper dew point from the lowest surface temperature produces a negative margin.

Return a state that preserves uncertainty

A margin interval entirely above zero means the surface is above the computed dew point for every input combination in this box. An interval entirely below zero means it is below for every combination. An interval spanning zero is unresolved by these bounds.

This example belongs in the third state. It does not establish that condensation occurred, and it does not assign a probability to it. Treating unrelated tolerance limits as a statistical confidence interval would add information the inputs never supplied.

Keep full precision during comparison; round only the displayed values. Also keep this surface margin separate from dew-point depression, which subtracts dew point from air temperature.

The calculation covers the stated input bounds only. Formula approximation, sensor drift, response lag and differences between room air and air at the cold surface still need attention in a real measurement process. Start by checking whether the measurements represent the same place and time before increasing the number of decimal places.