Commit Graph

2397 Commits

Author SHA1 Message Date
Tor Harald Sandve
699a0ede01 Remove remaning usage of ADBs
-- the code is still kept for comparison
2016-08-26 10:55:09 +02:00
Tor Harald Sandve
190076f5da Temperary commit
-- works on SPE1 but not SPE9
-- if number of perforations are increased to 3 in SPE1 the same error
as in SPE9 occur.
2016-08-25 15:25:01 +02:00
Tor Harald Sandve
4bdf74eb11 Reorganize the wellModel
- All well-related stuff is moved to StandardWellsDense.hpp
- Some unused functions are removed from BlackoilModelEbos.hpp
2016-08-23 09:58:21 +02:00
Tor Harald Sandve
b023cb15a5 Reset wellcontrols from well_state 2016-08-19 13:50:27 +02:00
Tor Harald Sandve
cd76816ea5 Stay in sync with changes in restartWriter in the eclipseState 2016-08-19 10:30:49 +02:00
Tor Harald Sandve
0c9c5a031f Add copy constructure and operator to WellStateFullyImplicitBlackoil 2016-08-19 10:28:54 +02:00
Tor Harald Sandve
f60e26faf7 Minor convergence improvments
- set current control when initializing the wellstate
- re calculate wellVariable after well control has changed.
2016-08-18 12:23:46 +02:00
Tor Harald Sandve
49f478480d Remove usage of state in the model
1) The wellsolution is stored in wellVariables as a vector of DenseAD
objects. The wellVariables is computed from the wellstate  in
setWellVariables()
2) BHP and well fluxes are not stored directly but calculated based on
the wellVariables
3) The initial well accumulation term is stored as a vector of doubles.
4) addWellFluxEq() uses DenseAd flux and accumulation terms
5) computePropertiesForWellConnectionPressures() no longer uses state as
input. The wellstate is used to get the bhp pressure.
6) The current wellcontrol is set when updated in updateWellControls()
in order to use well_controls_get_current_type(wc) insted of
well_controls_iget_type(wc, currentIdx)

Tested on SPE1, SPE9 and Norne.
Effects the convergence but the results are identical.
2016-08-18 12:23:46 +02:00
Tor Harald Sandve
dec60a8bd8 The well model no uses the fluidState and fluidsystem from ebos
The well model is modified to use the fluidState and fluidsystem from
ebos. UpdateLegacyState() is no longer needed.
2016-08-18 12:23:46 +02:00
Tor Harald Sandve
1754181761 BUGFIX Make the wellVariables constant
The wellVariables where left out in makeConstantState()
With this fix norne runs
2016-08-18 12:23:45 +02:00
Tor Harald Sandve
5cd7468b51 Implement new well model
Start using the well model desribed in SPE 12259 "Enhancements to the
Strongly Coupled, Fully Implicit Well Model: Wellbore CrossFlow Modeling
and Collective Well Control"

The new well model uses three well primary variables: (the old one had
4)
1) bhp for rate controlled wells or total_rate for bhp controlled wells
2) flowing fraction of water Fw = g_w * Q_w / (g_w * Q_w + q_o * Q_o +
q_g + Q_g)
3) flowing fraction of gas  Fg = g_g * Q_g / (g_w * Q_w + q_o * Q_o +
q_g + Q_g)
where g_g = 0.01 and q_w = q_o = 1;

Note 1:
This is the starting point of implementing a well model using denseAD
The plan is to gradually remove Eigen from the well model and instead
use the fluidState object provided by the Ebos simulator
Note 2:
This is still work in progress and substantial cleaning and testing is
still needed.
Note 3: Runs SPE1, SPE9 and norne until 950 days.
2016-08-18 12:23:45 +02:00
Andreas Lauser
3e8792b9cc some output related fixes
there was a screw-up with the output directory (to set it you need to
modify the EclipseState by means of the IOConfig object? WTF?) and it
seems like the FlowMain.hpp was modified since FlowMainEbos.hpp was
added so there was some terminal output missing.
2016-08-14 21:44:47 +02:00
Andreas Lauser
c919b1e6e1 flow_ebos: set the correct pressure value in all cases
for the gas-only case with vaporized oil enabled, the oil pressure was
used, but ebos uses the gas pressure as a primary variable in that
case. (the reason is that it is faster to check if oil appears if the
gas pressure is available in that case.) This patch corrects that and
does no longer use the PrimaryVariables::set$FOO_PV() methods because
these methods are hard to keep in sync with the indices for the
primary-variables-as-a-Dune::FieldVector feature (which is actually
quite important for the linear solver).
2016-08-12 16:52:36 +02:00
Andreas Lauser
068ee3bc18 flow_ebos: no need to update the properties object
ebos does this internally. in flow_ebos these objects are only needed
for the well model...
2016-08-09 18:38:23 +02:00
Andreas Lauser
92eefb4718 flow_ebos: make the ebos simulator less verbose 2016-08-09 18:38:23 +02:00
Andreas Lauser
8e81023e1d BlackoilModelEbos: remove redundant constructor parameters 2016-08-09 18:38:23 +02:00
Andreas Lauser
626d3e1da5 flow_ebos: only instantiate a single deck and a single EclipseState 2016-08-09 18:38:23 +02:00
Andreas Lauser
17c1e1083e only instanciate the grid once
i.e., pass through the one which is created by ebos...
2016-08-09 18:38:23 +02:00
Andreas Lauser
adb8a2cf96 fix the end-of-episode detection code 2016-08-09 18:38:23 +02:00
Andreas Lauser
f29bf8f694 flow_ebos: retrieve the simulation grid from the ebos simulator object 2016-08-09 18:38:23 +02:00
Andreas Lauser
77f103fca5 instantiate the ebos Simulator object in SimulatorFullyImplicitBlackoilEbos
this gets rid of some ugly hacks with static variables...
2016-08-09 18:38:23 +02:00
Andreas Lauser
3027e1f39d flow_ebos: do no longer use the generic FlowMain class
this will allow to boil the code down.
2016-08-09 18:38:23 +02:00
Andreas Lauser
50ebb66041 make SimulatorFullyImplicitBlackoilEbos independent of SimulatorBase
currently this involves a lot of copy and paste but, it will be boiled
down soon.
2016-08-09 18:38:23 +02:00
Robert Kloefkorn
3db63b0a22 add flow_ebos, an ebos based simulator
it uses ebos for linearization of the mass balance equations and the
current flow code from opm-simulators for all the rest. currently, the
results match the ones from plain `flow` for SPE1, SPE9 and Norne, but
performance is not optimal: on SPE9, converting from and to the legacy
data structures takes about a third of the time to do the actual mass
balance assembly. nevertheless `flow_ebos` is almost as fast as plain
`flow` for SPE9. (for Norne `flow_ebos` is about 15% slower, even
though the results match quite closely. the reason for this is that it
requires more iterations for some reason.)
2016-08-09 18:38:23 +02:00
Andreas Lauser
4d63a4b0ba BlackoilModelParameters: add the file name of the deck
this is needed by the ebos based model.
2016-08-09 12:23:29 +02:00
Andreas Lauser
4a66b4495b flow: move the internal classes to separate files
i.e., the contents of the Opm::details namespace, the IterationReport
and the DefaultBlackoilSolutionState classes. the purpose of this is
to share the code between the existing flow variants and flow_ebos.
2016-08-09 12:23:29 +02:00
Andreas Lauser
415bb25166 allow StandardWells.hpp to be included independently
i.e., without BlackoilModelBase.hpp.
2016-08-09 12:23:29 +02:00
Joakim Hove
0a4dfb6d69 Merge pull request #783 from pgdr/downstream-transmult-and-shared_ptrs
TransMult, Init, and SimConfig are references, applyModifierDeck take…
2016-08-09 09:33:18 +02:00
Atgeirr Flø Rasmussen
d6230f74d5 Merge pull request #784 from totto82/fix_ntg_minpv
BUGFIX. Use the modified NTG values in multiplyHalfIntersections_(..)
2016-08-09 08:29:39 +02:00
Tor Harald Sandve
b468d2baa1 BUGFIX. Use the modified NTG values in multiplyHalfIntersections_(..) 2016-08-08 13:22:02 +02:00
Pål Grønås Drange
bd58792714 TransMult, Init, and SimConfig are references, applyModifierDeck takes reference, and EclipseState constructor too 2016-08-08 10:07:09 +02:00
Atgeirr Flø Rasmussen
ac11db635c Merge pull request #778 from qilicun/polymer-well-iters
well iterations should start from 0.
2016-08-05 09:07:35 +02:00
Liu Ming
635c6b3986 well iterations should start from 0. 2016-08-04 10:54:31 +08:00
Liu Ming
6256199176 log the message to OpmLog. 2016-08-04 10:24:15 +08:00
Liu Ming
ec06eebc06 set polymer rates to the right well. 2016-08-04 10:22:49 +08:00
Atgeirr Flø Rasmussen
5581771917 Merge pull request #776 from qilicun/debug-polymer
fix polymer in flow bug.
2016-08-03 08:52:17 +02:00
Liu Ming
3e2907f4bd fix polymer in flow bug. 2016-08-03 11:10:37 +08:00
Andreas Lauser
bec3ce31fd distinguish between the number of non linear iterations and the number of linearizations
while the printed number of "Non linear iterations" was correct in a
strict sense, it was very confusing if one was working on the
linearization code because the last Newton iteration of each time step
was linearized but not solved for (and the solution was thus not
updated hence it does not count as a "non linear iteration"). This
makes sense for large problems were the total runtime is completely
dominated by the performance of the linear solver, but smaller
problems exhibit the opposite behavior (i.e., for them, runtime is
typically dominated by the linearization proceedure), so one is more
interested in the number of linearizations, not the number of linear
solves.
2016-08-02 12:14:10 +02:00
Atgeirr Flø Rasmussen
a084d36da6 Merge pull request #752 from andlaus/pass_timer_instead_of_dt
pass the simulation timer object instead of the time step size
2016-08-02 11:05:27 +02:00
Bård Skaflestad
01ec7befb4 Merge pull request #758 from qilicun/fix-wellIterations-bugs
fix well iterations counting bugs.
2016-07-20 11:20:28 +02:00
Liu Ming
3f4aa65180 add wellIterationsLast_. 2016-07-20 10:44:12 +08:00
Liu Ming
52d51e8565 remove wellIterationsLast_. 2016-07-18 09:02:30 +08:00
Liu Ming
b43cbe0531 drop useages of std::numeric_limits for counting well iterations. 2016-07-14 10:25:32 +08:00
Kai Bao
2f5045bb85 removing some white spaces in MissingFeatures 2016-07-13 09:16:18 +02:00
Liu Ming
6af9aee20f counting well iterations correctly. 2016-07-13 09:00:15 +08:00
Kai Bao
ab31ab470b removing two supported keywords from MissingFeatures. 2016-07-12 16:59:45 +02:00
Andreas Lauser
5410d97701 pass the simulation timer object instead of the time step size
models may need a more detailed picture of where they are in the
simulation. Note that since the timer objects are available at every
call site, this is also not a very deep change.
2016-07-12 15:55:12 +02:00
Liu Ming
bb0164f39f fix well iterations counting bugs. 2016-07-11 11:47:29 +08:00
Liu Ming
daf1eb9e74 use const reference instead of shared_prt. 2016-07-08 14:52:37 +08:00
Liu Ming
3f819e908d Merge remote-tracking branch 'opm/master' into missing-features-handle 2016-07-08 14:49:38 +08:00