-
Notifications
You must be signed in to change notification settings - Fork 123
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
Make the TPFA linearizer default for 1/2/3 phase blackoil. #4017
Conversation
benchmark please |
jenkins build this please |
Is there a reason why only 3-phase?
|
Benchmark result overview:
View result details @ https://www.ytelses.com/opm/?page=result&id=1752 |
A 6% to 8% total time improvement on "extra" is encouraging indeed. We just need to figure out and solve whatever's happening with the regression test failures and then I support merging this into the master branch. |
No, other than requiring me to change more files, so this is more minimal. |
jenkins build this please |
655917b
to
912a934
Compare
jenkins build this please |
The remaining failure is due to boundary conditions. I will add support for boundary conditions to this PR, and also move two-phase to the TpfaLinearizer. |
912a934
to
cf902aa
Compare
jenkins build this please |
cf902aa
to
3af3e8a
Compare
This affects the gas/water model, which should not have dissolution, to be consistent with definitions of FluidState and ScalarFluidState in the BlackOilIntensiveQuantities class.
3af3e8a
to
b9e157e
Compare
jenkins build this please |
Does this new |
The DIFFUSE case failed, as expected. Will address by instantiating two simulator variants with diffusion on (using the traditional linearizer) and adding runtime dispatch as for the rest of the variants. |
I do not know. I looked at the |
There might not be any regression tests running with humid gas at the moment. @goncalvesmachadoc: Did your team build and/or activate regression tests for this feature? I know there is an in-progress PR (#4111) that creates unit tests for the equilibration facility, but I don't see any currently running regression tests. |
This is only instantiated for two-phase gas/oil and for 3-phase blackoil. Runtime safeguards have been added to avoid the mistake of running with a simulator combination that silently ignores DIFFUSE.
jenkins build this please |
jenkins build this serial please |
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.
This looks good for to me. I only had one remark concerning making the FlowMainEbosType
public. At least superficially, that seems unrelated to this work.
@@ -236,6 +235,7 @@ class Main | |||
return exitCode; | |||
} | |||
|
|||
using FlowMainEbosType = FlowMainEbos<Properties::TTag::EclFlowProblem>; |
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'm probably blind, but I didn't see any of the new code using this type. Is there a reason it has to become public?
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 initFlowEbosBlackoil() method is public, and returns a unique_ptr to this type (see just below these lines), so I think it should be defined publicly, and defined here just before the function that refers to it.
At first, I assumed I must change this type (and to get the fast assembly supported from the python interface I suppose we must), but realized that was not really necessary, that it was only used within the method discussed. I decided to make the minor improvement still, although not really required here.
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 didn't see any of the new code using this type.
The
initFlowEbosBlackoil()
method is public, and returns aunique_ptr<>
to this type (see just below these lines),
Okay, so this was indeed an unrelated change.
I think it should be defined publicly, and defined here just before the function that refers to it.
That's fine. It just stood out to me as something curious about the PR.
There are only one test for two-phase (gas-water) humid gas case. We haven't added a wet-humid (three-phase) test case yet since we were facing some convergence issues. I finished the unit tests that covers the 3-phase case. Will go ahead and push a running 3-phase test case for DISGAS + VAPWAT + VAPOIL regression test. |
There is also |
The effect of the enableDissolution flag is to enable Rs and Rv storage in the fluid state. I think this should correspond to the presence of a valid compositionSwitchIdx variable index, as done here. The fix to make the fluid states consistent should be made anyway, and is not directly related to the main part of this PR (but the problem was discovered due to it). If simulators no longer give correct results with evaporation etc., we should discuss why and fix it, but I am inclined to think that in that case it is the simulator setups that are wrong, not the code changed here. I think this PR should be merged now, and any necessary fixes for the humid gas etc. made afterwards in a separate PR. |
Merging now. @goncalvesmachadoc please test if this breaks your humid gas case. If so, I will help you get it back to working order in time for the upcoming release. |
Hi Atgeirr, thanks for checking with us. This PR did not affect the humid-wet gas case (flow_brine_precsalt_vapwat module). |
All other use cases still use the traditional linearizer.