[DualPorosity] (4/5) Apply the dual-continuum policy and twin co-location - #7350
Draft
arturcastiel wants to merge 1 commit into
Draft
[DualPorosity] (4/5) Apply the dual-continuum policy and twin co-location#7350arturcastiel wants to merge 1 commit into
arturcastiel wants to merge 1 commit into
Conversation
Co-authored-by: AXON <axon@arturcastiel.github.io>
Member
Author
|
jenkins build this please |
Member
Author
|
jenkins build this please with opm-common=5318 |
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.
Builds on OPM/opm-common#5318, which must merge before this compiles.
What this does
Applies the dual-continuum policy in the simulator. The complete face policy in one place — a
face between a matrix cell and a fracture cell never carries flow, because the coupling is the
input non-neighbour connection; matrix-matrix faces flow only under dual permeability; fracture
permeability is scaled unless the run disables it; twin couplings are exempt from the
non-neighbour prune. Fracture cells are treated as physically co-located with their matrix twin
in equilibration, cell-centre depths and the result writer.
Why
The input layer for this landed in opm-common; this is the consumer.
Two fixes ride along because they are the same story. The input grid is now bound inside its
guard at every site rather than unconditionally — the parallel state object throws for non-zero
ranks, so the unguarded pattern reached that throw on every multi-process run. And twin
classification is derived from the Cartesian dimensions rather than the input grid: the same
arithmetic without a rank-0 dependency, following the read-and-broadcast convention this file
already uses a few lines below for the pinch options.
Behavior impact
None yet — the keywords are still rejected. The switch is the next pull request.
Testing
Face policy: cross-half faces zero, matrix-matrix under dual permeability, permeability scaling
on and off, and dual-permeability half-equivalence against single-porosity analogues. Twin
couplings surviving the non-neighbour prune, with a case at more than one matrix layer — where
the twin offset stops coinciding with the neighbour offset and the exemption is genuinely
exercised.
Requirements and limitations
Serial only. Measured: at two processes none of nine twin pairs separated across ranks; at
four processes at least four of nine did. Rather than silently drop couplings, a dual-continuum
run at more than one process stops with a located error. The design does not preclude parallel
support later; the guard is the honest state today.