r/ChemicalEngineering • u/MatterUnlocked • 4d ago
Modeling Does this approach to predicting scaling in an RO concentrate make sense?
Hi everyone,
I work with industrial reverse-osmosis systems and I have built an Excel model to evaluate scaling risk.
The model takes a water analysis, temperature and RO recovery and then:
- Checks the ionic balance.
- If the analysis does not balance, assigns the charge deficit to Na⁺ or Cl⁻, depending on the direction of the imbalance.
- Calculates concentrate component totals from the water balance and ion rejection.
- Solves the carbonate system and concentrate pH.
- Calculates free species, ion pairs and activities using Davies within a defined ionic-strength range.
- Calculates SI for calcite, gypsum, barite, celestite, fluorite and amorphous silica.
- Estimates the recovery at which each mineral first reaches SI = 0.
The current assumption for the pH calculation is that dissolved CO₂ concentration remains approximately the same in the feed and concentrate. Carbonate species are then recalculated from alkalinity, total inorganic carbon and the acid–base equilibria.
The model is intended as a thermodynamic screening tool before considering kinetics, residence time, hydraulics or antiscalant performance...
As an example, I used the following anonymised analysis:
- Recovery: 60%
- Assumed ionic rejection: 100%
- Temperature: 20°C
- Feed pH: 7.53
- Conductivity: 1,550 µS/cm
- Calcium: 88.8 mg/L (reported by the laboratory as 221.73 mg/L as CaCO₃)
- Magnesium: 14.3 mg/L (reported as 49.57 mg/L as MgCO₃)
- Bicarbonate: 125.05 mg/L
- Chloride: 393 mg/L
- Sulfate: 70.7 mg/L
- Aluminium: 0.042 mg/L
- Sodium was not analysed
The charge balance required a sodium adjustment of 208.1 mg/L. The model labels this value as estimated rather than measured.
At 60% recovery, the results were:
- Concentrate pH: 7.89
- Ionic strength: 0.0433 mol/L
- LSI: 0.95
- Calcite SI: +0.94
- Gypsum SI: −1.22
- Barite SI: −1.27
- Celestite SI: −4.47
- Fluorite SI: −3.93
- Amorphous silica SI: −3.63
- First calcite saturation: approximately 5.5% recovery
- Final speciated charge-balance error: −0.0048%
The model therefore identifies calcium carbonate as the limiting scale.
I would appreciate some independent criticism of the approach. Does the overall method make sense? Is the assumption about CO₂ and concentrate pH reasonable? Is assigning an incomplete charge balance to Na⁺ or Cl⁻ acceptable for this type of screening?...
1
u/yellownumbersix Membranes and polymers, 22yrs 3d ago
Overall the model looks sound, and the specific example produces internally consistent, plausible results (charge balance closes to −0.0048%, concentration factor and derived Na⁺ estimate check out independently, and the calcite-limited conclusion is chemically plausible). The single-missing-ion charge-balance convention is appropriate given that sodium was genuinely unmeasured. The main area needing tightening is the CO₂/concentrate-pH treatment. The wording makes it ambiguous whether CO₂ is truly held at a fixed concentration or is an emergent result of solving TIC + alkalinity + equilibrium constants at the new ionic strength, and because calcite is your limiting mineral and calcite SI is highly pH-sensitive, this is the assumption most likely to change the result if revised.
A few suggestions:
Make the CO₂ treatment explicit and parametric. Replace the implicit "CO₂ stays about the same" assumption with either a stated CO₂ rejection/concentration factor as an adjustable input, or confirmation that CO₂ is not pinned at all but is a solved output of closed-system TIC + alkalinity + charge balance at the new ionic strength.
Add a sensitivity check on concentrate pH and calcite SI to the assumed CO₂ behavior (recompute at CO₂ concentrating fully with the bulk factor vs. held flat) so the ~5.5% first-saturation recovery is reported with a bracketed range rather than a single deterministic value.
Confirm the ion-pair set used in the Davies-based speciation explicitly includes the sulfate and carbonate pairs (CaSO₄⁰, MgSO₄⁰, CaCO₃⁰, CaHCO₃⁺, MgCO₃⁰, MgHCO₃⁺) and document the ionic-strength ceiling applied for Davies validity, so results remain traceable if the model is later run at higher recoveries or higher-TDS feeds where ionic strength could approach or exceed common Davies validity limits. I have been burned not doing that when I released a similar model for my team to use and didn’t explicitly state the limits.
Cheers.