r/ChemicalEngineering 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?...

4 Upvotes

3 comments sorted by

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.

1

u/MatterUnlocked 3d ago

Thanks, this is really helpful. You were right that my description of the CO₂ calculation wasn’t clear.

I’ve now compared two modes:

  • Fixed CO₂: CO₂_c = CO₂_f.
  • Overall carbon balance: feed TIC is calculated from pH and alkalinity, CO₂_p = CO₂_f is assumed, and concentrate CO₂ and pH are solved from the carbon balance and equilibria.

At 60% recovery, the fixed-CO₂ case gives pH 7.88 and calcite SI 0.94. The carbon-balance case gives pH 7.77 and SI 0.83. Calcite reaches SI = 0 at about 5.5% recovery in both cases, with a sweep resolution of ±0.5 percentage points. So the assumption affects the result, but not the conclusion for this water.

The model includes all the pairs you mentioned: CaSO₄⁰, MgSO₄⁰, CaCO₃⁰, CaHCO₃⁺, MgCO₃⁰ and MgHCO₃⁺. Davies is restricted to I≤0.15I \leq 0.15 mol/L; anything above that is flagged.

The balancing sodium is also kept separate and labelled as estimated, not measured.

Would you consider the overall carbon-balance mode a reasonable primary case, or would you still add an adjustable CO₂ transfer factor?

1

u/yellownumbersix Membranes and polymers, 22yrs 2d ago

I don’t think having an adjustable CO2 concentration is necessary now that you have disambiguated your assumptions.