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.6), 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.6.tar.gz (391.9 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.6-cp310-abi3-win_amd64.whl (562.2 kB view details)

Uploaded CPython 3.10+Windows x86-64

petekstatic-0.1.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (692.4 kB view details)

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

petekstatic-0.1.6-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (653.8 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

petekstatic-0.1.6-cp310-abi3-macosx_11_0_arm64.whl (631.4 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

petekstatic-0.1.6-cp310-abi3-macosx_10_12_x86_64.whl (673.6 kB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: petekstatic-0.1.6.tar.gz
  • Upload date:
  • Size: 391.9 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.6.tar.gz
Algorithm Hash digest
SHA256 1efc19b9962d2a6938440935a15ed216569713643a6ced2ef8302ceb34b18172
MD5 42d4880434cb1726e306c83136cdac1e
BLAKE2b-256 b9bb9db22156d7f97ccb3f7e4714465ed49b547de31e93d27c88b2d5555440b9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: petekstatic-0.1.6-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 562.2 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.6-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 16f84d1ac35f753901c9fbe393cfda22e84d9871f5a04efb8a7307d85837e7d9
MD5 619774ea960ab5c014cfa51bd33633aa
BLAKE2b-256 aa75a577d54144c22baf0f2cf31bae2652b3b1de777ef301d341eb76ee3d14dd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for petekstatic-0.1.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 011a95f9ac80bade028a38255bffe2452a0e1fef5b523ebb033e620981442935
MD5 7b6b628682d22f8d607d44f47a6b15c5
BLAKE2b-256 4b1c21bcd601fd295ef128020782cdd46cc6c9c233aecdb722c16dc34cd80b09

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for petekstatic-0.1.6-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c18568719a182f0ca638cbd14ce5684c8c913f9a6e3c0d58f48c1d285723bb16
MD5 8d49c753e31f1f833cecab22729b1d58
BLAKE2b-256 e8252024d4c155af3fd0cbfd6acb5b06d0bcde6aaa3e2edb6a53991521f7d4a8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for petekstatic-0.1.6-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b08743350ba427f35a43166431b4f913a25a0e76238ff183adc24d37f6c51b34
MD5 669aed7d21f57e4541e887795b1586a7
BLAKE2b-256 a05a7bc95c903f3c7ad2310b6876e4581aea3f7ebbfe539cd6da0a0bfe072e08

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for petekstatic-0.1.6-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 569b254beed1bc52a61bbc95cb0608e595a9d5bcec2e53168277454f8a5d3695
MD5 1f57fa23bf56423c665e1a290179a7cf
BLAKE2b-256 1c904abb1063c968d91e1eded2b710812f83bf3b183fc4831d5dd1d9e75fbfa6

See more details on using hashes here.

Provenance

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