Add Conditional Low-Pressure Padding of Gas Property Tables#3779
Add Conditional Low-Pressure Padding of Gas Property Tables#3779bska merged 2 commits intoOPM:masterfrom
Conversation
|
I am creating this PR in draft mode because it needs quite a lot of testing before we consider enabling this in the mainline simulator. |
|
jenkins build this please |
678035b to
b0772f0
Compare
|
jenkins build this please |
b0772f0 to
0615b69
Compare
|
jenkins build this please |
8bcb7d7 to
99e8833
Compare
|
jenkins build this please |
1647b1d to
bca7723
Compare
b4fb4f9 to
2194a00
Compare
|
sure i get that, but i figured the cosmetic stuff is still warranted. in fact the two first commits could probably be extracted and done now. |
4eb0e02 to
09bdbab
Compare
|
jenkins build this failure_report please |
|
I have downloaded the failure report locally and will analyse the failures when I have the time. |
|
maybe separate out the two first commits here? in particular the first one is a fix after all. |
Yep, agree. That part has lingered for long enough. |
|
This PR really helped respect to robustness for a full field model in Equinor. The asset using this model has already implemented OPM Flow. Therefor I would very much appreciate if this PR could be merged. Let me know if there is anything that I can do to assist. |
Thank you for testing. The only thing that's been holding this PR back is lack of testing on real field cases. With your finding in hand, I can justify marking this as "ready for review" now. I need to do a couple of smaller things to have the tests pass, but I'll do those forthwith. |
|
|
||
| ret.m_recordList.clear(); | ||
|
|
||
| return ret; |
There was a problem hiding this comment.
this keeps m_location, intentional? i reckon it is but just to confirm
There was a problem hiding this comment.
this keeps
m_location, intentional?
It is indeed intentional. I want any diagnostic message to refer to the location at which the input table is entered.
| /// Whether or not input table needs padding at low pressures | ||
| bool inputNeedsPadding() const { return this->needPadding_; } | ||
|
|
||
| /// Low pressure padding rows for input table. Not needed unless |
There was a problem hiding this comment.
imho it is better with Needed only if inputNeedsPadding() returns true
There was a problem hiding this comment.
Needed only if inputNeedsPadding() returns true
Fair enough. I've pushed an update to rephrase this.
bska
left a comment
There was a problem hiding this comment.
Thanks a lot for looking at this. I've pushed an update to address your comments.
|
|
||
| ret.m_recordList.clear(); | ||
|
|
||
| return ret; |
There was a problem hiding this comment.
this keeps
m_location, intentional?
It is indeed intentional. I want any diagnostic message to refer to the location at which the input table is entered.
| /// Whether or not input table needs padding at low pressures | ||
| bool inputNeedsPadding() const { return this->needPadding_; } | ||
|
|
||
| /// Low pressure padding rows for input table. Not needed unless |
There was a problem hiding this comment.
Needed only if inputNeedsPadding() returns true
Fair enough. I've pushed an update to rephrase this.
|
jenkins build this failure_report please |
|
benchmark please |
I have reviewed the regression failures and they're mostly all of the expected form; the contents of the I recommend updating the reference solutions and merging this, but we should maybe/probably wait for the benchmark results before doing so? |
I issued that request nearly 48 hours ago now. Is there a high system load on the benchmark runner, @blattms, or did I make a mistake somewhere? |
|
last time i triggered it took 50h. |
Okay. If that's the case now too then we'll have the response around 8pm CET today. |
|
no objections. |
|
jenkins build this update_data please |
|
jenkins build this opm-tests=1292 please |
This commit adds a new member function,
X emptyStructuralCopy() const
to the DeckKeyword and DeckItem classes. This member function will
form a "structural" copy of "*this", thus preserving aspects such as
the currently active "Dimensions", but removing all data values.
This is in preparation of adding low-pressure table expansion for
the gas PVT tables (i.e., keywords 'PVDG' and 'PVTG').
This commit adds logic to extend gas property tables entered using the PVDG or PVTG to low pressure values if needed. When we compute well production potentials (e.g., summary vectors WxPP) and the well's bottom-hole pressure limit is defaulted we end up using pressures in the order of one atmosphere (1 atm) and this, in turn, may generate negative formation volume factors (mass densities) and/or phase viscosities. The problem is most pronounced for producing wells in history matching mode (keyword WCONHIST), but we should have guards in place to avoid negative densities regardless. If needed we extend the tables down to 1 barsa and also insert a "limiting" pressure value PLim corresponding to a maximum FVF value in the range [1, 2]. In this case we create new input tables and redo the property table initialisation with this extended input table.
|
jenkins build this opm-tests=1292 please |
|
PR approved, build check is green, and the new reference solutions have been installed on the CI system. I'll merge this into the master branch now to enable the feature. |
This PR adds logic to extend gas property tables entered using the PVDG or PVTG keywords to low pressure values if needed. When we compute well production potentials (e.g., summary vectors WxPP) and the well's bottom-hole pressure limit is defaulted we end up using pressures in the order of one atmosphere (1 atm) and this, in turn, may generate negative formation volume factors (mass densities) and/or phase viscosities. The problem is most pronounced for producing wells in history matching mode (keyword WCONHIST), but we should have guards in place to avoid negative densities regardless.
If needed we extend the tables down to 1 barsa and also insert a "limiting" pressure value$p_{\mathrm{lim}}$ corresponding to a maximum FVF value in the range $[1, 10\cdot B_0]$ . In this case we create new input tables and redo the property table initialisation with this extended input table.
To this end, we add a way of creating empty
DeckItemandDeckKeywordobjects which preserve the structural elements of their live counterparts. This, in turn, enables programmatic creation of fullDeckItem/DeckKeywordobjects by first inserting the padding values and then copying the original table values into those objects.