Skip to main content

Lyceum 2021 

Discover how you can use Leapfrog Works + Contaminants Extension to create a probabilistic model from CPT data.

This project uses borehole data from an offshore windfarm and during the session we will go through the steps to create an Indicator Kriged block model, in order to quantify the risk from clay in the soil profile.

Overview

Speakers

Carrie Nicholls
Customer Solutions Specialist, Seequent

Duration

20 min

See more Lyceum content

Lyceum 2021

Video Transcript

[00:00:05.440]
<v ->There are many factors to be taken into consideration</v>

[00:00:07.930]
when designing monopiles for a wind farm.

[00:00:10.550]
One will be the sole profile

[00:00:11.950]
that the foundations will intersect

[00:00:13.960]
and the risks posed by the presence of clay.

[00:00:16.740]
Using the geostatistical tools available

[00:00:18.970]
in Leapfrog Works, this risk can be quantified.

[00:00:22.510]
I’m Carrie Nicholls, a customer solutions specialist

[00:00:25.030]
here at Seequent, and over the next 20 minutes,

[00:00:28.110]
I will take you through each step

[00:00:30.300]
to create an indicator krig block model

[00:00:32.950]
to be able to quantify the probability of clay

[00:00:35.610]
in a soil profile.

[00:00:40.310]
In the project, we have borehole data.

[00:00:42.670]
As you can see that it’s already loaded

[00:00:44.660]
into the scene here.

[00:00:46.230]
On the borehole data, we have the CPT data.

[00:00:50.600]
And not all of the boreholes do have CPT data.

[00:00:54.610]
So the ones that don’t have CPT data are represented

[00:00:57.990]
by these borehole traces,

[00:00:59.300]
which are the gray lines here.

[00:01:01.680]
And where we have CPT data,

[00:01:04.070]
you can see the colored columns here.

[00:01:08.750]
The extent of this project is

[00:01:11.220]
looking directly down here is around 14 kilometers,

[00:01:14.760]
both North, South, and East West.

[00:01:17.230]
And on average, these boreholes are about 50 meters depth.

[00:01:22.630]
You can also see that there’s a bit of a data gap

[00:01:25.380]
in the middle here.

[00:01:26.720]
The boreholes are kind of in two distinct zones

[00:01:31.160]
in the North and the South.

[00:01:32.620]
So eventually we will model those areas separately.

[00:01:36.440]
The CPT data was then used to create

[00:01:40.580]
or calculate the soil behavior type index,

[00:01:44.260]
so using a Robertson equation, and then categorized

[00:01:47.610]
into the silt sands, sand mixtures, clays,

[00:01:52.020]
and organic soils.

[00:01:54.160]
From that data, a soil model was created, a 3D soil model,

[00:02:00.170]
which was done under the geological modeling section

[00:02:02.820]
in Leapfrog Works, which is the categorical modeling.

[00:02:07.980]
I can just show you that on the scene now,

[00:02:10.270]
switch those volumes on,

[00:02:12.810]
and you can see the different layers within the model

[00:02:16.690]
will go into section.

[00:02:21.910]
We can see from the colors,

[00:02:23.340]
we’ve got a number of soil types in here.

[00:02:26.470]
The vast majority are is the sand, sand mixtures,

[00:02:30.990]
which is in the orange.

[00:02:32.790]
We’ve got some silt mixtures,

[00:02:34.540]
which are the green, and the horizon of interest,

[00:02:38.250]
or the intervals of interest in this small exercise

[00:02:42.080]
are the clay layers, which are represented by the gray.

[00:02:44.930]
You can see that the 3D model is a simplification

[00:02:49.470]
of the logged data we have.

[00:02:54.730]
In this first step, we will look at compositing the data.

[00:02:58.070]
So I want check first what the intervals are on this data.

[00:03:05.020]
So I shall right click on the CPT table

[00:03:08.750]
at the top here and statistics. table of statistics.

[00:03:14.430]
So you can select everything if you wanted to do some checks

[00:03:17.460]
on your input data.

[00:03:19.510]
But the one that I’m interested here really

[00:03:21.630]
is the interval length.

[00:03:22.630]
So, I can see here I’ve got a mean of 0.02.

[00:03:28.560]
I have a minimum from 0.001 all the way up to 50.

[00:03:34.360]
Now, I have a suspicion that this 50 maximum of 50 meters

[00:03:40.610]
is probably because of those boreholes

[00:03:42.900]
that don’t have any CPT data.

[00:03:45.310]
So first of all, I want to exclude those boreholes

[00:03:49.640]
and then re-look at the statistics.

[00:03:51.490]
So I’ve already created a query filter on the table there,

[00:03:55.940]
which just excludes any holes that don’t have any CPT data.

[00:03:59.940]
So I’m going to apply it to my statistics here.

[00:04:04.310]
And now I can see that the table is refreshed

[00:04:07.770]
and my maximum and minimum are both 0.02.

[00:04:12.020]
So that’s two centimeters.

[00:04:13.610]
So all the samples, or all the intervals from the CPT data

[00:04:18.970]
are at two centimeters.

[00:04:22.940]
Because two centimeters is very small,

[00:04:25.060]
I want to composite it slightly

[00:04:27.150]
before I take it into the estimate.

[00:04:29.570]
The borehole spacing is anything

[00:04:31.400]
between 500, 700 meters apart

[00:04:34.680]
up to two and a half kilometers.

[00:04:36.730]
So the depth of the bore holes are around 50 meters,

[00:04:39.220]
and then the measured into of two centimeters is very small

[00:04:42.510]
comparatively to the spacing of the boreholes.

[00:04:46.430]
So under the composites folder,

[00:04:48.190]
which you will see if I expand this here,

[00:04:50.560]
under the borehole data, there is a composites folder.

[00:04:54.020]
I’ve created a numeric composite.

[00:04:57.470]
So, just take you into that to see it

[00:04:59.560]
to show you what I’ve done and the output columns,

[00:05:03.099]
I’ve pulled everything across.

[00:05:05.890]
And rather than also pulling across the soil behavior type,

[00:05:09.120]
I’m going to recalculate that on the composited data.

[00:05:13.340]
And the composite length I’ve chosen is 10 centimeters.

[00:05:17.170]
So it’s just slightly increasing the length

[00:05:20.990]
from two centimeters to 10 centimeters.

[00:05:24.280]
I don’t want to composite it too drastically

[00:05:27.500]
and lose all the variability.

[00:05:28.810]
I still want to maintain some variability.

[00:05:35.270]
So you can still do calculations on the composite table.

[00:05:41.070]
And I show you the calculations now.

[00:05:46.010]
You can copy the calculations from another item.

[00:05:49.020]
So I’ve copied the two calculations,

[00:05:51.707]
the soil behavior type index and category

[00:05:54.260]
from the original table.

[00:05:56.530]
And then I’ve created a third column here

[00:05:59.370]
by creating a numeric calculation.

[00:06:01.810]
And this is going to be our indicators.

[00:06:04.210]
I’ve created an if statement

[00:06:05.810]
where the category equals clay is given a value of one,

[00:06:10.790]
and then everything else is a value of zero.

[00:06:14.420]
And this column will be our input into the estimation.

[00:06:19.900]
In the next step,

[00:06:20.733]
we’ll be setting up the estimation parameters.

[00:06:24.030]
In the project tree down towards the bottom,

[00:06:26.411]
there is a folder contaminant models.

[00:06:29.010]
And when you expand that, there are two sub folders,

[00:06:32.370]
estimation and block models.

[00:06:35.140]
Under the estimation folder will be where the parameters sit

[00:06:38.460]
for each domain that we estimate into.

[00:06:41.140]
And in this case, we’re only estimating in one domain.

[00:06:46.300]
That is basically the volume

[00:06:47.770]
that we will be estimating into.

[00:06:50.010]
So you would right click new contaminant estimation

[00:06:52.930]
on the estimation folder.

[00:06:54.940]
I’ll just double click to open the one I’ve already created.

[00:06:59.810]
So there are two inputs required here,

[00:07:02.810]
the domain definition, so that’s the actual volume

[00:07:05.530]
we’re going to estimate into.

[00:07:07.050]
So I have a volume that I’m going to select

[00:07:09.640]
as the boundary from the geological model,

[00:07:13.480]
or basically our soils model that has already been created

[00:07:16.879]
in this project.

[00:07:23.000]
And the values will be the calculated indicators created

[00:07:27.230]
under the compositing table.

[00:07:31.830]
Make sure the transform type is set to none.

[00:07:34.770]
I think by default it’s, would be log, but we want none.

[00:07:37.600]
We don’t want it transformed.

[00:07:39.930]
On the top on the right hand side here,

[00:07:41.950]
you can have a quick check on the values.

[00:07:44.520]
Around 21.5% are ones, that’s our clay,

[00:07:48.680]
and everything else is set to zeros.

[00:07:50.800]
So you can just double check

[00:07:52.550]
that you have selected the correct file at this stage.

[00:07:57.890]
And you press OK.

[00:08:01.730]
It will then create these sub objects

[00:08:03.599]
underneath that top level here.

[00:08:06.040]
So we’ve got the domain and the value.

[00:08:07.840]
So these are the two inputs we just selected.

[00:08:12.570]
Then we have three folders.

[00:08:14.320]
The spatial models is the spatial model

[00:08:16.580]
that will be used in the estimation.

[00:08:18.270]
So that’s going to be the variogram model.

[00:08:21.240]
I’ll double click into this.

[00:08:23.720]
So I’ve already modeled this variogram model.

[00:08:26.370]
I just need to refresh this.

[00:08:29.330]
If I come to the axis aligned,

[00:08:31.280]
you will see that in the z direction or the minor access,

[00:08:36.080]
we have a very well-defined experimental variogram.

[00:08:38.790]
So this was very easy to model.

[00:08:40.770]
In the semi major and the major axes,

[00:08:43.470]
not so easy to model,

[00:08:45.790]
because of the very, very wide spacing of the data,

[00:08:48.800]
but you just need to do the best you can.

[00:08:54.620]
Then you will an estimator itself.

[00:08:57.570]
So under the estimators, if you right click,

[00:09:01.070]
you will see the various options there for estimation.

[00:09:06.470]
We’re going to do a kriging estimator.

[00:09:08.430]
So create one of those.

[00:09:10.330]
And I shall double click to go into the estimator.

[00:09:15.810]
So the tabs that we’re interested in here,

[00:09:19.790]
the discretization I’ve changed to 552.

[00:09:23.210]
So this is for the block discretization.

[00:09:25.740]
Make sure that it’s selecting

[00:09:28.104]
the variogram model you’ve made.

[00:09:29.650]
So if you’ve made more than one,

[00:09:30.680]
just make sure it is selecting the correct one.

[00:09:34.710]
Ellipsoid range I have set to 1,500 meters

[00:09:37.760]
in the maximum and intermediate directions.

[00:09:39.900]
So that’s sort of in the x and y really.

[00:09:42.480]
And then in the minimum or the vertical,

[00:09:44.770]
I have set to three meters.

[00:09:46.330]
So it’s quite constrained in the z

[00:09:48.810]
compared to the two horizontal directions.

[00:09:53.820]
Under the search definition,

[00:09:55.280]
I’ve used a minimum of seven samples

[00:09:57.550]
and a maximum 12.

[00:09:58.620]
Again, quite constrained.

[00:10:01.300]
And then for the outputs,

[00:10:02.580]
you can just select what you would like written

[00:10:04.490]
onto the block model.

[00:10:09.610]
Now we can go ahead and create the block model.

[00:10:12.490]
So the block model will be

[00:10:14.490]
underneath the block models folder here.

[00:10:17.740]
And you only have one option here, new block model.

[00:10:23.500]
So I’m just going to open the one I’ve created already.

[00:10:28.130]
Just put that to the side and we’ll look down on our data.

[00:10:35.830]
So you can see the outline of the block model

[00:10:37.720]
that I have made here.

[00:10:39.395]
This is sitting on top of the soil model,

[00:10:43.010]
the extents of the soil model,

[00:10:44.340]
and our borehole data as well you can see.

[00:10:47.300]
So, with the extents of this block model,

[00:10:50.050]
you can see that I’ve just hugged it

[00:10:51.810]
around this Northern part of the data.

[00:10:54.450]
And I’ve also rotated the block model

[00:10:57.680]
to sort of be in line with the general trend of the data.

[00:11:03.730]
The block size I’ve given is 500 by 500 by one meter.

[00:11:10.690]
Could see the grid of the blocks in the scene here.

[00:11:15.620]
And just make sure when you’re doing the extents

[00:11:19.450]
in the z that it is comfortably around the data,

[00:11:24.610]
not taking in too much dead space,

[00:11:26.610]
which can somewhat times happen.

[00:11:31.930]
So the extents are controlled

[00:11:33.330]
by just moving these arrows here.

[00:11:36.640]
It’s very easy.

[00:11:37.473]
You can just type them in as well.

[00:11:40.180]
The evaluations types,

[00:11:41.370]
this is everything that we want written

[00:11:43.050]
onto the block model.

[00:11:44.100]
So you can see that I’ve got quite a few things

[00:11:46.160]
on here at the moment,

[00:11:47.290]
but the very least you’re going to want is the indicator

[00:11:51.060]
or the estimator that you’ve set up already.

[00:11:54.070]
And if you’ve made more than one,

[00:11:55.170]
just bring all the ones on

[00:11:57.500]
that you want to have on the block model.

[00:12:00.300]
I’ve also brought on the soil model, the geological model.

[00:12:05.360]
So I can have that coded onto the block model as well.

[00:12:11.530]
When the block model has run,

[00:12:12.814]
drag it into the scene to view.

[00:12:15.080]
I’ve already created a discreet legend

[00:12:18.349]
to view the block model by.

[00:12:20.050]
So it’s just going from zero to one in 0.1 increments.

[00:12:26.380]
You can see that there’s some variability

[00:12:28.230]
in the blocks and the estimated values in the blocks here.

[00:12:32.200]
So it looks like nothing major has gone wrong,

[00:12:34.690]
or at least it’s looking reasonably correct at this stage.

[00:12:38.650]
So it’s best then to have a look in section,

[00:12:40.860]
because that’s what we’re most interested in seeing,

[00:12:43.090]
the soil profile and the estimated model.

[00:12:46.330]
So I’m just going to cut it to section here,

[00:12:51.990]
shift out to look perpendicular to your section.

[00:12:55.780]
So I’m just going to hone in on this particular borehole.

[00:12:59.750]
We can see we have a very distinct clay layer here,

[00:13:02.527]
and then it’s a bit more diffused in certain areas.

[00:13:06.660]
And we’ve got clearly distinct areas where there is no clay.

[00:13:10.720]
So if I select on a block,

[00:13:12.760]
say, sitting right in the middle here of the clay,

[00:13:15.330]
we can see it’s got the clay IK.

[00:13:18.500]
The probability is one

[00:13:20.310]
whereas if I click in a purely purple area,

[00:13:25.300]
the probability of clay’s zero.

[00:13:26.970]
So clearly what we’re most interested in

[00:13:29.840]
is where we have areas where we have a mixture of the two

[00:13:35.290]
and perhaps our geological model hasn’t picked up

[00:13:38.030]
or hasn’t modeled this as clay.

[00:13:39.810]
So if I click on this zone,

[00:13:41.220]
we can see we have a clay percentage or probability of 0.25

[00:13:47.880]
and here as well at also 0.25.

[00:13:55.720]
So now we can see we have probability associated with this.

[00:13:59.850]
Whereas in our 3D model, I then make that quite transparent.

[00:14:07.250]
So make that…

[00:14:08.930]
We can see that our model, our interpretation,

[00:14:12.500]
had this zone and this zone,

[00:14:14.640]
and these zones were not included in the clay.

[00:14:17.920]
So clearly when we’re designing,

[00:14:20.810]
or if you’re going to design a monopile

[00:14:23.590]
to intersect this area,

[00:14:24.770]
there are areas where there’s a higher probability of clay

[00:14:28.030]
than you would actually end up modeling.

[00:14:36.900]
When you have validated the model,

[00:14:38.460]
the next step is to quantify the results.

[00:14:40.950]
In order to have meaningful results,

[00:14:43.060]
you will most likely need to create some calculations

[00:14:45.898]
and filters on your block model.

[00:14:48.490]
So that’s done through the calculations and filters

[00:14:51.560]
on the block model.

[00:14:55.200]
You can see here

[00:14:56.033]
I have created two category calculations already.

[00:14:59.580]
So the category calculations, when you create it,

[00:15:02.100]
make sure you select the category calculation.

[00:15:04.920]
And I’ve created one for probability in steps of 0.1.

[00:15:10.140]
And then I’ve also done one for depths,

[00:15:12.000]
so I can report by depth intervals.

[00:15:16.940]
For the filters, I’ve created two filters here.

[00:15:21.890]
One is around all of the boreholes,

[00:15:24.330]
and that’s just to isolate the blocks

[00:15:27.232]
where they’re closest to the borehole.

[00:15:29.900]
And then the second one is similar thing

[00:15:34.927]
around one particular borehole.

[00:15:38.539]
To do this as well, I had to create a numeric model

[00:15:42.960]
using the new distance function.

[00:15:45.510]
Just use the borehole traces

[00:15:49.860]
to do the distance function from,

[00:15:51.500]
and then apply any filters

[00:15:53.300]
if you want to isolate it around certain drill holes.

[00:15:57.790]
Then you just evaluate that onto your block model

[00:15:59.790]
in the same way as you evaluate the estimator

[00:16:04.110]
and the geological model.

[00:16:09.970]
When you create a report,

[00:16:11.230]
you need to have a category on your block model

[00:16:14.164]
and use one of the categories or more.

[00:16:16.830]
You can add more than one category to report,

[00:16:19.450]
and then obviously a numeric value.

[00:16:21.410]
So you do that when you select the columns.

[00:16:23.980]
Just note here that the density,

[00:16:27.100]
the default is quite high for soils,

[00:16:29.710]
or it would be too high for soils.

[00:16:31.560]
It’s more for solid rock.

[00:16:32.600]
It’s something like 2.57.

[00:16:35.400]
So you’d need to change that down

[00:16:36.850]
unless you’ve actually estimated.

[00:16:38.319]
In which case, you can just select it there.

[00:16:41.771]
And this report is just a very basic one.

[00:16:44.050]
I’ve just used the soil model as the category.

[00:16:47.610]
And then I’m just getting the average indicator,

[00:16:50.380]
clay indicator for each horizon if it’s present.

[00:16:55.650]
The next report here, I’ve used probability as a category,

[00:17:00.290]
and that’s using that calculated field.

[00:17:04.340]
Now, you may have noticed

[00:17:06.150]
that I didn’t actually create a calculated field

[00:17:09.320]
for the less than 0.5.

[00:17:12.310]
I’ve done this within the report.

[00:17:14.570]
So you can group your categories within for your reporting.

[00:17:18.580]
So for example, maybe there’s a threshold

[00:17:20.810]
where you want to check the volume and the mass associated

[00:17:25.012]
where there’s a higher probability

[00:17:27.290]
of 0.5 of clay being present.

[00:17:31.010]
Then you can just group the categories to get that

[00:17:34.780]
and report that.

[00:17:36.100]
So I can also switch these other things off in my report,

[00:17:39.680]
these other categories,

[00:17:40.670]
’cause otherwise the report itself

[00:17:42.920]
becomes a little bit too cluttered

[00:17:45.350]
and doesn’t necessarily make sense.

[00:17:48.860]
The third report I’ve used the depth.

[00:17:51.750]
So I’m interested in just the sand mixtures,

[00:17:55.020]
and I’m looking at the probability of the clay on average

[00:17:59.450]
in these depth increments.

[00:18:01.630]
So why do I want to do that?

[00:18:03.760]
So that’s so I can see where there’s hight probabilities

[00:18:06.960]
of clay being present.

[00:18:08.520]
So I can see there’s a blip there

[00:18:11.710]
and also a little bit further down there.

[00:18:14.660]
Depth on that allows me then to go back

[00:18:17.710]
to that borehole and interrogate the model

[00:18:21.964]
and recheck the layers and take that into consideration

[00:18:27.580]
when I’m designing the monopile.

[00:18:33.810]
These filters and calculations that I’ve used for reporting

[00:18:36.820]
are also useful for use in the scene

[00:18:40.190]
if you want to filter your data in the scene.

[00:18:42.090]
So I can see here that’s the one around that borehole.

[00:18:47.020]
And also if you want to export your model, your block model,

[00:18:50.190]
you can use those filters for that as well.

[00:18:55.160]
In summary, we started with the exploratory data analysis

[00:18:58.350]
where we looked at the statistics of the intervals.

[00:19:01.600]
We composited the data, and then created an indicator field

[00:19:05.820]
for the clay.

[00:19:07.800]
We then set up the estimation parameters for the kriging.

[00:19:12.500]
First you create the object with the two inputs

[00:19:15.050]
of the volume and the values.

[00:19:17.210]
Then you do the variogram modeling

[00:19:20.010]
followed by setting up the estimator itself

[00:19:22.330]
with the estimation parameters.

[00:19:24.920]
Moving onto the block modeling,

[00:19:27.030]
first with the structure of the block model

[00:19:28.890]
with the block sizes and the extents,

[00:19:30.817]
and then evaluating on the estimator we had created

[00:19:34.900]
along with the geological model or the soil model.

[00:19:39.330]
And onto validation of the model.

[00:19:41.240]
That’s where you are checking the estimate

[00:19:43.220]
compared to the input data.

[00:19:45.280]
The last step takes us to the point of the exercise,

[00:19:47.930]
which is to quantify the material where clay poses a risk

[00:19:50.970]
in the design of a monopile.