Skip to content

petekStatic

The geomodel layer: structural framework + grid construction + property modelling + volumetrics / static uncertainty → a populated StaticModel.

petekStatic is the Python-facing geomodel layer. Project loading belongs to petekio; static modelling starts from that loaded petekio.Project and keeps the static workflow in petekstatic:

import petekio as pio
import petekstatic as pst

project = pio.Project.import_data(
    "Data",
    settings=pio.ImportSettings(
        crs="EPSG:32631",
        aliases={"PHIE": ["PHI", "PHIE"], "NetSand": ["NTG", "NETSAND"]},
    ),
)

logs = project.wells.logs
grid = (
    pst.Grid.from_project(project)
    .geometry(cell=(50.0, 50.0), orient=0.0, outline="ModelEdge")
    .horizons(
        [
            {
                "name": "Top reservoir",
                "surface": "Top reservoir input surface",
                "well top": "well tops/Top reservoir",
                "zone": {
                    "name": "Reservoir",
                    "sub-zones": [
                        {"zone": "Top Reservoir", "type": "constant"},
                        {"name": "Intra Shale", "well top": "Top Lower Reservoir"},
                        {"name": "Lower Reservoir", "type": "isochore"},
                    ],
                },
            },
            "Base reservoir",
            {"name": "Custom model horizon name", "surface": "input surface"},
        ],
        well_tie={"influence_radius": 800},
    )
    .layers({"Top Reservoir": pst.Layering(n=10), "Lower Reservoir": pst.Layering(n=10)})
)

vgm = pst.Var("spherical", major=1500, minor=700, vertical=20, azimuth=35)
grid.properties.ntg = pst.upscale(logs.NetSand).sgs(variogram=vgm, seed=11)
grid.properties.por = pst.upscale(logs.PHIE(logs.NetSand > 0.50)).sgs(
    variogram=vgm,
    distribution=pst.distributions.from_logs(),
    seed=12,
)

The Rust API

One crate — petekstatic — with the headline StaticModel API re-exported at the crate root:

Concern Module
The StaticModel aggregate + builder + MC-regeneration seam petekstatic::model (root re-export)
Grid construction (convergent corner-point) petekstatic::{grid, gridder, wireframe}
Property modelling (priors / log upscaling) petekstatic::petro
Volumetrics + static uncertainty petekstatic::{volumetrics, uncertainty}
Model-ready input access petekstatic::data

Full Rust reference: docs.rs/petekstatic/0.1.12 (see the Rust API page). Design constitution and the locked contract live in the repo's SPEC.md / API.md.

See also the petekStatic guide and the stack-model notebook.