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
PropertyPipelinelowering 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:
- Library guide — the petekStatic guide.
- Tutorial — Static model build (flagship).
- Notebooks — executed examples: stack model from scatter · volumes & bundles.
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.)
Metadata
Release files for petekstatic 0.1.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| petekstatic-0.1.13.tar.gz | 397.7 kB | With provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| petekstatic-0.1.13-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| petekstatic-0.1.13-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| petekstatic-0.1.13-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| petekstatic-0.1.13-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details |
| petekstatic-0.1.13-cp310-abi3-macosx_10_12_x86_64.whl | CPython 3.10 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 3.7 MB
Release files / petekstatic-0.1.13.tar.gz
| Download URL | petekstatic-0.1.13.tar.gz |
|---|---|
| Size | 397.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4d5581a892a41a5d903252e86b1976ed818183590cfcfae0a57a2afa6f2f59f4
|
|
BLAKE2b-256 checksum How to use checksums |
63672946c6c642de0deac1e6054a7e8e7dd000a62308d91256849fd9e5e1264b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 14, 2026.
Transparency logRelease files / petekstatic-0.1.13-cp310-abi3-win_amd64.whl
| Download URL | petekstatic-0.1.13-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 575.0 kB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
7c08056dc3f789ad82d9697f1a61e2308d0da3bcfa4007cdf577eb955c4e3495
|
|
BLAKE2b-256 checksum How to use checksums |
52857d8bd447e23ae76f40b2f2b2d52587325bd994558ed3078808f12ce12812
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 14, 2026.
Transparency logRelease files / petekstatic-0.1.13-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | petekstatic-0.1.13-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 700.2 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
ce9b2eda3eb9e869858e7d8c8ee013ea071f3ca2411e9f90e4ebc6a4b9e50dda
|
|
BLAKE2b-256 checksum How to use checksums |
abaf97be41662257807bb3351b77a50fa5805e79ca57dd00e4a546812d86f485
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 14, 2026.
Transparency logRelease files / petekstatic-0.1.13-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | petekstatic-0.1.13-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 660.4 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
382b2a3e743c4ba6c70019ecfc8c707d36ea8a69e5b2b512603b9deb523212aa
|
|
BLAKE2b-256 checksum How to use checksums |
75fd70ace2cf3e7f08fb1bd4e62dac9905dc04b7faf9437b915dc87a04014d8c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 14, 2026.
Transparency logRelease files / petekstatic-0.1.13-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | petekstatic-0.1.13-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 643.8 kB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e848c318f3279c79e68c5fef9bf09a120ef9f32e1d86fd4bf015e5198d273a5a
|
|
BLAKE2b-256 checksum How to use checksums |
f86f91117a661b5ded1f87214adda2d9246bda21635fbf3e1f538a3fda673ed8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 14, 2026.
Transparency logRelease files / petekstatic-0.1.13-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | petekstatic-0.1.13-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 687.6 kB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
bda2fa4588eabd2a057f68b3b885bc265a8e8e8d05f4aa06a660b4ee3e3d2849
|
|
BLAKE2b-256 checksum How to use checksums |
fb984f570f51f545d0a982ae2fba64278796486b51510c2564db423009740344
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 14, 2026.
Transparency logSecurity for petekstatic 0.1.13
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 6 files in this release have been uploaded with provenance metadata.
Attestation for petekstatic-0.1.13.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 14, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.