-
Notifications
You must be signed in to change notification settings - Fork 90
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor: Preparatory for well to frac connection #3227
base: develop
Are you sure you want to change the base?
Conversation
@CusiniM, @MelReyCG, @castelletto1, @corbett5, @cssherman, @jhuang2601, @matteofrigo5, @rrsettgast, @untereiner, and/or @wrtobin please review |
need review please |
Waiting on code owner review from @CusiniM, @Guotong-Ren, @castelletto1, @frankfeifan, @jhuang2601, @matteofrigo5, @rrsettgast, @ryar9534, @untereiner, @wrtobin, and/or 2 others. |
@CusiniM, @Guotong-Ren, @castelletto1, @frankfeifan, @jhuang2601, @matteofrigo5, @rrsettgast, @ryar9534, @untereiner, @wrtobin please review |
@CusiniM, @MelReyCG, @castelletto1, @corbett5, @frankfeifan, @jhuang2601, @rrsettgast, @ryar9534, @untereiner, and/or @wrtobin please review, i need to move this forward, it's been a while |
* @brief Get the target region for a perforation. | ||
* @return the target regions for a perforation | ||
*/ | ||
arrayView1d< string const > getPerfTargetRegion() const { return m_perfTargetRegion; }; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just to be sure to understand, it can connect to multiple region if the perforation is at the interface of two or more regions?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i think it can and the name should "regions", not "region", let me fix it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oh no, you are right, each perf only connects to one region, sorry my confusion
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, thanks for the explanation! It's clearer now. The returned list of these methods are for perforations data here, it imply something like getPerfsX()
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, same pattern as for other functions/perf. data
registerWrapper( viewKeyStruct::targetRegionString(), &m_targetRegionName ). | ||
setRTTypeName( rtTypes::CustomTypes::groupNameRef ). | ||
setInputFlag( InputFlags::OPTIONAL ). | ||
setDescription( "Target region to connect the perforation" ); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why can it be customized by the user? Cannot it be determined automatically?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the idea here is to be able to connect well to a fracture
fractures are geometrically zero volume objects so a perforation that lies on a fracture may numerically also get connected to a cell block next to it
to avoid this situation and to allow the user to control the behavior, targetRegion
can be optionally specified
when not provided, GEOS will try to connect perforation with all the regions
real64 const (&GEOS_UNUSED_PARAM( elemCenter ))[3], | ||
real64 const (&GEOS_UNUSED_PARAM( location ))[3] ) | ||
{ | ||
// only CellElementSubRegion is currently supported |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I may be wrong, but this code should not run if not supported.
// only CellElementSubRegion is currently supported | |
static_assert( false, "only CellElementSubRegion is currently supported" ); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i think it will start crashing if i add that assert
the needed functions are implemented in #3359
hope we can merge both soon
This PR includes preparatory changes for supporting well to frac connections.
CellElementSubRegion
withElementSubRegionBase
where possibletargetRegion
for perforations, to be able to connect to matrix or fracture (iftargetRegion
is not specified that means perforation will try to connect to all regions)connectPerforationsToMeshElements
logic - since target region is already defined, loop through subregions insearchLocalElements
, also adjustvisitNeighborElements
andinitializeLocalSearch
but for now preserve old versions of those 3 functions (still used inassignUnownedElementsInReservoir
), will unify later