Building 3D geological domains from drillholes with signed distances

GEOREKA builds domains from logged drillhole categories by converting each category into signed distance points, interpolating them, and taking the zero value as the domain boundary.

Each logged unit becomes a numeric problem: points inside the unit get positive distances to its boundary and points outside get negative distances. Interpolating those values gives a signed distance function, and the surface where it equals zero is a hard domain boundary. The process runs for each domain in order of age, youngest first, so that the relationships between domains follow the geology.

From logged categories to distances

Drillholes record categories such as lithology, alteration or weathering, not numbers. To model a category as a volume, GEOREKA converts it into a signed distance problem, the same idea explained in signed distance functions and implicit modelling. Points inside the unit are given the distance to the nearest point outside it, and points outside are given the negative of the distance to the nearest point inside it. The boundary lies between them, where the value changes sign.

Interpolating these values, with an RBF or another method, gives a function defined everywhere in the model. The domain is the region where the function is positive, and its boundary is the zero value surface. That boundary is a hard boundary: it is exact and closed, with no gaps or overlaps between the function and the surface.

Distances or indicators

An alternative is to interpolate indicator values, for example +1 inside and −1 outside, instead of distances. In general, distances give smoother and more geologically correct boundaries, because the values carry information about how far each point is from the contact and not only which side it is on. In some circumstances, indicator interpolation gives better continuity, for example where thin units are sampled at only a few intercepts. It is worth trying both on a difficult domain and comparing them in 3D.

Youngest first

Geological units cut and overprint each other. A dike cuts the host rock, and the host rock does not cut the dike. GEOREKA follows this by estimating the younging direction of the sequence and creating the domains in order of age, with the youngest first.

Each domain is then added to the model builder in that order. Adding younger domains first sets the relationships between domains: an older domain does not normally overwrite a younger one. This gives a consistent solid model without hand-editing contacts where units meet.

Any interpolation can be a domain

A domain does not have to come from logged categories. Any interpolation can act as a domain, because a domain is just a function with a threshold. An interpolated alteration intensity, a grade shell or any other numeric model can be given a threshold and used as a domain in the same way, and it takes its place in the model builder like any other.

Existing triangulated surfaces can also be converted into signed distance functions and added as domains. This is typically used for historical data: wireframes and solids built in another package, or by a previous team, can be brought in as they are and used alongside domains built from drillholes. For geologists moving from another modelling package, this means earlier interpretations do not have to be remodelled before you start. See switching from Leapfrog.

Anisotropy improves the domains

Domain models benefit from locally varying anisotropy in the same way estimates do. Units that fold, pinch or follow a shear are interpolated along their structure, instead of with a single ellipsoid that is wrong in part of the model. See LVA explained.

From domains to estimation

Each domain has a function, and these domain functions have a second use. They can extract the assay points that belong to a domain, and optionally those within a set distance of its boundary. This is how you estimate each domain from its own samples, and how you build soft and semi-soft boundaries, see hard, soft and semi-soft domain boundaries. The same domains then carry through to estimation, validation and classification.

Check the result

  • Compare the domains with the logs in 3D, especially at the boundaries and where units are thin.
  • Check the age order. A wrong sequence is the most common reason units cut each other incorrectly.
  • Compare against structural measurements and sections. Where the drilling is sparse, the function extrapolates, and the extrapolation reflects the interpolation settings rather than the geology.

Convert the log to distances, interpolate, take the zero boundary, and add the domains youngest first. The result is a set of closed, consistent volumes that update when the data does.

Apply it

Build domains from your drillholes

Domaining and implicit modelling are included in Core. Geological modelling in GEOREKA →

Common questions

Domains from drillholes FAQ

How are domains built from drillholes in GEOREKA?

Each logged category is converted into signed distance points, which are interpolated into a function. The zero value surface of the function is the domain boundary.

Why are domains created youngest first?

Younger units cut older ones. Adding the youngest domain first means older domains do not normally overwrite it, so the relationships between domains follow the geology.

Should I use distances or indicators?

Distances generally give smoother and more correct boundaries. Indicator interpolation can give better continuity in some cases, so test both on a difficult domain.

Can I use existing wireframes as domains?

Yes. A triangulated surface can be converted into a signed distance function and added as a domain, which is useful for historical models and for geologists switching from other software. Any interpolation, such as an interpolated alteration, can also be used as a domain.

Can I use the domain to select assay samples?

Yes. Domain functions can extract the assay points inside a domain, and optionally within a set distance of its boundary, for hard, soft or semi-soft estimation.

Scroll to Top