Skip to content

wells: per-connection fracture data containers and reporting - #7311

Draft
hnil wants to merge 2 commits into
OPM:masterfrom
hnil:pr/conn-fracture-data
Draft

wells: per-connection fracture data containers and reporting#7311
hnil wants to merge 2 commits into
OPM:masterfrom
hnil:pr/conn-fracture-data

Conversation

@hnil

@hnil hnil commented Aug 11, 2026

Copy link
Copy Markdown
Member

First of the geomech fracture series (UPSTREAM_PR_PLAN.md item 3.1). State and reporting only — nothing in this PR writes any of it.

Adds ConnFractureData<Scalar> (area, flux, height, length, WI, volume, filter volume, average widths, injection pressure/bhp/rate, water rate, per connection) mirroring ConnFiltrateData, carried in PerfData and serialized with it. Extends ConnFiltrateData with flow_factor and fracture_rate, SingleWellState with the fracture-routed rate, and lets WellState::reportConnections fill the data::Wells fields opm-common already publishes as summary vectors (ConnectionFracture, Rates::opt::wat_frac, WWIRFRAC/CWIRFRAC).

All values stay zero without a fracture model, so no result changes.

One thing worth stating rather than leaving to be discovered: the containers are allocated, not merely declared. PerfData::prepareInjectorContainers() resizes them, so an injector well gets 13 more std::vector<Scalar> sized by its connection count — alongside the four the filter-cake machinery already allocates there. Producers are unaffected. It is a modest cost and it follows the existing pattern, but if reviewers would rather it were gated on runspec.mech() that is an easy change.

PerfData's existing round-trip test covers the new member: PerfData::serializationTestObject() populates it via ConnFractureData::serializationTestObject().

Add ConnFractureData<Scalar> (area, flux, height, length, WI, volume,
filter volume, average widths, injection pressure/bhp/rate, water rate per
connection) mirroring ConnFiltrateData, carried in PerfData and serialized
with it. Extend ConnFiltrateData with flow_factor and fracture_rate,
SingleWellState with the fracture-routed rate (frac_rate), and let
WellState::reportConnections fill the corresponding data::Wells vectors
(ConnectionFracture, Rates::opt::wat_frac, filtrate flow factor and
fracture rate) that opm-common already publishes as summary vectors
(WWIRFRAC/CWIRFRAC etc.).

Purely additive: containers are empty/zero-sized unless a fracture model
populates them; no behavior change otherwise.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@hnil hnil added the manual:new-feature This is a new feature and should be described in the manual label Aug 11, 2026
prepareInjectorContainers() sized 13 vectors per injector connection on
every run.  Nothing writes them without a fracture model, so leave them
unsized and let reporting skip a well that has none.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

manual:new-feature This is a new feature and should be described in the manual

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant