Mine Planning Software

Mining runs on specialised software. Learn the software landscape (geological modelling, mine design, optimisation, scheduling, simulation), the data flow from drill holes to schedules, block model sizes and formats, scripting and automation — with a Python grade–tonnage analysis of a block model.

From Leapfrog geological models to Whittle pit shells, Deswik designs and schedules, Vulcan/Surpac/Datamine block models and Ventsim ventilation models — mining engineers must understand what each tool does, how data flows between them, and how to automate repetitive work with scripts.

An analogy

Mine planning software is like a production line: geology builds the parts (block model), optimisation decides what to build (pit shells), design shapes it (pits, stopes) and scheduling decides when.

Software landscape

Geology: Leapfrog, Vulcan, Surpac, Datamine (drill-hole databases, wireframes, block models). Optimisation: Whittle, Deswik Pseudoflow, MineSight/Hexagon. Design & scheduling: Deswik, MineSched, Vulcan. Simulation: Arena/Haulsim, TALPAC. Specialist: Ventsim, JKSimBlast, Rocscience, FLAC.

Data flow

Drill-hole database (collars, surveys, assays, geology) → wireframes and domains → estimated block model → optimisation shells → designs → schedules → fleet and cost models. Version control and audit trails are required for reserves reporting.

Block models

Regular or sub-blocked models; attributes include grades, density, rock type, costs, recovery. Large models have tens of millions of blocks — memory and processing speed matter.

Automation and integration

APIs and scripts automate repetitive tasks; cloud platforms integrate planning with operational data (e.g. reconciling plans with FMS data). Optimisation increasingly uses MILP and stochastic methods through commercial solvers.

Formulas

Worked example: Block model size

Given: Deposit 2000 × 1500 × 800 m; Blocks 10 × 10 × 10 m

Find: Number of blocks and memory for 20 attributes.

Answer: 2.4 M blocks, ≈ 384 MB

Worked example: Grade–tonnage from the script

Given: Synthetic model 270 Mt

Find: Tonnage and metal at 0.3 % cut-off.

Answer: ≈ 202 Mt @ 0.65 % → 1.31 Mt Cu

Grade–tonnage curve from a block model

import numpy as np

# Synthetic block model: 100 000 blocks of 10 x 10 x 10 m, density 2.7 t/m3
rng = np.random.default_rng(42)
grade = rng.lognormal(mean=np.log(0.45), sigma=0.6, size=100_000)   # % Cu
tonnes_per_block = 10 * 10 * 10 * 2.7

print("cut-off   Mt    grade %   Cu kt")
for cog in (0.0, 0.2, 0.3, 0.4, 0.5, 0.7):
    ore = grade >= cog
    mt = ore.sum() * tonnes_per_block / 1e6
    g = grade[ore].mean()
    cu = mt * 1e6 * g / 100 / 1e3
    print(f"{cog:5.1f} {mt:7.1f} {g:8.3f} {cu:8.0f}")
# cut-off   Mt    grade %   Cu kt
#   0.0   270.0    0.538     1453
#   0.2   245.9    0.576     1416
#   0.3   202.3    0.646     1306
#   0.4   155.4    0.735     1142
#   0.5   115.4    0.835      963
#   0.7    62.2    1.044      649

Commercial packages produce the same table from real block models. Scripting (Python, VBA, Lua, TCL depending on the package) automates reporting, sensitivity runs and data transfer between tools — a valuable skill for mining engineers.

Common mistakes

Applications

Key takeaways

Going further