@beerwright/core
    Preparing search index...

    Function correctVolumeToReference

    • A volume measured hot, expressed at the reference temperature.

      V_ref = V_t × ρ(t) / ρ(ref)
      

      Mass is conserved while the wort cools, so the volumes are in inverse ratio to the densities. A sight-glass reading taken off a boiling kettle overstates the 20 °C volume by ~4 %. Below 20 °C the correction goes the other way and the volume goes up, because cold water is denser.

      When planning a brew, applyBoilShrinkage in ./volumes applies a flat 4 % between "post-boil (hot)" and "post-boil (20 °C)". That constant and this function describe the same contraction, and they agree: at 100 °C this returns a factor of 0.960088, which is 3.991 %, against the planning constant's 4.000 %. Planning uses a brewer-editable percentage on the equipment profile instead of calling this, because it also has to cover whatever else a particular rig loses between flame-out and the measuring jug. This function corrects a measurement, so it uses the physics. corrections.test.ts checks the two stay within 0.01 percentage points of each other.

      Wort isn't water, but we treat it as if it were. At brewing strengths wort is ~88–95 % water by mass and the dissolved extract only raises the cubic expansion coefficient slightly, so real wort contracts a little more than this predicts. The error bound comes from observation: the 4 % hot-wort figure that BeerSmith, Brewer's Friend and Grainfather all use is reproduced here to 0.009 percentage points, so the wort-versus-water difference is smaller than the one significant figure that figure is quoted to. Taking that precision as the bound, the approximation costs at most ~0.5 percentage points of volume: ~0.1 L in a 25 L kettle, against a sight glass a brewer can read to perhaps 0.25 L.

      Parameters

      • volumeL: number

        The volume as read, litres.

      • measuredAtC: number

        The temperature it was read at, °C. Valid 0–100 °C (liquid water at one atmosphere). Outside that the equation still evaluates (Kell is fitted to 150 °C) but the answer has nothing to do with brewing. We don't clamp it, so a nonsense temperature gives an obviously wrong volume instead of a plausible wrong one.

      • referenceC: number = REFERENCE_VOLUME_TEMP_C

        The temperature to express the result at. Defaults to REFERENCE_VOLUME_TEMP_C.

      Returns number