Deadweight tester / piston gauge

The pressure a deadweight tester or piston gauge generates from the masses on it, or the mass to load for a target pressure. Local gravity, air buoyancy matched to true or conventional mass, thermal expansion and pressure distortion of the effective area, oil surface tension and the head to the device under test, gauge or absolute, per EURAMET cg-3.

Deadweight tester · piston gauge

v0.1.0 · EURAMET cg-3 v2.1 · OIML D 28
Pressure at the device99.950870 MPaAt the balance reference level 99.95087 MPa; head 0 MPa; A_p = 1.9612063 mm²; g = 9.802861 m/s² (estimate); 4 iterations

Estimate only: GRS80 normal gravity on the ellipsoid (height 0). Real gravity at a site differs from it because of height and local geology.

Not corrected for height: g falls as you go up, so for a lab above sea level this estimate is high. The free-air correction is not included until its source can be verified.

For calibration work use a surveyed value, or a predicted one: NOAA NGS Surface Gravity Prediction (US) or the PTB Gravity Information System (SIS). Enter it as g; it takes precedence.

Conventional mass (OIML D 28): buoyancy factor 1 − ρ₀ₐ/ρ₀ + (ρ₀ₐ − ρ_a)/ρ_m with ρ₀ₐ = 1.2 kg/m³, ρ₀ = 8000 kg/m³ (cg-3 eq. 3.1a). At ρ_a = 1.2 kg/m³ it is 0.99985 whatever the weights are made of.

The pressure is solved by fixed-point iteration: p₀ from λ = 0, then p_{n+1} = F / (A₀(1 + λp_n)(1 + (α_p + α_c)(t − t_r))) (+ μ), stopping when |p_{n+1} − p_n| ≤ 1 × 10⁻¹⁴·|p_{n+1}|; it is refused after 50 iterations. cg-3 3.7(b) allows a nominal p in A₀(1 + λp); solving the equation exactly differs from that by about λ·(p − p_nominal) relative.

Not modelled: piston buoyancy from a non-cylindrical piston end (cg-3 3.11, eqs. 3.4 and 3.5), tilt of the piston, second-order distortion λ′.

Results are full precision. Round for display or a certificate separately.

Display rounding
p = [Σm·g·B + σ·c] / [A₀(1 + λp)(1 + (α_p + α_c)(t − t_r))] + (ρ_f − ρ_a)·g·Δh · B per mass basis · solved by iteration

Test vectors for this tool

The reference cases this calculator is tested against on every change. Use them to check your own software. All test vectors · Download JSON

IDInputsExpectedToleranceSource
DWT-01weights = [{"mass":3.4263,"density":7800}], massBasis = true, gravity = {"g":9.80616}, area = 0.00033592, alphaPiston = 0.0000112, alphaCylinder = 0.0000112, temperature = 22.85, airDensity = 1.185499998.79541994532 Pa± 1e-8Hand-derived with mpmath from EURAMET cg-3 v2.1 eq. (3.1), using the inputs of the IMEKO PWC-2006 TC16-013 worked example (pneumatic deadweight tester, NRC): m = 3.4263 kg, ρ_m = 7800 kg/m³, g = 9.806 16 m/s², ρ_a = 1.1854 kg/m³, A₀ = 335.920 mm², α_p = α_c = 11.2 × 10⁻⁶ /K, t = 296 K.
DWT-02weights = [{"mass":10,"density":8000}], massBasis = conventional, gravity = {"g":9.80665}, area = 0.0001, alphaPiston = 0.0000045, alphaCylinder = 0.0000045, temperature = 20, airDensity = 1.2980517.90025 Pa± 1e-8Hand-derived from EURAMET cg-3 v2.1 eq. (3.1a) with OIML D 28 conventional values ρ₀ₐ = 1.2 kg/m³, ρ₀ = 8000 kg/m³.
DWT-03weights = [{"mass":10,"density":7920}], massBasis = conventional, gravity = {"g":9.80665}, area = 0.0001, alphaPiston = 0.0000045, alphaCylinder = 0.0000045, temperature = 20, airDensity = 1.2980517.90025 Pa± 1e-8Hand-derived from EURAMET cg-3 v2.1 eq. (3.1a).
DWT-04massBasis = true, gravity = {"g":9.80665}, area = 0.000001961004, lambda = 1.032e-12, alphaPiston = 0.0000045, alphaCylinder = 0.0000045, temperature = 22, airDensity = 1.2, weights = [{"mass":20,"density":7920}]99989352.30697627 Pa± 0.00001Hand-derived with mpmath (50 digits) from EURAMET cg-3 v2.1 (02/2025) clause 3; A_p = A₀(1 + λp) solved for p as the positive root of the quadratic λθA₀p² + θA₀p − F = 0 (independent of the library’s iteration). A₀ = 1.961 004 mm² and λ = 1.032 × 10⁻⁶ /MPa are the cg-3 Appendix B3 results; ρ_m = 7920 kg/m³ and α_p + α_c = 9 × 10⁻⁶ /K are its B4.6 and B4.3 example values.
DWT-05massBasis = true, gravity = {"g":9.80665}, area = 0.000001961004, lambda = 1.032e-12, alphaPiston = 0.0000045, alphaCylinder = 0.0000045, temperature = 22, airDensity = 1.2, weights = [{"mass":20,"density":7920}], surfaceTension = 0.031, circumference = 0.004964, head = {"deltaH":0.1,"fluidDensity":915}99990326.89309752 Pa± 0.00001Hand-derived with mpmath (50 digits) from EURAMET cg-3 v2.1 (02/2025) clause 3; A_p = A₀(1 + λp) solved for p as the positive root of the quadratic λθA₀p² + θA₀p − F = 0 (independent of the library’s iteration). Surface tension added per eq. (3.2), head per eq. (3.6).
DWT-06massBasis = true, gravity = {"g":9.80665}, area = 0.000001961004, lambda = 1.032e-12, alphaPiston = 0.0000045, alphaCylinder = 0.0000045, temperature = 22, airDensity = 1.2, weights = [{"mass":20,"density":7920}], surfaceTension = 0.031, circumference = 0.004964, head = {"deltaH":0.1,"fluidDensity":915}, output = pressureAtReference99989430.76142052 Pa± 0.00001Hand-derived with mpmath (50 digits) from EURAMET cg-3 v2.1 (02/2025) clause 3; A_p = A₀(1 + λp) solved for p as the positive root of the quadratic λθA₀p² + θA₀p − F = 0 (independent of the library’s iteration).
DWT-07mode = absolute, massBasis = true, gravity = {"g":9.80665}, area = 0.0001, alphaPiston = 0.0000045, alphaCylinder = 0.0000045, temperature = 20, residualPressure = 1.5, weights = [{"mass":2,"density":8000}]196134.5 Pa± 1e-9Hand-derived from EURAMET cg-3 v2.1 eq. (3.3), absolute mode.
DWT-08mode = absolute, massBasis = conventional, gravity = {"g":9.80665}, area = 0.0001, alphaPiston = 0.0000045, alphaCylinder = 0.0000045, temperature = 20, residualPressure = 1.5, weights = [{"mass":2,"density":7920}]196134.7972162449 Pa± 1e-8Hand-derived from EURAMET cg-3 v2.1 eq. (3.3) with the conventional mass converted to true mass by OIML D 28:2004 eq. (1).
DWT-09weights = [{"mass":10,"density":8000}], massBasis = conventional, gravity = {"latitude":45}, area = 0.0001, alphaPiston = 0.0000045, alphaCylinder = 0.0000045, temperature = 20980472.8272606127 Pa± 1e-8Hand-derived from EURAMET cg-3 v2.1 eq. (3.1a) with g from the GRS80 closed formula (Moritz 2000).
DWT-10massBasis = conventional, gravity = {"g":9.80665}, area = 0.0001, alphaPiston = 0.0000045, alphaCylinder = 0.0000045, temperature = 20, targetPressure = 980517.90025, massDensity = 800010 kg± 1e-12Hand-derived inverse of EURAMET cg-3 v2.1 eq. (3.1a).
DWT-11massBasis = true, gravity = {"g":9.80665}, area = 0.000001961004, lambda = 1.032e-12, alphaPiston = 0.0000045, alphaCylinder = 0.0000045, temperature = 22, airDensity = 1.2, targetPressure = 100000000, massDensity = 792020.00212998514473 kg± 1e-11Hand-derived inverse of EURAMET cg-3 v2.1 eq. (3.1) with the Appendix B piston (A₀ = 1.961 004 mm², λ = 1.032 × 10⁻⁶ /MPa).
DWT-12massBasis = true, gravity = {"g":9.80665}, area = 0.000001961004, lambda = 1.032e-12, alphaPiston = 0.0000045, alphaCylinder = 0.0000045, temperature = 22, airDensity = 1.2, weights = [{"mass":20,"density":7920}], surfaceTension = 0.031, circumference = 0.004964, head = {"deltaH":0.1,"fluidDensity":915}20 kg± 1e-11Round trip mass → pressure → mass through cg-3 eqs. (3.2) and (3.6), forward by iteration and back in closed form.
DWT-13mode = absolute, massBasis = conventional, gravity = {"g":9.80665}, area = 0.0001, alphaPiston = 0.0000045, alphaCylinder = 0.0000045, temperature = 20, residualPressure = 1.5, weights = [{"mass":2,"density":7920}]2 kg± 1e-12Round trip mass → pressure → mass through cg-3 eq. (3.3) and OIML D 28 eq. (1).
DWT-14weights = [{"mass":10,"density":8000}], massBasis = conventional, gravity = {"g":9.80665}, area = 0.0001, alphaPiston = 0.0000045, alphaCylinder = 0.0000045, temperature = 45OutOfRangeError per ruleexactMetrology Bench rule: refuse rather than extrapolate
DWT-15massBasis = true, gravity = {"g":9.80665}, area = 0.000001961004, lambda = 0.000001032, alphaPiston = 0.0000045, alphaCylinder = 0.0000045, temperature = 22, airDensity = 1.2, weights = [{"mass":20,"density":7920}]OutOfRangeError per ruleexactMetrology Bench rule: refuse rather than extrapolate
DWT-16weights = [{"mass":10,"density":7.92}], massBasis = conventional, gravity = {"g":9.80665}, area = 0.0001, alphaPiston = 0.0000045, alphaCylinder = 0.0000045, temperature = 20OutOfRangeError per ruleexactMetrology Bench rule: refuse rather than extrapolate
DWT-17mode = absolute, massBasis = true, gravity = {"g":9.80665}, area = 0.0001, alphaPiston = 0.0000045, alphaCylinder = 0.0000045, temperature = 20, residualPressure = 1.5, weights = [{"mass":2,"density":8000}], surfaceTension = 0.031, circumference = 0.004964RangeError per ruleexactEURAMET cg-3 v2.1 clause 3.9: absolute mode is given for gas-operated balances only.

Put this calculator on your site

Free for labs, schools and anyone else. Paste this into your page.

<iframe src="https://metrologybench.com/embed/deadweight-tester" title="Deadweight tester / piston gauge · Metrology Bench" width="100%" height="1500" style="border:0;max-width:640px" loading="lazy"></iframe>

Preview the embed

Ask your AI

Connect metrology-toolbox-mcp and your assistant runs this exact calculation, with the source in the answer.

Set it up