Real dense-medium coal-washing plants don't sort by a sharp density cutoff — every particle has some probability of reporting to the wrong stream, described by a Tromp (partition) curve. Each ore particle here gets a density d sampled from a distribution set by the chosen seam, and its ash content follows the standard mineral-processing relationship of roughly linear ash-with-density:
ash(d) = clamp((d − 1.30) / 0.90 × 70%, 0%, 90%)
P(sink | d) = sigmoid((d − SG_cutoff) / Ep)
Ep = Ep0 + fouling × Ep_max
where SG_cutoff is the medium's set point on the slider, and Ep (probable error) is the curve's sharpness — small when the cyclone is clean, growing as magnetite medium fouls with fines, which blurs the separation and lets denser rock misreport into the clean-coal stream (and vice versa). "Flush cyclones" resets fouling to zero; letting fouling climb past ~70% visibly degrades product ash and recovery together.
- Particles — colour interpolates from glossy anthracite (low density) to grey mudstone (high density); each one is classified against the current partition curve the instant it reaches the cyclone.
- Recovery / yield — mass fraction of total feed reporting to the clean-coal stream.
- Product ash — tonnage-weighted average ash of everything routed to clean coal; this is the number a prep-plant operator is really trying to hold down.