MaximaLabs

Flotation bank simulation

ground ore (+ water) -> concentrate + tailings (liberation-resolved first-order kinetics)

Governing equations

The exact equations the solver works for a flotation bank — the same math shown in the app's "Theory" panel, not a black box.

k(v)=kg+(kmax−kg) vk(v) = k_g + (k_{max} - k_g)\,v
R=1−(1+k τN)−NR = 1 - \Big(1 + \frac{k\,\tau}{N}\Big)^{-N}
P(liberated)=∑nP(n) p n,n=nxnynz,  nx∈{⌊d/β⌋+1,⌊d/β⌋+2}P(\text{liberated}) = \sum_n P(n)\,p^{\,n},\quad n = n_x n_y n_z,\;n_x\in\{\lfloor d/\beta\rfloor+1,\lfloor d/\beta\rfloor+2\}
k(v)k(v)
flotation rate constant of a particle of volume grade v [1/s]
kmax,kgk_{max}, k_g
rate constants of a liberated grain and of liberated gangue [1/s]
vv
volume grade — the valuable mineral's share of the particle
RR
fraction of a particle type recovered to the concentrate
τ\tau
total residence time of the bank [s]
NN
number of equal mixed cells
p,βp, \beta
the mineral's volume fraction in the ore and its grain size [m]
nn
number of grains a particle of size d touches (random cubic lattice)

Parameters

valuable_mineral [required — a key of the feed's solids.psd_minerals], rate_constant_1_s [1/s, required — k for a fully liberated grain], residence_time_s [s, required — the bank's total]; optional gangue_rate_constant_1_s [1/s, default 0], cells [default 1, equal mixed cells], grain_size_m [m — overrides solids.mineral_texture], mineral_density_kg_m3 and gangue_density_kg_m3 [kg/m^3 — override the texture's densities_kg_m3], water_recovery [0..1, default 0 — liquid reporting to concentrate], composite_bins [default 10]. Each size class is resolved into its liberation spectrum (random cubic lattice) and every particle type floats at k = k_gangue + (k_max - k_gangue)·v

Example flowsheets that use it

Stop fighting legacy software. Build your first flowsheet in 60 seconds.