Conditional simulation
The conditional simulation task does a conditional block turning-bands simulation. The task will automatically transform your data to a gaussian distribution before simulating. The task creates two continuous ensemble attributes. One of them is the backtransformed simulation result. The other one is the gaussian simulation result. The ensembles have one column for each realization. You get to pick how many realizations the task does.
Parameters
composites
(geoscience object reference)- A geoscience object reference that points to a one-dimensional continuous attribute inside a pointset or downhole-intervals object.
target
(geoscience object reference)- A geoscience object reference that tells the task where to save the result. It must point to an attribute inside a regular-3d-grid or a regular-masked-3d-grid object. This is where the task will save the backtransformed ensemble. It will save the gaussian result right next to this, with the suffix "-gaussian" added to the attribute's name.
distribution
(geoscience object reference)- A geoscience object reference that points to a non-parametric-continuous-cumulative-distribution object. This should be the distribution of your composites.
variogram_model
(geoscience object reference)- A geoscience object reference that points to a variogram object. This should be fitted to an experimental variogram of your composites.
search_neighborhood
(object)- A search ellipse that the task will use for kriging during the conditioning step.
-
{
"max-samples": 40, // The neighborhood can find up to this many other points.
"anisotropy": {
"ellipsoid_ranges": {
"major": 70, // The ellipsoid's major axis length.
"semi_major": 70, // The ellipsoid's semi-major axis length.
"minor": 5, // The ellipsoid's minor axis length.
},
"rotation": {
"dip_azimuth": 0, // The azimuth of the ellipsoid's dip direction, in degrees.
"dip": 0, // The dip of the ellipsoid, in degrees.
"pitch": 0, // The pitch of the ellipsoid, in degrees.
},
},
}
block_discretization
(object)- How many pieces you want to chop each grid cell into, in the x, y, and z directions. The task will simulate a value for each piece, then take their mean and assign that number to the cell.
-
{
"nx": 1, // How many pieces to chop each cell into in the x direction.
"ny": 1, // How many pieces in the y direction.
"nz": 1, // And in the z direction.
}
number_of_lines
(integer)- How many lines to use for the turning-band simulation.
random_seed
(integer, optional)- Seeds random number generation in the task. Defaults to
38239342
.
- Seeds random number generation in the task. Defaults to
n_sim
(integer)- How many realizations you want to simulate.
kriging_method
(string, optional)- The kriging method to use for the conditioning step. Can be either "simple" or "ordinary". Defaults to "simple".
variogram_reproduction
(boolean)- If this is turned on, the task computes experimental variograms for each gaussian realization. The only way to access those experimental variograms is by running the simulation report task after this one.
normalize_variogram_model
(boolean, optional)- If this is turned on, the task will automatically normalize your variogram model before simulating. That means it will scale all structures in the model, including the nugget, so that its total sill equals one. Their proportions will stay the same. Defaults to
true
.
- If this is turned on, the task will automatically normalize your variogram model before simulating. That means it will scale all structures in the model, including the nugget, so that its total sill equals one. Their proportions will stay the same. Defaults to
Example
Request
requests.post(
"https://{hub}.api.seequent.com/compute/orgs/{org_id}/geostat/conditional-simulation",
headers={"Authorization": "Bearer {token}"},
json={
"parameters": {
"composites": {
"type": "geoscience-object-reference",
"object_reference": "https://{hub}.api.seequent.com/geoscience-object/orgs/{org_id}/workspaces/{workspace_id}/objects/path/my-pointset.json",
"object_element": [
{
"type": "element",
"path": "/locations/attributes/@name=my-data",
},
],
},
"target": {
"type": "geoscience-object-reference",
"object_reference": "https://{hub}.api.seequent.com/geoscience-object/orgs/{org_id}/workspaces/{workspace_id}/objects/path/my-grid.json",
"object_element": [
{
"type": "element",
"path": "/cell_attributes/@name=my-simulation",
},
],
},
"distribution": {
"type": "geoscience-object-reference",
"object_reference": "https://{hub}.api.seequent.com/geoscience-object/orgs/{org_id}/workspaces/{workspace_id}/objects/path/my-distribution.json",
},
"variogram_model": {
"type": "geoscience-object-reference",
"object_reference": "https://{hub}.api.seequent.com/geoscience-object/orgs/{org_id}/workspaces/{workspace_id}/objects/path/my-variogram.json",
},
"search_neighborhood": {
"max-samples": 40,
"anisotropy": {
"ellipsoid_ranges": {
"major": 70,
"semi_major": 70,
"minor": 5,
},
"rotation": {
"dip_azimuth": 0,
"dip": 0,
"pitch": 0,
},
},
},
"block_discretization": {
"nx": 1,
"ny": 1,
"nz": 1,
},
"number_of_lines": 500,
"random_seed": 123,
"n_sim": 10,
"kriging_method": "simple",
"variogram_reproduction": True,
"normalize_variogram_model": True,
},
},
)
Result
{
"message": "10 conditional simulations succeeded.",
"target": {
"type": "geoscience-object-reference",
"object_reference": "https://{hub}.api.seequent.com/geoscience-object/orgs/{org_id}/workspaces/{workspace_id}/objects/path/my-grid.json",
"object_element": [
{
"type": "element",
"path": "/cell_attributes/@name=my-simulation",
},
],
},
}
Tips
- The composites and target can use the same object, but they don't have to.
- Using a block discretization of
{nx: 1, ny: 1, nz: 1}
is like doing a point simulation on the midpoint of each cell.