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.10), 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.11.tar.gz (393.3 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.11-cp310-abi3-win_amd64.whl (563.0 kB view details)

Uploaded CPython 3.10+Windows x86-64

petekstatic-0.1.11-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (691.7 kB view details)

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

petekstatic-0.1.11-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (653.6 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

petekstatic-0.1.11-cp310-abi3-macosx_11_0_arm64.whl (631.3 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

petekstatic-0.1.11-cp310-abi3-macosx_10_12_x86_64.whl (672.7 kB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: petekstatic-0.1.11.tar.gz
  • Upload date:
  • Size: 393.3 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.11.tar.gz
Algorithm Hash digest
SHA256 e543493f4e390650e9ccc3532e7dd8a5561afd11ac07df56151eebd82a832639
MD5 e9d82ab516466e256c12ea15356a73ea
BLAKE2b-256 3e4539135580c1e5cc91b5051e0fb1b41811a32fc2fd03c2cc9cd9c88df291b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for petekstatic-0.1.11.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.11-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: petekstatic-0.1.11-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 563.0 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.11-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 22d2aa968204460bae4e76936f03929a282c9051cc48abc6ead73ef151f2f6f7
MD5 a14af0f2fffdcf83523b1ccdde1464a6
BLAKE2b-256 e0099018042167106973d6f0f1f4af9bee24c0a13731e3989577c35685681b5a

See more details on using hashes here.

Provenance

The following attestation bundles were made for petekstatic-0.1.11-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.11-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for petekstatic-0.1.11-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3f709de173f96e5dff6d186cf5f584b8e08455bbf3218d136cbb45776fd3516e
MD5 fbad92ebd5af9c5f93b69e475de1ff13
BLAKE2b-256 b582e41a23f630620899fa115b71e5f5b9d26a22162fc78d9b9c7145a0461b2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for petekstatic-0.1.11-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.11-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for petekstatic-0.1.11-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 03d62607e7a0fd58124003c8e927b860415d27304733f8381c23475419685ee6
MD5 5ced01049d474d5f0fdea513db45aad4
BLAKE2b-256 a36c36f5be179ccfd23b4967d2b6d67a07e56728c19dd3abbc073d94fad1e940

See more details on using hashes here.

Provenance

The following attestation bundles were made for petekstatic-0.1.11-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.11-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for petekstatic-0.1.11-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a55d64fd4592061c7758a94e8e9447865019829cfa12615ea316799513f5fc57
MD5 8f2a734060eb5002b133b526d54f6152
BLAKE2b-256 dd4b524fc24b3f38ef8ba58fc3cc1951b86a13d0734fc9a8855b854e9b5f3772

See more details on using hashes here.

Provenance

The following attestation bundles were made for petekstatic-0.1.11-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.11-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for petekstatic-0.1.11-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e32c353c1cb350a3d105a99d820a806b2264a5653cb8aa345d82316fff0983fa
MD5 d5bc441e321104bad0debd2de94916fc
BLAKE2b-256 e26b070ff703f0eccc229c527aac1fab87f2d1f84353c3bdebd3e8f23cb772d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for petekstatic-0.1.11-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