Test for Multi-layers¶

This paper illustrates the methodology (initially developped within the package Isatoil) which enables a joint estimation of a set of surfaces in a layer-cake framework. This methodology is based on a multi-variate approach (as many variables as they are surfaces). It is based on the information provided by the intercepts of well data with those surfaces. The spatial characteristics of the surfaces are captured in a multivariate model defined in covariances. This technique enables dealing with any kind of well information (vertical, inclined, deviated or horizontal) as it relies on the joint estimation of cumulative layer thicknesses (True Vertical Depth).

The method offers some interesting properties, such as:

  • to define the reference surface which serves as a support to the whole layer cake system
  • to establish the spatial multivariate model either on thicknesses or on velocities (if exhaustive time maps are provided). The results are then produced either in cumulative thickness maps or in layer velocity maps
  • to constraint the whole layer-cake package not to exceed a bottom map (specified exhaustively)
In [1]:
import gstlearn as gl
import pandas as pd
import gstlearn.plot as gp
import gstlearn.document as gdoc
import matplotlib.pyplot as plt

gdoc.setNoScroll()

We define the global parameters used in all the displays.

In [2]:
cex = 1
pch = 21
ol = "white"
nbtuba = 1000

Basic Methodology¶

This case study performs the different types of multilayer estimations with different hypotheses. All the estimations are represented through a vertical section across the field.

Defining the Environment¶

A second part of the environment consists in the set of 4 colors used to represent the layers. This color scale will be stored in the local variable colors.

In [3]:
colors = ["yellow", "orange", "red", "purple"]

Creating Data Bases¶

The first task is to define the well information: this consists in the intercepts with the different surfaces. Data are characterized by their 2-D coordinates, the elevation of the intercept and the rank of the intercepted variable (locator: layer). The total number of surfaces is equal to 4. The following paragraph describes the contents of the ASCII data file.

In [4]:
datcsv = pd.read_csv(gdoc.loadData("MLayers", "Intercepts.csv"))
db = gl.Db_fromPandas(datcsv)
db.setLocators(["x1", "x2"], gl.ELoc.X)
db.setLocators(["z1"], gl.ELoc.Z)
db.setLocators(["layer"], gl.ELoc.LAYER)
db
Out[4]:
Data Base Characteristics
=========================

Data Base Summary
-----------------
File is organized as a set of isolated points
Space dimension              = 2
Number of Columns            = 5
Total number of samples      = 14

Variables
---------
Column = 0 - Name = x1 - Locator = x1
Column = 1 - Name = x2 - Locator = x2
Column = 2 - Name = z1 - Locator = z1
Column = 3 - Name = layer - Locator = layer
Column = 4 - Name = well - Locator = NA

All the case study will be performed using a Unique Neighborhood which is created here and saved in the object called neigh.

In [5]:
neigh = gl.NeighUnique()

A 2-D grid is created covering the area of interest.

In [6]:
grid = gl.DbGrid.create(nx=[100, 100])

Several variables are created in the Grid file which will be used to demonstrate some of the options:

  • a surface is generated as a tilted plane covering the field: it will possibly be used as the reference surface (hence its name)
In [7]:
err = grid.addColumns((grid["x1"] + grid["x2"]) / 200, "reference")
  • a more irregular surface is generated which will possibly be used as the bottom surface (hence its name). This surface is simulated using a simulation (with a short range spherical model), conditioned by the well intercepts with the layer #4. Ordinary Kriging is used to set the mean to the average of the data.
In [8]:
model = gl.Model.createFromParam(gl.ECov.SPHERICAL, range=10, sill=0.05)
model.setDriftIRF(0)
db.addSelection(db["layer"] == 4)
err = gl.simtub(db, grid, model, neigh, seed=0, nbtuba=nbtuba)
grid.setName("Simu.z1", "bottom")
db.clearSelection()
  • a set of 4 time surfaces are generated: they are simulated unconditionally in the time system, with different means (1000m/s for the first one, 1200 for the second one, 1400 for the third one and 1600 for the last one). For simplicity, they all follow the same spatial characteristics: short range spherical model with the same variance
In [9]:
model = gl.Model.createFromParam(gl.ECov.SPHERICAL, range=10, sill=4)

model.setMean(1000)
err = gl.simtub(None, grid, model, seed=0, nbtuba=nbtuba)
grid.setName("Simu", "Time1000")

model.setMean(1200)
err = gl.simtub(None, grid, model, seed=0, nbtuba=nbtuba)
grid.setName("Simu", "Time1200")

model.setMean(1400)
err = gl.simtub(None, grid, model, seed=0, nbtuba=nbtuba)
grid.setName("Simu", "Time1400")

model.setMean(1600)
err = gl.simtub(None, grid, model, seed=0, nbtuba=nbtuba)
grid.setName("Simu", "Time1600")

grid.setLocators(["Time*"], gl.ELoc.TIME)
In [10]:
grid
Out[10]:
Data Base Grid Characteristics
==============================

Data Base Summary
-----------------
File is organized as a regular grid
Space dimension              = 2
Number of Columns            = 9
Total number of samples      = 10000

Grid characteristics:
---------------------
Origin :       0.000      0.000
Mesh   :       1.000      1.000
Number :         100        100

Variables
---------
Column = 0 - Name = rank - Locator = NA
Column = 1 - Name = x1 - Locator = x1
Column = 2 - Name = x2 - Locator = x2
Column = 3 - Name = reference - Locator = NA
Column = 4 - Name = bottom - Locator = NA
Column = 5 - Name = Time1000 - Locator = time1
Column = 6 - Name = Time1200 - Locator = time2
Column = 7 - Name = Time1400 - Locator = time3
Column = 8 - Name = Time1600 - Locator = time4

A trace (stored in the object trace) is defined which crosses the field along its first diagonal.

In [11]:
trace = gl.MatrixDense.createFromVD([0, 50, 90, 0, 50, 90], 3, 2)
trace
Out[11]:
- Number of rows    = 3
- Number of columns = 2
                 [,  0]     [,  1]
      [  0,]      0.000      0.000
      [  1,]     50.000     50.000
      [  2,]     90.000     90.000

In the next figure, we represent the data information on a horizontal view plane, together with the trace.

In [12]:
fix, ax = plt.subplots()
ax.symbol(db, nameColor="layer", c=colors, s=100)
ax.XY(trace.getColumn(0), trace.getColumn(1))
plt.show()
No description has been provided for this image

The multivariate model used in all subsequent interpolations is defined here. For simplicity sake, all the variables are independent and follow the same spatial characteristics (with a cubic variogram) with different sills

In [13]:
sills = gl.MatrixSymmetric.createFromDiagonal([1.0, 3.0, 2.0, 4.0])
model = gl.Model.createFromParam(gl.ECov.CUBIC, range=40, sills=sills)

Multilayers estimation¶

In [14]:
figsize = [10, 4]
checkOrder = 1
edgecolor = "black"

It is now time to perform the joint estimation of the set of surfaces of the layer cake. For all the different options, we store the results in an auxiliary Grid file (called a) and display the them along the vertical section (with the vertical axis oriented downwards).

The first attempt is the standard interpolation when defining no reference not bottom surfaces.

In [15]:
err = gl.multilayers_kriging(db, grid, model, namconv=gl.NamingConvention("MLKriging"))

The next figure shows the natural estimation of the different surfaces. Note that there is no requirement to forbid their intersection (far from the control points).

In [16]:
gp.init(figsize=figsize)
gp.sectionFromGrid(trace, grid, flagFill=False, flagUp=False, colors=colors)
gp.sectionFromPoints(trace, db, colors=colors, s=100, edgecolor=edgecolor)
gp.decoration("Depth Estimation")
No description has been provided for this image

If we fill the inter-surface areas, the visibility is improved.

In [17]:
gp.init(figsize=figsize)
gp.sectionFromGrid(
    trace, grid, flagFill=True, flagUp=False, colors=colors, checkOrder=checkOrder
)
gp.sectionFromPoints(trace, db, colors=colors, s=100, edgecolor=edgecolor)
gp.decoration("Depth Estimation (painted by layers)")
No description has been provided for this image

In the following case, a reference surface is added and the same interpolation is carried on (all thicknesses are calculated in the flattened system).

In [18]:
err = gl.multilayers_kriging(
    db, grid, model, namerefd="reference", namconv=gl.NamingConvention("MLKrigRef")
)
In [19]:
gp.init(figsize=figsize)
gp.sectionFromGrid(
    trace,
    grid,
    addNames={"reference"},
    flagFill=True,
    flagUp=False,
    colors=colors,
    checkOrder=checkOrder,
)
gp.sectionFromPoints(trace, db, colors=colors, s=100, edgecolor="black")
gp.decoration("Depth Estimation (with tilted Reference surface)")
No description has been provided for this image

The results of the previous attempt are presented in layer thickness. Obviously it does not make sense to overlay the well intercepts provided in depth.

In [20]:
err = gl.multilayers_kriging(
    db,
    grid,
    model,
    namerefd="reference",
    flag_Z=False,
    namconv=gl.NamingConvention("MLKrigThick"),
)
In [21]:
gp.init(figsize=figsize)
gp.sectionFromGrid(trace, grid, flagFill=False, flagUp=True, colors=colors)
gp.decoration("Thickness Estimation")
No description has been provided for this image

The same interpolation can be performed considering that the spatial characteristics correspond to the velocities (rather than to thicknesses)

In [22]:
err = gl.multilayers_kriging(
    db,
    grid,
    model,
    namerefd="reference",
    flag_vel=True,
    namconv=gl.NamingConvention("MLKrigVel"),
)
In [23]:
gp.init(figsize=figsize)
gp.sectionFromGrid(
    trace,
    grid,
    addNames={"reference"},
    flagFill=True,
    flagUp=False,
    colors=colors,
    checkOrder=checkOrder,
)
gp.sectionFromPoints(trace, db, colors=colors, s=100, edgecolor=edgecolor)
gp.decoration("Depth Estimation (performed using Velocities)")
No description has been provided for this image

This last trial produces the layer velocities obtained in the same circonstances:

In [24]:
err = gl.multilayers_kriging(
    db,
    grid,
    model,
    namerefd="reference",
    flag_vel=True,
    flag_Z=False,
    namconv=gl.NamingConvention("MLKrigVel"),
)
In [25]:
gp.init(figsize=figsize)
gp.sectionFromGrid(trace, grid, flagFill=False, flagUp=True, colors=colors)
gp.decoration("Velocity Estimation")
No description has been provided for this image

In this last trial, we define both the reference and the bottom surfaces and perform the interpolation in depth. These two external surfaces are also displayed.

In [26]:
err = gl.multilayers_kriging(
    db,
    grid,
    model,
    namerefd="reference",
    namerefb="bottom",
    namconv=gl.NamingConvention("MLKrigRefBot"),
)
In [27]:
gp.init(figsize=figsize)
gp.sectionFromGrid(
    trace,
    grid,
    addNames={"reference", "bottom"},
    flagFill=True,
    flagUp=False,
    colors=colors,
    checkOrder=checkOrder,
)
gp.sectionFromPoints(trace, db, colors=colors, s=100, edgecolor=edgecolor)
gp.decoration("Depth Estimation (using Bottom Constraints and Reference)")
No description has been provided for this image

Bayesian Kriging¶

The procedure is continued by adding the relevant output when using some Bayes criterion. Compared to the usual case, some additional information is printed out using the keypair mechanism.

In [28]:
err = gl.multilayers_getPrior(db, grid, model)

#    err = gl.multilayers_kriging(db,grid,model,namerefd="reference", namerefb = "bottom",
#                           namconv=gl.NamingConvention("MLKrigRefBot"))
Number of parameters = 4
Means
      3.033      0.667      0.900      1.300
Variances
                 [,  0]     [,  1]     [,  2]     [,  3]     [,  4]     [,  5]     [,  6]
      [  0,]      0.007     -0.007      0.000      0.000     -0.007      0.010     -0.003
      [  7,]      0.000      0.000     -0.003      0.010     -0.008      0.000      0.000
      [ 14,]     -0.008      0.013

Debugging principle¶

In this chapter, we print the relevant information to allow debugging. Some additional ingredients have been left apart, such as the use of some reference surfaces both in depth and in time.

Standard Kriging¶

In this first part, we concentrate on the kriging system. The whole system is dumped out when processing the first grid node (named "1"). It is displayed when working:

  • in depth
In [29]:
gl.OptDbg.setReference(1)
In [30]:
err = gl.multilayers_kriging(
    db, grid, model, flag_vel=False, namconv=gl.NamingConvention("MLTest")
)
LHS of Kriging matrix (compressed)
==================================
Number of active samples    = 14
Total number of equations   = 18
Reduced number of equations = 18

       Rank                     1          2          3          4          5
          1          1      1.000      1.000      1.000      1.000      0.000
          2          2      1.000      4.000      4.000      4.000      0.000
          3          3      1.000      4.000      6.000      6.000      0.000
          4          4      1.000      4.000      6.000     10.000      0.000
          5          5      0.000      0.000      0.000      0.000      1.000
          6          6      0.000      0.000      0.000      0.000      0.992
          7          7      0.000      0.000      0.000      0.000      0.992
          8          8      0.000      0.000      0.000      0.000      0.000
          9          9      0.000      0.000      0.000      0.000      0.000
         10         10      0.000      0.000      0.000      0.000      0.000
         11         11      0.000      0.000      0.000      0.000      0.000
         12         12      0.000      0.000      0.000      0.000      0.000
         13         13      0.000      0.000      0.000      0.000      0.000
         14         14      0.000      0.000      0.000      0.000      0.000
         15         15      1.000      1.000      1.000      1.000      1.000
         16         16      0.000      1.000      1.000      1.000      0.000
         17         17      0.000      0.000      1.000      1.000      0.000
         18         18      0.000      0.000      0.000      1.000      0.000

       Rank                     6          7          8          9         10
          1          1      0.000      0.000      0.000      0.000      0.000
          2          2      0.000      0.000      0.000      0.000      0.000
          3          3      0.000      0.000      0.000      0.000      0.000
          4          4      0.000      0.000      0.000      0.000      0.000
          5          5      0.992      0.992      0.000      0.000      0.000
          6          6      4.000      4.000      0.000      0.000      0.000
          7          7      4.000     10.000      0.000      0.000      0.000
          8          8      0.000      0.000      1.000      1.000      1.000
          9          9      0.000      0.000      1.000      4.000      4.000
         10         10      0.000      0.000      1.000      4.000      6.000
         11         11      0.000      0.000      1.000      4.000      6.000
         12         12      0.000      0.000      0.000      0.000      0.000
         13         13      0.000      0.000      0.000      0.000      0.000
         14         14      0.000      0.000      0.000      0.000      0.000
         15         15      1.000      1.000      1.000      1.000      1.000
         16         16      1.000      1.000      0.000      1.000      1.000
         17         17      0.000      1.000      0.000      0.000      1.000
         18         18      0.000      1.000      0.000      0.000      0.000

       Rank                    11         12         13         14         15
          1          1      0.000      0.000      0.000      0.000      1.000
          2          2      0.000      0.000      0.000      0.000      1.000
          3          3      0.000      0.000      0.000      0.000      1.000
          4          4      0.000      0.000      0.000      0.000      1.000
          5          5      0.000      0.000      0.000      0.000      1.000
          6          6      0.000      0.000      0.000      0.000      1.000
          7          7      0.000      0.000      0.000      0.000      1.000
          8          8      1.000      0.000      0.000      0.000      1.000
          9          9      4.000      0.000      0.000      0.000      1.000
         10         10      6.000      0.000      0.000      0.000      1.000
         11         11     10.000      0.000      0.000      0.000      1.000
         12         12      0.000      4.000      3.316      0.794      1.000
         13         13      0.000      3.316      6.000      2.957      1.000
         14         14      0.000      0.794      2.957     10.000      1.000
         15         15      1.000      1.000      1.000      1.000      0.000
         16         16      1.000      1.000      1.000      1.000      0.000
         17         17      1.000      0.000      1.000      1.000      0.000
         18         18      1.000      0.000      0.000      1.000      0.000

       Rank                    16         17         18
          1          1      0.000      0.000      0.000
          2          2      1.000      0.000      0.000
          3          3      1.000      1.000      0.000
          4          4      1.000      1.000      1.000
          5          5      0.000      0.000      0.000
          6          6      1.000      0.000      0.000
          7          7      1.000      1.000      1.000
          8          8      0.000      0.000      0.000
          9          9      1.000      0.000      0.000
         10         10      1.000      1.000      0.000
         11         11      1.000      1.000      1.000
         12         12      1.000      0.000      0.000
         13         13      1.000      1.000      0.000
         14         14      1.000      1.000      1.000
         15         15      0.000      0.000      0.000
         16         16      0.000      0.000      0.000
         17         17      0.000      0.000      0.000
         18         18      0.000      0.000      0.000

Data Vector
===========
Number of active samples  = 14
Total number of equations = 18
Data
                 [,  0]
      [  0,]      3.000
      [  1,]      4.000
      [  2,]      5.100
      [  3,]      6.400
      [  4,]      3.500
      [  5,]      3.800
      [  6,]      5.500
      [  7,]      2.600
      [  8,]      3.800
      [  9,]      4.500
      [ 10,]      5.500
      [ 11,]      3.200
      [ 12,]      4.200
      [ 13,]      6.200

Target location
---------------
Sample #1 (from 10000)
Coordinate #1 = 0.000000
Coordinate #2 = 0.000000

Layer #1
........

RHS of Kriging matrix (compressed)
==================================
Number of active samples    = 14
Total number of equations   = 18
Reduced number of equations = 18
Number of right-hand sides  = 1
Punctual Estimation

       Rank          1
          1      0.493
          2      0.493
          3      0.493
          4      0.493
          5      0.000
          6      0.000
          7      0.000
          8      0.000
          9      0.000
         10      0.000
         11      0.000
         12      0.000
         13      0.000
         14      0.000
         15      1.000
         16      0.000
         17      0.000
         18      0.000
Estimate = 3.001041

Layer #2
........

RHS of Kriging matrix (compressed)
==================================
Number of active samples    = 14
Total number of equations   = 18
Reduced number of equations = 18
Number of right-hand sides  = 1
Punctual Estimation

       Rank          1
          1      0.000
          2      1.479
          3      1.479
          4      1.479
          5      0.000
          6      0.000
          7      0.000
          8      0.000
          9      0.000
         10      0.000
         11      0.000
         12      0.000
         13      0.000
         14      0.000
         15      0.000
         16      1.000
         17      0.000
         18      0.000
Estimate = 0.869622

Layer #3
........

RHS of Kriging matrix (compressed)
==================================
Number of active samples    = 14
Total number of equations   = 18
Reduced number of equations = 18
Number of right-hand sides  = 1
Punctual Estimation

       Rank          1
          1      0.000
          2      0.000
          3      0.986
          4      0.986
          5      0.000
          6      0.000
          7      0.000
          8      0.000
          9      0.000
         10      0.000
         11      0.000
         12      0.000
         13      0.000
         14      0.000
         15      0.000
         16      0.000
         17      1.000
         18      0.000
Estimate = 0.984760

Layer #4
........

RHS of Kriging matrix (compressed)
==================================
Number of active samples    = 14
Total number of equations   = 18
Reduced number of equations = 18
Number of right-hand sides  = 1
Punctual Estimation

       Rank          1
          1      0.000
          2      0.000
          3      0.000
          4      1.972
          5      0.000
          6      0.000
          7      0.000
          8      0.000
          9      0.000
         10      0.000
         11      0.000
         12      0.000
         13      0.000
         14      0.000
         15      0.000
         16      0.000
         17      0.000
         18      1.000
Estimate = 1.229753
  • or in velocities
In [31]:
err = gl.multilayers_kriging(
    db, grid, model, flag_vel=True, namconv=gl.NamingConvention("MLTest")
)
LHS of Kriging matrix (compressed)
==================================
Number of active samples    = 14
Total number of equations   = 18
Reduced number of equations = 18

       Rank                     1          2          3          4          5
          1          1      1.000      0.833      0.713      0.625      0.000
          2          2      0.833      0.777      0.666      0.583      0.000
          3          3      0.713      0.666      0.611      0.536      0.000
          4          4      0.625      0.583      0.536      0.531      0.000
          5          5      0.000      0.000      0.000      0.000      1.000
          6          6      0.000      0.000      0.000      0.000      0.827
          7          7      0.000      0.000      0.000      0.000      0.620
          8          8      0.000      0.000      0.000      0.000      0.000
          9          9      0.000      0.000      0.000      0.000      0.000
         10         10      0.000      0.000      0.000      0.000      0.000
         11         11      0.000      0.000      0.000      0.000      0.000
         12         12      0.000      0.000      0.000      0.000      0.000
         13         13      0.000      0.000      0.000      0.000      0.000
         14         14      0.000      0.000      0.000      0.000      0.000
         15         15      1.000      0.833      0.713      0.625      1.000
         16         16      0.000      0.167      0.143      0.126      0.000
         17         17      0.000      0.000      0.143      0.126      0.000
         18         18      0.000      0.000      0.000      0.124      0.000

       Rank                     6          7          8          9         10
          1          1      0.000      0.000      0.000      0.000      0.000
          2          2      0.000      0.000      0.000      0.000      0.000
          3          3      0.000      0.000      0.000      0.000      0.000
          4          4      0.000      0.000      0.000      0.000      0.000
          5          5      0.827      0.620      0.000      0.000      0.000
          6          6      0.778      0.584      0.000      0.000      0.000
          7          7      0.584      0.531      0.000      0.000      0.000
          8          8      0.000      0.000      1.000      0.833      0.709
          9          9      0.000      0.000      0.833      0.777      0.662
         10         10      0.000      0.000      0.709      0.662      0.608
         11         11      0.000      0.000      0.622      0.581      0.533
         12         12      0.000      0.000      0.000      0.000      0.000
         13         13      0.000      0.000      0.000      0.000      0.000
         14         14      0.000      0.000      0.000      0.000      0.000
         15         15      0.834      0.626      1.000      0.833      0.709
         16         16      0.166      0.124      0.000      0.167      0.143
         17         17      0.000      0.126      0.000      0.000      0.148
         18         18      0.000      0.125      0.000      0.000      0.000

       Rank                    11         12         13         14         15
          1          1      0.000      0.000      0.000      0.000      1.000
          2          2      0.000      0.000      0.000      0.000      0.833
          3          3      0.000      0.000      0.000      0.000      0.713
          4          4      0.000      0.000      0.000      0.000      0.625
          5          5      0.000      0.000      0.000      0.000      1.000
          6          6      0.000      0.000      0.000      0.000      0.834
          7          7      0.000      0.000      0.000      0.000      0.626
          8          8      0.622      0.000      0.000      0.000      1.000
          9          9      0.581      0.000      0.000      0.000      0.833
         10         10      0.533      0.000      0.000      0.000      0.709
         11         11      0.528      0.000      0.000      0.000      0.622
         12         12      0.000      0.779      0.553      0.116      0.835
         13         13      0.000      0.553      0.611      0.264      0.713
         14         14      0.000      0.116      0.264      0.530      0.624
         15         15      0.622      0.835      0.713      0.624      0.000
         16         16      0.125      0.165      0.145      0.125      0.000
         17         17      0.130      0.000      0.142      0.127      0.000
         18         18      0.123      0.000      0.000      0.124      0.000

       Rank                    16         17         18
          1          1      0.000      0.000      0.000
          2          2      0.167      0.000      0.000
          3          3      0.143      0.143      0.000
          4          4      0.126      0.126      0.124
          5          5      0.000      0.000      0.000
          6          6      0.166      0.000      0.000
          7          7      0.124      0.126      0.125
          8          8      0.000      0.000      0.000
          9          9      0.167      0.000      0.000
         10         10      0.143      0.148      0.000
         11         11      0.125      0.130      0.123
         12         12      0.165      0.000      0.000
         13         13      0.145      0.142      0.000
         14         14      0.125      0.127      0.124
         15         15      0.000      0.000      0.000
         16         16      0.000      0.000      0.000
         17         17      0.000      0.000      0.000
         18         18      0.000      0.000      0.000

Data Vector
===========
Number of active samples  = 14
Total number of equations = 18
Data
                 [,  0]
      [  0,]      0.003
      [  1,]      0.003
      [  2,]      0.004
      [  3,]      0.004
      [  4,]      0.003
      [  5,]      0.003
      [  6,]      0.003
      [  7,]      0.003
      [  8,]      0.003
      [  9,]      0.003
      [ 10,]      0.003
      [ 11,]      0.003
      [ 12,]      0.003
      [ 13,]      0.004

Target location
---------------
Sample #1 (from 10000)
Coordinate #1 = 0.000000
Coordinate #2 = 0.000000

Layer #1
........

RHS of Kriging matrix (compressed)
==================================
Number of active samples    = 14
Total number of equations   = 18
Reduced number of equations = 18
Number of right-hand sides  = 1
Punctual Estimation

       Rank          1
          1      0.493
          2      0.410
          3      0.352
          4      0.308
          5      0.000
          6      0.000
          7      0.000
          8      0.000
          9      0.000
         10      0.000
         11      0.000
         12      0.000
         13      0.000
         14      0.000
         15      1.000
         16      0.000
         17      0.000
         18      0.000
Estimate = 0.002981

Layer #2
........

RHS of Kriging matrix (compressed)
==================================
Number of active samples    = 14
Total number of equations   = 18
Reduced number of equations = 18
Number of right-hand sides  = 1
Punctual Estimation

       Rank          1
          1      0.000
          2      0.248
          3      0.212
          4      0.186
          5      0.000
          6      0.000
          7      0.000
          8      0.000
          9      0.000
         10      0.000
         11      0.000
         12      0.000
         13      0.000
         14      0.000
         15      0.000
         16      1.000
         17      0.000
         18      0.000
Estimate = 0.004600

Layer #3
........

RHS of Kriging matrix (compressed)
==================================
Number of active samples    = 14
Total number of equations   = 18
Reduced number of equations = 18
Number of right-hand sides  = 1
Punctual Estimation

       Rank          1
          1      0.000
          2      0.000
          3      0.141
          4      0.124
          5      0.000
          6      0.000
          7      0.000
          8      0.000
          9      0.000
         10      0.000
         11      0.000
         12      0.000
         13      0.000
         14      0.000
         15      0.000
         16      0.000
         17      1.000
         18      0.000
Estimate = 0.004837

Layer #4
........

RHS of Kriging matrix (compressed)
==================================
Number of active samples    = 14
Total number of equations   = 18
Reduced number of equations = 18
Number of right-hand sides  = 1
Punctual Estimation

       Rank          1
          1      0.000
          2      0.000
          3      0.000
          4      0.245
          5      0.000
          6      0.000
          7      0.000
          8      0.000
          9      0.000
         10      0.000
         11      0.000
         12      0.000
         13      0.000
         14      0.000
         15      0.000
         16      0.000
         17      0.000
         18      1.000
Estimate = 0.006047
In [32]:
gl.OptDbg.setReference(-1)
In [ ]: