Commit Graph

58 Commits

Author SHA1 Message Date
Tor Harald Sandve
b9bc4b00cb Make the wellModel self-contained
The wellModel is now persistent over the time steps,
with an update method called every reportStep/episode.

This allows the following simplifications:

    1. move the wellState to the WellModel
    2. add a ref to the ebosSimulator to the wellModel
    3. clean up the parameters passed to the wellModel methods
    4. move RESV handling to the WellModel and the rateConverter
    5. move the econLimit update to the WellModel
2017-11-08 13:57:36 +01:00
Kai Bao
72d0d4ddb8 revising the computeWellPotentials in StandardWells
so it compute the potentials for each well instead of each perforation.
2017-04-11 16:51:16 +02:00
Andreas Lauser
ef731672c9 remove the BlackoilPropsAdInterface abstraction layer
instead, directly use BlackoilPropsAdFromDeck.
2017-01-02 13:19:23 +01:00
Kai Bao
e57da11fbd making the updateWellControls an iterative process for StandardWells
Seperating the updateWellStateWithTarget from updateWellControls, will
update the controls when any of the control constraints gets broken.

The reason is that the updated well control can still break some of
other the contstaints. We need to choose one control to make sure all the
constraints are honored.
2016-11-24 11:27:59 +01:00
Kai Bao
623ef3850e applying the efficiency factor to flow 2016-11-16 13:25:35 +01:00
Kai Bao
aca587b76b calculate efficiency factor in StandardWells
which will be used to scale the perforation flow rate when entering the
matrial balance equations.
2016-11-16 13:25:35 +01:00
Kai Bao
0df52603d7 fixing the interface of wellModel constructors
to make all the simulators compile.
2016-11-16 13:25:35 +01:00
Kai Bao
e323f15d2f putting more things in the prototyping test. 2016-11-16 13:23:55 +01:00
Kai Bao
e0dd9bfabd keeping putting group control in. 2016-11-16 13:22:52 +01:00
Kai Bao
f62d40fc05 adding a pointer to the well_collection of WellsManger
might change to reference later. Using pointer now is trying to keep the
WellModel constant.
2016-11-16 13:22:52 +01:00
Jørgen Kvalsvik
1c6a4b34da Update to shared_ptr-less parser interface. 2016-10-20 14:08:04 +02:00
Markus Blatt
828f118801 Do not store collective communication in the wells object.
Instead of this we rely on the default constructor of
WellSwitchingLogger. This finally fixes the compile
issues with DUNE 2.3.
2016-10-07 10:46:54 +02:00
Markus Blatt
07318edfa1 Added a parallel aware logger for switching wells.
It will collect all the switches. Afterwards they are collect on
the root process and logged there.

This commit includes a small test program.
2016-10-05 10:33:15 +02:00
Kai Bao
399298be21 using mapentry_t instead of iterator. 2016-07-05 15:28:02 +02:00
Kai Bao
a8c2626e5a fixing comments.
no functional change.
2016-07-05 13:02:28 +02:00
Kai Bao
e817719d48 When last connection is closed, the well is shut done. 2016-07-05 13:02:27 +02:00
Kai Bao
109b55f61c using OpmLog to give warning. 2016-07-05 13:02:27 +02:00
Kai Bao
41b9fca434 implementing checkRatioEconLimits 2016-07-05 13:02:27 +02:00
Kai Bao
dd59762c0b adding checkMaxWaterCutLimit to StandardWells. 2016-07-05 13:02:27 +02:00
Kai Bao
c77aa5af09 adding checkRateEconLimited to StandardWells
to check rate related to economic limits.
2016-07-05 13:02:27 +02:00
Kai Bao
53490270e1 adding updateListEconLimited to StandardWells 2016-07-05 13:02:27 +02:00
Atgeirr Flø Rasmussen
5e18aab106 Merge pull request #744 from blattms/fix-wells-for-null-pointers
Fix wells for null pointers
2016-06-27 16:24:01 +02:00
Atgeirr Flø Rasmussen
bcf210c03e Merge pull request #711 from blattms/print-all-well-switching-in-parallel
Print all well switching in parallel.
2016-06-27 16:22:02 +02:00
Markus Blatt
c20620534a Allow access to wells pointer for wells.
Using &stdwells.wells() throws an assertion for null pointers
without -DNDEBUG, but was used nevertheless. That prevented running
models without wells.
2016-06-27 13:03:30 +02:00
Markus Blatt
9a7b77af9c Do not store number of phases in StandardWells.
The wells pointer might be null and we need to access its number of
phases in the constructor to store it. With this commit we prevent that
storage and simply ask the well struct whenever we need the number of
phases. Of course the code using it needs to check that there are wells
but that is done in most parts of the opm-simulators currently
(MultiSegmentWells and Solvent are/might be an exception).
2016-06-27 12:14:17 +02:00
Atgeirr Flø Rasmussen
9c0ffee8e9 Changes to well model for supporting sequential approach.
The changes are:
 - Make the WellOps struct public (needed by transport solver).
 - Make it possible to store and retrieve total reservoir volume
   perforation fluxes with getStoredWellPerforationFluxes(), controlled
   by a flag set by setStoreWellPerforationFluxesFlag(), defaulting to
   false (needed by pressure solver).
2016-06-20 11:02:49 +02:00
Markus Blatt
d170bbb109 Print all well switching in parallel.
As for each well only one process is responsible, the output process
does not see all wells. Ergo some well switching information was never
printed in a parallel run.

Therefore with this commit the well switching
message is printed regardless on which process it appears.
2016-06-07 16:56:37 +00:00
Kai Bao
879f127ae8 moving variableStateExtractWellsVars() from models to Well Models. 2016-05-23 15:11:52 +02:00
Kai Bao
846ff890de refactoring the interface of computeWellPotentials()
to reduce the cost of makeConstantState when not calculating the
potentials.
2016-05-23 15:11:52 +02:00
Kai Bao
f2b7f2a56c moving numWellVars from models to Wells. 2016-05-23 15:11:52 +02:00
Kai Bao
4254b48b57 unifying interface of a few functions of Wells classes
updateWellControls()
updateWellState()
addWellControlEq()

The change of function computeWellConnectionPressures() is not done
completely. Should find a solution later.
2016-05-23 15:11:51 +02:00
Kai Bao
be165a26e0 adding a few more members to the Wells classes.
gravity, vfp_properties_ and depth_.

to further simplify the interfaces.
2016-05-23 15:11:51 +02:00
Kai Bao
66cd66e61b change reservoir related members to be pointers in StandardWells
to fullfil the requirement of interface design.
2016-05-23 15:11:51 +02:00
Kai Bao
bd03eff5a5 making two functions in StandardWells protected.
computePropertiesForWellConnectionPressures
computeWellConnectionDensitesPressures
2016-05-23 15:11:50 +02:00
Kai Bao
1f2442fe80 reducing paramter list for more functions in StandardWells
computeWellFlux
updateWellState
updateWellControls
addWellControlEq
computeWellPotentials
2016-05-23 15:11:50 +02:00
Kai Bao
a35c3e7468 removing parameters for extractWellPerfProperties 2016-05-23 15:11:50 +02:00
Kai Bao
0667fceb35 reducing the number of arguments of computeWellConnectionPressures
and computeWellConnectionDensitesPressures.

These functions need to be renamed.
2016-05-23 15:11:50 +02:00
Kai Bao
18a530f9be removing paramters in computePropertiesForWellConnectionPressures 2016-05-23 15:11:50 +02:00
Kai Bao
22b5157bf2 adding a few fluid related members to StandardWells
to reduce the number of the public function arguments.
2016-05-23 15:11:50 +02:00
Kai Bao
08e691e262 moving variableWellStateInitials to StandardWells. 2016-04-29 10:07:10 +02:00
Kai Bao
15380fd370 moving variableWellStateIndices to StandardWells
Probably it is the time to introduce SeqQs and SeqP for the
multi-segment wells.
2016-04-29 10:07:10 +02:00
Kai Bao
e7d00f4f99 adding variableStateWellIndices to StandardWells
to handle different types of variables later for different types of
wells.
2016-04-29 10:07:10 +02:00
Kai Bao
b87920e5e4 moving computeWellPotentials to StandardWells 2016-04-29 10:07:10 +02:00
Kai Bao
13acc8ee03 moving computeWellConnectionPressures to StandardWells
the results look okay, while the running for flow_solvent needs further
investigation even the results with flow_solvent actually look okay.

With two different version of
computePropertiesForWellConnectionPressures, flow_solvent produces the
same results. This is something needs further investigation.

The current implementation requires a copy of
computeWellConnectionPressure in StandardWells and StandardWellsSolvent.
That means probably we need to introduce the asImpl() for the Wells.
2016-04-29 10:07:10 +02:00
Kai Bao
dcca0b0b76 moving addWellControlEq to StandardWells 2016-04-29 10:07:10 +02:00
Kai Bao
eb278c3c9a moving addWellFluxEq() to StandardWells
Conflicts:
	opm/autodiff/BlackoilModelBase_impl.hpp
2016-04-29 10:07:10 +02:00
Kai Bao
75b73a893e putting Vector and ADB to be inside StandardWells and wellhelpers 2016-04-14 16:05:19 +02:00
Kai Bao
19734f2103 adding extractWellPerfProperties to StandardWellsSolvent
to fix the flow_solvent running.
2016-04-14 16:05:19 +02:00
Kai Bao
5da57973fe adding updateWellState and updateWellControls to StandardWells 2016-04-14 16:05:18 +02:00
Kai Bao
376c940f09 moving updatePerfPhaseRatesAndPressures to StandardWells 2016-04-14 16:05:18 +02:00