Pure-Python calculations for mineral processing & extractive metallurgy — zero dependencies, unit-tested, ready for coursework, lab reports, and quick plant math.
English below · Bahasa Indonesia di bawah 🇮🇩
Every metallurgy student and junior plant engineer ends up re-deriving the same calculations — the two-product formula, Bond mill energy, P80 from sieve data, percent solids from a Marcy scale reading — in ad-hoc spreadsheets that are easy to get subtly wrong. minproc packages these classic calculations as small, documented, tested Python functions with textbook references, so you can spend your time on interpretation instead of formula plumbing.
- 🐍 Pure Python — no NumPy, no SciPy, nothing to install beyond Python 3.9+
- ✅ Unit-tested against hand-checked textbook values (pytest + CI)
- 📚 Documented — every function cites its formula and reference
- 🎓 Built for learning — readable source you can open and study
pip install git+https://github.com/Foxvi124/mineral-processing-toolkit.gitor clone and install locally (editable, nice for tinkering):
git clone https://github.com/Foxvi124/mineral-processing-toolkit.git
cd mineral-processing-toolkit
pip install -e .import minproc as mp
# 1) Metallurgical balance of a flotation stage — from assays alone
mp.two_product(feed=2.0, conc=10.0, tail=0.5)
# {'yield_pct': 15.79, 'recovery_pct': 78.95,
# 'ratio_of_concentration': 6.33, 'enrichment_ratio': 5.0}
# 2) Grinding energy by Bond's law (F80, P80 in micrometres)
mp.bond_energy(work_index=12.0, f80=12700, p80=100) # 10.94 kWh/t
mp.bond_power(12.0, 12700, 100, throughput=200) # 2187 kW
# 3) Sieve analysis -> P80 -> distribution model
table = mp.sieve_analysis(
apertures=[4.0, 2.0, 1.0, 0.5, 0.25, 0], # mm (0 = pan)
mass_retained=[5, 10, 20, 30, 25, 10], # g
)
mp.p80(table) # 1.68 mm
sizes = [r["aperture"] for r in table if r["aperture"] > 0]
passing = [r["cum_passing"] for r in table if r["aperture"] > 0]
m, k, r2 = mp.fit_ggs(sizes, passing) # Gates-Gaudin-Schuhmann
# 4) Is gravity separation feasible? (gold vs quartz in water)
cc = mp.concentration_criterion(rho_heavy=19.3, rho_light=2.65) # 11.09
mp.interpret_cc(cc) # 'Easy: gravity separation effective down to ...'
# 5) Slurry math for pump and thickener sizing
mp.pulp_density(pct_solids=30, rho_solids=2.7) # 1.233 t/m3
mp.flow_rates(dry_tph=100, pct_solids=30, rho_solids=2.7)
# {'water_tph': 233.3, 'pulp_tph': 333.3, 'pulp_m3ph': 270.4, ...}
# 6) Leaching kinetics — Shrinking Core Model
mp.scm_time_fraction(0.5, "reaction") # t/tau = 0.206
mp.scm_conversion(t=30, tau=120, mechanism="diffusion") # X at t = 30
mp.activation_energy(k1=1e-3, t1=300, k2=2e-3, t2=310) # Ea in J/molRun the full tour:
python examples/quickstart.py| Module | Functions | Core formulas |
|---|---|---|
comminution |
bond_energy, bond_power, reduction_ratio, rittinger_energy, kick_energy
|
|
concentration |
two_product, recovery, separation_efficiency, concentration_criterion, interpret_cc
|
|
sizing |
sieve_analysis, passing_size, p80, fit_ggs, fit_rosin_rammler
|
|
slurry |
pulp_density, pct_solids_from_density, pct_solids_by_volume, dilution_ratio, flow_rates
|
|
kinetics |
scm_time_fraction, scm_conversion, arrhenius_k, activation_energy
|
|
Main references: Wills & Finch, Wills' Mineral Processing Technology (8th ed.); Levenspiel, Chemical Reaction Engineering (3rd ed.).
pip install pytest
pytestContributions in any of these directions are very welcome:
- Flotation kinetics (first-order rate models, kinetic flotation tests)
- Gy's sampling equation and sampling-error estimation
- Hydrocyclone models (Plitt) and partition curves
- Three-product formula and n-product node balancing
- Pourbaix / Nernst helpers for hydrometallurgy
- A small Streamlit web calculator on top of this package
- Bahasa Indonesia docstrings / dokumentasi dwibahasa
Found a bug, want a formula added, or spotted a better reference? Open an issue or a pull request — see CONTRIBUTING.md. Adding a single well-tested function is a perfect first contribution.
This library is intended for education and preliminary engineering estimates. Always verify results independently before using them for design decisions, safety-related work, or commercial commitments.
MIT © 2026 Alfonsus Abdi
minproc adalah pustaka Python murni (tanpa dependensi) berisi perhitungan-perhitungan klasik pengolahan mineral dan metalurgi ekstraktif: rumus dua produk (recovery, yield, ratio of concentration), energi penggerusan Bond, analisis ayak dan P80, model distribusi ukuran (GGS dan Rosin-Rammler), persen solid dan densitas pulp, kriteria konsentrasi gravitasi, hingga kinetika pelindian dengan Shrinking Core Model.
Semua fungsi terdokumentasi lengkap dengan rumus dan acuan pustaka, serta teruji dengan unit test terhadap nilai hitungan manual dari buku teks — cocok untuk mahasiswa Teknik Metalurgi/Pertambangan yang mengerjakan laporan praktikum maupun engineer yang butuh perhitungan cepat di lapangan.
pip install git+https://github.com/Foxvi124/mineral-processing-toolkit.gitimport minproc as mp
# Neraca metalurgi satu tahap flotasi, cukup dari kadar saja
mp.two_product(feed=2.0, conc=10.0, tail=0.5) # recovery 78.9%
# Energi penggerusan Bond (F80 dan P80 dalam mikrometer)
mp.bond_energy(work_index=12.0, f80=12700, p80=100) # 10.94 kWh/t
# Persen solid dari densitas pulp (skala Marcy)
mp.pct_solids_from_density(rho_pulp=1.233, rho_solids=2.7) # ≈ 30%Isu, saran rumus baru, dan pull request sangat diterima — termasuk dokumentasi berbahasa Indonesia. Lihat CONTRIBUTING.md.
Pustaka ini ditujukan untuk pembelajaran dan estimasi awal. Selalu verifikasi hasil perhitungan secara independen sebelum dipakai untuk keputusan desain atau pekerjaan yang menyangkut keselamatan.