Documentation

Overview

Crysalt predicts mineral-scale precipitation in oil & gas production systems — which minerals scale, and how much, as a brine moves from reservoir to surface. You run it yourself, as a local MCP server your AI tools can call or as a REST API, so your production data never leaves your network.

What it does

You describe a brine — the dissolved ions in mg/L — and a condition: temperature, pressure, pH, and an optional co-existing gas. Crysalt balances the brine's charge, solves the aqueous equilibrium with a Newton-Raphson method, corrects each ion's activity with the Pitzer model and each mineral's solubility product for temperature and pressure, then reports which minerals are supersaturated, how much of each precipitates, and the equilibrium pH — with a convergence flag and warnings so you always know when to trust the result.

You provide

  • Brine — ions in mg/L
  • T · P · pH
  • Optional gas (CO₂/H₂S/CH₄)

Engine — local

  • Charge balance
  • Pitzer activities
  • Newton-Raphson equilibrium
  • T,P-corrected Ksp

You get back

  • Supersaturated minerals
  • Precipitated mass
  • SR · SI · pH
  • Converged + warnings

What you get back

Every prediction returns, per mineral and for the brine as a whole:

FieldMeaning
Saturation ratio (SR)IAP / Ksp. Above 1 the water is supersaturated — the mineral tends to precipitate.
Saturation index (SI)log₁₀(SR). Above 0 indicates a scaling tendency.
Precipitated massHow much of each mineral drops out to reach equilibrium, per litre of brine.
Equilibrium pHThe pH the brine settles to — your input pH is only a starting point.
Ionic strengthI = ½·Σ mᵢzᵢ² — a measure of total dissolved salt; it drives the activity corrections.
Converged + warningsWhether the solver reached a stable equilibrium, plus any caveats (e.g. a brine beyond the model's validated range).
Gas exchangeWhen a gas phase is set: each gas's partial pressure and the net amount exsolved or absorbed.
Full speciationEvery aqueous species' molality and activity coefficient, and each reaction's equilibrium constant.

Three ways to use it

Recommended

In your AI workflow

Run the MCP server and the assistant you already use calls scale prediction as a tool — locally, with nothing leaving your network.

From code

The same engine is a REST API for pipelines and automation — see the API reference.

In your browser

The Playground runs the engine for a single brine, a blend of two waters, or a P,T profile — no setup.

Why you can trust the numbers

Crysalt is validated against published experimental data and an independent reference code (PHREEQC, USGS) — agreement with a separately-fitted implementation is a genuine cross-check, not a tautology. A few headline results:

< 1%activity coefficients γ± vs experiment, 0.1–3 m
~0.1 logmineral Ksp vs experiment (barite beats PHREEQC)
± 0.01CO₂/H₂S-water pH vs PHREEQC

It is rigorous and validated, and scoped for decisions in the loop — not a replacement for a specialist's final sign-off. The full validation tables, the science, and the honestly-stated limits are on the Methodology page.

Transparent by design. Every result carries a converged flag and a list of warnings. If the solver didn't converge, or a brine is pushed past the activity model's validated range, the response says so — don't trust numbers a warning flags.
An unhandled error has occurred. Reload 🗙