Arte SheetsLearn. Try. Understand.

Water Chemistry, Cooling-Water Scaling & Corrosion Control

Langelier Saturation (LSI) & Ryznar Stability (RSI) Formula

Calculate AWWA / ASTM D3739 Calcium Carbonate Saturation pHs, Langelier Saturation Index LSI (pH - pHs), Ryznar Stability Index RSI (2*pHs - pH), and Scale vs Corrosion Regime.

Calcium carbonate has retrograde solubility—heating cooling water drops pHs and precipitates scale!

Unlike sugar or table salt, calcium carbonate (CaCO3) becomes LESS soluble as water warms inside heat-exchanger tubes! Under the AWWA / ASTM D3739 Langelier model, Saturation pH is pHs = (9.3 + A + B) - (C + D), where A = (LOG10(TDS_mg_L) - 1) / 10, B = -13.12 * LOG10(Temp_C + 273) + 34.55, C = LOG10(Ca_as_CaCO3) - 0.4, and D = LOG10(Alkalinity_as_CaCO3)! Langelier Saturation Index LSI = pH - pHs (> +0.50 scale-forming; < -0.50 corrosive) and Ryznar Stability Index RSI = 2 * pHs - pH (< 6.0 heavy scale; 6.0–7.0 balanced; > 7.5 aggressive pipe corrosion) quantify condenser fouling and lead/copper pipe leaching!

Verify on a 35°C Condenser Cooling Loop—Measured_pH = 8.20 (B2), Total_Dissolved_Solids = 400 mg/L (B3), Water_Temp = 35.0 °C (B4), Calcium_Hardness = 200 mg/L as CaCO3 (B5), and Total_Alkalinity = 160 mg/L as CaCO3 (B6): Saturation pHs equals 7.26 (E2), Langelier Saturation Index hits 8.20 - 7.256 = +0.94 (E3), Ryznar Index is 2 * 7.256 - 8.20 = 6.31 (E4), and Diagnostic Gate flags "SCALE FORMING: LSI > 0.5" (E5)!

ASTM D3739 Water-Stability KPI (pH 8.20, 400 TDS, 35°C, 200 Ca, 160 Alk)FormulaVerified Output
CaCO3 Saturation pHs(9.3 + A + B) - (C + D)7.26 (8.68 Soft Water)
Langelier Index LSIMeasured_pH - Unrounded_pHs+0.94 (-1.88 Corrosive)
Ryznar Stability Index RSI2 * Unrounded_pHs - Measured_pH6.31 (10.56 Aggressive)
Water-Chemistry DiagnosticLSI > 0.5 Scale / LSI < -0.5 CorrosiveSCALE FORMING: LSI > 0.5

ASTM D3739 Langelier LSI & Ryznar RSI Formula

Validate pH in [4.0, 11.0], TDS in [10, 10,000], Temp_C in [0, 95], Calcium >= 1, and Alkalinity >= 1!

=LET(ph_m, B2, td_s, B3, tm_c, B4, ca_h, B5, al_k, B6, IF(OR(ph_m < 4, ph_m > 11, td_s < 10, td_s > 10000, tm_c < 0, tm_c > 95, ca_h < 1, al_k < 1), "Invalid Water Chemistry Input", LET(f_a, (LOG10(td_s) - 1) / 10, f_b, -13.12 * LOG10(tm_c + 273) + 34.55, f_c, LOG10(ca_h) - 0.4, f_d, LOG10(al_k), ph_s, (9.3 + f_a + f_b) - (f_c + f_d), ROUND(ph_m - ph_s, 2))))

Soft Low-Alkalinity Corrosive Distribution Water Check (pH 6.80, Ca = 40, Alk = 30)

Switch to soft unbuffered mountain reservoir water (B2 = 6.80, B5 = 40 mg/L Ca, B6 = 30 mg/L Alk): Saturation pHs E2 climbs to 8.68, LSI E3 plunges to -1.88, Ryznar RSI E4 spikes to 10.56, and Diagnostic E5 warns "CORROSIVE: LSI < -0.5"!

=IF(ISTEXT(E3), E3, IF(E3 > 0.5, "SCALE FORMING: LSI > 0.5", IF(E3 < -0.5, "CORROSIVE: LSI < -0.5", "BALANCED: -0.5..0.5")))

Try the example

Use the original values or change them to test your understanding.

Further reading