GEOS-DEV / GEOS

GEOS Simulation Framework
GNU Lesser General Public License v2.1
222 stars 89 forks source link

Work plan for `vtk` wells import #2347

Open TotoGaz opened 1 year ago

TotoGaz commented 1 year ago

This issue proposes a work plan to improve the definition of wells in geosx.

Wait for DFNs to be done

Some name changes should be done

Split the WellElementSubRegion::generate and move the geometrical part behind the CellBlockManagerABC curtain:

Eventually trim WellBlockABC to get the new reduced abstraction.

From this point, it should be possible to change the (currently unique) source of data more easily, and add the vtk support.

@dkachuma also proposes an improvement about the wells' definitions for InternalWellGenerator. The main motivation is that well perforations should be specified by an interval as opposed to a precise location (point) in the mesh. This allows more independence between the well mesh and the reservoir mesh. This also allows the length of intersection between the well and the mesh to be independent of the cell sizes for cases in which the mesh is refined for example. Proposed changes:

Further ideas:

PS: Note that wells & EDFM should receive a quite similar treatment. @herve-gross

klevzoff commented 1 year ago
  • On the InternalWell element, remove the numElementsPerSegment. The number of elements should be automatically calculated depending on how the well trajectory intersects the mesh and where the perforations are located.

The well polyline should be discretised by working out where it intersects the domain mesh and generate the well elements accordingly. Instead of depending on the size of the cell in which the perforation is located, this should dome with its own length.

Is there existing practice/research showing benefits of this? To the best of my knowledge, discretization of the wellbore is intentionally kept separate from the reservoir mesh as the accuracy requirements of the wellbore solve are different from those of the reservoir. While it's true that keeping an extremely coarse wellbore while refining the mesh may lead to inconsistent results, I don't think that fully automating this and taking away control from the user is the way (but I don't talk to reservoir engineers so happy to be corrected). On the other hand, perforation intervals and auto computing locations sounds like a great thing to have. But "perforation" != "well element".

dkachuma commented 1 year ago

Is there existing practice/research showing benefits of this? To the best of my knowledge, discretization of the wellbore is intentionally kept separate from the reservoir mesh as the accuracy requirements of the wellbore solve are different from those of the reservoir.

I agree in that we should maintain the flexibility to discretise the well independently of the mesh. My suggestion to remove numElementsPerSegment was aimed at addressing 2 issues that we have found a bit frustrating

Whereas you can resolve the first issue by increasing numElementsPerSegment, that almost invariably means you fall into the second issue.

I find the reservoir engineers prefer pragmatic solutions that don't require them to fiddle with their data. I would suggest:

untereiner commented 1 year ago

I do not reallu understand what is needed by the solver. Is it the 3d position of the perforation and the transmisibility ? On the mesh domain hand what should theoretically be associated to the reservoir mesh for the solver ? The well element, the well vertex position ? The geometric position of a perforation is completely independent of the discretization of the well. A perforation could then be associated to a well element but also to a well vertex. So why are not both associated to the so called reservoir mesh ?

herve-gross commented 4 months ago

@TotoGaz let's make sure these items are either completed, re-assigned, or discarded. Thanks!

TotoGaz commented 4 months ago

Isn't this the role of the architecture and operations committees as described in https://github.com/GEOS-DEV/GEOS/pull/3178 ?