Repository navigation
Add a benchmark of the update schemes on MiniRes twin experiments - #184
Merged
Merged
Conversation
benchmarks/minires/run.py runs each method on many twin experiments of a waterflood (that of ert's test-data/ert/waterflood: 1000 m five-spot, producers on BHP, 40 steps of which 16 are history), at 25 x 25 and 50 x 50 cells, with the log-permeability field and two fluid scalars (sor, vo) as unknowns. Each truth is drawn from the prior; each method is scored on the history misfit, the forecast of the unseen steps, and the field and scalars against the truth, separately. The scores are kept in results/<case>.json and RESULTS.md is generated from them. One method to begin with (ES-MDA); more follow. A slow smoke test runs one tiny experiment per method. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
patnr
force-pushed
the
minires-benchmark
branch
from
October 27, 2026 14:22
ccbc5d7 to
279e1a5
Compare
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The localization's grid is filled in from the case, since the methods are shared between cases. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nchanged Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A script that scores PET's update schemes on many twin experiments of a two-phase waterflood, and keeps the results as committed Markdown tables, so that they are easy to refer to and to update as methods are added or changed. It starts with ES-MDA, without and with adaptive localization (
autoadaloc) at two thresholds.What it does
benchmarks/minires/run.pyruns each method on many twin experiments of a waterflood: a 1000 x 1000 x 20 m reservoir with an injector on rate and four producers on bottom-hole pressure, over 40 report steps of which the first 16 are history and the remaining 24 the forecast. It does so at two resolutions,coarse(25 x 25, 20 truths) andfine(50 x 50, 8 truths). The unknowns are the log-permeability field and two fluid scalars,sorandvo(#182), and each truth is drawn from the same prior as the ensemble.Each method is scored on the history misfit, the forecast water cut on the unseen steps, the field (RMSE, correlation, spread) and each scalar (error, spread). The scores are kept as JSON, from which
RESULTS.mdis generated: one table per case, its header stating the conditions, each cell the mean over the truths with its standard error. Rows are not ranked.Both cases together take ~4 min on 8 cores.
Results (coarse case, means over 20 truths)
The localization thresholds are the universal one (√(2 ln N) σ) and 3σ, chosen from a comparison of four settings on 3 truths, not from a systematic sweep.
Also
tests/test_benchmark_minires.py: aslowsmoke test, one tiny experiment per method (~5 s), so that the script cannot rot unnoticed. It runs in CI now that CI: install the minires extra, so that the MiniRes tests run #183 installs theminiresextra.field) is filled in from the case.pyproject.toml:run.pypins the BLAS threads before importing numpy, hence an E402 ignore for that file.Full suite passes (626 with the
miniresextra).ruffclean.🤖 Generated with Claude Code