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.12), 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. Agents, actions, GitHub Actions, and releases are managed centrally from petekSuite.

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.13.tar.gz (397.7 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.13-cp310-abi3-win_amd64.whl (575.0 kB view details)

Uploaded CPython 3.10+Windows x86-64

petekstatic-0.1.13-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (700.2 kB view details)

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

petekstatic-0.1.13-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (660.4 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

petekstatic-0.1.13-cp310-abi3-macosx_11_0_arm64.whl (643.8 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

petekstatic-0.1.13-cp310-abi3-macosx_10_12_x86_64.whl (687.6 kB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: petekstatic-0.1.13.tar.gz
  • Upload date:
  • Size: 397.7 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.13.tar.gz
Algorithm Hash digest
SHA256 4d5581a892a41a5d903252e86b1976ed818183590cfcfae0a57a2afa6f2f59f4
MD5 3524727b90a1906777be82c00ff106cc
BLAKE2b-256 63672946c6c642de0deac1e6054a7e8e7dd000a62308d91256849fd9e5e1264b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: petekstatic-0.1.13-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 575.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.13-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 7c08056dc3f789ad82d9697f1a61e2308d0da3bcfa4007cdf577eb955c4e3495
MD5 c10ebaa750b924ba3ad30a8cf324c083
BLAKE2b-256 52857d8bd447e23ae76f40b2f2b2d52587325bd994558ed3078808f12ce12812

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for petekstatic-0.1.13-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ce9b2eda3eb9e869858e7d8c8ee013ea071f3ca2411e9f90e4ebc6a4b9e50dda
MD5 6147f26d86f4c9d4d28d7c8b2ffafd44
BLAKE2b-256 abaf97be41662257807bb3351b77a50fa5805e79ca57dd00e4a546812d86f485

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for petekstatic-0.1.13-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 382b2a3e743c4ba6c70019ecfc8c707d36ea8a69e5b2b512603b9deb523212aa
MD5 c62463b2ac11e8e4f5edc827d5e51551
BLAKE2b-256 75fd70ace2cf3e7f08fb1bd4e62dac9905dc04b7faf9437b915dc87a04014d8c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for petekstatic-0.1.13-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e848c318f3279c79e68c5fef9bf09a120ef9f32e1d86fd4bf015e5198d273a5a
MD5 2b023f3583233cd65de482cb1e4cf811
BLAKE2b-256 f86f91117a661b5ded1f87214adda2d9246bda21635fbf3e1f538a3fda673ed8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for petekstatic-0.1.13-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 bda2fa4588eabd2a057f68b3b885bc265a8e8e8d05f4aa06a660b4ee3e3d2849
MD5 7cc784dd6244a80b3717bd6363a85b14
BLAKE2b-256 fb984f570f51f545d0a982ae2fba64278796486b51510c2564db423009740344

See more details on using hashes here.

Provenance

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