Skip to main content

petekStatic — the geomodel layer: build a populated static reservoir model and read volumes (OOIP/OGIP) + view bundles from Python (Rust core).

Project description

petekStatic

GEOMODEL layer of the petek subsurface-modelling ecosystem — a Rust library that turns model-ready inputs into a populated StaticModel and owns the static-uncertainty stack over it:

  • Structural framework — horizons + zones (+ faults, planned).
  • Grid construction — the convergent corner-point grid the properties live on.
  • Property modelling — priors, property formulas, log upscaling, and the first PropertyPipeline lowering path; facies/geostatistics grow from there.
  • Volumetrics + static uncertainty — GRV / in-place (OOIP/OGIP) off the model itself, and Monte-Carlo regeneration over static-model realizations (StaticModelTemplate::realize(&RealizationDraw)).

→ a populated StaticModel with its own volumes/P-curve surface, which petekSim (dynamic/engineering simulation + the Python product facade) consumes across the seam.

Documentation

The canonical docs for the whole petek family live on the petekSuite site — petekStatic's pages there:

Where it sits (deps flow one way, downward)

petekIO      DATA       → model-ready inputs (ModelInputs / .pproj)      [upstream]
   ↓
petekStatic  GEOMODEL   → populated StaticModel + volumetrics/uncertainty [here]
   ↓
petekSim     SIMULATION → dynamic/engineering + the Python product        [downstream]

petekTools   TOOLKIT    → gridding/kriging/warm-start kernels + units + pproj  [horizontal]

Python workflow facade

petekStatic now owns the first Python slice of the canonical static workflow. The facade is deliberately small: declare the grid, assign properties, calculate formulas through petekTools, and run deterministic smoke volumes.

import petekstatic as pst

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=2), "Lower Reservoir": pst.Layering(n=2)})
)

p = grid.properties
p.ntg = 0.80                         # scalar assignment broadcasts to the grid
p.por = p.ntg * 0.85                 # assignment expression via petekTools
p.sw = 0.20
p["PermXY_BC"].set(100.0)
p["PorE_BC"].set(0.25)
p.calc(["RQI = $lambda * sqrt(PermXY_BC / PorE_BC)"], params={"lambda": 0.0314})

result = grid.volumes(ntg="NTG", por="POR", sw="Sw", fluid="oil", fvf=1.30).run(progress=True)

Property recipes use the same facade and lower to the Rust PropertyPipeline shape:

logs = project.logs
vgm = pst.Var("spherical", major=1500, minor=700, vertical=20, azimuth=35)

p.por = pst.upscale(logs.PHIE(logs.NetSand > 0.50)).sgs(
    variogram=vgm,
    distribution=pst.distributions.from_logs(),
    seed=12,
)

spec = p.pipelines("por")            # serialization-ready PropertyPipelineSpec

If the project or source resolves positioned wells, p.execute_pipeline("por") returns a Rust-backed pst.PropertyPipeline handle:

iso = pst.Var("spherical", major=1500, minor=1500, vertical=1500, azimuth=0)
p.ntg = pst.upscale(logs.NetSand).sgs(
    variogram=iso,
    distribution=pst.distributions.from_logs(),
    seed=11,
)
pipe = p.execute_pipeline("ntg")
smoke_model = pipe.apply_to_flat_model()

Applying that handle to an arbitrary production grid is not exposed yet; PropertyPipeline.apply_to_flat_model(...) is the current smoke execution path. Lazy logs, cokriging/trend binding, non-from_logs distributions, and anisotropic Rust execution are guarded explicitly. Anisotropic pst.Var(...) specs are still preserved and can be lowered to the petekTools anisotropic variogram object.

Status — built and green

A single crate, petekstatic (0.1.8), whose modules preserve the historical layer boundaries and one-directional imports: petekstatic::{error, wireframe, grid, petro, gridder, volumetrics, uncertainty, data, spill, model} — with the top-of-DAG model surface (the StaticModel aggregate + the ratified MC-regeneration seam) re-exported at the crate root. Consolidated from the former ten-crate workspace on 2026-07-05 (owner ruling; the former srs-* and petekstatic-error package names are retired). The volumetrics/uncertainty code relocated here from petekSim on 2026-07-03 (the layer-charter re-scope). Design constitution: SPEC.md; public contract: API.md. Working folders: dev-docs/README.md, inbox/README.md.

Licensing

petekStatic is licensed under the Business Source License 1.1 — see LICENSE. Non-production use is freely granted; production use is permitted by the Additional Use Grant except as a competing commercial "as-a-service" offering of the Licensed Work's functionality. Each released version converts to the Change License (Apache-2.0) four years after its first publication. For alternative licensing, contact kkollsg@gmail.com. (The {VERSION} / Change Date parameters are filled in at each release cut.)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

petekstatic-0.1.8.tar.gz (392.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

petekstatic-0.1.8-cp310-abi3-win_amd64.whl (562.9 kB view details)

Uploaded CPython 3.10+Windows x86-64

petekstatic-0.1.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (692.1 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

petekstatic-0.1.8-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (653.5 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

petekstatic-0.1.8-cp310-abi3-macosx_11_0_arm64.whl (631.5 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

petekstatic-0.1.8-cp310-abi3-macosx_10_12_x86_64.whl (673.1 kB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file petekstatic-0.1.8.tar.gz.

File metadata

  • Download URL: petekstatic-0.1.8.tar.gz
  • Upload date:
  • Size: 392.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for petekstatic-0.1.8.tar.gz
Algorithm Hash digest
SHA256 6d88b466c0c61301ccf574a835ba165f2f493081a5c256e787545947239c7dde
MD5 88589df97bbdf8529cf24d6077b72b7c
BLAKE2b-256 7c3f624ac252a1a9fe41ef74aa8edf502cacaf0d2218c4992b33e1fd64bfeab1

See more details on using hashes here.

Provenance

The following attestation bundles were made for petekstatic-0.1.8.tar.gz:

Publisher: release.yml on kkollsga/petekstatic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file petekstatic-0.1.8-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: petekstatic-0.1.8-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 562.9 kB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for petekstatic-0.1.8-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 8952d9c99d21096e515a31b1faf627a9ad4cebd9074269fb9cda8496e85274e8
MD5 9eaf50bea35f4c3cce0d4f99884a922c
BLAKE2b-256 572a575accbc603e301d58f8bb5b61fed22139316859b9e2b1445f11c7da9ce3

See more details on using hashes here.

Provenance

The following attestation bundles were made for petekstatic-0.1.8-cp310-abi3-win_amd64.whl:

Publisher: release.yml on kkollsga/petekstatic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file petekstatic-0.1.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for petekstatic-0.1.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 235436b973d544ac22f0747f06809b98f6204b4f5e2cce35c090813f0b614f53
MD5 9b7475d227c4be61a974641c8bbc55db
BLAKE2b-256 446c00886ae5daf1684f084020e5579a1542059d1f71be5a872b69234cd76939

See more details on using hashes here.

Provenance

The following attestation bundles were made for petekstatic-0.1.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on kkollsga/petekstatic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file petekstatic-0.1.8-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for petekstatic-0.1.8-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5d4f5720b82432e3a3573bd195806984694b543ab45ce3aa12ce9ae3e06f1f1e
MD5 cb078476a2557d09316c77cfcc653e24
BLAKE2b-256 ce61590248a04ba457d84fa5fa89740fa94a68f5e0b01c270fb8c9a49543d887

See more details on using hashes here.

Provenance

The following attestation bundles were made for petekstatic-0.1.8-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on kkollsga/petekstatic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file petekstatic-0.1.8-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for petekstatic-0.1.8-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ded8a5294126552bb2a5d89442ede3386d28c1034b3a42610388a065d13d524d
MD5 554543c5397eee33b50d3957188d505e
BLAKE2b-256 ba5c64642e2d48d2f27db11301c2aa132c94f18dbbfff33b9f7c7c777ba15cd7

See more details on using hashes here.

Provenance

The following attestation bundles were made for petekstatic-0.1.8-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on kkollsga/petekstatic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file petekstatic-0.1.8-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for petekstatic-0.1.8-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 09dbb6a6f58d529f82c70a7aa81a5b39e15f591c8d0118cfc31129ecf3860e15
MD5 de78108b781b28a7b34d6fc10a7ff58a
BLAKE2b-256 1c9beff6e6d9c013dabe65f668e84776f021c31b60ee542d8a82b1f3a30ef4ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for petekstatic-0.1.8-cp310-abi3-macosx_10_12_x86_64.whl:

Publisher: release.yml on kkollsga/petekstatic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page