Commit Graph

5762 Commits

Author SHA1 Message Date
Kai Bao
355be6c26c collecting the NaN and too large well residuals
make sure all the processes will throw if there is any of the processes
found abnormal residual values.
2017-08-25 14:09:26 +02:00
Kai Bao
8abe48a693 making destructor of WellInterface virtual
to avoid memory leaking.
2017-08-25 14:09:26 +02:00
Kai Bao
a60a969257 fixing one memory-leaking for flow_ebos running 2p case. 2017-08-25 14:09:26 +02:00
Kai Bao
96340a23ff computePerfRate and crossFlowAllowed protected in StandardWell 2017-08-25 14:09:26 +02:00
Kai Bao
bc78553686 renaming well_solutions_ and well_variables
to give slightly easier understanding.
2017-08-25 14:09:26 +02:00
Kai Bao
25869026e5 renaming a few functions
to reflect the functions better. No functional change.
2017-08-25 14:09:26 +02:00
Kai Bao
9a4a9a2bcc using well name and allow_cf form well_ecl. 2017-08-25 14:09:26 +02:00
Kai Bao
a908bd7cf1 makding createWellContainer a static function. 2017-08-25 14:09:26 +02:00
Kai Bao
f9b7094075 fixing of some comments
no functional change.
2017-08-25 14:09:26 +02:00
Kai Bao
52af70ad0e adding debugging output for solveWellEq
to tell if the solveWellEq is successful.
2017-08-25 14:09:26 +02:00
Kai Bao
a29be796e7 adding comments about function calculateBhpFromThp. 2017-08-25 14:09:26 +02:00
Kai Bao
277d26df8a cleaning up well residual related in BlackoilModelEbos
TODO: how to output the information for debugging well iteration
process.
2017-08-25 14:09:26 +02:00
Kai Bao
7a9fc2132e more cleaning up of StandardWellsDense.
not functional change.
2017-08-25 14:09:26 +02:00
Kai Bao
68edfd7235 removing several unused variables. 2017-08-25 14:09:26 +02:00
Kai Bao
fe3d2f91e0 adding functions to calcuate between thp and bhp
to reduce some code duplication in StandardWell
2017-08-25 14:09:26 +02:00
Kai Bao
8a12ec677f more cleaning up
not funtional change.
2017-08-25 14:09:26 +02:00
Kai Bao
66b5226039 removing some unused variables
to reduce warnings.
2017-08-25 14:09:26 +02:00
Kai Bao
f1c0e84878 cleaning up for StandardWellsDense. 2017-08-25 14:09:26 +02:00
Kai Bao
49df0c12f6 cleaing up and fixing the error from rebasing. 2017-08-25 14:09:26 +02:00
Kai Bao
af6155d15a updating the well group status before updating targets.
This recovers the running with group control.
2017-08-25 14:09:26 +02:00
Kai Bao
31ce880ba7 fixing the prallel running.
It needs WellSwitchingLogger for all the processes even there are not
wells in some of the processes.
2017-08-25 14:09:26 +02:00
Kai Bao
5cb0a5109e adding setWellSolutions to StandardWellsDense.
the function will calculate the well_solutions_ based on well_state.
It will be used when we recover the well_state from a failed iteration,
then we should also update well_solutions_ for consistence.
2017-08-25 14:09:26 +02:00
Kai Bao
5af15fa63f removing well_soltutions_ from WellStateFullyImplicitBlackoilDense
adding function setWellSolutions() to StandardWell.

The class WellStateFullyImplicitBlackoilDense is ready to be removed
now, while the only thing can go wrong compred with the original version
is the group control, which is not tested yet.
2017-08-25 14:09:26 +02:00
Kai Bao
8441eb77bd not using wellSolutions() from WellState
while not sure whether we can remove it totally because of the comments
related to group control.
2017-08-25 14:09:26 +02:00
Kai Bao
6dcb0dfba1 fixing the vfp running with flow_ebos. 2017-08-25 14:09:26 +02:00
Kai Bao
78dd9d1d16 more cleaning up of the interface of WellInterface and StandardWell 2017-08-25 14:09:26 +02:00
Kai Bao
1550fb7600 WIP in cleaning up the interfaces of WellInterface and StandardWell
commiting now to save some changes.
2017-08-25 14:09:26 +02:00
Kai Bao
d4f26ad47a recovering the running of flow_ebos for 2p + dummy phase. 2017-08-25 14:09:26 +02:00
Kai Bao
c43505d007 cleaning up some interface in WellInterface. 2017-08-25 14:09:26 +02:00
Kai Bao
6bbbe5061d adding the copyright information. 2017-08-25 14:09:26 +02:00
Kai Bao
3e26a8b467 using different size of block size of well and reservoir 2017-08-25 14:09:26 +02:00
Kai Bao
894529be57 small cleaning up. 2017-08-25 14:09:26 +02:00
Kai Bao
f19dd03387 using Base to represent WellInterface<TypeTag>
for better readability.
2017-08-25 14:09:26 +02:00
Kai Bao
bd84e3c9f3 making a trival way to reduce the covergence of the wells.
to be improved later.
2017-08-25 14:09:26 +02:00
Kai Bao
4f716a633d using legacyDepth_ for the perfoation depth
for StandardWell. It turns out that it can be different with the
grid.getCellDepth() from the parser.
2017-08-25 14:09:26 +02:00
Kai Bao
6e0da756dc fixing the running of flow_ebos_2p.
by not adding the dummy phase.
2017-08-25 14:09:26 +02:00
Kai Bao
c1ee941195 adding shear calculation to the polymer simulation. 2017-08-25 14:09:26 +02:00
Kai Bao
d4fa8c06f1 adding computeRepRadiusPerfLength() to WellInterface. 2017-08-25 14:09:26 +02:00
Kai Bao
d1727d0183 correcting the injectivity with polymer injection. 2017-08-25 14:09:26 +02:00
Kai Bao
d470edfb0b correct an assertion error in getWellConvergence in StandardWell
and adding comments why it is the case for polymer case.
2017-08-25 14:09:26 +02:00
Kai Bao
5ed9f4d497 incorporting polymer except the parts related to PLYSHLOG 2017-08-25 14:09:26 +02:00
Kai Bao
b3428a8bf9 incorporating the solvent related to StandardWell 2017-08-25 14:09:26 +02:00
Kai Bao
72ca91d59b more cleaning up for StandardWellsDense and StandardWell 2017-08-25 14:09:26 +02:00
Kai Bao
0acd0ef387 small adjustment of member functions of WellInterface 2017-08-25 14:09:26 +02:00
Kai Bao
af254a8f4d removing some of the using of Wells in StandardWellsDense 2017-08-25 14:09:26 +02:00
Kai Bao
8ddd197dcf cleaning up StandardWellsDense
removing more unused stuff.
2017-08-25 14:09:26 +02:00
Kai Bao
63c418c02f adding fucntion updateListEconLimited() to WellInterface 2017-08-25 14:09:26 +02:00
Kai Bao
5986295975 adding checkRatioEconLimits to WellInterface 2017-08-25 14:09:26 +02:00
Kai Bao
1a4bd6ffb2 adding checkMaxWaterCutLimit and checkRateEconLimits to WellInterface 2017-08-25 14:09:26 +02:00
Kai Bao
369ccfef52 handling well_efficiency_factor_ in WellInterface. 2017-08-25 14:09:26 +02:00
Kai Bao
358d4c2a00 cleaning up more things from StandardWellsDense 2017-08-25 14:09:26 +02:00
Kai Bao
7e9eee4ee4 moving wsolvent and wpolymer to WellInterface
to do this, adding well_ecl_ and current_step_ to WelInterface.
2017-08-25 14:09:26 +02:00
Kai Bao
a02a0d8599 removing updateWellStateWithTarget from StandardWellsDense
and also fixing the assertion error related to disabling the residual()
    function of StandardWellsDense.
2017-08-25 14:09:26 +02:00
Kai Bao
8130b32791 cleaning up some functions from StandardWellsDense. 2017-08-25 14:09:26 +02:00
Kai Bao
e6d2b8550b adding function computeWellPotentials to StandardWell
for some similar reasons, this function stays in StandardWell for now.
Eventually, it should go to WellInterface with some refactoring work.
2017-08-25 14:09:26 +02:00
Kai Bao
1d34c9dc6e adding computeWellPotentialWithTHP() to StandardWell
it is not clear at the moment how all the well potentials related will
work with MS wells. For the moment, keep the well poentials related only
in StandardWell.

By theory, they should be very similar, while some dependence on certain
member variables makes some small refactoring work necessary.
2017-08-25 14:09:26 +02:00
Kai Bao
c3cc4021fa adding computeWellRatesWithBhp() to StandardWell 2017-08-25 14:09:26 +02:00
Kai Bao
dfc532a713 cleaning up some more stuff unused in StandardWellsDense 2017-08-25 14:09:26 +02:00
Kai Bao
e695a3c418 cleaning up some unused stuff from StandardWellsDense 2017-08-25 14:09:26 +02:00
Kai Bao
f1677015fe using getWellConvergence in BlackoilModelEbos
Tested with SPE1.

TODO: with the current way, we are not outputting any well residual
information. We need to address what kind of residual information we
want to output with the new well model.
2017-08-25 14:09:26 +02:00
Kai Bao
ab67635134 adding applySolutionWellState to apply solution from reservoir
to update well state.

With this way, the BlackoilModelEbos does not need to know the data type
assocated with different well type.

It is not well tested yet.
2017-08-25 14:09:26 +02:00
Kai Bao
07f563a1e1 implementing two apply() function in StandardWell_impl
The two functions will be essentially the same even for different types
of wells. Maybe later we should try to put them in WellInterface.
2017-08-25 14:09:26 +02:00
Kai Bao
f1123acdf0 also switching B and C in StandardWell_impl 2017-08-25 14:09:26 +02:00
Kai Bao
e7a2e52763 making matrix C and B same with the reference paper.
Really no good point to make C and B different from the paper
formulation except introducing more confusion.
2017-08-25 14:09:26 +02:00
Kai Bao
51226af445 refactoring solveJacobianSystem() not to handle xw.
which is one step to avoid to access the type of xw, which is related to
the implementation of the well model.
2017-08-25 14:09:26 +02:00
Kai Bao
b080874b89 adding the offset of perf for each well
when accessing perforation rate and perforation pressure from the
well_state.
2017-08-25 14:09:26 +02:00
Kai Bao
168205a993 checking magnitude of the residual for convergence
in StandardWell_impl.
2017-08-25 14:09:26 +02:00
Kai Bao
ddb21e1f2c correcting the indexing of xvar_well_old in updateWellState
in StandardWell_impl.
2017-08-25 14:09:26 +02:00
Kai Bao
1c2353fab8 making the ref_depth_ to be double in WellInterface
which is a mistake.
2017-08-25 14:09:26 +02:00
Kai Bao
4624ecc63d correcting the dFLimit and dBHPLimit in StandardWell_impl 2017-08-25 14:09:26 +02:00
Kai Bao
eca28a8ade adding a function outputWellState for StandardWellsDense
to output the well state for debugging purpose.
2017-08-25 14:09:26 +02:00
Kai Bao
3ceea76616 adding function computeAccumWell and computeWellConnectionPressures
to StandardWell and removing a few not needed function from StandardWellsDense
2017-08-25 14:09:26 +02:00
Kai Bao
033fe70620 making init() function for WellInterface virtual. 2017-08-25 14:09:26 +02:00
Kai Bao
4e4e383107 slightly changing createWellContainer() in StandardWellsDense
no functional change.
2017-08-25 14:09:26 +02:00
Kai Bao
9c215faade removing function allow_cross_flow() from StandardWellsDense 2017-08-25 14:09:26 +02:00
Kai Bao
229244142f adding updateGroupControls() to StandardWellsDense
which separates the group control related operations. The group control
has to be handled in the level of all wells, which makes more functions
of the well class to be visible outside.
2017-08-25 14:09:26 +02:00
Kai Bao
d535157b1a cleaning up a few fucntions in StandardWellsDense
to remove the implementation implemented in StandardWell already.
2017-08-25 14:09:26 +02:00
Kai Bao
fb5fa836c0 removing some repeated contents in getWellConvergence in StandardWellsDense
which results from the rebasing process.
2017-08-25 14:09:26 +02:00
Kai Bao
48dee6bd7a renaming function allCrossFlow() in StandardWell
to avoid confusion. and the detail of the function needs to be
justified.
2017-08-25 14:09:26 +02:00
Kai Bao
e5b5e250fe incoporating more content from PR 1220
while the parts related to polymer are not incoporated fully yet, since
it has been considered in the new well model refactoring.
2017-08-25 14:09:26 +02:00
Kai Bao
e3399ca203 fixing some compilation error after rebase.
while a lot of new stuff have not entered, since many of the essential
parts are in different files now. Rebasing will not incoporate the new
stuff automatically.
2017-08-25 14:09:26 +02:00
Kai Bao
07d24b9d8d solveWellEq in StandardWellsDense calls
solveWellEq from each individual well.
2017-08-25 14:09:26 +02:00
Kai Bao
9dace225de adding wellEqIteration() to StandardWell
the involvement of the group control in updateWellControls() makes the
solution of well equations for each well individually more troublesome.
As a result, we will still makes the solveWellEq in all the wells level.
2017-08-25 14:09:26 +02:00
Kai Bao
d99fe876dd adding getWellConvergence for StandardWell 2017-08-25 14:09:26 +02:00
Kai Bao
e01e8c352a adding function computeWellConnectionDensitesPressures to StandardWell 2017-08-25 14:09:26 +02:00
Kai Bao
0f997a537a adding computeConnectionPressureDelta to StandardWell
it is also copied from WellDensitySegmented while only handle one
Standard Well.
2017-08-25 14:09:26 +02:00
Kai Bao
9514e44d13 adding function computeConnectionDensities to StandardWell
which is copied from WellDensitySegmented, while avoid using of the
Wells struct.

TODO: find a better place to put these long functions.
2017-08-25 14:09:26 +02:00
Kai Bao
20c36d19c1 adding computePropertiesForWellConnectionPressures to StandardWell 2017-08-25 14:09:26 +02:00
Kai Bao
d3378ab403 adding function computeAverageFormationFactor to StandardWellsDense
which is seperated from getWellConvergence for better flexiblity later.
2017-08-25 14:09:26 +02:00
Kai Bao
9c65684bf0 adding updateWellControl to StandardWell
TODO: check whehter it should go to WellInterface.
2017-08-25 14:09:26 +02:00
Kai Bao
f293e81336 adding function updateWellStateWithTarget to StandardWell
without dealing with wsolvent function. It can be just a member variable
since we are handling well one by one individually.
2017-08-25 14:09:26 +02:00
Kai Bao
1d9d70ee02 adding the updateWellState to StandardWell
this function is very long and need to debug very carefully and it
should be split for better readability for sure.
2017-08-25 14:09:26 +02:00
Kai Bao
1174d2de54 adding assembleWellEq to StandardWell
F0_ is not initialized yet.
2017-08-25 14:09:26 +02:00
Kai Bao
1942853337 adding function computePerfRate to StandardWell 2017-08-25 14:09:26 +02:00
Kai Bao
7223163155 handing the numComponents in WellInterface 2017-08-25 14:09:26 +02:00
Kai Bao
266442b0bd adding extendEval() to StandardWell
For this type of functions that related to Evaluation should be
implemented within individual well model.
2017-08-25 14:09:26 +02:00
Kai Bao
ff2ada66bc adding the three swapping functions to WellInterface
They should only be used to change the order related to the reservoir
variables, so they should be same for all the well models and should be
put in the WelInterface.
2017-08-25 14:09:26 +02:00
Kai Bao
1a4ceeec66 makding the StandardWell and WellInterface templated
with the template parameter TypeTag.
2017-08-25 14:09:26 +02:00
Kai Bao
182bf315f3 implementing getQs() and getBhp() within StandardWell.
It does not compile. Now it is pretty clear that anything related to
Evalulation should go to each individual well model (StandardWell or MS
well ) and not stay with the Wells.
2017-08-25 14:09:26 +02:00
Kai Bao
2d02503091 more or less getting the old implementation in
and compile now.
2017-08-25 14:09:26 +02:00
Kai Bao
0cf6699591 adding StandardWell class
copied from the old implementation, which is the starting point for the
new refactoring
2017-08-25 14:09:26 +02:00
Kai Bao
910fe0318c adding the WellInteface
will be the base class for different well models.
2017-08-25 14:09:26 +02:00
Robert Kloefkorn
07e0d71906 [feature][flow] Add a common executable for all flow variants, i.e.
flow_ebos, flow_ebos_polymer, flow_ebos_solvent, flow_ebos_2p.
2017-08-23 16:21:15 +02:00
Tor Harald Sandve
6716ca63c9 Force solvent saturation between [0,1] 2017-08-23 09:50:40 +02:00
Tor Harald Sandve
55fc987af8 Add 4x4 invertMatrix specialization in FMatrix
The specialization is added in the ISTLSolver, not in fmatrix.h in dune-
common since 1) we need it now 2) the special treatment of singular and
near singular matrices may be specifiy to the solvent model.
2017-08-23 09:50:19 +02:00
Atgeirr Flø Rasmussen
58eea94460 Merge pull request #1247 from totto82/removeState-PR
Remove reservoirState from BlackoilModelEbos
2017-08-22 20:47:16 +02:00
Tor Harald Sandve
d643476ea5 Fix fallout if no group controll (NONE) is specified for a group 2017-08-18 08:56:26 +02:00
Tor Harald Sandve
6146190844 Fixes comments from PR
Don't sum ghost cells in the RateConverter
Some cleaning and comments.
2017-08-18 08:46:44 +02:00
Atgeirr Flø Rasmussen
8998207d7e Merge pull request #1253 from blattms/print-bubble-dew-point-problems-only-on-0
Output bubble/dew point computation problems only on rank 0.
2017-08-17 22:25:53 +02:00
Tor Harald Sandve
6bca2ea69c Fix rebase 2017-08-17 11:34:33 +02:00
Tor Harald Sandve
2bf8d48272 Remove redundant local state in ParallelDebugOutput 2017-08-17 11:13:00 +02:00
Tor Harald Sandve
593546da4b Fix 2p case in relativeChange(...) in BlackoilModelEbos 2017-08-17 11:13:00 +02:00
Tor Harald Sandve
ce84a59b29 Remove reservoirState from BlackoilModelEbos
1) Use the solution variable directly in RelativeChange(...)
2) Add a method in the RateConverter that takes the simulator instead of the state.
3) Pass the reservoir pressure directly to the well initialization.
4) Move convertInput(...) to SimulatorFullyImplicitBlackoilEbos.hpp.
This code is only used to convert the initial reservoir state.
5) Modify  updateState(...). The solution variable is updated directly and adaptPrimaryVariable(...)
from ewoms is used to switch primary variables. An epsilon is passed to adaptPrimaryVarible(...) after a switch
of primary variables to make it harder to immediately switch back.

The following code used by flow_ebos still uses the reservoirState
1) the initialization
2) restart
3) output of the initial state
4) the step methods in AdaptiveTimeStepping and NonlinearSolver.
The reservoirState is not used by this methods, so after the initial step, an empty reservoirState is passed around in the code.
2017-08-17 11:13:00 +02:00
Atgeirr Flø Rasmussen
e3ceecdfa4 Silence unused variable warnings. 2017-08-15 11:17:30 +02:00
Markus Blatt
7b3b99f692 Output bubble/dew point computation problems only on rank 0.
We do this by switching to output the global index of the cells.
In a first step the problematic cell indices are gather on process 0.
Then they are logged there.

This should prevent spurious ouput at the end of PRT and DEBUG files after the
simulation time is printed. This happened previously for some parallel
runs of model 2. Unfortunately, it seems these problems do not appear any
more for the current master. At least I could not reproduce them.
2017-08-14 21:34:54 +02:00
Atgeirr Flø Rasmussen
c6e729b1bf Merge pull request #1252 from atgeirr/debug-reordering-solver
Fixing bugs and improving the reordering solver
2017-08-10 14:09:58 +02:00
Atgeirr Flø Rasmussen
67823c5893 Disable debugging output of detailed cell data. 2017-08-10 13:09:22 +02:00
Atgeirr Flø Rasmussen
784bcf6892 Experiment with relaxing single cell iterations. 2017-08-10 12:31:04 +02:00
Atgeirr Flø Rasmussen
9cf6832140 Ignore limits to rs and rv changes.
As implemented with a relative limit, even with 1e9 default limit it
would still be impossible to get away from a zero value. It is
possible that the limits may return later, implemented in a less
buggy way, however for now they do not seem necessary.
2017-08-10 11:25:47 +02:00
Kai Bao
c59aa9127e making rate_converter to be reference to the one in Simulator
keeping the const property in the Well Model.
2017-08-10 11:20:09 +02:00
Kai Bao
cf902e1a8b Simulator Blackoil and StandardWellsDense uses same rate_converter
fixing the running of group control.
2017-08-10 10:25:39 +02:00
Atgeirr Flø Rasmussen
0a440d98ce Merge pull request #1238 from totto82/removeConvertResults2
Ask ebos to formulate the equation by surface volumes directly
2017-08-10 10:01:32 +02:00
Atgeirr Flø Rasmussen
1e0facec4a Fix updateState() saturation update. 2017-08-09 15:47:39 +02:00
Atgeirr Flø Rasmussen
608a674858 Make dh_sat behave like in coupled transport solver. 2017-08-07 16:17:57 +02:00
Kai Bao
338828fdce fixing the running of the vfp related for flow_ebos
the output of the THP is still not yet correct.
2017-08-07 11:39:11 +02:00
Atgeirr Flø Rasmussen
c39341006d Bugfix: follow opm-material convention for capillary pressure 2017-08-04 11:39:51 +02:00
Atgeirr Flø Rasmussen
e9e4416428 Make computeCellState() a const method. 2017-08-04 11:39:09 +02:00
Tor Harald Sandve
6b55b8316b Add interface for passing cell pressures directly in wellState.init(...) 2017-08-03 10:31:10 +02:00
Atgeirr Flø Rasmussen
12bd67e248 Create oil-in-place data if overall efficiency is requested by output. 2017-08-01 16:40:34 +02:00
Atgeirr Flø Rasmussen
babf06eade Merge pull request #1243 from blattms/write-initial-oip
Write the initial OIP values if requested.
2017-08-01 16:15:46 +02:00
Kai Bao
ab1b57b994 fixing the if condition for 2p + dummy phase
from if (numComp < numEq) to if (numComp < numWellEq)
2017-07-31 12:43:50 +02:00
Markus Blatt
900fec427d Cleaned up bogus documentation and whitespace 2017-07-20 12:37:01 +02:00
Markus Blatt
c06e5b7cf8 Removed boolean parameter indicating initial write to writeTimeStep.
Instead we use the timer to determine whether this is the initial write.
2017-07-20 12:12:41 +02:00
Markus Blatt
b89aa1fa4a Added initialStep to SimulatorTimerInterface 2017-07-20 12:11:11 +02:00
Markus Blatt
1939453adb Write the initial OIP values if requested.
This is when writing the first time step as is this is
the first step when OIP is available.
2017-07-19 22:06:08 +02:00
Markus Blatt
542f181f7e Narrow down the possible Matrix types for ParallelOverlappingILU0
It now has to be a BCRSMatrix, but the block type is flexible and
needs to this way. flow_legacy uses MatrixBlock, and flow_ebos uses
FieldMatrix.
2017-07-03 13:50:21 +02:00
Markus Blatt
1bb0968283 Work around unstable matrix inversion in DUNE 2.[34]
The versions are missing the specialized code for inverting
a 3x3 matrix that makes the algorithms quite a bit more stable.
With this patch we fall back to using our own MatrixBlock that does
not suffer from this deficiency.
2017-07-03 10:20:23 +02:00
Tor Harald Sandve
082e00d4ec Ask ebos to formulate the equation by surface volumes directly 2017-06-29 13:58:20 +02:00
Robert Kloefkorn
ce7f3f46a1 [feature] Added two-phase executable for numEq = 2. 2017-06-29 12:56:37 +02:00
Atgeirr Flø Rasmussen
a980993289 Make reordering solver work with iterated implicit.
Also tighten tolerances. They were too slack, giving significant
differences from non-reordering implementation towards the end of
SPE1CASE2 for example.
2017-06-28 07:47:17 +02:00
Atgeirr Flø Rasmussen
9b2d696b86 Tweak tolerance.
Note that a more proper dimensionless residual check is still a good idea.
2017-06-28 07:47:17 +02:00
Atgeirr Flø Rasmussen
c40ef4d9d0 Modifications to catch up with master branch. 2017-06-28 07:47:17 +02:00
Atgeirr Flø Rasmussen
4f9a9359ee Refine convergence check, retain max change info. 2017-06-28 07:47:17 +02:00
Atgeirr Flø Rasmussen
6167fff62a WIP: change what is logged, keep track of max change. 2017-06-28 07:47:17 +02:00
Atgeirr Flø Rasmussen
ab735b33e1 WIP: add sequential model for debugging. 2017-06-28 07:47:17 +02:00
Atgeirr Flø Rasmussen
0f8cd2c212 Bugfix: use correct sign for z gradient. 2017-06-28 07:47:17 +02:00
Atgeirr Flø Rasmussen
e653067951 Adapt new interface with timers. 2017-06-28 07:47:16 +02:00
Atgeirr Flø Rasmussen
b5b8fa14de Bugfix: use correct pv multiplier for initial and current state. 2017-06-28 07:47:16 +02:00
Atgeirr Flø Rasmussen
fb6dd3adf8 Add well flux terms. 2017-06-28 07:47:16 +02:00
Atgeirr Flø Rasmussen
2c20bb6cde Bugfix: take absolute value of residuals for comparison.
Also tighten hardcoded tolerance for testing, and update a comment.
2017-06-28 07:47:16 +02:00
Atgeirr Flø Rasmussen
87477f7a44 Bugfix: update output reservoir state. 2017-06-28 07:47:16 +02:00
Atgeirr Flø Rasmussen
79fed93b76 Fix saturation bug. 2017-06-28 07:47:16 +02:00
Atgeirr Flø Rasmussen
f12c781f3e Fix bugs. 2017-06-28 07:47:16 +02:00
Atgeirr Flø Rasmussen
e83b8cd0ac Finished updateState(). 2017-06-28 07:47:16 +02:00
Atgeirr Flø Rasmussen
0a3c65707d More work in progress... 2017-06-28 07:47:16 +02:00
Atgeirr Flø Rasmussen
56853a0272 Avoid derivative pollution. 2017-06-28 07:47:16 +02:00
Atgeirr Flø Rasmussen
5b21cdf54f Still working on reordering solver. 2017-06-28 07:47:16 +02:00
Atgeirr Flø Rasmussen
fae4922482 More work in progress for reordering solver. 2017-06-28 07:47:16 +02:00
Atgeirr Flø Rasmussen
1a8e28bd7e More work in progress on reordering solver. 2017-06-28 07:47:15 +02:00
Atgeirr Flø Rasmussen
ad6b5ec812 Work in progress (still) on reordering solver. 2017-06-28 07:47:15 +02:00
Atgeirr Flø Rasmussen
ad3e8b591b Add pvtRegions() accessor. 2017-06-28 07:47:15 +02:00
Atgeirr Flø Rasmussen
edeeb3e0ad Work in progress on reordering solver. 2017-06-28 07:47:15 +02:00
Atgeirr Flø Rasmussen
5e34ba33a2 Add access to low-level functionality. 2017-06-28 07:47:15 +02:00
Atgeirr Flø Rasmussen
803b40b82f Work in progress on BlackoilReorderingTransportModel. 2017-06-28 07:47:15 +02:00
Atgeirr Flø Rasmussen
293a7abfa2 Add skeleton of reordering transport solver. 2017-06-28 07:47:15 +02:00
Atgeirr Flø Rasmussen
0d6bf85f96 Merge pull request #1189 from blattms/fix-amg-support
Fix the PR that said it activated AMG.
2017-06-27 22:40:14 +02:00
Atgeirr Flø Rasmussen
fa4c4ccee6 Remove 'auto' from one more parameter list. 2017-06-27 20:06:44 +02:00
Robert Kloefkorn
936d035dc2 [bugfix][StandardWellsDense] remove auto from method parameter list. 2017-06-27 16:51:11 +02:00
Markus Blatt
8759c3a89a Set defines in *.cpp files.
That way we can keep the old order of includes which seems to be needed for compilation.
2017-06-27 10:00:31 +00:00
Markus Blatt
e8d89bcf48 Fix lookup of std::cerr by including iostream 2017-06-27 10:00:31 +00:00
Markus Blatt
f913baa66e Make use of template argument deduction for createAMGPreconditionerPointer 2017-06-27 10:00:31 +00:00
Markus Blatt
59ca0b4424 Fix the PR that said it activated AMG.
Actually, it did not as it did set the define eith wrong
or the wrong locations. This commit fixes this and finally
makes AMG available.
2017-06-27 10:00:31 +00:00
Atgeirr Flø Rasmussen
bf0937fae1 Merge pull request #1220 from totto82/impl_polymer_simpleWellModel
Add flow_ebos_polymer and flow_ebos_solvent
2017-06-27 10:51:42 +02:00
Atgeirr Flø Rasmussen
730ab5526c Merge pull request #1233 from nairr/term_output_mod
Multiple problem logging for linear solver failure
2017-06-26 13:58:21 +02:00
Rohith Nair
7500d3eb0c edit 2017-06-26 12:46:09 +02:00
Rohith Nair
84ca3cd9b9 Removes multiple problem logging for linear solver convergence failure 2017-06-26 12:21:44 +02:00
Tor Harald Sandve
1c05402209 Fix 2p case after rebase 2017-06-26 08:40:30 +02:00
Tor Harald Sandve
1bc2550541 Fix polymer in well model for producers. 2017-06-26 08:03:54 +02:00
Tor Harald Sandve
e9a1aa2a83 Clean up after rebase 2017-06-26 08:03:54 +02:00
Tor Harald Sandve
8088347c96 Move adjustment of water mobility caused by polymer to getMobility() 2017-06-26 08:03:54 +02:00
Tor Harald Sandve
17ada607eb Assume polymer and water is fully mixed in the well 2017-06-26 08:03:54 +02:00
Tor Harald Sandve
0068c175a7 Add polymer option to flow_ebos
No extra equation is added for polymer in the well equation.

Seperate executables are added for polymer: flow_ebos_polymer
and solvent: flow_ebos_solvent

Tested and verified on the test cases in polymer_test_suite

This PR should not effect the performance and results of the blackoil
simulator
2017-06-26 08:03:54 +02:00
Atgeirr Flø Rasmussen
2ceca48f04 Merge pull request #1206 from GitPaean/switching_well_primary_variables
Not switching the order of well primary variables and well equations
2017-06-22 19:37:40 +02:00
Robert Kloefkorn
2f13de8592 [cleanup][Ebos::getConvergence] removed unnecessary creation of vectors
for temporary quantities.
2017-06-22 14:37:43 +02:00
Kai Bao
e0e1fc65e2 removing ebosCompToFlowPhaseIdx from StandardWellsDense 2017-06-21 11:44:43 +02:00
Kai Bao
aaa66e0982 not switching the order of well equations. 2017-06-21 11:44:43 +02:00
Kai Bao
70e193696d removing the order switiching of the well primary variables.
Order swtiching of the well primary variables make the code more
complicated, and harder to understand and extend.
2017-06-21 11:44:43 +02:00
Atgeirr Flø Rasmussen
757320c57d Merge pull request #1224 from blattms/only-created-step_timings.txt-if-output
Only create step_timing.txt file if it gets written to.
2017-06-21 09:01:33 +02:00
Atgeirr Flø Rasmussen
f48acb8807 Merge pull request #1226 from blattms/use-output-to-skip-debug-or-all-files
Use output to skip debug or all files
2017-06-21 09:01:17 +02:00
Markus Blatt
a6175942fd Make lambda C++11 compliant 2017-06-20 15:49:13 +02:00
Markus Blatt
e6c2ab47b3 Equalize if statements governing step_timing.txt output 2017-06-20 15:46:04 +02:00
Markus Blatt
75561a0da7 Some cleanup concerning spaces, const, simplified logic. 2017-06-20 15:27:05 +02:00
Markus Blatt
e5b8cddfa8 Reactivate no_debug_log to indicate whether .CASE.DEBUG should be written
This switch only has an effect if output is not equal to none.
2017-06-20 13:36:22 +02:00
Markus Blatt
d7c2d58853 write init stuff only if output=all or output=true. 2017-06-20 13:21:26 +02:00
Markus Blatt
58948521bb Do not activate output writer for when output=log 2017-06-20 13:16:50 +02:00
Markus Blatt
1f8b747299 Removed leftover getDefault("output", ...) where bool was expected. 2017-06-20 13:11:16 +02:00
Markus Blatt
9c6e9b3715 Use option output to activate or (partly) deactivate output to files.
Possible values are none, log, and all. The first does not do any logging
to files. The second does log to files but does not create and log to
the DEBUG file. The latter uses all possible files.
2017-06-20 11:57:47 +02:00
Joakim Hove
eafadaa555 Merge pull request #1222 from joakim-hove/time-map-api
Changed to TimeMap api - using std::time_t
2017-06-20 10:29:29 +02:00
Markus Blatt
588111d135 Allow a flow_ebos run without creating a debug or prt file.
Adds two switches no_prt_log, and no_debug_log that deactivate
writing to PRT and DEBUG file.
One can now run flow_ebos without creating any output by
passing "output=false no_prt_log=true no_debug_log=true"
on the command line.
2017-06-20 08:33:47 +02:00
Markus Blatt
e0a7ced256 Only create step_timing.txt file if it gets written to.
If output=false is requested we created an empty file.
Now that file will only be created if output was requested
and it will only be opened on one rank in a parallel run.
2017-06-19 17:51:26 +02:00
Joakim Hove
66931cb030 Changed to TimeMap api - using std::time_t 2017-06-19 14:03:14 +02:00
Andreas Lauser
dc9ad10f87 flow_ebos: do not use BlackoilPropsAdFromDeck anymore
the only thing that was used of this class was the phase usage object,
but the phase usage object can be accessed via much leaner interfaces.

The old BlackoilPropsFromDeck (without "Ad") is still required to
compute the initial condition, but the init code should be refactored
soon anyway.
2017-06-16 15:13:47 +02:00
Tor Harald Sandve
d247b05b6b Add polymer to phase usage. 2017-06-16 13:40:29 +02:00
Atgeirr Flø Rasmussen
56cef57c8d Merge pull request #1218 from blattms/faster-ilu-old-order
This is the faster ilu pull request but with the traversal of the columns of upper in the original ordering
2017-06-15 14:23:17 +02:00
Atgeirr Flø Rasmussen
dd453d3e50 Merge pull request #1211 from andlaus/improve_cnv
Improve stability by changing the convergence check
2017-06-15 10:39:13 +02:00
Andreas Lauser
e3d0bbc144 specify the number of iterations where we use a "strict" Newton convergence criterion using a separate parameter
that parameter is called "max_strict_iter". This increases the
flexibility of this slightly and it avoids screwing up the default
value for the "max_iter" parameter in the future. The credits for this
patch go to [at]atgeirr for proposing it.
2017-06-14 14:22:22 +02:00
Andreas Lauser
0304183361 Newton: fail earlier
i.e. give up after 10 instead of 15 Newton iterations. since this now
also causes the CNV convergence criterion to be ignored after 8
instead of after 13 Newton iterations, and because CNV stagnation
seems to be the cause for the vast majority of the failures, it does
not lead to worse results or more time step chopping on Norne but
causes fewer wasted iterations.
2017-06-14 14:22:22 +02:00
Andreas Lauser
e58fed9956 ignore the CNV convergence criterion for the last few newton iterations
the cell based residual can cause problems for cells with
almost-singular shapes and/or small pore volume.
2017-06-14 14:22:22 +02:00
Atgeirr Flø Rasmussen
699b0678a0 Remove unused simulator program.
This stand-alone simulator is no longer needed since
flow_polymer supports two-phase runs.
2017-06-14 14:15:13 +02:00
Markus Blatt
c2129185ae Store columns of ParallelOverlappingILU0::upper in descending order
This is the order used by ILU in dune-istl
2017-06-14 10:06:33 +00:00
Atgeirr Flø Rasmussen
d284a657cf Merge pull request #1213 from nairr/terminal_output
remove debug info from convergence failure terminal output
2017-06-14 07:43:00 +02:00
Robert Kloefkorn
e3c898030c [cleanup] ilu_iteration --> ilu_fillin_level. 2017-06-13 15:48:01 +02:00
Robert Kloefkorn
0b90b7863b [cleanup[ use Dune::Amg::SequentialInformation instead of int. 2017-06-13 15:48:01 +02:00
Robert Kloefkorn
38300a4c9b [cleanup] avoid over aggressive memory allocation in ILU. 2017-06-13 15:48:01 +02:00
Robert Kloefkorn
1fa04096c3 [bugfix] circumvent bug in dune-istl when matrix was assembled in
row_wise mode. Also cleanup of output.
2017-06-13 15:48:01 +02:00
Robert Kloefkorn
e4f1bf9955 [feature] make ILU relaxation and iteration a dynamic parameter. 2017-06-13 15:48:01 +02:00
Robert Kloefkorn
a774128fb7 [feature] Make ILU use CRS for storing lower and upper triangular matrices.
Then the backwards in memory iteration for the upper triangular can be
avoided by storing the matrix blocks in the correct order.
2017-06-13 15:48:01 +02:00
Atgeirr Flø Rasmussen
a064f1bae2 Merge pull request #1215 from atgeirr/transport-solver-bugfixes
Transport solver bugfixes
2017-06-13 14:26:35 +02:00
Atgeirr Flø Rasmussen
f37a72da71 Merge pull request #1209 from dr-robertk/PR/remove-uninitialized-vars
[cleanup] initialized Eval variables with 0.
2017-06-13 08:56:23 +02:00
Tor Harald Sandve
655b81c8d7 Add polymer to blackoilstate 2017-06-12 15:37:57 +02:00
Atgeirr Flø Rasmussen
e0570fc980 Fix issues for iterated sequential implicit. 2017-06-12 15:36:56 +02:00
Atgeirr Flø Rasmussen
e01eca28ca Bugfix: avoid modification of flux data every iteration. 2017-06-12 15:36:48 +02:00
Atgeirr Flø Rasmussen
8a2cf4fd2d Merge pull request #1167 from GitPaean/fixing_petsc_compilation
removing the unused parameter:: for LinearSolverPetsc
2017-06-12 11:12:45 +02:00
Rohith Nair
2976b62d75 Add cause_of_failure for NumericalProblem 2017-06-12 10:48:07 +02:00
Rohith Nair
073e4ce839 Add cause_of_failure for LinearSolverProblem 2017-06-12 10:28:38 +02:00
Rohith Nair
18dfe1783b remove debug info from terminal output for convergence failure 2017-06-11 22:32:46 +02:00
Arne Morten Kvarving
85e65415c5 fixed: constructor has been made explicit 2017-06-09 18:45:11 +02:00
Bård Skaflestad
1e0428d821 Merge pull request #1208 from atgeirr/refactor-sequential-solver
Refactor sequential solver
2017-06-09 15:10:11 +02:00
Atgeirr Flø Rasmussen
462d90aeb1 Merge pull request #1207 from GitPaean/improve_WellModelMatrixAdapter
making wellMod_ in WellModelMatrixAdapter is actually a well model
2017-06-09 10:46:13 +02:00
Robert Kloefkorn
ee7520d896 [cleanup] initialized Eval variables with 0. 2017-06-08 15:35:40 +02:00
Atgeirr Flø Rasmussen
fa4d4fb0fb Make argument of setParameters() a const reference. 2017-06-08 11:03:27 +02:00
Atgeirr Flø Rasmussen
2f30897c70 Make proper convergence check for iterated sequentical implicit. 2017-06-08 11:03:26 +02:00
Atgeirr Flø Rasmussen
fd36a122c6 Modifications to catch up with master branch. 2017-06-08 11:03:26 +02:00
Atgeirr Flø Rasmussen
1a3c1d3058 Further templatized sequential model and simulator classes.
Now the actual pressure and transport model classes are not specified,
but taken as template template parameters, also grid and well model
are templates for both the sequential model and the simulator class,
although at this point only StandardWells is expected to work with
the sequential model.
2017-06-08 11:03:26 +02:00
Atgeirr Flø Rasmussen
6e66d885fb Pass 0 min_iter for pressure and transport solve. 2017-06-08 11:03:26 +02:00
Atgeirr Flø Rasmussen
5290b000ef Add setParameters(), return int from minIter(), maxIter(). 2017-06-08 11:03:26 +02:00
Atgeirr Flø Rasmussen
56597a9238 Merge pull request #1205 from atgeirr/tcpu-work
Implement TCPU
2017-06-08 09:08:51 +02:00
Atgeirr Flø Rasmussen
60985fdbeb Merge pull request #1168 from nairr/term_output_mod
Logging of multiple problems/warnings
2017-06-07 15:47:34 +02:00
Rohith Nair
c1e76d6b51 edit 2017-06-07 14:49:00 +02:00
Rohith Nair
deaf90f211 edit 2017-06-07 14:47:45 +02:00
Rohith Nair
58285bb8f8 edit 2017-06-07 14:46:04 +02:00
Rohith Nair
348cb5e5a4 Changes made as requested 2017-06-07 14:40:18 +02:00
Kai Bao
908b2bdf81 making wellMod_ in WellModelMatrixAdapter is actually a well model
instead of the BlackoilModelEbos, which reduces some confusion and also
removes a few unnecessary wrapping functions.
2017-06-07 14:26:00 +02:00
Tor Harald Sandve
2a66aa23a9 Merge pull request #1198 from dr-robertk/PR/fix-densewell-for-2p
[bugfix] Fix invalid read in WellDenseStandard when used with 2P Model.
2017-06-07 13:57:44 +02:00
Robert Kloefkorn
02b0b9d0f9 [cleanup] remove two uninitialized warnings in SaturationProposFromDeck. 2017-06-07 13:19:21 +02:00
Rohith Nair
c12665e04f -Added exception TooManyIterations
-Combined log messages from NonLinearSolver_impl.hpp and AdaptiveTimeStepping_impl.hpp
2017-06-07 10:37:25 +02:00
Atgeirr Flø Rasmussen
42aa343d9f Write total solver time to TCPU. 2017-06-06 21:35:05 +02:00
Atgeirr Flø Rasmussen
2d0701c1e8 Include possibility for arbitrary summary data.
This adapts to the upstream API change in opm-data, and adds a
proof-of-concept dummy TCPU field.
2017-06-06 11:42:51 +02:00
Kai Bao
bbb0c5a993 removing the unused parameter:: for LinearSolverPetsc
to fix the compilation when PETsc exists.
2017-06-06 11:00:51 +02:00
Atgeirr Flø Rasmussen
b62d84f7b8 Logging flexibility improvements.
Added "all_messages_to_terminal" parameter (defaulting to false),
it true, all messages (including note and debug) will be sent to
the terminal.

In addition, parser messages are tagged, to make the terminal output
less likely to be overwhelmed.
2017-06-02 15:26:23 +02:00
Atgeirr Flø Rasmussen
efc553b175 Merge pull request #1203 from atgeirr/debug-time-report
Add DebugTimeReport utility.
2017-06-02 14:14:28 +02:00
Atgeirr Flø Rasmussen
5f66a8ff4f Add DebugTimeReport utility. 2017-06-02 13:48:24 +02:00
Robert Kloefkorn
46f66e34b9 [bugfix] Only create asyncOutput when output is enabled globally. 2017-06-02 13:09:48 +02:00
Atgeirr Flø Rasmussen
c8e1f31f1d Fix minor warning (returning a const double). 2017-06-02 11:17:37 +02:00
Atgeirr Flø Rasmussen
37cbdbced2 Merge pull request #1199 from atgeirr/multiphase-upwind-refactor
Multiphase upwind refactor
2017-06-02 11:13:14 +02:00
Atgeirr Flø Rasmussen
f5795322fa Add missing include directive for std::sort(). 2017-06-02 08:52:16 +02:00
Atgeirr Flø Rasmussen
7e8ed40714 Use free function for multi-phase upwinding. 2017-06-01 14:15:31 +02:00
Atgeirr Flø Rasmussen
80c38d5a1a Add connectionMultiPhaseUpwind() free function. 2017-06-01 11:01:25 +02:00
Robert Kloefkorn
3db16ede73 [bugfix] Fix invalid read in WellDenseStandard when used with 2P Model. 2017-05-31 16:17:59 +02:00
Tor Harald Sandve
f671af6cd6 Clean-up of the solvent implementation 2017-05-30 14:33:17 +02:00
Tor Harald Sandve
8b75e2eedc Minor fixes solvent model
1) Fix GRAT controlled wells
2) Fix seg_fault in computeWellPotentials for solvent simulations
3) Fix mem_issus for RESV combinded with solvent
2017-05-30 14:22:19 +02:00
Tor Harald Sandve
683ba7e929 Fix fallout from rebase 2017-05-30 14:22:19 +02:00
Tor Harald Sandve
441a8895ac Improvments for solvent model
- add dss to appleyard chopping
- support for bhp injectors with solvent
- copy perfSolventRates between the time steps.
- fix bug in well access indicies when numComponents ~= numPhases
2017-05-30 14:22:19 +02:00
Tor Harald Sandve
50c1a1404a Remove BlackoilSolventState
The solvent saturation is added to BlackoilState and the
BlackoilSolventState is thus redundant.
2017-05-30 14:22:19 +02:00
Tor Harald Sandve
b987e4b324 Implement solvent model in flow_ebos
1) Extends the well model to account for solvent surface volumes
2) Add solvent to updateState
3) Add solvent to well and field output

The solvent parts is encapsled in if (has_solvent_) and should not effect
the standard runs.
2017-05-30 14:22:19 +02:00
Markus Blatt
138eb2c91b Merge pull request #1193 from dr-robertk/PR/fix-mpi-deadlock-in-output
Bugfix: fix MPI deadlock in output when asyncOutput is enabled.
2017-05-30 11:33:54 +02:00
Robert Kloefkorn
e46810d2dc [bugfix] 1) create asyncOutput object on all ranks to avoid deadlock in
MPI_Bcast call in writeTimeStepWithCellProperties.
2) ThreadHandle waits on destruction until all objects have been dealt with.
2017-05-29 18:08:18 +02:00
Tor Harald Sandve
434f96db0a FIX output the correct next timestep after convergece failure 2017-05-29 09:48:34 +02:00
Markus Blatt
1b52fc0724 Add missing include of config.h
Closes OPM/opm-core#1164
2017-05-24 12:11:49 +02:00
Tor Harald Sandve
095c580933 Merge pull request #1174 from totto82/FIX_flowsolvent
BUGFIX Don't try to compute effective properties for FIP if no solvent
2017-05-22 15:02:09 +02:00
Markus Blatt
79799a5c5c Use pressure for guiding coarsening in flow_ebos, too.
For flow_legacy the first component a block is used, which is the
oil pressure. As flow_ebos uses different indices this commit
explicitly uses BlackoilIndices::pressureSwitchIdx to tell the AMG
at which index the pressure is stored.
2017-05-22 12:09:58 +02:00
Markus Blatt
5a6ace9063 Resort to setting one define for AMG support in the main simulator 2017-05-22 11:34:20 +02:00
Markus Blatt
98e2eeb4dc Allow usage of AMG if flow_ebos is used and UMFPack is available.
This was previously deactivated because of the single precision support
of flow_legacy and missing single-precision support for UMFPack.

As flow_ebos does not use single precision this commit allows using amg
at least for flow_ebos.
2017-05-22 11:32:02 +02:00
Andreas Lauser
c3555a21d2 Merge pull request #1019 from andlaus/flow_ebos-remove-geoprops
flow_ebos: remove the legacy geologic properties object
2017-05-19 18:49:21 +02:00
Atgeirr Flø Rasmussen
27c9585529 Merge pull request #1178 from totto82/dont_output_SSOL
Don't output SSOL if no solvent
2017-05-19 10:02:51 +02:00
Atgeirr Flø Rasmussen
644d1c7bb5 Merge pull request #1175 from nairr/prtheader
PRT header
2017-05-18 14:32:06 +02:00
Rohith Nair
59ec8a1bf5 edit based on comments 2017-05-17 17:46:10 +02:00
Tor Harald Sandve
a5fed26486 BUGFIX Don't try to compute effective properties for FIP if no solvent 2017-05-15 10:13:22 +02:00
Andreas Lauser
48b7d6ea56 improve writing of the INIT file
now, the dune APIs are used whereever possible and the data is
computed for the global grid, i.e. for parallel runs it does not need
to be gathered across the processes anymore. Also, the INIT file is
now only written once instead of twice.

I've verified that the sequential and the parallel INIT files stay
identical for the Norne case and that the INIT file does not change
w.r.t. before this patch.
2017-05-12 15:44:55 +02:00
Andreas Lauser
7cbea4be41 fix a bug in the transmissibility output code
the fact that faces may point into the opposite Cartesian direction
was not considered and these output fields are specified
w.r.t. logically Cartesian cell indices. (not compressed ones!)
2017-05-12 15:43:51 +02:00
Andreas Lauser
adb2715c8d flow_ebos: also write the non-input NNCs to the init file
the corresponding code was shamelessly lifted from the DerivedGeology
class. it has been substantially modified to adapt it to the flow_ebos
specifics, though.
2017-05-12 15:43:51 +02:00
Andreas Lauser
e2e0e3290d flow_ebos: do no longer use the legacy object for geologic properties
it was already almost unused (except for output). Besides making the
overall flow_ebos code leaner because it reduces redundancies, this
patch also implies a small reduduction of memory consumption and a
minor performance improvement. the latter is due to the fact that the
transmissibilities now do not need to be calculated more often than
necessary anymore.
2017-05-12 15:43:51 +02:00
Tor Harald Sandve
4ecc01d30a Don't output SSOL if no solvent 2017-05-12 14:45:00 +02:00
Tor Harald Sandve
2af3019299 Dummy commit 2017-05-10 15:36:20 +02:00
Tor Harald Sandve
d7fa66197f Add SSOL to blackoilState
Stores the solvent saturation in the simulator container.
2017-05-10 11:14:53 +02:00
Rohith Nair
b95f4fb6a0 edit 2017-05-09 14:05:01 +02:00
Rohith Nair
94da18514f edit 2017-05-09 14:00:49 +02:00
Rohith Nair
53f2a13eb9 Adds header for .PRT file with the following information
1. Flow binary information
2. host names(s)/ machine names
3. host hardware
4. Operating system
5. User
6. System time and date
2017-05-09 13:58:21 +02:00
Andreas Lauser
f3e0b9c692 Merge pull request #1169 from totto82/prepare_solvent
Prepare for 2p and  extended models.
2017-05-08 13:47:43 +02:00
Tor Harald Sandve
9e504da6a1 Add solvent to phaseUsage 2017-05-08 10:29:51 +02:00
Tor Harald Sandve
6084721812 Prepare for extended models.
Let the code loop over number of components instead of phase
Pass TypeTag as template parameter instead of all the properties.
2017-05-08 09:52:30 +02:00
Arne Morten Kvarving
3c0cb9e950 adjust for changed ParameterGroup namespacing 2017-04-28 15:36:25 +02:00
Arne Morten Kvarving
ca2288ac37 changed: remove embedded 'parameters' namespace in ParamGroup
inconsistent and unnecessary.

this is purely a cosmetic change, the only exception was a function with
the generic name 'split', which was renamed to splitParam to avoid confusion.
2017-04-28 15:34:11 +02:00
Andreas Lauser
5144359ac0 flow_ebos: update banner
since flow_ebos is the new silverback simulator of the opm-simulators
clan, it should itself as "flow"(the old silverback announces itself
as "flow_legacy" already).

Also some people seem to have been confused by the eWoms version and
codename. Since this information only exhibits limited value IMI,
let's remove it here.
2017-04-28 12:52:30 +02:00
Atgeirr Flø Rasmussen
a5b9b6d922 Merge pull request #1164 from atgeirr/fix-solvent-fip
Workaround: ensure properties necessary for FIP are computed.
2017-04-25 10:01:55 +02:00
Atgeirr Flø Rasmussen
fff99360b3 Workaround: ensure properties necessary for FIP are computed.
Should only result in an extra call the first time in this function.
2017-04-25 09:31:48 +02:00
Tor Harald Sandve
dad89974ae Make initial viscosity output similar with Ecl 2017-04-24 13:29:47 +02:00
Atgeirr Flø Rasmussen
90d90fb452 Fix output of relative permeability for sequential model.
Bug caused assert() failures for debug mode runs.
2017-04-21 15:30:40 +02:00
Atgeirr Flø Rasmussen
ce6801df7a Merge pull request #1157 from andlaus/fix-non-MPI-build
fix non-MPI builds
2017-04-20 21:47:08 +02:00
Andreas Lauser
6f257f0877 fix non-MPI builds
some headers must be included unconditionally.
2017-04-20 15:12:34 +02:00
Tor Harald Sandve
9a1a26b267 FIX memory leakage in well_controls
The Alq and vfp is set free in well_controls_destroy to avoid memory
leakage.
2017-04-20 12:58:16 +02:00
Andreas Lauser
4d02d51dd2 NewtonIterationBlackoilInterface: make its destructor virtual
this prevents GCC-7's address sanitizer from complaining about a
delete for a new of a different type. (i.e., the new is for the
derived class, but if the destructor is non-virtual only the dtor of
the base class is called if a pointer to the base class is deleted.)

finding this was quite some fun, mainly because it took a while what
the issue was.
2017-04-20 11:03:54 +02:00
Atgeirr Flø Rasmussen
422d834996 Merge pull request #1152 from atgeirr/conditional-output
Only push non-empty data to output.
2017-04-19 13:05:02 +02:00
Atgeirr Flø Rasmussen
2c3a497767 Merge pull request #1147 from babrodtk/bugfix_pdpb_output_legacy
This adds bubble/dew point pressure output to legacy flow
2017-04-19 10:17:29 +02:00
Atgeirr Flø Rasmussen
af4a12b872 Only push non-empty data to output. 2017-04-19 09:58:54 +02:00
Atgeirr Flø Rasmussen
e7285ba230 Fix bug in two-phase case. 2017-04-18 15:23:27 +02:00
babrodtk
8ae7178f0a This adds bubble/dew point pressure output to legacy flow 2017-04-18 14:03:56 +02:00
Andreas Lauser
e24d8c3a57 SimulatorFullyImplicitBlackoilOutput: print warnings instead of silently ignoring requests for bubble/dew point pressure output 2017-04-18 11:09:09 +02:00
Andreas Lauser
7e388376af only output the bubble and dew point pressures if they are available 2017-04-18 10:21:26 +02:00
Markus Blatt
9f5a904382 Removes deadlocks in the case where only few processes have wells.
The problem was that updateWellControls was not called on all
processes. But this is mandatory as the well switching output
requires global communication.
2017-04-12 17:37:34 +02:00
Markus Blatt
b5612806ac Revert to using standard algorithms instead of using masks.
This is now possible as the values stored for ghost/overlap elements
(minimum where we compute the maxiumum, zero where we sum up)
will not influence the result of the computation any more.
2017-04-12 13:42:02 +02:00
Markus Blatt
0db663fe51 Only compute convergence markers for interior elements. 2017-04-12 13:42:02 +02:00
Markus Blatt
b72a167c76 Correctly compute maximum in a parallel flow_ebos run. 2017-04-12 13:42:02 +02:00
Atgeirr Flø Rasmussen
baa6104f39 Silence unused argument warnings. 2017-04-12 11:13:10 +02:00
Atgeirr Flø Rasmussen
246118d794 Silence sign mismatch warnings. 2017-04-12 11:12:34 +02:00
Atgeirr Flø Rasmussen
a17442f578 Remove unused variables. 2017-04-12 11:12:07 +02:00
Andreas Lauser
d334fc1c70 Merge pull request #1118 from GitPaean/calculating_well_potentials_for_each_timestep
[WIP] Changes to improve the StandardWellsDense
2017-04-12 10:33:57 +02:00
Joakim Hove
527c0a9e75 Using optional restart loading instead of extra. 2017-04-11 22:59:26 +02:00
Kai Bao
926f93fa4e adding flag to tell when using well potential for guide rate
for WellNode.
2017-04-11 16:53:19 +02:00
Kai Bao
e0d48a366b removing well potentails from WellsManager 2017-04-11 16:53:19 +02:00
Kai Bao
ff08c6b4f3 small corrections in WellsGroup
should not change reults.
2017-04-11 16:53:19 +02:00
Kai Bao
e8aa431ec7 not negative rate_for_group_control
in WellsGroup::updateWellProductionTargets. The current implementation
of group control is allowed tiny over-producing of the group target
while it cause negative rate_for_group_control . When all the wells are
not under group controls, it can cause oscillation of the control mode
later.

Probably a better way is to do something when we see overproducing
happens.
2017-04-11 16:53:19 +02:00
Kai Bao
a498d48a73 Tracking situation when group overproducing its target
Bascially it means that something wrong with our algorithms. Not sure
how to handle it properly yet.
2017-04-11 16:53:19 +02:00
Kai Bao
b027b27452 not applying the group control in WellsManager
since the guide rates are not completed yet.
2017-04-11 16:53:19 +02:00
Kai Bao
4bd1b1cf76 not setting up guide_rates in WellsManager based on well potentials
That part is moved to well_collection, will be handled in the beginning
of time step.
2017-04-11 16:53:19 +02:00
Kai Bao
bec92dee9e Wells specified with GRUP will be put under group control
immediately.
2017-04-11 16:53:19 +02:00
Kai Bao
2f10b8fc23 Always updating the well targets under group control
for each iteration. Even all the wells are under individual controls,
their group targets/constraints should also be updated for correct group
behavoirs.
2017-04-11 16:53:19 +02:00
Kai Bao
530afe55dd handle the situatioin when giving a NaN prod target to injectors
When all production wells are under individual controls, the group can
have zero production guide rates, which can result NaN value targets for
injectors.
2017-04-11 16:53:19 +02:00
Kai Bao
d41c4a371f Considering the injection phase when applying VREP group controls
GCONINJE only support single phase injection. When we inject one phase,
the values of distr for other phases should be set to be zero.

It will provide one strategy to figure out which phase we are
injecting. It is important when we inject one phase while the well is
claimed to be another phase in WELSPECS.
2017-04-11 16:53:19 +02:00
Kai Bao
745a2a5561 adding a flag to indicate whether group controls applied
for WellCollection.
2017-04-11 16:53:19 +02:00
Kai Bao
dff247d975 adding a function setGuideRatesWithPotentials() to WellCollection
it only handles the calculation based on wellPotentials though.

Or it should also give each well a value for wells does not specify a
guide rates? which will be some value same for all the wells?
2017-04-11 16:53:19 +02:00
Kai Bao
0700c8cf67 adding more checking for the potential values
during the well well potential calculation.
2017-04-11 16:51:16 +02:00
Kai Bao
ce0e580cee fixing comments.
no functional change.
2017-04-11 16:51:16 +02:00
Kai Bao
dd95114e6d fixing well potentials calculation after introducing the saturation table
The calculation of well potentials of newly added well failed after using the saturation
table. Here, we fix it using much smaller parameters to stablize the
calculation, while it slows down the iteration process.

TODO: improves the convergence rate by either introducing better
paramters or better iteration strategy.
2017-04-11 16:51:16 +02:00
Kai Bao
972b911495 fixing two warnings.
no function change.
2017-04-11 16:51:16 +02:00
Kai Bao
72e2b7c6c3 fixing errors resulting from the rebasing procedure. 2017-04-11 16:51:16 +02:00
Kai Bao
7a4d0bb8aa slightly re-organizing prepareTimeStep()
should not impact the simulation results.
2017-04-11 16:51:16 +02:00
Kai Bao
7038b6eb57 recovering the running of flow_multsigement without group control
flow_multisegment should not be able to handel group control yet.
2017-04-11 16:51:16 +02:00
Kai Bao
e0d96b3410 removing compute_well_potentials_ from BlackoilModelParameters 2017-04-11 16:51:16 +02:00
Kai Bao
4ed95fcbf0 calculate well potentials based on requireWellPotentials()
from well_colllection. Not based on command line paramters anymore.
2017-04-11 16:51:16 +02:00
Kai Bao
181112491b recovering group control for legacy_flow. 2017-04-11 16:51:16 +02:00
Kai Bao
8fa3c4b324 removing one unnecessary if condition 2017-04-11 16:51:16 +02:00
Kai Bao
e627f35176 removing well_potential_ from WellStateFullyImplicitBlackoil 2017-04-11 16:51:16 +02: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
Kai Bao
8d96d835b3 removing the well potential from WellsManager constructor. 2017-04-11 16:51:16 +02:00
Kai Bao
1aff98c4f4 adding the extra template type from recent merged PR 2017-04-11 16:51:16 +02:00
Kai Bao
22b2217dd3 removing setWellSolutionsFromPrevState from WellStateFullyImplicitBlackoilDense
Not used anymore.
2017-04-11 16:51:16 +02:00
Kai Bao
032f9803be cleaning up unuseful comments and code fragments. 2017-04-11 16:51:16 +02:00
Kai Bao
279fbad17c removing the comments from the NonlinearSolver_impl
which is from the development process.
2017-04-11 16:51:16 +02:00
Kai Bao
ef7769b77e tracking if wells are newly added in WellStateFullyImplicitBlackoil
For a newly added well, the initialized rate cans cause big problem when
applied to VFP interploation when THP control is involved.
2017-04-11 16:51:16 +02:00
Kai Bao
a8ae9276c5 adding computeWellPotentialWithTHP() to compute well potential
in an iterative way. When VFP interpolation is performed, the bhp and
rates are coupled together. Some iteration will be required to get the
consistent bhp and well potential.
2017-04-11 16:51:16 +02:00
Kai Bao
182c5897c8 adding leastStrictBhpFromBhpLimits()
to pick the least strict bhp limits in the well controls. It is used to
calculate the well potential when there is no thp limits there.

If there is thp limits there, it will be used for further chosing of the
bhp value for well potential calculation.
2017-04-11 16:51:16 +02:00
Kai Bao
402a5a125a adding computeWellRatesWithBhp() to calculate well rates
for one well based on the give Bhp.
2017-04-11 16:51:16 +02:00
Kai Bao
7b2e6760e1 adding wellHasTHPConstraints() to decide if there is THP control
for a specific well.
2017-04-11 16:51:16 +02:00
Kai Bao
86dc231cc3 adding more things related to group control when restarting
with a new time step due to convergence failure.
2017-04-11 16:51:16 +02:00
Kai Bao
e39ffefb2e performing prepareTimeStep in assemble for StandardWellsDense
instead of model->preppareStep()

to avoid segmenttation error from eclSimulator and also not intervening
with NonlinearSolver
2017-04-11 16:51:16 +02:00
Kai Bao
4a6dbbe0a7 updating the control index for both well state and well_controls struct
when applying VREP group controls.
2017-04-11 16:51:16 +02:00
Kai Bao
cb85319a72 set thp() value to zero when no THP constraints exist
in updateWellState()
2017-04-11 16:51:16 +02:00
Kai Bao
7a7dcdf3ba correcting a comment in computeWellFlux() in StandardWellsDense 2017-04-11 16:51:16 +02:00
Kai Bao
d02f028260 not resetWellControlFromState in assemble() in StandardWellsDense
other places should gurantee the control indices from the well_state and
well_controls struct are the same.

And also, since the first element in wellSolutions() depends on the type
of the control, this function is complete yet.
2017-04-11 16:51:16 +02:00
Kai Bao
34385ee58f synchronizing the control index at the beginning of assemble()
in StandardWellsDense class.

It takes effects after restarting from a previous unconverged solution.
2017-04-11 16:51:16 +02:00
Kai Bao
2bc1c8702e copying the thp value from prevState. 2017-04-11 16:51:16 +02:00
Kai Bao
77ec45cdd2 recovering the well_controls if solveWellEq not convergent
since we are using the control index from both WellState and
well_controls.
2017-04-11 16:51:16 +02:00
Kai Bao
ea3adb3c37 using reference of WellState in resetWellControlFromState() 2017-04-11 16:51:16 +02:00
Kai Bao
0acb646a4d when there is group control, we should update WellState
since the group targets are updated.
TODO: maybe it is not necessary, need to investigate the design of getBhp() and
getQs().
2017-04-11 16:51:16 +02:00
Kai Bao
087b9471c7 completing prepareTimeStep() for StandardWellsDense
updating all the group control related.
2017-04-11 16:51:16 +02:00
Kai Bao
b83f37dcc0 considering the distr has zero values for non-injecting phases
to avoid NaN resulting from devided by zero.
2017-04-11 16:51:16 +02:00
Kai Bao
b21f577989 when there is VREP control, updateRateConverter in prepareStep
in BlackoilModelEbos.
2017-04-11 16:51:16 +02:00
Kai Bao
68eaf6ac1f Not copying the wellSolutions from previous WellState
in WellStateFullyImplicitBlackoilDense.
2017-04-11 16:51:16 +02:00
Kai Bao
ed4e87ac24 not copying the contrl_index from the previous WellState
when there is new control keywords enter, the combination of control /
constraints change. Under this kind of situation, copying the control
index does not mean you copy the same types of control.

Using the control index from the previous WellState for many situation
is a good practice, while it also risks copying a random and rather bad
choice. It is a major problem when we have VFP, VFP can have very
damaging values for certain situation to show it is not desirable to
be in this kind of situation.
2017-04-11 16:51:16 +02:00
Kai Bao
653baae039 making the computeWellPotentials calculate potential for each well
Not store the well potentials to WellState anymore.
2017-04-11 16:51:16 +02:00
Kai Bao
4b5e1dfadc more treatment for zero rate wells in updateWellStateWithTarget 2017-04-11 16:51:16 +02:00
Kai Bao
f70bb960dd updating rates of multiphase with updateWellStateWithTargets
for StandardWellsDense model.
2017-04-11 16:51:16 +02:00
Kai Bao
819aa90d84 adding prepareTimeStep() to the StandardWellsDense
to handle the well potential related calculation
2017-04-11 16:51:16 +02:00
Kai Bao
57f7650228 adding a function computeWellPotentials for StandardWellsDense
for each well. It is a temporay approach for testing without breaking
any compilation before changing the interface for WellsManager.
2017-04-11 16:51:16 +02:00
Atgeirr Flø Rasmussen
189d91bc9e Merge pull request #1134 from andlaus/report-failure
flow_ebos: print statistics about failed time steps
2017-04-11 12:29:33 +02:00
Atgeirr Flø Rasmussen
2dff8ef141 Merge pull request #1135 from nairr/terminal_output_mod
Minor terminal output modifications
2017-04-11 11:39:27 +02:00
Andreas Lauser
ef2a560fb3 flow_ebos: print statistics about failed time steps
the performance summary at the end of a Norne run which are printed by
`flow_ebos` now looks like this on my machine:

```
Total time (seconds):         773.757
Solver time (seconds):        753.349
 Assembly time (seconds):     377.218 (Failed: 23.537; 6.23965%)
 Linear solve time (seconds): 352.022 (Failed: 23.2757; 6.61201%)
 Update time (seconds):       16.3658 (Failed: 1.13149; 6.91375%)
 Output write time (seconds): 22.5991
Overall Well Iterations:      870 (Failed: 35; 4.02299%)
Overall Linearizations:       2098 (Failed: 136; 6.48236%)
Overall Newton Iterations:    1756 (Failed: 136; 7.74487%)
Overall Linear Iterations:    26572 (Failed: 1786; 6.72136%)
```

for the flow_legacy family, nothing changes.
2017-04-11 11:12:11 +02:00
Rohith Nair
1fd91b2ce0 edit 2017-04-11 10:03:22 +02:00
Rohith Nair
be74630699 minor changes to output tag 2017-04-11 09:49:59 +02:00
Atgeirr Flø Rasmussen
88e4646b71 Merge pull request #1084 from babrodtk/hysteresis_output
Adds hysteresis output and input (for restarting)
2017-04-11 07:44:59 +02:00
Andreas Lauser
5125929a66 SimulatorReport: make it possible to report failed time steps
the method can still be called as it used to be. in this case no
failures are reported, though.
2017-04-10 23:31:24 +02:00
Rohith Nair
375e4e2678 Changed output classification of NaN residuals to "Bug" from "Problem" 2017-04-10 18:55:54 +02:00
dr-robertk
9b29b57960 Merge pull request #1124 from atgeirr/output-dir
Refactor directory creation
2017-04-10 13:04:42 +02:00
babrodtk
4d286cf0b3 Makes hysteresis and somax optional in restart file 2017-04-07 16:20:35 +02:00
Atgeirr Flø Rasmussen
208e394e3d Merge pull request #1153 from babrodtk/hysteresis_output
Added functions in SaturationProps for hysteresis IO
2017-04-07 15:54:26 +02:00
Atgeirr Flø Rasmussen
db8523e849 Merge pull request #1082 from totto82/satTableIdWells
Support for saturation table for each well completion
2017-04-07 14:43:28 +02:00
babrodtk
1fd36e9451 Fixed hysteresis input/output in flow_legacy 2017-04-07 14:36:36 +02:00
babrodtk
46bd3499dc Added functions in SaturationProps for hysteresis IO 2017-04-07 14:31:22 +02:00
Atgeirr Flø Rasmussen
29f3b86ef0 Merge pull request #1123 from blattms/fix-parallel-istl-verbosity
Fix verbosity parameter used for parallel istl solvers.
2017-04-07 10:32:34 +02:00
Atgeirr Flø Rasmussen
d9daa651ac Merge pull request #960 from dr-robertk/PR/flow_ebos_polyhedral
Allow to run flow_ebos with PolyhedralGrid (UnstructuredGrid)
2017-04-07 10:13:25 +02:00
Atgeirr Flø Rasmussen
289b24689f Merge pull request #1126 from atgeirr/refined-output
Refined output to terminal and log
2017-04-06 22:17:34 +02:00
Atgeirr Flø Rasmussen
6f9fcdf7a5 Fix (debug log) output of time taken per report step.
First, the stepReport variable was not used with adaptive timestepping.
Second, even when properly updating stepReport, solver_time is still 0.
It just happens that lots of other timing variables are updated, but not
solver_time (nor total_time, pressure_time and transport_time). Simplest
way to handle is to just report the solver_timer seconds (which are still added
to the "full sim report"'s solver_time).
2017-04-06 21:08:21 +02:00
Atgeirr Flø Rasmussen
98debed741 Fix minor output bug and refine output.
Previously the substep summary reports were cumulative, misleading the user.
Also, made output a little more compact and readable, ensuring numbers line up
unless unusually many digits are needed for times and iteration counts.
2017-04-06 14:54:08 +02:00
Atgeirr Flø Rasmussen
e325dcd04b Excessive nonlinear iterations is reported as problem, not error. 2017-04-06 14:52:19 +02:00
Tor Harald Sandve
ac36ad5ad1 BUGFIX. Store soMax also for the solvent model 2017-04-06 14:39:30 +02:00
Tor Harald Sandve
cd564ade5f Support for saturation table for each well completion
Compute relperms for each well completion based on saturation table ids
(satnums)

Does not work in combination with hysteresis.
2017-04-06 14:21:59 +02:00
babrodtk
8340d26890 Adds hysteresis output and input (for restarting) 2017-04-06 14:17:15 +02:00
Tor Harald Sandve
214e9764b2 Add sat table id to well struct 2017-04-06 13:52:27 +02:00
Atgeirr Flø Rasmussen
85e1544553 Use ensureDirectoryExists() instead of boost::filesystem directly.
Motivated by
 - proliferation of identical code
 - need to avoid strange behaviour with "." directory on some boost versions
 - potenial for further refactoring to avoid boost entirely
2017-04-06 12:14:54 +02:00
Atgeirr Flø Rasmussen
d267c1a77d Create ensureDirectoryExists() free function. 2017-04-06 12:14:06 +02:00
Markus Blatt
9ed02b33bc Fix verbosity parameter used for parallel istl solvers.
These are not aware whether they are parallel or not. Therefore
the user should only specify a verbose verbosity only on one rank.
With this commit we do this on the process responsible for terminal
output.
2017-04-06 12:11:26 +02:00
Robert Kloefkorn
8a7141fa88 [feature] Add GridInit for PolyhedralGrid. 2017-04-05 13:54:12 +02:00
Robert Kloefkorn
11f36de73e [bugfix] Use AutoDiffGrid in unspecialized version of ParallelDebugOutput. 2017-04-05 13:53:28 +02:00
babrodtk
e0e1ca51e6 Added soMax to flow_legacy 2017-04-05 12:32:43 +02:00
babrodtk
bd0507cc3b Added somax to input/output to restart file 2017-04-05 12:32:43 +02:00
Atgeirr Flø Rasmussen
69835d2cde Merge pull request #1114 from blattms/parallel-dens-wells
Parallelize and dunify/ewomsify StandardWellDense
2017-04-05 09:10:16 +02:00
Arne Morten Kvarving
32d50eab4a Merge pull request #1096 from andlaus/use-flow_legacy-for-unit-tests
make the unit tests to explicitly use flow_legacy instead of flow
2017-04-04 11:09:36 +02:00
Markus Blatt
30f3d4e2d0 Get rid off TypeTag system in StandardWellsDense.
Previously, we kind of hard coded the problem using the TypeTag system.
Instead of this we now simply pass the only additional thing needed, the
ElementContext, as an additional template parameter.

Removes the include of removed header BlackoilModelEbosTypeTags.hpp.
2017-04-04 11:08:17 +02:00
Markus Blatt
312aa24f86 Revert "Factor out ewoms typetag system to separate header."
This reverts commit 05c70491257a615472e68fb44776bcd7effb60b8.
2017-04-04 11:08:17 +02:00
Markus Blatt
2bf7f8efa7 Revert "Moved copyright notice to top of header BlackoilModelEbosTypeTags.hpp"
This reverts commit d341de0d8b796b66f7bd6d871c84e1c2db265ff1.
2017-04-04 11:08:17 +02:00
Markus Blatt
e56e2cae15 Added requested braces. 2017-04-04 11:08:17 +02:00
Markus Blatt
6b8b8b971e Use global wellsActive to see whether wells are active at all.
This bug must have sneaked in during rebasing. Kudos to Atgeirr for
spotting this.
2017-04-04 11:08:17 +02:00
Markus Blatt
cde162b3d6 Use the global number of cells for the average.
This number is still wrong in master but well become correct once
PR #1107 is merged.
2017-04-04 11:07:57 +02:00
Markus Blatt
a6f6e4806e Moved copyright notice to top of header BlackoilModelEbosTypeTags.hpp 2017-04-04 11:06:41 +02:00
Markus Blatt
29fb281406 Updated Copyright stuff 2017-04-04 11:06:41 +02:00
Markus Blatt
781eadb561 Removed unused method detail::convergenceReduction 2017-04-04 11:06:41 +02:00
Markus Blatt
0e83496740 Make getWellConvergence parallel and omit unnecessary computations.
detail::getConvergence computes a lot more than we actually need.
We only need the average over B and the maximum of the well residual.

Therefore we now compute these quantities in getWellConvergence and
do the global reductions manually.
2017-04-04 11:05:50 +02:00
Markus Blatt
4768bc9e90 Remove usage of cachedIntensiveQuantities from getWellConvergence 2017-04-04 11:05:50 +02:00
Markus Blatt
f6153f8133 Factor out ewoms typetag system to separate header.
We will need the typetag information also for the wells.
If it is not in a separate header we get problems
with recursive inclusion of the headers (BlackoilEbos.hpp
includes the header that also needs the typetag information).
2017-04-04 11:05:50 +02:00
Atgeirr Flø Rasmussen
1232a7a021 Merge pull request #1111 from blattms/make-updateState-work-for-non-interior-elements
Make update state  and getConvergence work for non interior elements
2017-04-04 10:47:39 +02:00
Atgeirr Flø Rasmussen
81dbfc8205 Merge pull request #1107 from blattms/fix-ebos-global-cell
[Ebos,bugfix] Correctly compute the global number of cells.
2017-04-04 10:33:22 +02:00
Markus Blatt
2b0a9351d5 Iterate over Interior_Partition instead of All_Partition and if-clause 2017-03-24 12:25:28 +01:00
Markus Blatt
863bef4722 Fix superfluous dereferencing that broke compilation. 2017-03-24 08:22:32 +01:00
Markus Blatt
30e8753288 Use Interior_Partition when iterating over grid instead of if(..) continue.
Makes the code a bit cleaner.
2017-03-22 11:51:52 +01:00
Robert Kloefkorn
085df34183 [cleanup] Only iterate over grid once during getConvergence.
Resolved cherry-pick conflicts by @blattms.
2017-03-21 10:52:37 +01:00
Andreas Lauser
c5fd9ddb48 make the unit tests to explicitly use flow_legacy instead of flow
the results of `flow_legacy` and `flow_ebos` are not bit-wise
identical. The same tests using `flow_ebos` should to be added when
re-organizing the unit tests the next time.
2017-03-20 20:01:59 +01:00
Markus Blatt
990ea7c44c Remove unused variable warning for endElementIt.
It was redefined and initialized in an inner scope.
2017-03-20 19:53:27 +01:00
Markus Blatt
ad1fe8fac0 Prevent using dangling references in BlackoilModelEbos::getConvergence.
Using cachedIntensiveQuantities on parallel grids will cause/is causing
dereferencing a null pointer here. Therefore we resort to iterating over
the grid and using the element Context.

If this turns out ot be performance regression @andlaus owes me a beer!
2017-03-20 16:46:10 +01:00
Markus Blatt
aa5940a2ff Prevent using dangling references in BlackoilModelEbos::updateState.
Using cachedIntensiveQuantities on parallel grids will cause/is causing
dereferencing a null pointer here. Therefore we resort to iterating over
the grid and using the element Context.

If this turns out ot be performance regression @andlaus owes me a beer!

Closes #1110
2017-03-20 16:46:00 +01:00
Atgeirr Flø Rasmussen
0b0ef7e20f Merge pull request #1108 from andlaus/apply_wells_in_assemble
BlackoilModelEbos: apply the well residual in assemble()
2017-03-20 08:44:32 +01:00
Atgeirr Flø Rasmussen
2eb8816507 Merge pull request #1103 from totto82/output_rsrv_pc
Fix output of rs and rv.
2017-03-20 06:47:17 +01:00
Atgeirr Flø Rasmussen
553f345670 Merge pull request #1088 from GitPaean/correcting_bhp_limits_for_well_potentials
more careful determination of the most restrictive bhp value
2017-03-19 14:08:13 +01:00
Atgeirr Flø Rasmussen
f504ca34f4 Merge pull request #1041 from blattms/fix-output_writer-setup
Fix output writer setup
2017-03-17 18:12:52 +01:00
Atgeirr Flø Rasmussen
eaf9d136bf Merge pull request #1091 from GitPaean/calculating_surface_volume_fraction
[WIP] using surface volume fraction instead of wellVolumeFraction() and wellVolumeFractionScaled() in a few places
2017-03-17 14:31:31 +01:00
Bård Skaflestad
bdba47e5ac Merge pull request #1105 from atgeirr/change-default-output-dir
Change default output dir
2017-03-17 13:58:08 +01:00
Andreas Lauser
093310c437 BlackoilModelEbos: apply the well residual in assemble()
This used to be done in solveJacobianSystem(), but this method is only
supposed to solve the linearized system of equations, not to modify it
IMO.

I tested this patch with Norne: It did not change anything.
2017-03-17 11:39:41 +01:00
Bård Skaflestad
d700f3e946 Merge pull request #1104 from atgeirr/allow-restart-without-opmextra
Allow restarting without OPMEXTRA field in restart file.
2017-03-17 11:18:06 +01:00
Markus Blatt
13956625b6 Removed duplicate output writer setup.
The cat must have dragged that in during some of the various rebases of this branch.
This introduced a segmentation fault as for the second setup eclIO was already null.
2017-03-17 11:08:55 +01:00
Markus Blatt
bb7934b1a2 [Ebos,bugfix] Correctly compute the global number of cells.
Currently, all parallel DUNE grid store some cells in addition to
interior cells. Therefore assuming that the global number of cells
(i.e. the number of cells a sequential grid needs to cover the same
whole domain with indentical cells) is not the sum of the number of
cells of the local grid. Previously, the latter was used.
2017-03-17 10:26:00 +01:00
Atgeirr Flø Rasmussen
059367e14d Change default output dir for flow_ebos. 2017-03-16 16:05:33 +01:00
Atgeirr Flø Rasmussen
4ea87b31b2 Change output dir default.
With this the default output dir is the location of the deck file
(as stored in the IOConfig), rather than the current working directory.
2017-03-16 15:43:46 +01:00
Atgeirr Flø Rasmussen
4eda4d9ff6 Remove unused code and simplify.
- The output_interval_ member is no longer used (here).
 - After setup, the IOConfig contains the output dir, use it.
2017-03-16 15:40:24 +01:00
Markus Blatt
0650f9b42e Deactivate gather code when MPI is not available.
In this case some of the used classes do not exist.
2017-03-16 14:52:59 +01:00
Markus Blatt
35ff439ee1 Make ParallelDebugOutput constructable with global or distributed grid view.
That makes coding a little more me/fool proof.
2017-03-16 14:52:59 +01:00
Markus Blatt
03cb9f4afa ParalleDebugOutput needs the distributed grid.
Because for the global grid the communicator sees just one process.
Unfortunately this is not documented.
2017-03-16 14:52:59 +01:00
Markus Blatt
2f95e33d59 Do not use the equilGrid in Ebos as it is deleted after the constructor.
Instead we create our own global grid representation.
2017-03-16 14:52:59 +01:00
Markus Blatt
fd3e3596a9 Setup output writer and write initial values in parallel correctly.
Before this commit only the solution of process 0 was written.
To fix this we make the equilGrid of Ebos available. It is used
for the output writer. The properties written initially are gathered from
all processes first using the new gather/scatter utility.
2017-03-16 14:52:59 +01:00
Markus Blatt
45cee3d9f4 Added missing header include. 2017-03-16 14:52:59 +01:00
Atgeirr Flø Rasmussen
711e9bacb7 Allow restarting without OPMEXTRA field in restart file. 2017-03-16 13:34:24 +01:00
Tor Harald Sandve
289a15f0e5 Do not extrapolate initial rs and rv values in the depth tables 2017-03-16 12:57:56 +01:00
Atgeirr Flø Rasmussen
5517b8a3f3 Merge pull request #963 from blattms/allow-amg-with-matrix-block
Specialize direct solver for Dune::MatrixBlock.
2017-03-16 11:43:16 +01:00
Tor Harald Sandve
6c859836f3 Hack to make the intial output of rs and rv Ecl compatible.
For cells with swat == 1 Ecl outputs; rs = rsSat and rv=rvSat, in all
but the initial step where it outputs rs and rv values calculated by the
initialization. To be compatible we overwrite rs and rv with the values
passed by the localState. Volume factors and densities needs to be
recalculated with the updated rs and rv values.
2017-03-16 10:22:27 +01:00
Tor Harald Sandve
d640a16e5a Update rs and rv value for free oil and gas case
The rs and rv values are not used by the simulator for the case with
free oil and gas (or water only case), but they must be updated for
output.
2017-03-16 10:20:09 +01:00
Joakim Hove
bdc9ffb578 Policy change: warn when missing well/group. 2017-03-15 15:41:25 +01:00
Atgeirr Flø Rasmussen
5c7804935d Merge pull request #1078 from totto82/eventOve
Set timesteps after events
2017-03-15 11:20:20 +01:00
Atgeirr Flø Rasmussen
2283fc8258 Merge pull request #1083 from GitPaean/using_well_cell_rsrv
[Discussion] using rs rv from grid cells when calculating the volume ratio
2017-03-15 11:18:25 +01:00
Andreas Lauser
aa9966d7b8 flow_ebos FIP: fix the field totals code
this unifies the code paths of the code that calculates the FIP field
totals for the parallel and the sequential cases and makes the code
more robust because it does not hard-code the presence of an intensive
quantities cache anymore. also, rock compressibility is now also
included in the field totals instead of just the FIP regions. this was
forgotten in the last FIP PR because the region values are calculated
in a different class using completely different code. (i.e., regions
are done by the model, field totals by the simulator. that design
should win an award, IMO.)

with this patch, the field totals for Norne and SPE1 seem to match
those produced by E100 _very_ closely and also parallel and sequential
runs for Norne and SPE1 of flow_ebos produce exactly the same
numbers. (This is probably the case for all decks, but I haven't
tested anything else.)
2017-03-15 11:07:45 +01:00
Andreas Lauser
5194cc5122 BlackoilModelEbos: clean up and fix the FIP code
mainly this should now work properly in parallel, because non-interior
cells are not counted multiple times anymore. also, the number of
loops over the global arrays has been reduced, some variables have
been renamed and some comments were added.

finally this fixes the average pressure for regions that do not
contain hydrocarbons (or at least it unifies it with the approach for
regions that contain hydrocarbons).
2017-03-15 11:07:45 +01:00
Andreas Lauser
3e1758f5c8 the first time FIP needs to be reported is before the simulation starts 2017-03-15 11:07:45 +01:00
Andreas Lauser
384fcc5114 BlackoilModelEbos: minor stylistic improvements
mainly indentation fixes and removal of duplicate blank lines.
2017-03-15 11:06:28 +01:00
Kai Bao
2f3d142b38 a little more generalized implementation of BHP determination
for well potentials calculation, not caring much about how many THP/BHP constraints exist.
2017-03-14 15:07:10 +01:00
Kai Bao
18a75dcabc more careful determination of the most restrictive bhp value
when computing the well potentials
2017-03-14 14:58:21 +01:00
Atgeirr Flø Rasmussen
d4ce1eddc9 Merge pull request #1097 from nairr/add_timestamp_fip_output
Add timestamp fip output
2017-03-14 14:17:09 +01:00
dr-robertk
029bc6daa7 Merge pull request #1010 from blattms/ebos-parallel-convergence
Switch off non-owner entries during accumulation in getConvergence
2017-03-14 14:13:19 +01:00
nairr
71e2d63a6e Adds information regarding report step, elapsed time, simulation date,
simulator name, version, field title etc to the fip output
2017-03-13 16:48:19 +00:00
Atgeirr Flø Rasmussen
840c15bb63 Merge pull request #1092 from joakim-hove/opmextra-optional
Mark OPMEXTRA as not required restart data.
2017-03-10 23:04:56 +01:00
Atgeirr Flø Rasmussen
81ebba2df8 Merge pull request #1064 from GitPaean/fixing_thp_initialization
when no THP control/limit, thp value will be set to zero.
2017-03-10 10:23:15 +01:00
Joakim Hove
b4f9e88403 Mark OPMEXTRA as not required restart data. 2017-03-10 09:58:16 +01:00
Tor Harald Sandve
19a16ceeca Set timesteps after events
The time step after an event can either be set using
timestep_in_days_after_event or using the TUNING keyword in the deck.
2017-03-09 08:54:44 +01:00
Kai Bao
3a89f07f3c not using comp_frac for producers in getQs 2017-03-08 11:02:47 +01:00
Kai Bao
f48de7f146 using wellSurfaceVolumeFraction() in a few places
instead of using wellVolumeFraction() to give more correct physical
meaning.
2017-03-08 11:01:46 +01:00
Kai Bao
9c62d6d26c adding support of three phase suraface rate in getQs()
and a few comments.
2017-03-07 15:49:45 +01:00
Kai Bao
01d8813f53 A function to calulate the surface volume fraction of the rates
for StandardWellsDense.
2017-03-07 13:31:40 +01:00
Kai Bao
d1469bd39e putting wells under immidatel group control when specified
with GRUP.
2017-03-07 12:48:30 +01:00
Atgeirr Flø Rasmussen
e8bddf6de2 Add FIP features to multisegment sim. 2017-03-03 13:47:09 +01:00
Atgeirr Flø Rasmussen
863b00bf30 Merge pull request #1143 from GitPaean/fixing_thp_initialization
Fixing thp initialization
2017-03-02 15:51:38 +01:00
Kai Bao
b5e2c5262f using rs rv from grid cells when calculating the volume ratio
during computeWellFlux for StandardWellsDense.
2017-03-02 14:21:00 +01:00
Atgeirr Flø Rasmussen
429baf082c Update to match revised extra data interface from opm-output. 2017-03-01 09:50:32 +01:00
Atgeirr Flø Rasmussen
1175c389b0 Add SI/double preserving feature to restart I/O.
The parameter "restart_double_si" (defaults to false) will when true
cause the RESTART_SOLUTION data (only) to be read/written with measure
equal to measure::identity, thereby suppressing unit conversions. Also,
the output layer will be told to output all (not just RESTART_SOLUTION
but also RESTART_AUXILIARY) restart data as doubles.
2017-03-01 08:45:49 +01:00
Atgeirr Flø Rasmussen
378addd000 Update legacy sim to also read time step from restart. 2017-03-01 08:45:42 +01:00
Atgeirr Flø Rasmussen
ffaa48295a Add restart I/O of suggested timestep length. 2017-03-01 08:45:34 +01:00
babrodtk
ba2973dbbe Fixed apparent bug in outputting PDPB 2017-02-27 10:28:31 +01:00
Atgeirr Flø Rasmussen
930f0ea9a0 Merge pull request #1076 from atgeirr/fix-conditional-visc-output
Fix conditional viscosity output
2017-02-24 17:55:18 +01:00
Andreas Lauser
bb56d53150 Merge pull request #1075 from babrodtk/initial_restart
Update for writing initial values to restart file
2017-02-24 16:04:38 +01:00
babrodtk
6ed7b9dcb9 Moved computation of FIP before output to summary 2017-02-24 11:32:36 +01:00
Atgeirr Flø Rasmussen
cef4f5d9e5 Avoid signed/unsigned comparison. 2017-02-24 10:57:17 +01:00
Atgeirr Flø Rasmussen
980a6191b2 Bugfix: make viscosity output conditional. 2017-02-24 10:56:44 +01:00
babrodtk
729a220e5c Updated to iterate over elements instead of cell indices, though this changes the output values 2017-02-24 10:48:42 +01:00
Atgeirr Flø Rasmussen
296b0c61d6 Merge pull request #1068 from babrodtk/initial_restart
Added writing initial timestep data to restart
2017-02-24 09:17:30 +01:00
Atgeirr Flø Rasmussen
10f6c64502 Merge pull request #1072 from atgeirr/fix-wellstate
Towards fixing restart for flow_ebos
2017-02-24 09:11:25 +01:00
Atgeirr Flø Rasmussen
560b39e933 Merge pull request #1073 from dr-robertk/PR/revert-1070
Revert PR 1070 to use auto instead of preprocessor statements.
2017-02-24 08:56:34 +01:00
Robert Kloefkorn
9e30d4b27c Revert PR 1070 to use auto instead of preprocessor statements. 2017-02-23 15:46:52 +01:00
Atgeirr Flø Rasmussen
3071807418 Add docs for Compat.hpp. 2017-02-23 15:39:58 +01:00
Atgeirr Flø Rasmussen
8b8d029d2d Merge pull request #1069 from babrodtk/fix_visc_output
Updated so that VOIL/VGAS/VWAT are supported keywords
2017-02-23 15:27:49 +01:00
babrodtk
ef1c8909f2 This enables compiling with Eigen 3.3 2017-02-23 11:34:41 +01:00
Atgeirr Flø Rasmussen
2577eee159 Add wellsToState() overload for dense well state class. 2017-02-23 10:35:11 +01:00
Atgeirr Flø Rasmussen
512ab189ee Refactor to use wells_ data member. 2017-02-23 10:31:00 +01:00
Atgeirr Flø Rasmussen
7db75f1e12 Add needed include directive. 2017-02-23 10:22:19 +01:00
Atgeirr Flø Rasmussen
2e8ff72e9e Rename template variable for clarity. 2017-02-23 10:21:45 +01:00
Atgeirr Flø Rasmussen
260944cfb0 Split Compat.hpp in header and implementation.
Avoids tedious recompiles of legacy sims when changing certain
ebos-specific classes.
2017-02-23 10:19:21 +01:00
Atgeirr Flø Rasmussen
5c9fb9d32a Refactor setting of new members into own functions. 2017-02-23 09:51:00 +01:00
Tor Harald Sandve
d3a4976529 Do not set rs=rsSat and rv=rvSat for the saturated case 2017-02-22 15:57:53 +01:00
babrodtk
3e44bb1e4e Updated so that VOIL/VGAS/VWAT are supported keywords 2017-02-22 11:18:24 +01:00
babrodtk
1e5df1b720 Added writing initial timestep data to restart 2017-02-22 10:12:47 +01:00
Andreas Lauser
9dab0323ce flow_ebos FIP: create the element iterator object as part of the for statement
IMO, the previous solution was easier to read and a few lines shorter,
but I don't really care about how this is done...
2017-02-21 13:53:08 +01:00
Andreas Lauser
1f7be0d324 flow_ebos FIP: add comments about the pore volume calculation 2017-02-21 13:33:24 +01:00
Andreas Lauser
a27a2c33a7 flow_ebos FIP: consider all pore volume modifiers
for now "all pore volume multipliers" means compressibility. the
storage term of the simulator includes them, so they need to be
considered when calculating the fluid in place as well.
2017-02-21 10:03:11 +01:00
Andreas Lauser
9df4b21369 flow_ebos: fix the calculation of the original fluid in place
for Norne the numbers are now very close to those of the ECL
reference. ("very close" means < 0.01 % deviation of pressure and
initial fluid volume for the field totals.)
2017-02-20 16:28:20 +01:00
Andreas Lauser
55547a1b86 flow_ebos FIP: try to fix hcpv and pres in the parallel case
the global reduction must be done _after_ the local computation, not
before it...

thanks to [at]blattms and [at]atgeirr.
2017-02-20 16:28:20 +01:00
Andreas Lauser
d03dbb7e2c flow_ebos FIP: unify the parallel and non-parallel versions 2017-02-20 16:28:20 +01:00
Andreas Lauser
76a825f36d flow_ebos: make the FIP code consistent with flow_legacy
in particular, the rock compressibility effects are not considered in
the FIP numbers anymore. While I'm not sure if this is correct or not,
it at least makes the results consistent with those produced by
'flow_legacy'.
2017-02-20 16:28:20 +01:00
Andreas Lauser
6949de699f flow_ebos: improve the FIP code
in particular, it can now be called if the cache for the intensive
quantities is "cold".
2017-02-20 16:28:20 +01:00
Kai Bao
4129928be4 when no THP control/limit, thp value will be set to zero.
It provides a strategy to reset the zero thp value when no thp control
is involved anymore.
2017-02-17 17:12:52 +01:00
Kai Bao
bdb9d8fcd6 do not assign non-zero THP value when no THP involved. 2017-02-17 13:45:55 +01:00
Kai Bao
f4a3e90d3b correcting the confusing indent in WellState init 2017-02-17 13:28:29 +01:00
babrodtk
d21443ae60 Updated auxillary=>auxiliary in new code 2017-02-17 10:44:52 +01:00
babrodtk
c39964c712 Added try-catch to computation of bubble/dew point pressure 2017-02-17 10:40:43 +01:00
babrodtk
4a46451d95 Added output of dew and bubble point pressures 2017-02-17 10:40:43 +01:00
Joakim Hove
6ed41d282e White spcae change. 2017-02-16 15:03:27 +01:00
Atgeirr Flø Rasmussen
232687fc58 Merge pull request #1053 from GitPaean/fixing_thp_control
update the thp value for flow_ebos
2017-02-16 13:16:18 +01:00
Joakim Hove
a49aaeb579 Merge pull request #1059 from babrodtk/spellingfix
Renamed auxillary to auxiliary
2017-02-16 12:26:09 +01:00
Kai Bao
71d777f839 update the thp value for flow_ebos
otherwise the thp constraint will not work.
2017-02-15 20:50:43 +01:00
Atgeirr Flø Rasmussen
68ff44ebbd Merge pull request #1055 from GitPaean/pure_separating_standardWellsDense
Separating the StandardWellsDense to interface file and implementation file
2017-02-15 18:57:56 +01:00
Andreas Lauser
b088711186 Merge pull request #1057 from babrodtk/whitespace_fixes
Minor whitespace fixes to be consistent with surrounding code
2017-02-15 18:29:24 +01:00
babrodtk
edffbcd3f8 Renamed auxillary to auxiliary 2017-02-15 14:47:24 +01:00
babrodtk
8830fd5880 Minor whitespace fixes to be consistent with surrounding code 2017-02-15 14:30:54 +01:00
Kai Bao
8b38b7b8a3 finishing separating the StandardWellsDense.hpp implementations. 2017-02-15 10:07:22 +01:00
Kai Bao
498f40f896 fourth part in separating the StandardWellsDense.hpp implementations. 2017-02-15 10:07:22 +01:00
Kai Bao
2a3fe58ac2 third part in separating the StandardWellsDense.hpp implementations. 2017-02-15 10:07:22 +01:00
Kai Bao
8de7795629 the second part in separating the StandardWellsDense.hpp implementations. 2017-02-15 10:07:22 +01:00
Kai Bao
8354f3600f the first part in separating the StandardWellsDense.hpp implementations.
split into commits for easy debugging purpose.
2017-02-15 10:07:22 +01:00
Atgeirr Flø Rasmussen
b358319e63 Merge pull request #1031 from totto82/newTrans
Start using face geometry computed the Ecl way
2017-02-15 10:04:01 +01:00
Atgeirr Flø Rasmussen
41fb8eb933 Remove pessimizing move and silence warnings. 2017-02-14 10:50:31 +01:00
Robert Kloefkorn
4c118c6455 Merge remote-tracking branch 'upstream/master' into PR/cleanup-output-writers 2017-02-13 21:28:54 +01:00
Robert Kloefkorn
b18f07c1bd Address comments. 2017-02-13 16:11:24 +01:00
Kai Bao
85b5ff6b68 adding thp to the report for summary output. 2017-02-13 10:15:58 +01:00
Atgeirr Flø Rasmussen
7e3e5bf026 Merge pull request #1037 from GitPaean/smaller_tol_wells_ebos
[Discussion] using smaller tolerance_wells for StandardWellsDense
2017-02-12 14:37:59 +01:00
Atgeirr Flø Rasmussen
27c0430932 Change include paths for moved headers. 2017-02-10 16:07:25 +01:00
Arne Morten Kvarving
86fbb36fd2 adjustments for imported files
- adjust include paths
- add new test to build system
- add new example to build system
2017-02-10 13:02:00 +01:00
Arne Morten Kvarving
109780f62f Import adaptive time stepping and simulator timer from opm-core
also import associated tests / examples
2017-02-10 12:04:11 +01:00
Robert Kloefkorn
82658c92d0 Removal of SimulatorFullyImplicitBlackoilOutputEbos.{h,c}pp.
All simulators now use SimulationDataContainer to store intermediate data that
is passed to the output Solution container. This is in cases not the most
efficient way, but it's unified to avoid errors from code duplication.
2017-02-09 16:57:45 +01:00
Arne Morten Kvarving
c9bd40dccd hot-fix ebos output class
it's the pointwise addition +, not the append
2017-02-09 09:35:40 +01:00
Arne Morten Kvarving
a14f5392ee fixed: pass the fipnum data into the adaptive timer stepper
summary substep reports requires FIP data
2017-02-09 09:35:40 +01:00
Arne Morten Kvarving
b5b42faba4 fixed: handle exceptions in I/O in parallel
properly exit on all processes, instead of deadlocking.
async output will still deadlock as there is no way to handle this
without syncronization which would defeat the purpose of async.
2017-02-09 09:35:40 +01:00
Arne Morten Kvarving
1cb81c12e8 changed: pass fipnum array into adaptive time stepping loop
needed as substep summary reports requires FIP data to be available.
add calculation of this data if output is requested and summary
config holds relevant keywords.
2017-02-09 09:33:32 +01:00
Kai Bao
4159542186 setting tolerance_wells to be 1.e-4.
for better convergence behavoir.
2017-01-31 10:50:10 +01:00
Andreas Lauser
ec1f136f37 fix the build
and also, do not std::move a unique_ptr. (that's a quite strange
thing, semantically.)
2017-01-27 13:23:32 +01:00
Atgeirr Flø Rasmussen
511a934323 Merge pull request #1042 from andlaus/refactor_well_permeability
do not explicitly pass the permeability to the well model anymore
2017-01-27 13:15:59 +01:00
Atgeirr Flø Rasmussen
99c69a17d5 Merge pull request #1138 from andlaus/refactor_well_permeability
do not explicitly pass the permeability to the well model anymore
2017-01-27 13:15:50 +01:00
Andreas Lauser
42ec0ca3c3 do not explicitly pass the permeability to the well model anymore
this information is already part of the EclipseState. The reason why
this should IMO be avoided is that this enforces an implementation
detail (ordering of the permeability matrices) of the simulator on the
well model. If this needs to be done for performance reasons, IMO it
would be smarter to pass an array of matrices instead of passing a raw
array of doubles.  I doubt that this is necessary, though: completing
the full Norne deck takes about 0.25 seconds longer on my machine,
that's substantially less than 0.1% of the total runtime.
2017-01-27 13:06:09 +01:00
Atgeirr Flø Rasmussen
1b8dbd9411 Merge pull request #1040 from GitPaean/group_ebos_vrep
Group ebos vrep
2017-01-27 13:04:16 +01:00
Andreas Lauser
1ae94c8db3 do not explicitly pass the permeability to the well model anymore
this information is already part of the EclipseState. The reason why
this should IMO be avoided is that this enforces an implementation
(ordering of the permeability matrices) the simulator on the well
model. If this needs to be done for performance reasons, IMO it would
be smarter to pass an array of matrices, instead of passing a raw
array of doubles.  I doubt that this is necessary, though: completing
the full Norne deck takes about 0.25 seconds longer on my machine,
that's substantially less than 0.1% of the total runtime.

in order to avoid code duplication, the permeability extraction
function of the RockFromDeck class is now made a public static
function and used as an implementation detail of the WellsManager.

finally, the permfield_valid_ attribute is removed from the
RockFromDeck class because this data was unused and not accessible via
the class' public API.
2017-01-27 12:51:12 +01:00
Joakim Hove
270e5f9c0e Passing keys to the restart load function.
- Renamed EclipseWriter -> EclipseIO.
 - Loading from restart file is a method on the EclipseIO class.
2017-01-25 23:16:08 +01:00
Kai Bao
c3f3fed47a applying the efficiency factor to all the Jacobians
of the cq_s when entering the reservoir mass balance equations.
2017-01-25 15:56:15 +01:00
Kai Bao
b60439c564 set the VREP control as current control when applying VREP control
for the first time

Not sure it is always the better things to do here, while it can help
the consistence of the two current controls in the well_controls and
well_state.
2017-01-25 14:11:37 +01:00
Kai Bao
68558bec76 moving the update the well_state at the end of the updatewellCotnrols
in StandardWellsDense.

The reason is that the update the well controls can change the well
controls. It is better to update the well states after all the control
checking is done.
2017-01-25 14:11:27 +01:00
Kai Bao
26785597b9 putting the update of the well states to one function
in StandardWellsDense to simplify the updateWellControls() function.
2017-01-25 14:11:27 +01:00
Kai Bao
19eb0d96c8 adding applyVREPGroupControl() to StandardWellsDense. 2017-01-25 14:11:27 +01:00
Kai Bao
849dae8ec5 adding computeWellVoidageRates() to StandardWellsDense 2017-01-25 14:11:27 +01:00
Kai Bao
f53bf6f957 adding a pointer to rate_converter in BlackoilModelEbos
in StandardWellsDense.
2017-01-25 14:11:27 +01:00
Kai Bao
af26b70fc9 adding a rate converter to BlackoilModelEbos
and also function updateRateConverter() to update its state.
2017-01-25 14:11:27 +01:00
Atgeirr Flø Rasmussen
f4ea6c0781 Merge pull request #1034 from GitPaean/fixing_ebos_lrat
fixing the LRAT control for StandardWellsDense
2017-01-23 13:06:39 +01:00
Kai Bao
2dd4fa5bb2 fixing the LRAT control for StandardWellsDense 2017-01-23 11:30:23 +01:00
Andreas Lauser
7d5c5f8acc Merge pull request #1029 from totto82/bugfix_swatinit
BUGFIX Pass solution from flowEbos to ebos initially
2017-01-20 15:02:50 +01:00
Tor Harald Sandve
ce2aa77cbd BUGFIX Pass solution from flowEbos to ebos initially
The initial solution in ebos and  in flowebos are different in cases where
swatinit is present. Pass the initial solution and recalculate the
intensive quantities make sure that the flowEbos initial solution is
used.
2017-01-19 09:18:55 +01:00
Tor Harald Sandve
e4f345d124 Start using face geometry computed the Ecl way
Face centers are computed using the cell corners. With this
implementation the face center seen from a cell may be different from the
face center seen from its neighbour.

Face normals with area lenghts are calculated using the face corners
directly not using a triangulation point in the center of the face.

This gives transmissibility almost equal to eclipse.
2017-01-19 08:27:01 +01:00
Kai Bao
31e7dec018 removing a few blank lines.
and adding a assertion that bhp != 0 when calculating well potentials.
2017-01-17 15:33:45 +01:00
Kai Bao
9e93ebcc64 check whether the group targets are converged. 2017-01-16 16:18:35 +01:00
Kai Bao
65a3fff6f2 moving computeWellPotentials to be earlier in assemble()
in StandardWellsDense.

solveWellEq then have access to the updated well potentials.

does not change the result.
2017-01-16 16:18:35 +01:00
Kai Bao
01322b740e fixing the mistakes in the code due to rebasing. 2017-01-16 16:18:35 +01:00
Kai Bao
a95977e716 making the group control works for StandardWellsDense 2017-01-16 16:18:35 +01:00
Kai Bao
b0e2bd9221 adding well perforation efficiency factor to StandardWellsDense
And also calculateEfficiencyFactor to initialize the values.
2017-01-16 16:18:35 +01:00
Kai Bao
4b47fa52ca adding well collection to StandardWellsDense
to make StandardWellsDense have access to the group information.
2017-01-16 16:18:35 +01:00
Kai Bao
941689722f adding functioin computeWellPotentials to StandardWellsDense 2017-01-16 16:18:35 +01:00
Kai Bao
92a4d8687f adding bhp as a parameter of computeWellFlux in StandardWellsDense
To make the function usable for computing well potentionals.
2017-01-16 16:18:35 +01:00
Kai Bao
4fcbd16962 considering effieciency factor when calculating production rate. 2017-01-16 16:13:44 +01:00
Atgeirr Flø Rasmussen
5955cb07ba Merge pull request #1026 from andlaus/flow_ebos-sync-with-flow_legacy
Flow ebos sync with flow legacy
2017-01-16 15:56:20 +01:00
Kai Bao
e0143f85fd adding groupTargetConverged() to WellCollection 2017-01-16 15:55:35 +01:00
Kai Bao
31465c732c adding groupProdTargetConverged() to WellsGroup
When the group is producing its target, we consider it is converged.
When the group is not producing its target, while the group can not
produce more based on its own limits, we also consider it is converged.

When the group is not producing its target, while the group can
potentially produce more, we consider it is not converged.
2017-01-16 14:19:52 +01:00
Andreas Lauser
ae38de70ef flow_ebos: update the solution of the eWoms model from the reservoir state before each time step
this is has become necessary by the recent SWATINIT changes and is
needed to calculate the fluid-in-place consistently as well as for
ebos to use the correct initial solution for the initial
linearization.
2017-01-16 12:42:35 +01:00
Andreas Lauser
30e9d3826d synchronize SimulatorFullyImplicitBlackoilEbos::run() with SimulatorFullyImplicitBlackoil::run() 2017-01-16 12:42:35 +01:00
Andreas Lauser
d87b788d09 BlackoilModelEbos: make computeFluidInPlace() work unconditionally
i.e. it now works regardless of whether the cache for intensive
quatities is available or not.
2017-01-16 12:42:35 +01:00
Kai Bao
0312190f7d adding canProdueMore() function to wellsGroup
to indicate whether the group can produce more to match the group target
when they are not producing enough compared with the group target.
2017-01-16 11:25:23 +01:00
Atgeirr Flø Rasmussen
1d918453c9 Warn instead of throw when missing DIMS keyword.
Default values will be used for parsing.
2017-01-13 11:07:02 +01:00
Atgeirr Flø Rasmussen
8534b82c2e Merge pull request #1022 from atgeirr/silence-warning
Silence unused argument warning.
2017-01-13 09:26:46 +01:00
Atgeirr Flø Rasmussen
bc35b753b5 Merge pull request #1003 from blattms/merge-only-created-parallel-files
Only try to merge files from a parallel run if ouptput requested.
2017-01-12 17:00:12 +01:00
Kai Bao
f6b92dcc43 updating the group control limit for individual control wells
to provide a better standard for the wells under individual control to
return to group control. For example, some wells get really big group
control limit and switch to individual control, it is very difficult for
them to return to group control with that kind of unreasonable fixed
group limit.
2017-01-12 15:44:44 +01:00
Atgeirr Flø Rasmussen
6ea858b6b9 Silence unused argument warning. 2017-01-12 15:35:13 +01:00
Atgeirr Flø Rasmussen
af3049b5a6 Merge pull request #1016 from andlaus/flow_ebos-remove-redundant-gravity
flow_ebos: remove the redundant gravity objects
2017-01-12 12:19:19 +01:00
Andreas Lauser
7a7ebc010f flow_ebos: remove the redundant gravity objects
the canonical source is now the EclProblem object.

v2: don't change the API of the DerivedGeology class. thanks to
    [at]atgeirr for noticing that this can be avoided.
2017-01-12 11:20:02 +01:00
Atgeirr Flø Rasmussen
0028b35e03 Merge pull request #1018 from andlaus/simplify_isParallel
simplify BlackoilModelEbos::isParallel()
2017-01-12 10:41:15 +01:00
Tor Harald Sandve
28bbe20344 Merge pull request #1012 from andlaus/cleanup_StandardWellsDense
small improvements to StandardWellsDense
2017-01-12 10:27:18 +01:00
Atgeirr Flø Rasmussen
af2c9a8200 Merge pull request #1015 from andlaus/flow_ebos-remove-redundancy
FlowMainEbos: remove the redundant pointer to the MaterialLawManager
2017-01-12 10:25:47 +01:00
Atgeirr Flø Rasmussen
eb8132453f Merge pull request #1017 from andlaus/remove_allcells
SimulatorFullyImplicitBlackoilEbos: remove unused "allcells_" attribute
2017-01-12 09:59:41 +01:00
Andreas Lauser
3a9146866a simplify BlackoilModelEbos::isParallel() 2017-01-11 18:57:47 +01:00
Andreas Lauser
f808c5b681 SimulatorFullyImplicitBlackoilEbos: remove unused "allcells_" attribute 2017-01-11 18:53:06 +01:00
Andreas Lauser
8c76bf5b9b FlowMainEbos: remove the redundant pointer to the MaterialLawManager 2017-01-11 17:16:46 +01:00
Andreas Lauser
f2115b44ac BlackoilModelEbos: remove the last traces of "SolutionState"
it was not used for real for a while anyway.
2017-01-11 17:07:08 +01:00
Andreas Lauser
b324d17003 small improvements to StandardWellsDense
the most significant change is that only a "PhaseUsage" object must be
passed to its constructor instead of a full "fluid object". also, the
pointers to the vector of "active" phases has been converted into a
full object. (this helps to avoid potential use-after-free errors.)
2017-01-11 17:02:20 +01:00
Atgeirr Flø Rasmussen
15790ecb57 Merge pull request #1133 from blattms/parallel-accumulate
Added an accumulate method that allows to switch off non-owner entries.
2017-01-11 15:16:48 +01:00
Markus Blatt
aacbdb1777 Switch off non-owner entries during accumulation.
Previously entries attached to cells that are present
on multiply processes were acumulated several times.
2017-01-11 12:20:32 +01:00
Markus Blatt
0fc3a57d20 Added an accumulate method that allows to switch off overlap entries.
It does using a mask vector with entries 0 or 1. If that is not provided
it falls back to std::accumulate.
2017-01-11 12:18:39 +01:00
Joakim Hove
4411712dce Merge pull request #1008 from joakim-hove/correct-rsrv-dim
Fixed output units RS and RV.
2017-01-10 21:39:25 +01:00
Atgeirr Flø Rasmussen
cd9dcfc59d Merge pull request #1007 from blattms/StandardWells-support-no-wells
Make StandardWells support cases with no wells.
2017-01-09 17:05:04 +01:00
Atgeirr Flø Rasmussen
1c594100c2 Merge pull request #1006 from blattms/ebos-fip-global-sum
Added missing global sum for FIP totals.
2017-01-09 17:04:50 +01:00
Atgeirr Flø Rasmussen
f19c90bba7 Throw if solvent phase injected. 2017-01-09 16:33:03 +01:00
Joakim Hove
6b0626272d Fixed output units RS and RV. 2017-01-09 16:20:19 +01:00
Markus Blatt
86209139db Make StandardWells support cases with no wells.
Dense case was handled in PR #1002. I was not aware that the same
regression was in the legacy code. wells_manager.c_wells() might return
a null pointer if there are no wells in the domain of a process.
2017-01-09 16:12:07 +01:00
Markus Blatt
7c91be92a9 Added missing global sum for FIP totals. 2017-01-09 15:55:39 +01:00
Markus Blatt
fb55aedf4b Fix unit conversion of fip totals (pav) again.
This was (accidentally?) introduced in c880efae5b (labelled
"mostly eliminate Eigen in the FIP and VFP code"). As it is neither
present in flow_ebos nor in flow_mpi and was previously removed in
ccec17f8 (labelled "Fixed missing unit conversion for total fluid in place")
I assume that this is a bug.
2017-01-09 15:31:40 +01:00
Atgeirr Flø Rasmussen
c292dd4975 Merge pull request #1004 from andlaus/fix_undefined_behaviour
avoid relying on undefined behaviour
2017-01-09 12:49:03 +01:00
Atgeirr Flø Rasmussen
fbad16aba7 Merge pull request #1001 from blattms/ebos-parallel-fip-total
Implement parallel fip total computation.
2017-01-09 12:33:43 +01:00
Markus Blatt
0a904deb02 Only try to merge files from a parallel run if ouptput requested.
If it is not requested then output_dir is not created and boost
will throw an exception if we try to read from a non existing
directory.
2017-01-09 12:09:49 +01:00
Andreas Lauser
12083ccfd0 BlackoilPropsAdFromDeck: don't rely on undefined behaviour when initializing the fluid system
in C++ references may be assumed to be non-null. thanks to
[at]atgeirr for pointing this out.
2017-01-09 12:08:29 +01:00
Andreas Lauser
f50dc9507f fix a few pesky sign comparison warnings
the problem here is that some types used as the `BVector` template
parameters return signed integers for the `size()` method, others
return unsigned ones.
2017-01-09 12:05:32 +01:00
Markus Blatt
601dc77a37 Fix typo in exception message 2017-01-09 11:41:34 +01:00
Markus Blatt
6b2c33978e Implement parallel fip total computation.
Up to now parallel runs aborted due to an exception with
the message "FIP not yet implemented for MPI". With this
commit we do the computation in parallel, too. And flow_ebos
runs a bit longer...
2017-01-09 11:40:57 +01:00
Markus Blatt
5bcdb01f5a Make StandardWellsDense support cases with no wells.
In that case `wells_manager.c_wells()` returns a null pointer
which made `updateListEconLimited` segfault. With this commit
we treat a null wells_struct as having zero wells.

With this this and #1001 opm-data/equilibrium at least runs
through in parallel. Results will be checked next.
2017-01-09 11:36:12 +01:00
Atgeirr Flø Rasmussen
e5bb786df2 Merge pull request #1120 from jokva/density-from-eclipsestate
Use Density from EclipseState
2017-01-09 10:38:30 +01:00
Atgeirr Flø Rasmussen
95d4a8101d Merge pull request #1125 from jokva/reduce-deck-use-relperm-diagnostics
Don't rely on Deck for checkTable and checkPhase
2017-01-09 09:35:25 +01:00
Atgeirr Flø Rasmussen
e88c7df418 Merge pull request #1124 from jokva/read-rock-from-eclipsestate
Read ROCK from EclipseState, not Deck
2017-01-09 09:33:47 +01:00
Atgeirr Flø Rasmussen
86b71e7d48 Merge pull request #989 from jokva/read-rock-compressibility-from-eclipsestate
RockCompressibility takes only EclipseState
2017-01-09 09:33:41 +01:00
Atgeirr Flø Rasmussen
a7922ecfa1 Merge pull request #998 from totto82/fix_so_initialization
Fix SOIL restart initialization
2017-01-09 09:32:19 +01:00
Atgeirr Flø Rasmussen
8122c13f0d Merge pull request #1131 from atgeirr/increase-iters-for-equil
Increase max iterations for capillary curve inversion.
2017-01-09 09:31:14 +01:00
Atgeirr Flø Rasmussen
c57ed2f32c Increase max iterations for capillary curve inversion.
Triggered by a new two-phase case.
2017-01-06 15:24:08 +01:00
Tor Harald Sandve
5990201ee9 Fix SOIL restart initialization 2017-01-05 10:02:50 +01:00
Tor Harald Sandve
edd857ec3e Make it optinal to apply SWATINIT
The reasoning behind this to make it possible to initialize the case
without SWATINIT in order to compute the same defaulted THPRES values as
Ecl. The initialization needs to be re-computed to account for SWATINIT
in the simulations.
2017-01-02 15:10:09 +01:00
Andreas Lauser
5fd83985a9 port the RateConverter to use the FluidSystem instead of the old fluid property API
this makes the RateConverter stuff independent of Eigen and it
simplifies some things because the the old PVT API is designed as a
"bulk-with-derivatives" API while the rate converter code used it in
"single shot" mode without derivatives.
2017-01-02 13:19:25 +01:00
Andreas Lauser
66decb4bda BlackoilPropsAdFromDeck: let the BlackOilFluidSystem manage the low level PVT objects
this makes it easier to migrate code away from BlackoilPropsAdFromDeck.
2017-01-02 13:19:25 +01:00
Andreas Lauser
ef731672c9 remove the BlackoilPropsAdInterface abstraction layer
instead, directly use BlackoilPropsAdFromDeck.
2017-01-02 13:19:23 +01:00
Atgeirr Flø Rasmussen
edf883e747 Merge pull request #996 from andlaus/no_eigen_in_VFP_and_FIP
mostly eliminate Eigen in the FIP and VFP code
2017-01-02 12:56:30 +01:00
Atgeirr Flø Rasmussen
d81c150bae Remove unused Deck function argument. 2017-01-02 09:47:57 +01:00
Atgeirr Flø Rasmussen
d039fc6899 Merge pull request #994 from atgeirr/silence-ebos-warnings
Silence warnings
2017-01-02 09:36:04 +01:00
Andreas Lauser
98b9e2ef58 remove the phase enums from BlackoilPropsAdInterface
since the enums in BlackoilModelEnums.hpp are namespace-global this
does not require any code changes. (except replacing 'Liquid' by
'Oil', etc.)
2016-12-30 14:15:14 +01:00
Andreas Lauser
fb770faca0 fix Dune 2.3 build issue 2016-12-30 11:46:27 +01:00
Andreas Lauser
c880efae5b mostly eliminate Eigen in the FIP and VFP code
this code mostly used the Eigen vectors as arrays anyway, so let's use
`std::vector`.

also, this patch only "mostly eliminates" Eigen from from these parts
of the code because the source files of the VFP code still use
AutoDiffBlock; Unfortunately this cannot easily be changed because
`flow_legacy` depends on these methods. (`flow_ebos` does not use the
incriminating methods.)
2016-12-30 11:46:27 +01:00
Andreas Lauser
ac4dcba7e0 BlackoilModelEnums: don't use high-level classes
I consider the blackoil model enums to be pretty low level while the
"FluidProperties" code is IMO quite high level. this, using the latter
to define the former constitutes a layering violation IMO. note that
the fix is to simply use the enums from opm-core directly.
2016-12-29 18:03:05 +01:00
Atgeirr Flø Rasmussen
b0633110af Silence unused argument warning. 2016-12-29 14:52:03 +01:00
Atgeirr Flø Rasmussen
ae1d78f505 Remove unused argument, silence warnings. 2016-12-29 14:34:16 +01:00
Atgeirr Flø Rasmussen
08689af3e9 Fix order of initialization. 2016-12-29 13:55:42 +01:00
babrodtk
c82887585e Fix for FIP output in ebos 2016-12-22 13:45:31 +01:00
babrodtk
5923f64322 Removed unused variable (which gave me compilation errors) 2016-12-22 13:00:51 +01:00
Atgeirr Flø Rasmussen
3e120d6e33 Merge pull request #964 from totto82/reuse_cache2
Reuse cache revisited
2016-12-20 14:46:00 +01:00
Jørgen Kvalsvik
bbb30de74e Don't rely on Deck for checkTable and checkPhase
Prefer using EclipseState over Deck.
2016-12-20 14:08:58 +01:00
Jørgen Kvalsvik
d2b5327a72 RockCompressibility takes only EclipseState 2016-12-20 12:39:34 +01:00
Jørgen Kvalsvik
98a3a6a3f8 Read ROCK from EclipseState, not Deck 2016-12-20 12:24:27 +01:00
Tor Harald Sandve
bb83504172 Let the simulator to re-assemble when iteration == minIter()
Let the simulator re-assemble and re-calculate the residuls for the case
when the simultor is converged but it was forced to take one more
iteration due to iteration < minIter().
2016-12-20 10:46:03 +01:00
Jørgen Kvalsvik
3bdd674aac Read RS,RV,PRESSURE,SWAT,SGAS from EclipseState
Prefer reading these values from EclipseState rather than the Deck type.
2016-12-19 14:26:27 +01:00
Atgeirr Flø Rasmussen
6893aca90f Merge pull request #972 from GitPaean/fixing_polymer_omega
fixing the calculation when polymer not fully mixed
2016-12-19 13:22:48 +01:00