Grade Shells
Note
Coming in Spatial Integration version 3.
Requires the Professional edition. In the Community edition, geological models in a project can be viewed read-only: shown, hidden and faded, but not created or changed.
A grade shell is an envelope around the parts of the drilling above a cut-off grade: a 3D outline of the mineralisation you can view, measure, export and use to constrain an estimate. Add one on the Features tab with Add grade shell.
The shell's field is positive inside and negative outside, and the shell is where it is zero. Its data comes from a downhole table: every interval is either ore, at or above the cut-off, or waste, below it. Ore intervals give points the field must be above zero at, waste intervals give points it must be below zero at, and where ore meets waste the boundary is a point on the shell itself. The modeller then finds the smoothest field that honours all of them.
Important
A shell needs both ore and waste. With ore alone there is nothing to stop the field being positive everywhere, and no shell can be found. See Composite tables.
Adding the Data
With the shell selected, open the Constraints tab, then Add a constraint set. Choose Drill layer as the Source, the drillhole Layer, and the Dataset holding your assays or composites. Then:
| Field | Meaning |
|---|---|
| Grade column | The grade to classify, such as Au_ppm |
| Cut-off | Intervals at or above this grade are ore |
| Margin | The field value given to ore (+margin) and waste (-margin). Leave it at 1, see below |
| Surface at ore/waste boundaries | Puts a point on the shell wherever an ore interval touches a waste interval with no gap. Leave on |
| Spacing along runs (m) | How often a point is placed along the ore, in metres down the hole. Waste gets a point every twice this |
| Max internal waste (m) | Waste this long or shorter between two ore runs counts as ore |
| Min ore length (m) | Ore runs shorter than this count as waste |
| Gaps between intervals | What the unlisted depths between intervals are: Auto, Waste or Unsampled |
Click Add and sync.
How intervals become points
Adjoining intervals on the same side of the cut-off are merged into runs: one ore run where a hole passes through a zone, the waste runs either side. Max internal waste and Min ore length are then applied, exactly as a significant-intersection calculation would: short internal waste is absorbed into the ore around it, and short ore runs are dropped to waste.
Each run then gets points spread evenly along it, every Spacing metres for ore and every twice that for waste; a run shorter than its spacing gets one point at its middle.
Choose the spacing with care. It controls how many points there are, how long the fit takes, and how fine a mesh is used when the mesh spacing is automatic. A spacing about the length of your assay or composite intervals - typically 1 to 5 m - is right. A very small spacing, such as 0.1 m, multiplies the point count without adding information and makes the build far slower.
Composite tables
A table written by the downhole compositor or a significant-intersection calculation usually lists only the ore: the rock between the intercepts is not in it at all. Read as it stands, it has no waste, and no shell can be built from it.
Gaps between intervals fixes this:
- Waste - every depth not covered by an interval, from the collar to the first interval, between intervals and from the last interval to the end of the hole, becomes waste.
- Unsampled - gaps are left out, as for an assay table where gaps really are unsampled core.
- Auto - the default. A hole's gaps are treated as waste when none of its intervals is below the cut-off, which is what a composite table looks like, and left alone otherwise.
The sync log reports how many holes had their gaps taken as waste.
The margin
The margin is the field value ore and waste points are given. Because the shell is where the field is zero, scaling every value up or down scales the field without moving the shell, so the margin on its own changes nothing. What matters is the fit's Tolerance compared with it: with a tolerance of 0.1 and a margin of 1, each point is honoured to within a tenth of the margin.
Leave the margin at 1. Shape the shell with the Nugget, the Tolerance, the spacing and the compositing lengths instead. Raising the margin without raising the tolerance makes the fit stricter, and it may not converge.
Fitting
A new grade shell is fitted in Indicator mode: each ore and waste point is fitted as a value at its margin, with a Nugget of 0.5 and a Tolerance of 0.1. The nugget smooths over the noise of individual assays, so a single high value in a waste zone does not grow its own bubble. Raise it for a smoother, more continuous shell; lower it for a tighter one.
Inequality mode honours the ore and waste points strictly as bounds rather than values. It can give a tighter shell on clean data, but it is far slower on thousands of points and does not cope with noisy assays.
To bound a shell with orientations as well as assays, such as a vein with structural measurements along it, switch the shell to the Finite difference engine, which honours both together (see Building a Model).
Anisotropy in the Fit parameters stretches the shell along the direction of mineralisation: set the azimuth and plunge of the long axis and the ratios of the shorter axes. A plunging shoot drilled on a coarse grid usually needs it.
Mesh Spacing
Shells are often only a few metres thick, much thinner than a model-wide mesh can resolve. When a shell's own Preview mesh spacing and Final mesh spacing are left at 0 = auto:
- The model's mesh resolution on the Model tab is used if you have set one.
- Otherwise the spacing comes from the ore points: four times their spacing for a preview, twice for a final build, but no finer than the model's extent divided by 200 (preview) or 500 (final).
- If the shell then comes out empty although there is ore, the spacing is halved and the mesh tried again, up to three times.
Set the spacing yourself when you know the scale you need, for example 2 m for narrow veins.
Limiting a Shell
A shell can be cut off by a younger surface or fault with Truncated by on the Features tab, for example to keep only the part below a weathering surface. Confining a shell between two contacts of a series is not yet available.
In the block model, each shell has its own array, and grade_shell gives the youngest shell containing each cell (see Surfaces and Stratigraphy).
When a Shell Goes Wrong
| What you see | Likely cause | What to do |
|---|---|---|
| The build fails with "no waste rows" | The table lists only ore | Set Gaps between intervals to Waste and sync |
| The build fails with "no ore rows" | No interval reaches the cut-off | Check the grade column and the cut-off |
| The build takes minutes on a few holes | A very fine mesh spacing, or many points from a very small run spacing | Raise Spacing along runs, set a mesh spacing |
| The shell is empty | The lenses are thinner than the mesh spacing | Set a finer mesh spacing |
| Many small bubbles | Isolated high assays | Raise Min ore length or the Nugget |
| Separate lenses that should join | Internal waste splits the runs, or the holes are far apart | Raise Max internal waste, add anisotropy along the trend |
Tick Show constraints in the scene on the Constraints tab to see the ore (red) and waste (blue) points the shell was fitted to.