Commit Graph

5619 Commits

Author SHA1 Message Date
Tor Harald Sandve
137ff53ae7 Remove output of FIP 2018-01-29 08:54:30 +01:00
Arne Morten Kvarving
4945c9b2ed changed: pass the mcmg element layout as a parameter for dune 2.6
the template parameter is deprecated
2018-01-22 17:25:14 +01:00
Arne Morten Kvarving
2aa0043550 changed: use Dune::createScalarProduct for dune 2.6
ScalarProductChooser is no more
2018-01-22 17:24:58 +01:00
Arne Morten Kvarving
4315665b64 changed: expose category as member for dune 2.6
the enum can only be used with a define, and that would
just be a temporary solution in any case
2018-01-22 17:23:22 +01:00
Arne Morten Kvarving
83d4dae117 changed: do not ifdef the entire implementation
better to handle this in build system
2018-01-17 18:16:26 +01:00
Arne Morten Kvarving
c03a980199 Import the remaining code from opm-core 2018-01-17 15:18:56 +01:00
Andreas Lauser
f34cfafc22
Merge pull request #1377 from totto82/useEbosEclOutput
Start using ecl output from Ebos
2018-01-10 15:01:27 +01:00
Atgeirr Flø Rasmussen
6c8b0d68ca Remove use of old implicit imcomp 2p transport. 2018-01-08 17:23:43 +01:00
Atgeirr Flø Rasmussen
8ad9c979f8 Remove old 2p simulator. 2018-01-08 17:22:50 +01:00
Atgeirr Flø Rasmussen
aca95895c9 Fix: set precision of the correct stream. 2018-01-08 17:18:47 +01:00
Tor Harald Sandve
0e6fe26a61 Start using ecl output from Ebos
The wells, FIP and initial output of NNCs is still handled
by code in opm-simulators. The plan is to move more of the
functionality to ebos.

All tests pass and MPI restart works
2018-01-04 09:29:58 +01:00
Tor Harald Sandve
969d8f238d Use phase and comp info from FluidSystem
TODO: The output, fip and restart still uses a mixture of old and
new phase indices. This needs to be adressed in future PRs
2018-01-03 08:44:37 +01:00
Atgeirr Flø Rasmussen
9f14b63b82
Merge pull request #1370 from totto82/changeDpMaxDefault
Change dp_max_rel default from 1.0 to 0.3
2017-12-20 16:59:43 +01:00
Tor Harald Sandve
7567748f2d Adapt to changed initial FluidState type in ebos 2017-12-15 08:19:01 +01:00
Tor Harald Sandve
4097a07572 Change dp_max_rel default from 1.0 to 0.3 2017-12-14 11:16:16 +01:00
Andreas Lauser
5bf53148c0 replace #if HAVE_CONFIG_H by #ifdef HAVE_CONFIG_H
it seems like most build systems pass a -DHAVE_CONFIG_H flag to the
compiler which still causes `#if HAVE_CONFIG_H` to be false while it
clearly is supposed to be triggered.

That said, I do not really see a good reason why the inclusion of the
`config.h` file should be guarded in the first place: the file is
guaranteed to always available by proper build systems, and if it was
not included the build either breaks at the linking stage or -- at the
very least -- the runtime behavior of the resulting libraries will be
very awkward.
2017-12-11 11:33:52 +01:00
Andreas Lauser
db1f257184 make call_umfpack.c compile even if UMFPACK is not available
That said, don't try to call any of its functions or you'll regret it
at runtime!
2017-12-11 11:33:52 +01:00
Andreas Lauser
503c7d1ca8 make the PETSc code compile even if PETSc is not available
if PETSc is not available, the .cpp file will compile fine because it
will be reduced to be empty, but trying to include
LinearSolverPetsc.hpp in this case will result in an error.
2017-12-11 11:33:52 +01:00
Andreas Lauser
244871829d PhaseUsage: handle polymer and solvent the same way as energy 2017-12-11 10:30:14 +01:00
Andreas Lauser
4571a8f841 add an energy "phase"
This is quite a hack: Even though energy is not a "phase" and it is
also not considered in MaxNumPhases and pu.num_phases because this
would break a lot of assumptions in old code, it is nevertheless
assigned an "canonical index" that can be translated "active index"
via PhaseUsage::phase_pos[]. This awkwardness is needed because much
of the legacy OPM code conflates the concepts of "fluid phase" and
"conserved quantity" and fixing that issue would basically mean an
almost complete rewrite of much of the legacy code. That said, the
same statement applies to polymer and solvent, but these are currently
handled as even more second-class citizens because they are not even
given a canonical index and also cannot be translated into an active
one.
2017-12-11 10:30:14 +01:00
Arne Morten Kvarving
075d518bea fixed: add ENERGY to switch to quell unhandled enum value warning 2017-12-05 17:13:08 +01:00
Arne Morten Kvarving
dfd91d162b quell signed/unsigned comparison mismatch warning 2017-12-05 16:50:58 +01:00
Arne Morten Kvarving
b702d3834b remove unused variable 2017-12-05 16:50:52 +01:00
Atgeirr Flø Rasmussen
03a0baf447
Merge pull request #1343 from GitPaean/single_phase_resv
making the single phase RESV injection work.
2017-12-05 14:06:44 +01:00
Atgeirr Flø Rasmussen
8f1adadeae
Merge pull request #1355 from totto82/removeInitDupl
Only compute the initial solution once.
2017-12-05 08:44:11 +01:00
Roland Kaufmann
5284497bad Remove superfluous backing class for share_obj
I originally wanted to make share_obj a class so that I could hide the
helper function, but it turned out that I needed a function after all
since a function template can be inferred from the parameters but the
type cannot from the constructor.

By returning a shared_ptr directly, the compiler can do return object
optimization.
2017-12-04 16:24:14 +01:00
Roland Kaufmann
f173dad56e Provide stream that ignores everything written to it
Use this stream when you want a straight code path, but also be able
to disable output at will.
2017-12-04 16:24:14 +01:00
Roland Kaufmann
9193105410 Change from pass-by-value to pass-by-const-ref
The object is copied when put into the list, so there should be no
danger of dangling references.
2017-12-04 16:24:14 +01:00
Roland Kaufmann
0c53ac1509 Add classes for event-handling
The new classes Event and EventSource can be used as a simple mechanism
for implementing event-based callbacks in the simulators.
2017-12-04 16:24:14 +01:00
Atgeirr Flø Rasmussen
a767e166ae Make DataMap.hpp properly include its dependencies. 2017-12-04 16:24:14 +01:00
Joakim Hove
3725ac8f7d Added DataMap.hpp 2017-12-04 16:24:14 +01:00
Tor Harald Sandve
095b82212c Use the initial solution from Ebos 2017-12-04 10:35:30 +01:00
Atgeirr Flø Rasmussen
65034250d1
Merge pull request #1356 from dr-robertk/PR/fix-minor-issue-gridview
[bugfix] make code compile when GridView is not Grid::LeafGridView.
2017-12-04 09:25:43 +01:00
Tor Harald Sandve
31657a5d1c Add efficiencyFactor to GuideRate 2017-12-01 11:32:35 +01:00
Kai Bao
9317c1f023 removing the current argument in updateWellStateWithTarget
and some other cleaning up.
2017-11-30 17:14:29 +01:00
Kai Bao
ea3cbd1fe8 removing numComponents() from WellInterface
which is dumplicated from BlackoilWellModel.
2017-11-30 16:31:48 +01:00
Tor Harald Sandve
c787f5a251 Handle WEFAC
Added test combining WEFAC and GEFAC
2017-11-30 13:45:05 +01:00
Robert Kloefkorn
3a35a495a8 [bugfix] make code compile when GridView is not Grid::LeafGridView. 2017-11-29 23:26:38 +01:00
Atgeirr Flø Rasmussen
eef7b8ea94
Merge pull request #1348 from totto82/refactorBlackoilModelEbos
Put the ebosSimulator start and end methods where it belongs
2017-11-29 20:49:18 +01:00
Atgeirr Flø Rasmussen
2bf880fadd
Merge pull request #1351 from totto82/changeDefaultTimeStep
Use 1 day as default initial time step
2017-11-29 10:01:15 +01:00
Atgeirr Flø Rasmussen
9cffa946f6
Merge pull request #1350 from totto82/onlyReadTuningParamOnce
Only read use_TUNING param once.
2017-11-28 20:43:35 +01:00
Tor Harald Sandve
a1dbeec4d4 Use 1 day as default initial time step 2017-11-28 15:12:48 +01:00
Tor Harald Sandve
2d2f9285c5 Only read use_TUNING param once.
Just to clean up the .DEBUG file.
2017-11-28 14:25:25 +01:00
Tor Harald Sandve
e350c04871 Fix date for long simulation times 2017-11-28 13:37:00 +01:00
Tor Harald Sandve
90fcf0b132 Fix pvtIndex map for cases with non-active eqlnum regions. 2017-11-27 13:40:09 +01:00
Kai Bao
7b61f3e692 moving polymer related to updateWaterMobilityWithPolymer
in StandardWell.

And not calculating the shear effect for the injecting wells when the
injection wells do not inject polymer.
2017-11-27 09:24:02 +01:00
Atgeirr Flø Rasmussen
46e958af43
Merge pull request #1337 from totto82/removeBlackOilPropsFromInit
Adapt to the refactoring of the Equil initialization code
2017-11-27 07:26:22 +01:00
Atgeirr Flø Rasmussen
f62275cb06
Merge pull request #1339 from blattms/write-ranks-without-nonactive
Disregard non-active cells when writing MPI_RANK in writeInitial.
2017-11-27 07:22:34 +01:00
Atgeirr Flø Rasmussen
401aa28c08
Merge pull request #1340 from totto82/solventAndResv
Make it possible to combine solvent and RESV
2017-11-27 07:20:24 +01:00
Atgeirr Flø Rasmussen
369e9f5a06
Merge pull request #1344 from atgeirr/remove-legacy-polymer
Remove legacy fully implicit polymer simulator.
2017-11-27 07:19:01 +01:00
Atgeirr Flø Rasmussen
3fd27d9bd6
Merge pull request #1346 from GitPaean/removing_more_multisegment_legacy
removing more legacy Multisegment Wells related.
2017-11-24 15:30:39 +01:00
Tor Harald Sandve
9edb351d34 Put the ebosSimulator start and end methods were it belongs
Move the beginEpisode/endEpisode call to ebos to beginReportStep/
endReportStep and beginTimeStep/endTimeStep call to ebos to prepareStep/
afterStep
2017-11-24 15:16:03 +01:00
Kai Bao
f87e6d35db removing more legacy Multisegment Wells related. 2017-11-24 12:27:43 +01:00
Kai Bao
59722e552c making the single phase RESV injection work. 2017-11-24 11:44:53 +01:00
Atgeirr Flø Rasmussen
32c7d822ec Remove legacy fully implicit polymer simulator.
It has been replaced with the faster local-ad-based code, that is now
part of the integrated flow.cpp application.

We do not remove the old sequential implicit polymer simulators.
2017-11-24 11:41:34 +01:00
Tor Harald Sandve
ba358c0522 Only update TUNING when TUNING_CHANGE event 2017-11-23 14:24:40 +01:00
Tor Harald Sandve
dd97fc8908 Some clean up. 2017-11-23 11:15:50 +01:00
Tor Harald Sandve
c076ed6485 Move Rateconverter and pvtIdx to the wellInterface 2017-11-23 08:37:30 +01:00
Tor Harald Sandve
054361d537 Make it possible to combine solvent and RESV
Compute the conversion factor for solvent using the RateConverter.hpp
2017-11-22 15:21:21 +01:00
Markus Blatt
f32743cf31 Disregard non-active cells when writing MPI_RANK in writeInitial.
This saves space and it is allowed and recommended (spacewise) to
use integer arrays with only values for active cells in writeInitial.
2017-11-22 14:18:32 +01:00
Atgeirr Flø Rasmussen
796f6cd13c
Merge pull request #1338 from totto82/scheduleTUNING
Support TUNING in schedule section.
2017-11-22 14:03:58 +01:00
Andreas Lauser
ef76d0a8cc
Merge pull request #1335 from atgeirr/refactor-sim
Removing unused code parts and minor refactoring
2017-11-22 13:57:58 +01:00
Tor Harald Sandve
6862ed0b35 Fix 2p bug 2017-11-22 09:24:52 +01:00
Tor Harald Sandve
197019d865 Adress PR review issues 2017-11-22 08:31:57 +01:00
Markus Blatt
9402f4bde1 Make CellOwnerHandle available without MPI
and thus make compilation succeed in this case as using
it is perfectly find even if MPI is not there.
2017-11-21 15:06:36 +01:00
Tor Harald Sandve
2a7d7b8ae5 Pass ref instead of shared pointer to initEquil 2017-11-21 14:29:08 +01:00
Tor Harald Sandve
31bfb22273 Adapt to the refactoring of the Equil initialization code
Most noteably the blackoilState is not returned by the initialization
code anymore, instead the initialization class is returned.
2017-11-21 13:52:07 +01:00
Tor Harald Sandve
d6ea5cc402 Cleaning the initialization code
-remove whitespaces
-fix documentation
2017-11-21 12:52:07 +01:00
Tor Harald Sandve
0ef82665f5 Use &ref not shared_pointer to MaterialLawManager 2017-11-21 12:08:10 +01:00
Tor Harald Sandve
51f48fcd13 Remove blackoilPhases and phaseUsage from the initialization code
Note 1: The initialization code now always consider 3 phases.
For 2-phase cases a trivial (0) state is returned.
Note 2: The initialization code does not compute a BlackoilStats,
but instead pass the initialization object with the initial state.
2017-11-21 12:08:10 +01:00
Tor Harald Sandve
36e8f1bfec Remove BlackoilProps from equil initalization code
Use FluidSystem and materialLaw from opm-material
directly not via the BlackoilProps in opm-core
2017-11-21 12:08:10 +01:00
Markus Blatt
e7688a2ca0 Use MPI_RANK as ECL keyword (max length is 8)
MPI_RANKS was one character to long and rose an exception with message
"Error: Program threw an exception: Keyword is too long."
2017-11-21 11:17:40 +01:00
Tor Harald Sandve
c03dbc1693 Support TUNING in schdule section. 2017-11-21 11:12:16 +01:00
Markus Blatt
073f63ac4c Adapt writeInitial call to use integer vectors for printing ranks
This adapts to the new function signature as of PR 216 in opm-output. It uses the
newly introduced map of integer vectors to print the MPI ranks in a parallel run.
2017-11-20 15:30:50 +01:00
Atgeirr Flø Rasmussen
6e8adbbd7d Remove old "backup-restore" functionality.
Was no longer working and would require some maintenance to work again.
2017-11-20 14:31:13 +01:00
Atgeirr Flø Rasmussen
353f4a6265 Move creating local fipnum array to constructor. 2017-11-17 15:42:16 +01:00
Atgeirr Flø Rasmussen
33833eebe3 Align PRT message header. 2017-11-17 15:41:46 +01:00
Atgeirr Flø Rasmussen
ed263ba030 Remove unused function argument. 2017-11-17 15:41:23 +01:00
Atgeirr Flø Rasmussen
8bd441f431 Remove obsolete time and convergence output. 2017-11-17 15:28:52 +01:00
Alf B. Rustad
7dba2c4d70 Format fix-up 2017-11-17 08:25:22 +01:00
Alf B. Rustad
18419be734 Moving developer centric messages from PRT file to DEBUG file 2017-11-17 08:25:22 +01:00
Alf B. Rustad
ad68c05982 Change substep to time step in logging 2017-11-17 08:25:21 +01:00
Alf B. Rustad
2d2198a775 Change log output from Time step to Report step 2017-11-17 08:25:21 +01:00
Atgeirr Flø Rasmussen
68dab29aec
Merge pull request #1333 from GitPaean/avoid_use_BlackoilPhases
replacing BlackoilPhases:: with Oil Water Gas in well model
2017-11-16 21:49:30 +01:00
Kai Bao
8274fc9275 replacing BlackoilPhases:: with Oil Water Gas in well model
and also WellStateFullyImplicitBlackoil.

There are more places to do so, while it might be easier to create a
header file for this.
2017-11-16 12:08:58 +01:00
Atgeirr Flø Rasmussen
d8ad13c4b5 Move fip computation and unit conversion to separate method. 2017-11-15 16:31:06 +01:00
Atgeirr Flø Rasmussen
4256af6754 Move (local) fipnum creation to separate method. 2017-11-15 16:13:28 +01:00
Atgeirr Flø Rasmussen
0f210dcb6c Move FIP output to separate method. 2017-11-15 15:55:58 +01:00
Atgeirr Flø Rasmussen
91ac16b7e3 Merge pull request #1184 from akva2/remove_unused_sources
remove unused code
2017-11-15 14:09:31 +01:00
Arne Morten Kvarving
a76ae214b8 remove unused code 2017-11-15 11:56:40 +01:00
Atgeirr Flø Rasmussen
f29f1b49d1 Merge pull request #1122 from atgeirr/fix-type-bug-in-equil
Fix type bug in equil
2017-11-14 14:40:47 +01:00
Atgeirr Flø Rasmussen
3d0c6da513
Merge pull request #1320 from joakim-hove/missing-features
Missing features
2017-11-14 11:19:13 +01:00
Joakim Hove
a6ef70cd91 Added keywords to list of unsupported. 2017-11-14 08:56:06 +01:00
Joakim Hove
d04c52cebf Reformatted list of unsupported keywords. 2017-11-14 08:55:52 +01:00
Atgeirr Flø Rasmussen
60ee67804b
Merge pull request #1330 from akva2/remove_simulators
Remove duplicate EBOS based simulators and legacy simulators that has been replaced
2017-11-13 15:56:33 +01:00
Arne Morten Kvarving
e0907ddc49 remove 'flow_solvent' and associated files
use 'flow'
2017-11-13 14:21:10 +01:00
Arne Morten Kvarving
ad23d98726 remove 'flow_multisegment' and associated files
use 'flow' with use_multisegment_well=true
2017-11-13 14:20:47 +01:00
Atgeirr Flø Rasmussen
098e229d2e
Merge pull request #1328 from totto82/fixShearVel
Fix size of perf radius and length vectors.
2017-11-13 14:00:07 +01:00
Tor Harald Sandve
614f75d9b9 Fix size of perf radius and length vectors. 2017-11-13 12:16:39 +01:00
Atgeirr Flø Rasmussen
29277489e1 Make calling wsolvent() and wpolymer() always ok.
With the existing code, it was a bug to call wsolvent() when the well
was not a gas injector (and similar for wpolymer and water injectors).
Since such calls could happen, this minor fix removes the assertation
failure in those cases.
2017-11-13 10:40:09 +01:00
Atgeirr Flø Rasmussen
6591ca89f6
Merge pull request #1324 from totto82/moveApplyWellToRes
Apply the well residuals to cell residuals in SolveJacobianSystem
2017-11-10 09:57:42 +01:00
Atgeirr Flø Rasmussen
e7a6e8f2c5
Merge pull request #1322 from totto82/fixResetSolution
BUGFIX Update the solution variable in ebos
2017-11-09 10:35:38 +01:00
Tor Harald Sandve
5647485daa Apply the well residuals to cell residuals in SolveJacobianSystem
This was moved to assemble() some time ago but according to my logic it
belongs in the solve method since this is only a trick to solve the well
equations simultaneously with the reservoir equations.

A buggy side effect of the currect implementation was that the well
residual was considered in the convergence test. I.e. this move changes
the convergence behaviour of the simulator.
2017-11-09 08:40:08 +01:00
Tor Harald Sandve
a73208f41c Address issues raised in the review of the PR 2017-11-08 15:48:30 +01:00
Tor Harald Sandve
4bb5213f37 BUGFIX Update the solution variable in ebos
Updating the solution variable in updateState() was conceptually wrong
and lead to incorrect results if the linear solver failed before the
updateState() method was called. i.e. in the first iteration.
2017-11-08 14:21:31 +01:00
Tor Harald Sandve
b9bc4b00cb Make the wellModel self-contained
The wellModel is now persistent over the time steps,
with an update method called every reportStep/episode.

This allows the following simplifications:

    1. move the wellState to the WellModel
    2. add a ref to the ebosSimulator to the wellModel
    3. clean up the parameters passed to the wellModel methods
    4. move RESV handling to the WellModel and the rateConverter
    5. move the econLimit update to the WellModel
2017-11-08 13:57:36 +01:00
Atgeirr Flø Rasmussen
c79dab27d5
Merge pull request #1319 from GitPaean/throw_when_no_umfpack
removing more HAVE_UMFAPACK related in MultisegmentWell_impl
2017-11-07 14:41:52 +01:00
Atgeirr Flø Rasmussen
f886a3f0ff
Merge pull request #1311 from blattms/use-MatrixBlock-dune-2.5.0
Use MatrixBlock instead of FieldMatrix for DUNE 2.5.0
2017-11-07 13:28:24 +01:00
Joakim Hove
e125334847
Merge pull request #1315 from joakim-hove/extract-schedule
Use Schedule constructor.
2017-11-06 17:06:49 +01:00
Joakim Hove
566f4fbb02 Use Schedule constructor. 2017-11-06 14:20:41 +01:00
Atgeirr Flø Rasmussen
dde9db92a6
Merge pull request #1316 from andlaus/fix_openmp
flow_ebos: fix the OpenMP functionality
2017-11-03 17:43:49 +01:00
Kai Bao
89416720cb removing more HAVE_UMFAPACK related in MultisegmentWell_impl
which are left from the previous PR.
2017-11-03 14:54:32 +01:00
Atgeirr Flø Rasmussen
1d0282c6fe
Merge pull request #1317 from GitPaean/throw_when_no_umfpack
giving more information when umfpack is not available.
2017-11-03 14:43:18 +01:00
Kai Bao
790db957f5 giving more information when umfpack is not available.
when calling invDXDirect.
2017-11-03 10:03:03 +01:00
Atgeirr Flø Rasmussen
63415ebd96
Merge pull request #1314 from andlaus/generic_maintainance
Generic maintainance
2017-11-03 09:38:19 +01:00
Andreas Lauser
36bd6a1681 flow_ebos: fix the OpenMP functionality
the ThreadManager from ebos was not called which resulted in some
havoc when attempting multi-threaded runs.

v2: use opm_get_max_threads() directly. thanks to [at]akva2 for the heads-up.
2017-11-02 12:47:04 +01:00
Arne Morten Kvarving
53942053af
Merge pull request #1309 from andlaus/fix_build_no_umfpack
make the build work if UMFPACK is not available
2017-10-30 11:05:19 +01:00
Andreas Lauser
e65790224e replace #if HAVE_CONFIG_H by #ifdef HAVE_CONFIG_H
it seems like most build systems pass a -DHAVE_CONFIG_H flag to the
compiler which still causes `#if HAVE_CONFIG_H` to be false while it
clearly is supposed to be triggered.

That said, I do not really see a good reason why the inclusion of the
`config.h` file should be guarded in the first place: the file is
guaranteed to always available by proper build systems, and if it was
not included the build either breaks at the linking stage or -- at the
very least -- the runtime behavior of the resulting libraries will be
very awkward.
2017-10-27 17:48:26 +02:00
Andreas Lauser
6e7189b518 fix a few Dune 2.5 deprecation warnings 2017-10-27 17:48:26 +02:00
Andreas Lauser
ceefb61c4a fix some unknown pragma warnings if OpenMP is not enabled 2017-10-27 17:48:26 +02:00
Markus Blatt
602f3962f3 Use MatrixBlock instead of FieldMatrix for DUNE 2.5.0
3x3 matrix block inversion in FieldMatrix is numerically unstable
including version 2.5.0. Therefore the previous if clause was wrong
as it activated the use of FieldMatrix already for 2.5.0 (the version
in Debian stable). With this commit we use MatrixBlock for version 2.5.0.
2017-10-25 16:32:48 +02:00
Joakim Hove
19318e5019 Schedule no longer part of EclipseState. 2017-10-24 20:38:15 +02:00
Andreas Lauser
720dc636e8 make the build work if UMFPACK is not available
this was caused by the recent work on multisegmented wells. If UMFPack
is available, it compiled.
2017-10-24 19:17:41 +02:00
Atgeirr Flø Rasmussen
32251461e5 Revert "Revert "Communicate the ebos solution at the beginning of the run method" 2017-10-23 12:40:29 +02:00
Atgeirr Flø Rasmussen
f66a270b7d Merge pull request #1305 from GitPaean/checking_use_multisegment
checking use_multisegment_well_ first in BlackoilModelParameters
2017-10-17 21:20:07 +02:00
Kai Bao
9fde417066 checking use_multisegment_well_ first in BlackoilModelParameters 2017-10-17 13:21:02 +02:00
Markus Blatt
15dfe31d80 Revert "Communicate the ebos solution at the beginning of the run method."
This reverts commit 9adc4d5d3c.
2017-10-17 08:26:39 +00:00
Kai Bao
6b00d912c3 fixing jenkins warning. 2017-10-16 19:08:12 +02:00
Kai Bao
ba8eb708d1 fixing reviewing comments from PR 1279. 2017-10-16 17:01:15 +02:00
Kai Bao
4efaf64cf7 adapting to the interface change in OPM-parser#1145. 2017-10-16 14:39:07 +02:00
Kai Bao
7054317d98 checking the results from the direct solver invDX
since I has not figure out a way to detect/catch the singularity of the
matrix with UMFPack, currently, we only check the validity of the
results to make sure inf or nan not enter other part of the simulation.

It can easiliy results in assertion failure, and causes the running to
be terminated. After all, it mostly likely is a numerical issue
generated during the non-linear iteration process.
2017-10-15 12:13:42 +02:00
Kai Bao
d407e516ce throw for unsupported situations and fix warnings
for MultisegmentWell.
2017-10-13 10:16:44 +02:00
Kai Bao
7a29c5098f changing the strategy of the updateWellState in MultisegmentWell
only applying relaxation during the inner iteration.
2017-10-12 16:46:25 +02:00
Kai Bao
86269e0de2 cleaning up.
no functional change.
2017-10-12 15:36:54 +02:00
Kai Bao
93b7cceaf3 removing WellStateFullyImplicitBlackoilDense as the master
it caused some problem in rebasing.
2017-10-12 15:05:45 +02:00
Atgeirr Flø Rasmussen
3bfe295d62 Bugfix: type for target capillary pressure. 2017-10-12 14:27:32 +02:00
Kai Bao
6a4260c264 various improvement and bug fixing.
fixed one invalid memory reading of perforation_segment_depth_diffs_
in computePerfRate, which caused different results for different
running.
2017-10-12 14:10:36 +02:00
Kai Bao
1a7b5571b6 trying to add an inner well iteration to speed up convergence. 2017-10-12 14:10:24 +02:00
Kai Bao
8a19b719d6 when Reynolds number is zero, return zero friction factor
which means there is not friction pressure loss. The formualtion has
problem in handling zero-value Reynolds number.
2017-10-12 13:43:04 +02:00
Kai Bao
6366087efd using UMFPACK for the function invDX
for better robustness.

The iterative solvers require more improvement.
2017-10-12 13:43:04 +02:00
Kai Bao
78a28abf91 fixing a bug related to adding ms well during simulation.
When there is not ms well involved, all the ms well related is not
initialized. It causes problem when we want to add ms well after some
time of running.

The bug fix the running with model 2.
2017-10-12 13:43:04 +02:00
Kai Bao
c3a368e58e adding two more parameters related to ms wells
to help to tune and improve the convergence.
2017-10-12 13:43:04 +02:00
Kai Bao
fc64d34bc2 cleaning up some comments. 2017-10-12 13:43:04 +02:00
Kai Bao
6fb459a797 introducing tolerance_pressure_ms_wells for pressure equations
for the multisegment wells. More detailedly, we should distinguish the
rate control equations, bhp control equations and ordinary pressure
equations.
2017-10-12 13:43:04 +02:00
Kai Bao
92abdc4f23 correcting some bugs in frictional pressure loss. 2017-10-12 13:43:04 +02:00
Kai Bao
f6ad3669f8 considering the two pressure difference to MultisegmentWell
while the sign of the pressure differences are not sure or well tested
yet.
2017-10-12 13:43:04 +02:00
Kai Bao
aa8b1ae0f8 giving the friction pressure loss a direction. 2017-10-12 13:43:04 +02:00
Kai Bao
ccc21e9dcd removing WellStateMSWell.hpp
what was designed to use as WellState for one single Multisegment well.
2017-10-12 13:39:58 +02:00
Kai Bao
8c3f45f58e fixing a few of bugs. 2017-10-12 13:39:58 +02:00
Kai Bao
4c207eb1f5 implementing computePerfCellPressDiffs
to calculate the pressure difference between perforation and perforated
grid cell.
2017-10-12 13:39:58 +02:00
Kai Bao
df593cf1d2 adding the calculation of depth differences
between the perforations and their segments, and also the perforations
and perforated grid blocks.
2017-10-12 13:39:58 +02:00
Kai Bao
2b4a99edf9 handling the acceleration pressure drop
not tested yet.
2017-10-12 13:39:58 +02:00
Kai Bao
4893334567 adding function getFrictionPressureLoss()
it should be related to the flow direction, which needs some tests.
2017-10-12 13:39:58 +02:00
Kai Bao
aa8ffe9386 removing the unit conversion factors in frictional formular.
since we are using the SI unit internally, they should not be needed.
2017-10-12 13:39:58 +02:00
Kai Bao
7ae5bd5187 adding the code to calculate the segment viscosities.
not tested yet.
2017-10-12 13:39:58 +02:00
Kai Bao
391abcec7f adding helper fuction to calculate frictional pressure loss
not tested yet.
2017-10-12 13:39:58 +02:00
Kai Bao
f4f26395f6 fixing two compilation warning. 2017-10-12 13:39:58 +02:00
Kai Bao
ad964210e5 move invDX to MSWellHelpers.hpp. 2017-10-12 13:39:58 +02:00
Kai Bao
20c21a6cb2 removing a few variables related to matrix opertaion 2017-10-12 13:39:58 +02:00
Kai Bao
fc06923c50 changing StandardWellsDense to BlackoilModelEbos
for a better naming.
2017-10-12 13:39:58 +02:00
Kai Bao
6ef0c5010c adapting the change of PR 1263 2017-10-12 13:37:05 +02:00
Kai Bao
dd9ad42a28 correcting the size of seg_comp_initial_ based on num_comp
for standards wells, all the three equations are mass balance
equatiions, it is safe to use numWellEq.

for MS wells, there is one extra pressure equation, it should be the
number of mass balance equations. If we do not put the polymer equation
inside the well equations, we will face dilemma soon.
2017-10-12 13:37:05 +02:00
Kai Bao
282d678622 removing flowToEbosPvIdx from MultisegmentWell
as a result from rebase.
2017-10-12 13:37:05 +02:00
Kai Bao
0dc041d46a adding a use_multisegment_well_
to determine whether we will treat mutlisegment wells with
MultisegmentWell well model. Currently, it will be faulse by default.
It might be changed to be true by default when considering the
multisegment well model is well tested.
2017-10-12 13:37:05 +02:00
Kai Bao
3255626b2e scaling the gas rates a little bit for MS well.
It can possibly benefit the StandardWell, while it is something needs a
little bit more investigation before using it.
2017-10-12 13:37:05 +02:00
Kai Bao
f7e1623b7a only clearing matrix B and C when only_wells false.
to save a little calculation.
2017-10-12 13:37:05 +02:00
Kai Bao
c6be20c5cb copying the segment rates and segment pressure from old well state.
It can be something rather tricky. It looks like with simple trival
initization, it is difficutl to converge. But when there is change to
the well, direct copying will not work anymore. Will we also facing
convergence problem?
2017-10-12 13:37:05 +02:00
Kai Bao
5dee45dc0a various small improvements. 2017-10-12 13:37:05 +02:00
Kai Bao
a03a67c85e not checking getWellConvergence more than one times
which is a bug. Not it is moved out of the for loop.
2017-10-12 13:37:05 +02:00
Kai Bao
bafe292af0 adding some comments for later implementation. 2017-10-12 13:37:05 +02:00
Kai Bao
b6d324c95e implement recoverWellSolutionAndUpdateWellState
for MultisegmentWell_impl.
2017-10-12 13:37:05 +02:00
Kai Bao
596814943c bug fixing to make the hydroPrssureLoss correct. 2017-10-12 13:37:05 +02:00
Kai Bao
f784cf97eb a few bug fixing for MultisegmentWell 2017-10-12 13:37:05 +02:00
Kai Bao
5ffd2bf026 correct the treatment of the pressure equation
the derivative of the inlet contribution should go to the correction
location in duneD_.
2017-10-12 13:37:05 +02:00
Kai Bao
c3b4188295 making message about catching FMatrixError more specific
in BlackoilModelEbos.
2017-10-12 13:37:05 +02:00
Kai Bao
23b0deb928 a few bug fixing for MultisegmentWell 2017-10-12 13:37:05 +02:00
Kai Bao
fe1f854138 adding getWellConvergence() to MultisegmentWell_impl 2017-10-12 13:37:05 +02:00
Kai Bao
1f380713e8 using function invDX to implement functions in MultisegmentWell
it compiles, while not sure how it gonna work.
2017-10-12 13:37:05 +02:00
Kai Bao
ba3c7a88db adding a functin invDX to calculate D^-1 X
not sure why putting it in ISTLSolver.hpp caused linking problem.
Putting it in MultisegmentWell for now.
2017-10-12 13:37:05 +02:00
Kai Bao
6f6f3ead5e adding updateWellState for MultisegmentWell 2017-10-12 13:37:05 +02:00
Kai Bao
1adc081430 adding function processFractions() to MultisegmentWell
to handle the undershooting and overshooting of the fractions during
updateWellState.
2017-10-12 13:37:05 +02:00
Kai Bao
0e7b77fac2 adding getHydorPressureLoss() to MultisegmentWell
to handle the hydrostatic pressure loss.
2017-10-12 13:37:05 +02:00
Kai Bao
d30c1eb2c5 adding getPressureEq() to MultisegmentWell 2017-10-12 13:37:05 +02:00
Kai Bao
2bf82b4262 adding getControlEq() to MultisegmentWell
to handle the well control equation. THP control is not handled there
yet.
2017-10-12 13:37:05 +02:00
Kai Bao
ae91296339 generating the pattern of the matrix of MultisegmentWell
need to be verified.
2017-10-12 13:37:05 +02:00
Kai Bao
b3a233eecc WIP in adding assembleWellEq for MultisegmentWell 2017-10-12 13:37:05 +02:00
Kai Bao
1ffa87561b adding computePerfRate() in MultisegmentWell
not tested yet.
2017-10-12 13:37:05 +02:00
Kai Bao
5d79a7f11b adding computeSegmentFluidProperties for MultisegmentWell
only considering the fluid densities for now.
more fluid densities needs to be considered.
2017-10-12 13:37:05 +02:00
Kai Bao
7b873d97c9 small improvements in StandardWell
there is not functional change.
2017-10-12 13:37:05 +02:00
Kai Bao
1e32b40837 adding function computeInitialComposition to MultisegmentWell 2017-10-12 13:37:05 +02:00
Kai Bao
eb119f245d adding a few functions to calculate the fractions in MultisegmentWell 2017-10-12 13:37:05 +02:00
Kai Bao
3e2a34239c removing two functions from WellInterface
computeWellConnectionPressures() and computeAccumWell().
They belongs to the implementation details of well models now.
2017-10-12 13:37:05 +02:00
Kai Bao
8922f3e041 adding a function calculateExplictQuantities to WellInterface
to hide some implementation details.
2017-10-12 13:37:05 +02:00
Kai Bao
47c7c54548 making the updateWellControl to WellInterface
instead of having two of them in StandardWell and MultisegmentWell
2017-10-12 13:37:05 +02:00
Kai Bao
553eeaaa82 adding updateWellControl to MultisegmentWell
it turned out to be same with the one in StandardWell
considerng to make it in the WellInterface.
2017-10-12 13:37:05 +02:00
Kai Bao
86c9115f1d adding function updateWellStateWithTarget for MultisegmentWell 2017-10-12 13:37:05 +02:00
Kai Bao
c26b5905a8 re-organizting the function prepareTimeStep() for StandardWellsDense
for better readibility and organization.
2017-10-12 13:37:05 +02:00
Kai Bao
1024ce31f6 adding function updatePrimaryVariables() to MultisegmentWell
Basically, calculate the value of primary variables based on WellState.
2017-10-12 13:37:05 +02:00
Kai Bao
16ecbddefb when encountering a multisegment well
we create a multisegment well instead of treating all the wells as
StandardWell. Making it compile.
2017-10-12 13:37:05 +02:00
Kai Bao
d694a72b53 adding initMSWell() to handle MS well related WellState. 2017-10-12 13:37:05 +02:00
Kai Bao
315c4a1659 more implementatin in WellStateMSWell
very likely that we will not use it.
2017-10-12 13:36:27 +02:00
Kai Bao
8c0af08056 adding comments for MultisegmentWell 2017-10-12 13:36:27 +02:00
Kai Bao
b5323b1b79 begin the class WellStateMSWell
it will be for each individual MS well.
it is kind of the start of the refactoring of the WellState.
2017-10-12 13:36:27 +02:00
Kai Bao
359de15f2b begining MultisegmentWell.hpp 2017-10-12 13:36:27 +02:00
Atgeirr Flø Rasmussen
bbfd5b6413 Merge pull request #1180 from blattms/cleanup-version-ifs
[cleanup] Removes unnecessary if clauses for unsupported DUNE versions.
2017-10-12 13:28:50 +02:00
Atgeirr Flø Rasmussen
f30b95e0e7 Merge pull request #1298 from blattms/cleanup-version-ifs
[cleanup] Removes unnecessary if clauses for unsupported DUNE versions.
2017-10-12 13:28:45 +02:00
Atgeirr Flø Rasmussen
91cac266b4 Merge pull request #1299 from andlaus/remove_SimulationParameter
do not set the SimulationParameter property anymore
2017-10-12 10:47:03 +02:00
Atgeirr Flø Rasmussen
9206909f75 Merge pull request #1297 from GitPaean/ratio_economic_well
handling WELL workover over ratio economic limit.
2017-10-12 06:52:33 +02:00
Atgeirr Flø Rasmussen
aba0b14907 Merge pull request #1301 from andlaus/update_banner2
update flow startup message
2017-10-12 06:49:06 +02:00
Andreas Lauser
d1ce08d654 update flow startup message
The old message was not really accurate anymore because flow also
supports the polymer and solvent extensions. (Also, the parentheses
around the version were removed because they are not necessary.)

v2: use the message proposed by [at]atgeirr
v3: re-add accidentially removed website URL
2017-10-11 23:33:47 +02:00
Atgeirr Flø Rasmussen
df59dbbabf Merge pull request #1177 from alfbr/master
Removing redundant checks from Nexus
2017-10-11 21:57:36 +02:00
Markus Blatt
2bdafdb602 [cleanup] Removes unnecessary if clauses for unsupported DUNE versions.
We are targetting DUNE 2.4.* and 2.5.* currently. Therefore this commit removes
the if checks for lower versions to cleanup the code.
2017-10-11 21:25:18 +02:00
Atgeirr Flø Rasmussen
d770e16abf Merge pull request #1289 from totto82/removeWellStateFullyImplicitBlackoilDense.hpp
Remove WellStateFullyImplicitBlackoilDense
2017-10-11 18:59:53 +02:00
Andreas Lauser
ae3842fa80 remove do not set the SimulationParameter property anymore
this needs to merged before the SimulationParameter hack can be
removed from eWoms. the patch will cause spurious deprecation warnings
until then. (i.e., it is best to merge them together.)
2017-10-11 16:01:55 +02:00
Markus Blatt
6a5dc78249 [cleanup] Removes unnecessary if clauses for unsupported DUNE versions.
We are targetting DUNE 2.4.* and 2.5.* currently. Therefore this commit removes
the if checks for lower versions to cleanup the code.
2017-10-11 15:53:45 +02:00
Atgeirr Flø Rasmussen
67401d7d63 Merge pull request #1287 from andlaus/improve_polymorphic_flow
Improve polymorphic flow
2017-10-11 15:44:54 +02:00
Atgeirr Flø Rasmussen
0264a1f609 Merge pull request #1294 from akva2/there_there_mr_ocd
quell signed/unsigned mismatch warning
2017-10-11 14:07:03 +02:00
Kai Bao
5328de6361 handling WELL workover over ratio economic limit. 2017-10-11 13:35:07 +02:00
Tor Harald Sandve
dc8f811cbe Remove WellStateFullyImplicitBlackoilDense
After the restructuring of of the well model, keeping an extra class for
the "Dense" model is not needed. The only thing still left in
WellStateFullyImplicitBlackoilDense was some solvent related stuff, this
PR moves this to WellStateFullyImplicitBlackoil and removes
WellStateFullyImplicitBlackoilDense.

In addition to a cleaning code this PR fixes missing solvent well output.
2017-10-11 10:54:59 +02:00
Alf B. Rustad
fa886bc3aa Cosmetic change 2017-10-11 10:45:18 +02:00
Alf B. Rustad
7d32729a00 Cosmetic change 2017-10-11 10:45:18 +02:00
Alf B. Rustad
db7c47042c Remove remaining Nexus checks 2017-10-11 10:45:17 +02:00
Alf B. Rustad
520574513f Avoid false positives by introducing a tolerance 2017-10-11 10:45:17 +02:00
Alf B. Rustad
cc3ab456e9 Removing redundant checks from Nexus 2017-10-11 10:44:59 +02:00
Kai Bao
2458b45901 removing GEFAC and SSOL from MissingFeatures.cpp 2017-10-10 15:53:12 +02:00
Atgeirr Flø Rasmussen
de1be6b5ef Merge pull request #1273 from GitPaean/different_oscillation
avoiding the oscillation treatment applied to well solution
2017-10-10 14:29:04 +02:00
Andreas Lauser
ab93f58371 some minor cleanups
this fixes a few warnings and removes now-unnecessary function arguments.
2017-10-10 14:07:07 +02:00
Arne Morten Kvarving
a0b81a131a quell signed/unsigned mismatch warning 2017-10-09 14:45:08 +02:00
Atgeirr Flø Rasmussen
63b38cfe20 Merge pull request #1281 from totto82/fixRESV
Use pore volume weighted averaged hydrocarbon state in rateConverted.
2017-10-09 13:42:43 +02:00
dr-robertk
682424a7bf Merge pull request #1286 from blattms/communicate-ebos-solution-in-run
Communicate the ebos solution at the beginning of the run method.
2017-10-09 13:13:58 +02:00
Andreas Lauser
cede806bd5 flow: refactor the specializations
The motivation for this PR is that currently the build fails on my
Ubuntu 17.10 laptop with two processes because that machine "only" has
8 GB of RAM (granted, the optimization options may have been a bit too
excessive). under the new scheme, each specialization of the simulator
is put into a separate compile unit which is part of
libopmsimulators. this has the advantages that the specialized
simulators and the main binary automatically stay consistent, the
compilation is faster (2m25s vs 4m16s on my machine) because all
compile units can be built in parallel and that compilation takes up
less RAM because there is no need to instantiate all specializations
in a single compile unit.

on the minus side, all specializations must now always be compiled,
the approach means slightly more work for the maintainers and the
flow_* startup code gets even more complicated.
2017-10-06 15:35:00 +02:00
Andreas Lauser
0c92c24dcb flow_ebos*: make it build and (the sequential part) work if dune-fem is available
in particular, this implied some changes to the MPI initialization
code. since dune-fem's GridPart class currently has issues with
CpGrid's implementation of loadBalance(), parallel computations still
do not work if dune-fem is around, but at least sequential ones now
do even if MPI is enabled.
2017-10-06 15:35:00 +02:00
Andreas Lauser
64d7366de2 mark the non-template methods of the adaptive time stepper as inline
this is needed to avoid linker errors if this class ought to be used
in multiple compile units. IMO the main problem here is the use of an
_impl.hpp file.
2017-10-06 15:34:59 +02:00
Markus Blatt
9adc4d5d3c Communicate the ebos solution at the beginning of the run method.
Currently, the ReservoirState passed to the method and converted
to the initial solution of the Ebos simulator might have wrong
values in the ghost layer (this is the case for SPE9, Norne, Model 2).
This commit uses the syncOverlap method to update these values once they
are converted to the Ebos solution. The  ReservoirState remains untouched.
This is enough to have consistent values throughout the simulation and only
introduces one additional communication step.
2017-10-05 14:33:48 +02:00
Arne Morten Kvarving
35fbe03ca7 remove unused variables
quells warnings
2017-10-05 12:02:10 +02:00
Arne Morten Kvarving
167147acc4 use std::remove_const instead of Dune::remove_const 2017-10-05 12:02:10 +02:00
Andreas Lauser
d95b622c75 mark initHydroCarbonState() as inline
this allows it to be used in multiple compile units without the linker
running amok.
2017-10-04 19:24:20 +02:00
Tor Harald Sandve
ebc2f46967 Use pore volume weighted averaged hydrocarbon state in rateConverted.
- pressure, rs and rv is averaged using hydrocarbon pore volume weights.
- pvtRegions is used as input in the conversion factor calculations.
- the pvt cell of the first well cell is used as the pvt index.
(Completing a well in two different PVT regions sounds like a very bad
idea anyway)
- FIP region support is added to the rate converter also for the ebos
interface.
2017-10-03 10:25:56 +02:00
Kai Bao
28a7167d61 avoiding the oscillation treatment applied to well solution
it is a design to avoid some performance degeneration for parallel
running.
2017-09-29 17:15:39 +02:00
Atgeirr Flø Rasmussen
f7529cf33e Merge pull request #1269 from GitPaean/fixing_well_efficiency
correcting the way to use efficiency factor in assembleWelEq
2017-09-25 10:26:55 +02:00
Atgeirr Flø Rasmussen
83ca6d41e3 Merge pull request #1263 from totto82/gasoil
Make 2p gas oil compile and run
2017-09-21 14:03:33 +02:00
Tor Harald Sandve
5839962e31 Some trivial cleaning 2017-09-21 12:16:46 +02:00
Atgeirr Flø Rasmussen
c1024ce2d1 Merge pull request #1268 from blattms/log-wells-debug-messages-only-on-master
Log debug messages about wells only on master.
2017-09-21 10:33:04 +02:00
Tor Harald Sandve
992ab84435 Remove support and tests for pseudo 2p model in flow ebos 2017-09-20 08:11:44 +02:00
Tor Harald Sandve
b452d16f46 Fix parallell run 2017-09-19 11:16:34 +02:00
Tor Harald Sandve
69c608829f Include RESV in the scaling factor
- solvent + RESV is not correct. Make the simulator throw until this is
sorted out.

- remove unused parameter
2017-09-18 11:28:13 +02:00
Tor Harald Sandve
352dccd5e9 Make 2p gas oil compile and runs
-- use mapping from canonicalToActiveCompIdx from Ebos
-- add guards againts non-existing components
2017-09-18 11:28:13 +02:00
Alf Birger Rustad
7b1e034a90 Merge pull request #1270 from atgeirr/fix-output-timestep
Fix report step number associated with substeps.
2017-09-17 20:25:33 +02:00
Atgeirr Flø Rasmussen
60fe6b2687 Fix report step number associated with substeps.
It appears summary files by convention expect all substep data points to
be chunked together with the data point at the end of the report step.
2017-09-15 12:04:30 +02:00
Kai Bao
fa03db07f8 correcting the way to use efficiency factor in assembleWelEq 2017-09-11 13:01:55 +02:00