Commit Graph

1209 Commits

Author SHA1 Message Date
Arne Morten Kvarving
66333051e7 Import the following files from opm-core
opm/core/utility/thresholdPressures.hpp
tests/test_thresholdpressure.cpp
opm/core/simulator/SimulatorCompressibleTwophase.hpp
opm/core/simulator/SimulatorCompressibleTwophase.cpp
opm/core/simulator/SimulatorIncompTwophase.hpp
opm/core/simulator/SimulatorIncompTwophase.cpp
examples/sim_2p_comp_reorder.cpp

the files in opm/core has been put in opm/simulators
2016-04-11 09:59:25 +02:00
Andreas Lauser
8a420748f5 use automatic differentiation for the co2injection_flash_ecfv test
i.e., the simulation for the CO2-injection problem which uses the
flash solver to handle its thermodynamics and element centered finite
volume method as the spatial discretization. The intention is to
ensure that opm-material's NcpFlash constraint solver works with
non-primitive types as Scalars. (or rather: that it will be quickly
detected if it breaks in that case.)
2016-04-08 14:29:26 +02:00
Liu Ming
939085155e refactor relperm diagnostics using OpmLog functions. 2016-04-01 12:27:03 +08:00
Atgeirr Flø Rasmussen
3aa5158842 Merge pull request #619 from kjellkongsvik/Move_OutputWriter_to_opm-output
Refactored to use OutputWriter from opm-output
2016-03-31 09:44:09 +02:00
Joakim Hove
18c07d5d66 Replaced SimulatorState -> SimulationDataContainer 2016-03-29 10:48:36 +02:00
Joakim Hove
38628de09e Replaced SimulatorState -> SimulationDatacontainer
Have removed the SimulatorState base class, and instead replaced with
the SimulationDatacontainer class from opm-common. The SimulatorState
objects were typcially created with a default constructor, and then
explicitly initialized with a SimulatorState::init() method. For the
SimulationDataContainer RAII is employed; the init( ) has been removed -
and there is no default constructor.
2016-03-29 10:44:49 +02:00
Joakim Hove
b42700c6a8 Replaced SimulatorState -> SimulationDatacontainer
Have removed the SimulatorState base class, and instead replaced with
the SimulationDatacontainer class from opm-common. The SimulatorState
objects were typcially created with a default constructor, and then
explicitly initialized with a SimulatorState::init() method. For the
SimulationDataContainer RAII is employed; the init( ) has been removed -
and there is no default constructor.
2016-03-29 10:44:49 +02:00
Joakim Hove
a256dc0e5d Replaced SimulatorState -> SimulationDatacontainer
Have removed the SimulatorState base class, and instead replaced with
the SimulationDatacontainer class from opm-common. The SimulatorState
objects were typcially created with a default constructor, and then
explicitly initialized with a SimulatorState::init() method. For the
SimulationDataContainer RAII is employed; the init( ) has been removed -
and there is no default constructor.
2016-03-29 10:44:49 +02:00
chflo
e63bf7aead Changed includes due to OpmLog moved from parser to common 2016-03-17 16:19:07 +01:00
Kjell W. Kongsvik
ea9e572a65 Refactored to use OutputWriter from opm-output
As OutputWriter has been deleted from opm-core
Only changes in includes
2016-03-17 14:45:30 +01:00
Andreas Lauser
290584dddc clean up the licensing preable of source files
the in-file lists of authors has been removed in favor of a global
list of authors in the LICENSE file. this is done because (a)
maintaining a list of authors at the beginning of a file is a major
pain in the a**, (b) the list of authors was not accurate in about 85%
of all cases where more than one person was involved and (c) this list
is not legally binding in any way (the copyright is at the person who
authored a given change, if these lists had any legal relevance, one
could "aquire" the copyright of the module by forking it and removing
the lists...)

the only exception of this is the eWoms fork of dune-istl's solvers.hh
file. This is beneficial because the authors of that file do not
appear in the global list. Further, carrying the fork of that file is
required because we would like to use a reasonable convergence
criterion for the linear solver. (the solvers from dune-istl do
neither support user-defined convergence criteria not do the
developers want support for it. (my patch was rejected a few years
ago.))
2016-03-17 13:20:20 +01:00
Liu Ming
17e5eb2dee rename ParseMode as ParseContext. 2016-03-17 10:02:50 +08:00
Liu Ming
8cd08728f7 rename ParseMode as ParseContext. 2016-03-17 09:57:59 +08:00
Liu Ming
91a4346a27 rename ParseMode in examples folder. 2016-03-17 09:46:12 +08:00
Liu Ming
b4a9529aed rename ParseMode in examples folder. 2016-03-17 09:46:12 +08:00
Liu Ming
355f349470 make grid as template parameter. 2016-03-04 09:09:38 +08:00
Liu Ming
215a3f24d4 change .LOG to .SATFUNCLOG. 2016-03-02 14:58:37 +08:00
Andreas Lauser
099c958137 fix the deprecation warnings caused by OPM/opm-parser#687 2016-02-21 17:45:56 +01:00
Jørgen Kvalsvik
19e41bd246 Change Deck access methods/types to references
opm-parser#677 changes the return types for the Deck family of classes.
This patch fixes all broken code from that patch set.

https://github.com/OPM/opm-parser/pull/677
2016-02-19 11:55:19 +01:00
Liu Ming
d4ac98fb61 use standard filename for output log file. 2016-02-19 09:35:15 +08:00
Liu Ming
dbabffb91a Add more parser mode options. 2016-01-25 11:13:19 +08:00
Andreas Lauser
a128d49a6d lens problem: some small performance improvements
the changes enable the storage cache and the intensive quantity cache
for all simulators of the lens problem and automatic differentiation
for the one which uses the ECFV discretization.

while the performance improvements are not worthwhile for the problem
in its default incarnation (using automatic diffentiation even
slightly degrades performance), it speeds up linearization by about
30% if the grid exhibits 16 times as many elements (e.g. by passing
the --grid-global-refinements=2) parameter.
2016-01-23 20:35:20 +01:00
Jørgen Kvalsvik
50c1bbdc85 Fixes includes wrt opm-parser PR-656
Several files stopped compiling due to relying on opm-parser headers
doing includes. From opm-parser PR-656
https://github.com/OPM/opm-parser/pull/656 this assumption is no longer
valid.
2016-01-21 09:42:51 +01:00
Andreas Lauser
fd387777b5 make all tests and ebos compile when selecting float or quad as Scalar
at least, they compile as far as eWoms is concerned. Some external
libraries (in particular everything which uses SuperLU) still have
issues.

Also, there seem to be issues with the precision that is achievable
by the Newton method when using float.
2016-01-17 21:15:21 +01:00
Andreas Lauser
855abc09fc change the default grid used for the lens problem back to Dune::YaspGrid
this is because the reference solution changes for newer versions of
dune-alugrid and one of the main purposes of the lens problem is to
allow comparison with Dumux relatively easily. (Dumux usese YaspGrid
for its version of the lens problem.)
2016-01-17 21:15:03 +01:00
Robert Kloefkorn
9c38271ea4 FingerProblem: use shared_ptr to avoid mem leak. 2016-01-08 12:27:05 -07:00
Robert Kloefkorn
47c9b39e3b FingerProblem: bug fix, store pointers of MaterialLaw since copying seems not ot work.
LensProblem: use structuredgridmanager from ewoms/io.
2016-01-08 12:08:04 -07:00
Joakim Hove
833f5d053f Avoid using Deck.
Removed incorrect use of Deck for polymer and solvent properties.
2016-01-08 13:57:37 +01:00
Robert Kloefkorn
c10d4905f7 LensProblem and FingerProblem: use StructuredGridManager. 2016-01-07 15:59:31 -07:00
Robert Kloefkorn
9dd0ebff6b FingerGridManager: use DGF Parser. 2016-01-07 14:55:35 -07:00
Robert Kloefkorn
56b6d4a129 FingerProblem: avoid creating of unused empty grid. 2016-01-07 13:57:37 -07:00
Robert Kloefkorn
503b5038f6 FingerProblem: bug fix, don't use ALUGrid's SFC reordering. 2016-01-07 12:04:18 -07:00
Robert Kloefkorn
b9c0368915 FingerProblem: remove warning. 2016-01-07 11:32:54 -07:00
Robert Kloefkorn
c36cba7660 FingerProblem: restore default values. 2016-01-06 16:41:29 -07:00
Robert Kloefkorn
8526c6c0ea Merge remote-tracking branch 'upstream/master' into PR/ewoms-can-use-dune-fem 2016-01-06 16:21:17 -07:00
Andreas Lauser
877eccb4cc reservoir problem: various improvements
- start with an initial "do nothing" episode of 100 days to get
  hydrostatic conditions.
- after that, produce oil and inject water for 900 days. (thereafter
  the reservoir will be empty.)
- make the problem work with element centered FV discretizations. this
  requires to make the width of the injection/production areas at
  least one cell wide. This is achieved by using the new "WellWidth"
  property which specifies the with of wells as a factor of the total
  domain width.
- make the problem work with fully compositional models. This implied
  to calculate the full composition for the fluid states which specify
  the initial condition and the thermodynamic state at the wells.
- add tests and reference solutions for any combination of the {ECFV,
  VCFV} discretizations and the {black-oil, NCP} models.
2016-01-05 11:54:27 +01:00
Andreas Lauser
f6c835298a rewrite the mechanism to enforce constraint degrees of freedom
- the residual now does not consider constraints anymore
- instead, the central place for constraints is the linearizer:
  - it gets a constraintsMap() method which is analogous to residual()
    but it stores (DOF index, constraints vector) pairs because
    typically only very few DOFs need to be constraint.
- the newton method consults the linearizer's constraint map to update
  the error and the current iterative solution. the primary variables
  for constraint degrees of freedom are now directly copied from the
  'Constraints' object to correctly handle pseudo primary variables.
- the abilility to specify partial constraints is removed, i.e., it is
  no longer possible to constrain some equations/primary variables of
  a degree of freedom without having to specify all of them. The
  reason is that is AFAICS with partial constraint DOFs it is
  impossible to specify the pseudo primary variables for models which
  require them (PVS, black-oil).

  because of this, the reference solution for the Navier-Stokes test
  is updated. the test still oscillates like hell, but fixing this
  would require to implement spatial discretizations that are either
  better in general (e.g., DG methods) or adapted to Navier-Stokes
  problems (e.g., staggered grid FV methods). since both of these are
  currently quite low on my list of priorities, let's just accept the
  osscillations for now.
2016-01-05 11:54:26 +01:00
Andreas Lauser
c0f8fc274d remove partial relinarization
the reasons are the same as for removing linearization recycling but
more so.
2016-01-05 11:54:26 +01:00
Andreas Lauser
5de416e314 remove the linearization recycling
linearization recycling lead to more complex code and -- more
importantly -- frequently caused problems for simulators.
2016-01-05 11:54:26 +01:00
Andreas Lauser
7b2b310131 adapt to the recent blackoil API changes of opm-material 2016-01-04 15:32:55 +01:00
Atgeirr Flø Rasmussen
bfcbd09488 Create and use FlowMainPolymer class. 2015-12-18 13:58:13 +01:00
Atgeirr Flø Rasmussen
b156ce0b55 Create and use FlowMainSolvent class. 2015-12-18 13:58:13 +01:00
Atgeirr Flø Rasmussen
e3ceac44a6 Renamed flowMain.hpp -> FlowMain.hpp. 2015-12-18 13:58:12 +01:00
Atgeirr Flø Rasmussen
abf5443f33 Replace flowMain() function with FlowMain class. 2015-12-18 13:58:12 +01:00
Atgeirr Flø Rasmussen
29d18261c6 Make multisegment flow variants use flowMain(). 2015-12-14 16:11:35 +01:00
Atgeirr Flø Rasmussen
460f0cb451 Use the new flowMain() function.
Also add it to the CMake file list.
2015-12-14 16:11:06 +01:00
Atgeirr Flø Rasmussen
be9b6a3cd2 Unconditionally instantiate the (possibly fake) MPI helper.
This reduces the difference between flow and flow_mpi. For builds
without MPI, the fake helper from Dune is instantiated, which has
the same interface.
2015-12-14 16:07:47 +01:00
Atgeirr Flø Rasmussen
7c5256031c Use GridInit in flow.cpp. 2015-12-14 16:07:47 +01:00
Tor Harald Sandve
e3393c5ee9 Handle combination of threshold_pressure and nnc
The nncs threshold pressures are calculated and appended to the face
threshold pressures
2015-12-08 11:03:05 +01:00
Liu Ming
5ba0742bc9 remove unused object. 2015-12-08 16:02:36 +08:00
Atgeirr Flø Rasmussen
ef07b8daef Update run() calls in polymer fully implicit sims. 2015-12-07 13:45:07 +01:00
Atgeirr Flø Rasmussen
ffc91bc35e Remove unnecessary EclipseState argument from run(). 2015-12-07 13:40:06 +01:00
Arne Morten Kvarving
3ce3b0aac1 move polymer test to tests directory 2015-12-07 10:46:20 +01:00
Arne Morten Kvarving
8808642708 Import examples/ and opm/ from opm-polymer w/ history 2015-12-07 10:45:34 +01:00
Liu Ming
35dff82700 Use OpmLog to output messages.
return messages and opmLog.
2015-12-02 10:58:06 +08:00
Liu Ming
2fc6a037b8 rename variables and remove some unnecessary check and comments. 2015-12-01 13:49:49 +08:00
Kai Bao
38a9dbd9ff parallel running for flow_mutlisegment
SPE9 can be run in parallel now.
2015-12-01 00:06:46 +01:00
Atgeirr Flø Rasmussen
fe4f99a94e Minimise differences between flow.cpp and flow_multisegment.cpp. 2015-12-01 00:06:46 +01:00
Kai Bao
a684c390f5 cleaning up SimulatorFullyImplicitBlackoilMultiSegment_impl 2015-12-01 00:06:46 +01:00
Atgeirr Flø Rasmussen
b9e80c1950 Update flow_multisegment to match thresholdPressure() API change. 2015-12-01 00:06:45 +01:00
Kai Bao
c3b4088448 recovering the compilation after updating opm-parser. 2015-12-01 00:06:45 +01:00
Atgeirr Flø Rasmussen
ae512d5c83 Update location of ErrorMacros.hpp header in includes. 2015-12-01 00:06:44 +01:00
Atgeirr Flø Rasmussen
15fd5dad47 Suppress warnings in the multisegment well code. 2015-12-01 00:06:44 +01:00
Kai Bao
d93b27cedd fixing the compilation due to function interface change.
outputWriter function introduced extra arguments.
2015-12-01 00:06:43 +01:00
Kai Bao
ac0fdda48b A WIP version BlackoilMultiSegmentModel
and also a Simulator Class and example for multisegment wells.
2015-12-01 00:06:42 +01:00
Liu Ming
b4b23bfab0 1. Move implemtation to .cpp file.
2. Delete constructors.
3. Add config.h
2015-11-30 10:11:43 +08:00
Andreas Lauser
976d38bf37 implement abililty to change the geology during the simulation run
i.e. it now supports stuff like MULTFLT in the schedule
section. Possibly, the MPI-parallel code paths need some fixes. (but
if the geology is not changed during the simulation, the parallel code
will do the same as before.)

the most fundamental change of this patch is that the
reference/pointer to the DerivedGeology object is made
non-constant. IMO that's okay, though, becase the geology can no
longer assumed to be constant over the whole simulation run.
2015-11-26 13:35:33 +01:00
Andreas Lauser
e0a1abba09 adapt to the "mutable geology" changes from opm-autodiff 2015-11-26 12:20:15 +01:00
Liu Ming
7fa569bc91 add endpoints scaling consistency check. 2015-11-26 15:22:51 +08:00
Liu Ming
bb92612fec use commandline instead of paramGroup. 2015-11-19 16:08:26 +08:00
Liu Ming
bec412793d use more relax ParseMode. 2015-11-19 13:31:19 +08:00
Liu Ming
d9a2fa6f42 initial RelpermDiagnostics. 2015-11-19 09:21:00 +08:00
Andreas Lauser
cd0f14295e Flash model: do not change the flash tolerance in the model, fix the tests
for some reason, fixing "co2injection_flash_ni_ecfv" required to
disable the linearization recycling. I'm puzzled...
2015-11-18 18:10:04 +01:00
Andreas Lauser
2c97e90a79 make most indices unsigned
(instead of using 'int'.) This triggered quite a few compiler warnings
which are also dealt-with by this patch.
2015-11-18 18:09:56 +01:00
Liu Ming
356a35600f use more non-strict ParseMode. 2015-11-18 15:23:12 +08:00
Atgeirr Flø Rasmussen
324cd80cb7 Merge pull request #151 from andlaus/thpress_from_initial
adapt to the threshold pressure related API changes
2015-11-17 09:03:12 +01:00
Atgeirr Flø Rasmussen
9bf79f6974 Merge pull request #506 from andlaus/thpress_from_initial
adapt to the threshold pressure related API changes
2015-11-17 09:03:08 +01:00
Andreas Lauser
70614e2fd6 adapt to the threshold pressure related API changes
to be able to determine the threshold pressure from the initial
condition it needs to be able to access the initial condition, i.e.,
the initial simulator state, material properties object and gravity
constant need to be passed to the thresholdPressure() function.
2015-11-13 16:09:20 +01:00
Andreas Lauser
4f23ef92e3 adapt to the threshold pressure related API changes
to be able to determine the threshold pressure from the initial
condition it needs to be able to access the initial condition, i.e.,
the initial simulator state, material properties object and gravity
constant need to be passed to the thresholdPressure() function.
2015-11-13 15:38:28 +01:00
Markus Blatt
d29a181336 Adapts flow_solvent to change in redistribution interface. 2015-10-29 16:15:30 +01:00
Markus Blatt
4526cce41b Setup a distributed material law manager and copy values.
Since the refactoring to using opm-material a material law  manager for
the global grid was used. This meant that the properties used for
elements of the local grid were wrong. With this commit we set up a
manager that is based on the local grid only.
2015-10-28 16:39:47 +01:00
Atgeirr Flø Rasmussen
7d2b6481a0 Use moduleVersion() in startup message. 2015-10-28 16:26:12 +01:00
Atgeirr Flø Rasmussen
bb7530edc3 Add and use moduleVersion() utility. 2015-10-23 11:25:06 +02:00
Joakim Hove
0a7c778c36 Changes to solver approach configuration:
1. Added new parameter group string: "solver_approach" which can take
    the values {direct, cpr, interleaved}.

 2. Hierarchy:

    i   If a value is set in the parameter group that takes absolute
        presedence.

    ii  If the Eclipse input deck asks for CPR - you get CPR.

    iii You get the flow default - currently interleaved.
2015-10-21 13:01:44 +02:00
Robert Kloefkorn
5fb9c9e74e ArtGridManager: removed
DgfGridManager: added capability to handle fractures.
2015-10-20 14:40:18 +02:00
Robert Kloefkorn
c58713e92c [bugfix] avoid use of sfc for ALUGrid. 2015-10-20 14:40:18 +02:00
Atgeirr Flø Rasmussen
9cbae76d06 Merge pull request #503 from babrodtk/openpm_experiment
Added/fixed comments
2015-10-20 09:32:30 +02:00
André R. Brodtkorb
d43b88af76 Added/fixed comments 2015-10-20 09:30:06 +02:00
Atgeirr Flø Rasmussen
98a3d1675a Merge pull request #454 from babrodtk/openpm_experiment
Parallel assembly (partial)
2015-10-19 15:32:50 +02:00
André R. Brodtkorb
40d2262f8e Fixed typo 2015-10-19 14:25:45 +02:00
Andreas Lauser
651bd91482 use the error macros from opm-common 2015-10-12 15:24:59 +02:00
Atgeirr Flø Rasmussen
df668cc5e7 Merge pull request #497 from andlaus/error_macros_to_opm_common
Error macros to opm common
2015-10-12 13:31:54 +02:00
Markus Blatt
82a73d969e Renamed flow_cp to flow_mpi 2015-10-12 10:59:01 +02:00
Andreas Lauser
72b0cb2c3e use the error macros from opm-common 2015-10-08 12:08:28 +02:00
Andreas Lauser
13fd63e2b3 use the error macros from opm-common 2015-10-08 11:42:15 +02:00
Andreas Lauser
d41f989a78 use the error macros from opm-common 2015-10-08 11:42:15 +02:00
Andreas Lauser
6b2bf9a100 lens problem: make it easily switchable between ALUGrid and YaspGrid
"easily" is a relative measure and means "easy in the C++ code". it
works by setting the LENS_USE_ALUGRID define in lensproblem.hh.
2015-10-07 18:52:35 +02:00
Joakim Hove
76f674b16b Updated path to warning suppression header. 2015-10-06 12:11:49 +02:00
babrodtk
57c95ecf00 Added missing endline to printout 2015-10-02 10:37:08 +02:00
babrodtk
c991ba8188 Added default setting for number of threads 2015-10-02 10:37:08 +02:00
Bård Skaflestad
13df018745 Follow API update of BlackoilOutputWriter
The constructor of class BlackoilOutputWriter gained a new parameter
in commit OPM/opm-autodiff@299b0aa (OPM/opm-autodiff#484).  Honour
new API requirement.
2015-09-30 11:01:01 +02:00
Andreas Lauser
3720246c7d adapt to the simplifications of the blackoil PVT API in opm-material 2015-09-29 14:47:23 +02:00
Robert Kloefkorn
299b0aa3cf ParallelDebugOutput: fix initialization of wells for the I/O rank. 2015-09-21 14:05:35 +02:00
Robert Kloefkorn
591a6e86fe flow_solvent: create BlackoilWriter after grid has been partitioned. 2015-09-16 12:40:41 +02:00
Robert Kloefkorn
326faa99d7 ParallelDebugOutput: make the output in ecl format work in parallel by communicating
to an io rank and then proceed with serial output.
2015-09-16 09:48:22 +02:00
Atgeirr Flø Rasmussen
72509968b8 Update for changes in SaturationPropsFromDeck. 2015-09-14 15:07:45 +02:00
Atgeirr Flø Rasmussen
23c28201a5 Update for changes in SaturationPropsFromDeck. 2015-09-14 15:05:32 +02:00
Atgeirr Flø Rasmussen
62d633a8ff Update for removed constructor args. 2015-09-14 10:32:07 +02:00
Atgeirr Flø Rasmussen
608ba47823 Update for removed constructor args. 2015-09-14 10:27:58 +02:00
Robert Kloefkorn
dc90cb934b CartesianIndexMapper: use the CartesianIndexMapper to applied the mapping from the
Cartesian coordinate to the flat index and vice versa.
2015-09-10 16:01:53 +02:00
babrodtk
466f1947a3 Fixed Eigen 3.3 compatibility 2015-09-07 13:01:31 +02:00
babrodtk
6a6a1d5280 Fixed warnings 2015-09-07 13:00:41 +02:00
babrodtk
171cbbe3bb Fixed sim_simple.cpp 2015-09-07 13:00:41 +02:00
Tor Harald Sandve
18d429ebff Use CPR as fall back if use_interleaved=false 2015-09-07 06:08:13 +02:00
Tor Harald Sandve
fd48a6e004 Change defaults
Use the more stable interleaved solver instead of CPR as default
Solve well equation initially as default
2015-09-03 12:38:03 +02:00
Atgeirr Flø Rasmussen
59fccb2f86 Merge pull request #422 from andlaus/satfunc_refactoring
add a few missing "#include <Evaluation.hpp>"
2015-09-02 15:23:16 +02:00
Andreas Lauser
5eef205551 only initialize the satfuncs once
this makes the main files more similar to the primary simulator (i.e., flow.cpp)
2015-09-02 14:56:38 +02:00
Andreas Lauser
73710a01d2 move the code which creates a compressed to cartesian cell index map to a separate free function 2015-09-02 14:50:41 +02:00
babrodtk
5b287e0ea8 Fixed warnings 2015-09-02 13:02:27 +02:00
Andreas Lauser
0e5d8da66b adapt to the change of the API due to using compressed instead of cartesian indices 2015-09-02 12:32:41 +02:00
Andreas Lauser
a394af6734 flow: initialize the parameters for the material law only once
this saves some memory and some time at initialization.
2015-09-02 12:32:41 +02:00
Bård Skaflestad
994e342d7b Restore build of flow_polymer
Function Opm::thresholdPressures() gained a new ParseMode parameter
in commit OPM/opm-core@09aa2b7 (PR OPM/opm-core#857).  Chase updated
call interface.
2015-08-25 09:30:44 +02:00
Fredrik Gundersen
6c85751d91 Added suport for new Threshold Pressure behavior 2015-08-24 15:41:32 +02:00
Tor Harald Sandve
cca5410ebb Fix minor comments in PR#425 2015-08-18 07:24:08 +02:00
Tor Harald Sandve
3b99338bd0 Rename Extended to Solvent
- classes and files are renamed to use solvent instead of extended in
their names.
2015-08-18 07:24:08 +02:00
Tor Harald Sandve
7c3f184d43 Rename simulator from flow_extended to flow_solvent 2015-08-18 07:24:08 +02:00
Tor Harald Sandve
86afb1bbf6 Update to new parserMode interface 2015-08-18 07:24:08 +02:00
Tor Harald Sandve
a5f625f541 Add parsermode to EclipseState 2015-08-18 07:24:08 +02:00
Tor Harald Sandve
17cddaf126 Add support for solvent properties
-surface density are specified using the Eclipse keyword SDENSITY
and the pvt properties (viscosity (mu) and formation volume factor (b)
using PVDS
2015-08-18 07:24:08 +02:00
Tor Harald Sandve
971e7e19cb Add simple solvent model
assumes:
- solvent is immiscible in the oil phase
- gas pvt and relperms are used for the solvent
- no initial solvent in the model

Solvent is injected using the WSOLVENT keyword
TODO: Make it possible to change WSOLVENT
2015-08-18 07:24:08 +02:00
Joakim Hove
6680279815 Using new string based ParseMode api. 2015-08-09 22:18:36 +02:00
Robert Kloefkorn
8dc97d54ca RestrictProlong: take problem parameters into account that depend on grid elements. 2015-08-07 19:49:50 +02:00
Robert Kloefkorn
b8b703cc2d FingerProblem: use PersistentContainer to store material laws. 2015-08-07 16:37:06 +02:00
Joakim Hove
796a34bebe Updated to use ParseMode. 2015-08-06 15:56:51 +02:00
Joakim Hove
b94d5a135d Updated to use ParseMode. 2015-08-06 15:56:51 +02:00
Joakim Hove
23b3670c1e Updated to use ParseMode. 2015-08-06 15:56:51 +02:00
Andreas Lauser
4c8b0524f1 finger problem: provide a version that used the ECFV discretization
and some assorted cleanups.
2015-08-06 15:24:56 +02:00
Andreas Lauser
8a6133b1b8 add a unit test for adaptivity that uses the finger problem 2015-08-06 13:48:38 +02:00
Andreas Lauser
5de508135a multiphase adaption criterion: some improvements
now all phases are considered and a potential division by zero (if all
the saturations of a phase are zero) is avoided.
2015-08-06 13:48:38 +02:00
Andreas Lauser
408afe74fe make the tests compile again
they were broken by the grid adaptation/Dune-FEM changes.
2015-08-06 13:48:37 +02:00
Andreas Lauser
4527aca9d3 Merge commit 'refs/pull/23/head' of github.com:OPM/ewoms
* github.com:OPM/ewoms:
  adaptation works, needs revision.
  [dune-fem] using discrete function works.
  some further work on grid adaptivity
  dune.module: add dune-fem as a noptional dependency

Conflicts:
	ewoms/common/start.hh
	ewoms/io/basegridmanager.hh
	ewoms/parallel/mpihelper.hh
2015-08-06 11:15:48 +02:00
Joakim Hove
7bd36a6b65 Addde ParseMode argument to parse and EclipseState 2015-08-05 14:18:05 +02:00
Joakim Hove
71f3cc9c64 Added ParseMode argument 2015-07-27 13:53:11 +02:00
Atgeirr Flø Rasmussen
6494dee820 Pass parallel info to NewtonIteration... classes. 2015-07-16 14:32:36 +02:00
Robert Kloefkorn
bdb30ec023 GeoProps: fix the use_local_perm implementation for flow_cp. The problem that the
faceNormals are scaled differently remains.
2015-07-08 13:15:00 +02:00
Robert Kloefkorn
34429b60f1 [bugfix] CpGrid does not yet work with use_local_perm. 2015-06-30 14:28:01 +02:00
Robert Kloefkorn
5b51a5b7b1 Merge remote-tracking branch 'upstream/master' into PR/merge-flow-and-flow_cp 2015-06-30 13:39:03 +02:00
Andreas Lauser
501db847cd remove our own fork of Dune::MPIHelper
this is not needed anymore because the grid manager is no longer a
singleton and the grid is thus is always destructed before
MPI_Finalize() is called.
2015-06-19 21:01:08 +02:00
Andreas Lauser
438acf34b7 improve the doxygen documentation
the module hierarchy should now even be mildly useful.
2015-06-19 13:20:19 +02:00
Atgeirr Flø Rasmussen
5002fe1e37 Add use_interleaved option to flow_cp. 2015-06-19 10:53:33 +02:00
Atgeirr Flø Rasmussen
5d0f654443 Add class NewtonIterationBlackoilInterleaved.
Initially it is just a copy of the NewtonIterationBlackoilCPR class.
Also, add use_interleaved parameter to use the class.
2015-06-19 10:53:32 +02:00
Andreas Lauser
d9e3a6d919 re-add the emacs and vim modelines to all source files
this makes things easier and IMHO these two lines do not cause any
disturbance.
2015-06-18 13:43:59 +02:00
Robert Kloefkorn
2d7045b9cd remove shared_ptr. 2015-06-18 13:29:17 +02:00
Robert Kloefkorn
ee47f2887b define preprocessor variables to 1. 2015-06-17 16:34:48 +02:00
Robert Kloefkorn
10725c0b70 Merged main program for flow and flow_cp to avoid code duplication. 2015-06-17 13:00:37 +02:00
chflo
08a079b4ff OPM-212: Added optional cmd parameter override of IOCOnfig Restart setting 2015-06-15 15:36:57 +02:00
Robert Kloefkorn
ff9e5ba4cf adaptation works, needs revision. 2015-06-09 23:59:57 +02:00
Kai Bao
f92459807c adding flags for SHRATE to Model and Simulator. 2015-06-05 15:25:23 +02:00
Kai Bao
cf17dbea38 correct the order of PLYSHLOG and polymer flags.
In flow_polymer.cpp
2015-06-01 14:36:41 +02:00
Kai Bao
c6e240daae Adding the flag for PLYSHLOG keyword. 2015-06-01 10:52:49 +02:00
Atgeirr Flø Rasmussen
79b861db10 Silence multiple warnings. 2015-05-29 16:31:32 +02:00
Andreas Lauser
2b085e0062 fully implicit simulators: various cleanups
these are mostly stylistic: the function bodies of most new methods
have been moved to the _impl.hpp file and the Simulator classes are
now templated on the grid type, so it should be not too hard to switch
them to Dune::CpGrid.
2015-05-29 12:59:40 +02:00
Andreas Lauser
d27fb2bc45 properly use the SimulatorBase class for SimulatorFullyImplicitBlackoilPolymer and SimulatorFullyImplicitCompressiblePolymer 2015-05-28 13:56:07 +02:00
Andreas Lauser
0f1a7a16d7 unify the run() methods and the constructors of the 2p-compressible and the flow_polymer with the one from flow 2015-05-28 13:56:07 +02:00
Andreas Lauser
a816ab9a0c start to use the SimulatorBase class for SimulatorFullyImplicitCompressiblePolymer
since SimulatorFullyImplicitCompressiblePolymer is now a template, the
opaque pointer stuff is also removed and the contents of the .cpp file
basically became _impl.hpp. for SimulatorFullyImplicitBlackoilPolymer,
the opaque pointer stuff was removed for the same reasons as for
SimulatorFullyImplicitBlackoil.

the actual unification of code is not yet done, but this patch points
out the direction of where this will go.

Also note that some synchronization with the ordinary blackoil
simulator (FLOW) was necessary to make it compile.

Finnally, the parser currently likes to throw an exception (also for
the opm-polymer master) when eating the opm-data polymer test
case. This prevented me from properly testing this patch:

```
and@heuristix:~/src/opm-polymer|simplify_simulator > ./bin/flow_polymer deck_filename=/home/and/src/opm-data/polymer_test_suit/simple2D/2D_THREEPHASE_POLY_HETER.DATA

================    Test program for fully implicit three-phase black-oil flow     ===============

---------------    Reading parameters     ---------------
deck_filename found at /, value is /home/and/src/opm-data/polymer_test_suit/simple2D/2D_THREEPHASE_POLY_HETER.DATA
output not found. Using default value 'true'.
output_dir not found. Using default value 'output'.
Program threw an exception: IOConfig: Reading GRIDFILE keyword from GRID section: Output of GRID file is not supported
terminate called after throwing an instance of 'std::runtime_error'
  what():  IOConfig: Reading GRIDFILE keyword from GRID section: Output of GRID file is not supported
Aborted
```
2015-05-28 13:56:07 +02:00
Andreas Lauser
2b4d70e3d9 some minor fixes
i.e., removing redundant namespace open- and closings due to the fact
that the property system now resides in the 'Ewoms' namspace instead
of in 'Opm', and making the headercheck work for all headers.
2015-05-21 16:19:13 +02:00
Andreas Lauser
46bd76407d make the ECFV simulator for the Richards-lens problem use AD
for the Richards model we can't use the CO2 injection problem because
this problem cannot be simulated by the Richards model. (Well,
strictly speaking the Richards model *can* simulate it, but it would
only produce garbage because the assumptions of the Richards model are
violated by that problem.)
2015-05-21 16:19:04 +02:00
Andreas Lauser
06700f77d7 make the simulator for the co2injection problem which uses the non-isothermal flash model with ECFV use automatic differentiation 2015-05-21 16:19:00 +02:00
Andreas Lauser
318dc70e77 make the simulator for the co2injection problem which uses the non-isothermal NCP model with ECFV use automatic differentiation 2015-05-21 16:18:56 +02:00
Andreas Lauser
7a01904f9f make the simulator for the co2injection problem which uses the non-isothermal PVS model use automatic differentiation 2015-05-21 16:18:51 +02:00
Andreas Lauser
528c2a8350 make the CO2 injection problem usable with AD
and use automatic differentiation for the simulator of the non-isothermal
immiscible co2 injection problem.
2015-05-21 16:18:40 +02:00
Andreas Lauser
2cef2a54f2 make the common parts of the discretizations AD aware
this works by introducing a splice called "LocalLinearizerSplice". The
the current local linearizer (which is based on the finite difference
method) is the default and can be set explicitly by setting the splice
to "FiniteDifferenceLocalLinearizer", the new linearizer using
automatic differentiation can be selected by setting the splice to
"AutoDiffLocalLinearizer".
2015-05-21 16:18:29 +02:00
Andreas Lauser
beeddb0a05 add a test for the Richards model using the ECFV discretization 2015-05-21 16:18:22 +02:00
Andreas Lauser
8e1d8ff5ea minimal changes which are required to make it compile with the local-AD opm-material module 2015-05-21 16:18:20 +02:00
Atgeirr Flø Rasmussen
98fd744c29 Merge pull request #100 from edbru/OPM-186
Now also flow_polymer.cpp in project opm-polymer takes the NOSIM keyword...
2015-05-18 12:53:10 +02:00
Atgeirr Flø Rasmussen
052cf09495 Merge pull request #378 from blattms/less-verbose-parallel-runs
Prevent printing stats on more than 1 process for CPR.
2015-05-15 15:38:55 +02:00
Markus Blatt
f4ff1ea4c4 Added missing explicite braces around if branch. 2015-05-15 15:10:42 +02:00
Markus Blatt
0cd174f246 Adds spaces to binary operator. 2015-05-15 14:58:06 +02:00
Markus Blatt
f0691504af Prevent printing stats on more than 1 process for CPR. 2015-05-08 13:15:59 +02:00
Markus Blatt
1fbe8e3b6d Distribute the geology information.
As it turns out initializing the Geology on a distributed grid
result in wrong values for e.g. saturation. Therefore with this
commit we resort to initializing the global geology and distribute
it using communication.
2015-05-07 12:21:06 +02:00
Atgeirr Flø Rasmussen
db06fa48f5 Merge pull request #374 from babrodtk/throw_causes_core_dumped
Changed throw in main() to return EXIT_FAILURE
2015-05-06 12:41:39 +02:00
babrodtk
aab8d2a008 Added missing include 2015-05-06 08:38:49 +02:00
babrodtk
fb99528673 Changed OPM_THROW to return EXIT_FAILURE in flow_cp.cpp 2015-05-06 08:38:18 +02:00
babrodtk
9edbf38439 Changed throw in main() to return EXIT_FAILURE 2015-05-05 15:48:58 +02:00
babrodtk
9f23ce7dbc Reformated flow header to fit 80 columns 2015-05-05 15:25:55 +02:00
Markus Blatt
c57a10ff76 [bugfix] Use full set of processes to determine whether to redistribute or not.
Previously we used the size of the communicator within the CpGrid to check
whether we are running in parallel and need to redistribute the grid.
Unfortunately, this is MPI_COMM_SELF until we actually loadbalance and redistribute.
Therefore we now use the size of the MPI_Helper (i.e. MPI_COMM_WORLD) which
gives us the number of all available processes.

Note that the wrong behaviour was provoked with 656e5de331. Before that we
redistributed in any case which luckily included runs with more than 1 process.
2015-04-30 14:02:13 +02:00
Andreas Lauser
216508ef13 use the infrastructural code using its new locations 2015-04-28 13:38:28 +02:00
Edvin Brudevoll
58367e20fd Now also flow_cp.cpp takes the NOSIM keyword into account. 2015-04-28 10:22:36 +02:00
Edvin Brudevoll
7aa8d91f2d New commit, NOSIM keyword 2015-04-28 10:17:44 +02:00
Edvin Brudevoll
0d1cce2f26 Support for the NOSIM keyword. 2015-04-28 10:17:44 +02:00
Atgeirr Flø Rasmussen
2eb06d6d6c Use more appropriate end-of-sim timing output. 2015-04-21 10:42:40 +02:00
Kai Bao
807c528bef Removing a white space. 2015-04-15 16:56:05 +02:00
Kai Bao
fc36bc866a Accept single deck filename as command line argument. 2015-04-15 16:48:36 +02:00
Kai Bao
8c67dddf90 Adding the startup message for flow-polymer.
Three letters wider than flow.
2015-04-15 16:38:56 +02:00
Edvin Brudevoll
d300cb6eb6 Now also flow_polymer.cpp in project opm-polymer takes the NOSIM keyword into account. 2015-04-15 14:17:40 +02:00
Atgeirr Flø Rasmussen
378f5d7319 Make some programs stricter about parameter parsing.
This applies to programs which always require at least one parameter.
2015-04-14 15:32:19 +02:00
Atgeirr Flø Rasmussen
e44ef09212 Accept single deck filename as command line argument.
Any argument that is not handled by the parameter parser will
be assumed to be a deck filename. Only one is accepted, and if
given, it will override any deck_filename=<something> on the
command line or in parameter files.

FYI:
The parameter parser handles arguments of the following types:
    key=value (note no space around = or in strings)
    parameterfile.xml
    parameterfile.param
2015-04-14 13:37:25 +02:00
Atgeirr Flø Rasmussen
c4655d7c00 Modify startup message, include version number. 2015-04-14 13:31:39 +02:00
Atgeirr Flø Rasmussen
22391ad144 Provide nicer startup message that includes opm-project URL. 2015-04-14 12:53:34 +02:00
Atgeirr Flø Rasmussen
656e5de331 Bugfix: distribute only if comm size is strictly > 1. 2015-04-08 10:16:25 +02:00
Andreas Lauser
ba4fca5a77 Revert "also pass the deck to the output writer"
This reverts commit 88730e855f.
2015-03-31 12:11:45 +02:00
Andreas Lauser
239547e794 Revert "pass the deck to the output writer"
This reverts commit 71987ae3b038c141a673ae1c1037f63ed695e595.
2015-03-31 12:10:16 +02:00
Andreas Lauser
206d7b56e4 pass the deck to the output writer 2015-03-26 17:33:20 +01:00
Andreas Lauser
88730e855f also pass the deck to the output writer 2015-03-26 17:33:13 +01:00
Liu Ming
f23f5fac8e rename sim_poly_fibo_ad to flow_polymer. 2015-03-24 17:06:32 +08:00
Liu Ming
b4d834508c Updates FIBOPOLYMER simulator based on flow simulator.
Rename sim_poly_fibo_ad to flow_polymer.
2015-03-24 15:07:25 +08:00
Atgeirr Flø Rasmussen
04b255a03f Make more use of move semantics in AD code.
This makes some API changes to AutoDiffBlock.
 - Add overload for the constant() constructor taking rvalue ref.
 - Add overload for the variable() constructor taking rvalue ref.
 - Make the function() constructor *require* rvalue refs.
 - Add a swap() function.

The remaining changes in this commit are follow-ups especially
to the third change (adding std::move in many places), and
some removal of unnecessary block pattern arguments from calls to
the constant() static method.
2015-03-16 14:22:32 +01:00
Atgeirr Flø Rasmussen
ae31c034b6 Fix compile error instroduced by merging #275.
Moved output directory code near top again, changed rank query
to use Dune::MPIHelper instead of the grid.
2015-03-09 09:37:16 +01:00
Joakim Hove
9b7d84bd9f ERT-830: Using OpmLog instead of explicit logger 2015-03-09 08:00:13 +01:00
Andreas Lauser
d80fed167f Newton method: reduce extent of copy and paste programming
now the generic part of the update of the solution vector is done in
the base class and the derived classes can chose to only do the update
of the primary variables of the individual DOFs.
2015-03-01 15:51:04 +01:00
Atgeirr Flø Rasmussen
c6d38f543c Rename sim_fibo_ad[_cp] -> flow[_cp].
In line with the decision we made to use "flow" as name for the
fully implicit black-oil simulators.
2015-02-27 12:35:03 +01:00
Atgeirr Flø Rasmussen
d9ce8625cf Remove unused classes.
After this, the two affected tests fail due to bugs in PVT region
support in BlackoilPropsAdFromDeck.
2015-02-23 13:42:51 +01:00
Atgeirr Flø Rasmussen
eb89236552 Merge pull request #317 from blattms/generic-equil
Modified sim_fibo_ad_cp to also allow running with EQUIL keyword.
2015-02-20 18:24:05 +01:00
Markus Blatt
9517dc08b3 Do not print message about querying output parameter for p>0. 2015-02-20 15:47:57 +01:00
Markus Blatt
4b110fb00b Fixes missing indentation. 2015-02-20 15:44:28 +01:00
Markus Blatt
007acfe018 Modified sim_fibo_ad_cp to also allow running with EQUIL keyword.
With now generic implementation of the initStateEquil in opm-core
we added the necessary grid helper functionlality for CpGrid and activated
the processing if the EQUIL keyword is there.
2015-02-20 12:23:35 +01:00
Markus Blatt
d35d301a4b Print status output only on rank 0 for parallel runs. 2015-02-20 11:35:47 +01:00
Atgeirr Flø Rasmussen
fec50b491a Merge pull request #311 from totto82/fix_verticalscaling
Apply the swatinit scaling to new_props
2015-02-19 11:29:00 +01:00
Markus Blatt
5e72774b89 Remove the unsused grid members from BlackoilPropsDataHandle.
Previously BlackoilPropsDataHandle did hold a grid for sending
and receiving that were either not used or we could prevent their
usage. Therefore this commit removes them from the class and queries
all needed information from the property objects.
2015-02-19 09:35:18 +01:00
Tor Harald Sandve
44e9d2a34e Fix PR comments
1) swatinit() is changed to setSwatInitScaling() to make it obvious that
we are modifying the props.
2) the descriptions of saturation and pc now makes more sense
3) the method is removed from the sibling class and the interface and
the type of new_props is changed from BlackoilPropsAdInterface to
BlackoilPropsAdFromDeck
5) The same modification is added to sim_fibo_ad_cp
2015-02-19 08:34:55 +01:00
Tor Harald Sandve
013d1d3499 Apply the swatinit scaling to new_props
The capillary pressure function in new_props is scaled to match the
capillary pressure function in props.

This is a temporary workaround while the simulator uses two different
property object.
2015-02-19 08:18:39 +01:00
Atgeirr Flø Rasmussen
75d98c7e3b Remove uneeded function argument. 2015-02-17 13:40:09 +01:00
chflo
8870da536d OPM-166: opm-core method thresholdPressures signature has changed 2015-02-17 10:12:37 +01:00
chflo
82839f9580 opm-166: Fix due to signature change in method thresholdPressures 2015-02-17 09:53:57 +01:00
Markus Blatt
684da9aa84 Throw an excpetion if either eclipse or matlab output is activated. 2015-02-16 11:52:50 +01:00
Markus Blatt
f19a83bbda Remove superluous casts. 2015-02-16 11:40:49 +01:00
Markus Blatt
3575fdce6a Removes stackobject_to_heap. 2015-02-16 11:24:05 +01:00
Markus Blatt
60cdc583ae Make right hand passed to the linear solver consistent.
Previously, we had to use two layers of overlap cells such the
innermost layer contains the rightvalues automatically (as it is
surrounded by internal edges). No we use communication to get
the correct values in the whole overlap region and one layer
suffices as it should.
2015-02-12 21:33:41 +01:00
Markus Blatt
01ea7bacba Adds data redistribution capabilities and makes sim_fibo_ad_cp parallel.
With this commit we add the possibility to start with a global representation
of a simulator that is read on each process and afterwards this presentation
is redistributed among the processors together with the properties and
state data needed to initialize the simulation.

There still is no parallel well handling and no parallel output. But with the
equilibrium example of @dr-robertk and deactivated output we can already
perform parallel runs.
2015-02-12 21:33:41 +01:00
Markus Blatt
be7221aa9b Moved output parameters to the end of the list in extractParallelGridInformationToISTL 2015-02-12 10:41:44 +01:00
Markus Blatt
221565f038 Enable the use of parallel dune-istl solvers.
As with opm-core we use boost::any to provide additional
information about a parallel run. It is used to set a
ParallelISTLInformation object and and fill it with the
information obtained from a parallel Cpgrid.

Note that the simulator currently compiles sucessfully. Still,
we have to test the runs and do debugging.
2015-02-12 10:41:43 +01:00
Andreas Lauser
f66fcbde46 adapt to the new PVT API of the black oil fluid system 2015-02-05 16:14:07 +01:00
Robert K
2068b7ea16 Revision of black oil output. Put everything into a class following the OutputWriter
interface.
2015-02-05 14:39:47 +01:00
Atgeirr Flø Rasmussen
9cb9ec50b1 Rename directory opm/core/tof -> opm/core/flowdiagnostics. 2015-02-03 21:44:24 +01:00
Liu Ming
74332085dc change PolymerInflow constructor interface due to commit 6628941c9c9d781db9ec8e3ac05a3a8dc49dcf21 in opm-parser. 2015-01-27 12:24:26 +08:00
Andreas Lauser
1d01fa1c8a reservoir problem: adapt for the setWaterViscosity() -> setWaterReferenceViscosity() rename 2015-01-26 12:55:37 +01:00
Andreas Lauser
18a582a88c Revert "rename {gil,gas}FormationVolumeFactor to \1FormationFactor"
This reverts commit c6c271f3ee. After a
more thorough investigation, the cannonical name of these quantities
turned out to be "* formation volume factor"...
2015-01-26 11:55:37 +01:00
Andreas Lauser
c6c271f3ee rename {gil,gas}FormationVolumeFactor to \1FormationFactor
this is the eWoms part of the rename...
2015-01-25 18:22:42 +01:00
Andreas Lauser
09cf9dc93b fix the quadruple precision stuff
this also fixes the SuperLU backend with __float128 on Dune 2.4. The
problem is that due to some hacks within dune-istl, the AMG solver
can't be used because it calls the direct solver directly without an
option to disable this. (This could be fixed in a similar fashion as
the SuperLU backend by copying everything into data structures which
use 'double' before calling into ISTL, but this is a thing for another
time.)
2015-01-06 13:45:33 +01:00
Andreas Lauser
506d14b2e4 rename "velocity modules" to "flux modules"
that's because these modules do not necessarily use a velocity to
calculate fluxes...
2015-01-05 15:25:19 +01:00
Atgeirr Flø Rasmussen
b54f4f0e2a Add a utility for actually running the eikonal solver. 2014-12-29 12:28:30 +01:00
Andreas Lauser
5389c9fdfb use BiCGStab-ILU0 as the linear solver for the lens problem
... and use the parallel AMG solver for the CO2 injection problem.

this makes performance comparisions with Dumux much easier as the
solver performance should be more similar.
2014-12-21 18:40:59 +01:00
Andreas Lauser
29a2123642 rename *JacobianAssembler to *Linearizer
because this describes better what this class is doing...
2014-12-20 00:15:59 +01:00
Atgeirr Flø Rasmussen
e52af158fc Fix call to DerivedGeology constructor.
New argument to constructor was not provided, still compiled
due to default argument.
2014-12-17 11:32:20 +01:00
Atgeirr Flø Rasmussen
5ae5525209 Revert "register the transmissibilities at the EcliseWriter" 2014-12-17 10:18:23 +01:00
Atgeirr Flø Rasmussen
1348658507 Merge pull request #249 from totto82/locTrans
Compute half transmissibilities based on local coordinate system
2014-12-17 00:20:11 +01:00
Atgeirr Flø Rasmussen
f8ad85d83e Merge pull request #241 from andlaus/write_transmissibilities
register the transmissibilities at the EcliseWriter
2014-12-16 23:35:26 +01:00
Andreas Lauser
df60eecb2c fix build by always including the DGF parser for a given grid 2014-12-16 12:39:32 +01:00
Robert K
0b5db84085 DGFParser: avoid SGrid deprecation warning. 2014-12-16 10:39:35 +01:00
Joakim Hove
78ba6760da ERT-747: Renamed ParserLog -> Logger 2014-12-15 12:23:09 +01:00
Andreas Lauser
a74a4d2f6e fix the dune 2.4 deprecation warnings
mainly this boils down to mapper.map(e) -> mapper.index(e)
2014-12-12 14:32:29 +01:00
Atgeirr Flø Rasmussen
a20f0291a1 Merge pull request #81 from qilicun/wpolymer_schedule
add new polymerInflow constructor, get polymer injection rate from schedule section
2014-12-12 09:38:34 +01:00
Tor Harald Sandve
02724b7f7a Implement comments for PR#249
1) Add the possibility for the user to chose between local and global
coordinate permeability in the transmissibility calculations.
2) Trow for CpGrid
3) Add default for switch
2014-12-10 07:29:05 +01:00
Andreas Lauser
47fe10e8fb adapt to the removal of the "strict parsing" concept 2014-12-09 14:20:26 +01:00
Andreas Lauser
69c4a6d591 adapt to the removal of the "strict parsing" concept 2014-12-09 14:18:42 +01:00
Andreas Lauser
a8d5c72248 move everything which is ECL specific to applications/ebos
this helps to keep the core blackoil model code lean and mean and it
is also less confusing for newbies because the ECL blackoil simulator
is not a "test" anymore.

in case somebody wonders, "ebos" stands for "&eWoms &Black-&Oil
&Simulator". I picked this name because it is short, a syllable, has
not been taken by anything else (as far as I know) and "descriptive"
names are rare for programs anyway: everyone who does not yet know
about 'git' or 'emacs' and tells me that based on their names they
must be a source-code managment system and an editor gets a crate of
beer sponsored by me!
2014-11-28 13:01:32 +01:00
Andreas Lauser
1c35bb702f ECL problem: set the connate water saturation 2014-11-27 18:59:40 +01:00
Andreas Lauser
6496824546 ECL problem: make the code which converts gas to oil saturations a bit easier to read
This code is required in the first place because opm-material always
specifies all parameters in terms of the wetting saturations while the
gas is the non-wetting phase in a gas-oil system.
2014-11-27 18:42:19 +01:00
Bård Skaflestad
c69b2fd8ed Include <config.h> to fix build on GCC 4.8
GCC 4.8 provides 'nullptr' in C++11 mode.  That capability is
detected at configuration time and stored in <config.h> and we need
it when targeting Dune 2.2.1 to avoid diagnostics of the form

  [...]/dune/common/nullptr.hh:27:1:
  error: expected ‘;’ after class definition
   } nullptr = {};              // and whose name is nullptr
    ^

  [...]/dune/common/nullptr.hh:27:1:
  error: qualifiers can only be specified for objects and functions
  [...]/dune/common/nullptr.hh:27:3:
  error: expected unqualified-id before ‘nullptr’
   } nullptr = {};              // and whose name is nullptr
2014-11-27 15:12:56 +01:00
Joakim Hove
29a0c723ef Python class TransGraph to load json from opm_init_check 2014-11-26 14:56:45 +01:00
Joakim Hove
ad92edab89 Added opm_init_check to compare OPM and Eclipse. 2014-11-26 14:56:45 +01:00
Andreas Lauser
a6d5223113 write ECL summary files for wells
so far, the units of the values written to disk are always what
Eclipse calls METRIC and the number of supported quantities is
somewhat limited...
2014-11-25 17:03:20 +01:00
Andreas Lauser
9e93fa2298 register the transmissibilities at the EcliseWriter
missing: the simulator using dune-cornerpoint. Once again, this is
because there is no good way to convert an intersection to a unique
global index (yet).
2014-11-21 13:20:53 +01:00
Liu Ming
9303e41966 add new polymerInflow constructor, get polymer injection rate from schedule section. 2014-11-20 16:32:02 +08:00
Andreas Lauser
d0c14f7406 add the general framework for specifying auxiliary equations.
this does not disrupt the block nature of the linearized matrix
(i.e. Dune::BCRSMatrix is still used), but if the number of auxiliary
equations is smaller than that of the "main" discretization, the
superfluous equations are padded. if the number of additional
equations are larger than that of the equation, additional DOFs are
added.
2014-11-18 17:51:38 +01:00
Andreas Lauser
3a892ff896 improve the ECL well model
the biggest change is that it is now based on a new approach: the well
model now always calculates the bottom hole pressure for the full well
when asked for a source term. This change makes it possible to
implement cross flow within wells properly and should also make the
well model physically correct.

Also, the well model now uses the connection transmissibility factor
which makes it possible to use this quantity if it is specified by the
deck...
2014-11-18 17:51:38 +01:00
Liu Ming
ac764bd8a8 let sim_poly_fi2p_comp_ad works as the same way as sim_poly_fibo_ad.
- move time iteration to simulator class
 - add EclipseWriter and output Eclipse binaries.
 - add DeckConstPtr for polymer inflow.
2014-10-29 13:23:50 +08:00
Liu Ming
a23e4ca63b remove historical and un-used files. 2014-10-28 14:28:34 +08:00
Liu Ming
5242d6bbf7 move time iterations to Simulator class and pass deck to create polymer inflows.
This should solve the issues: write the final state to eclipse binaries.
2014-10-28 13:14:44 +08:00
Tor Harald Sandve
d0fc3eba77 Remove the check if porv is present in the Eclipsestate
The porv is computed if needed and the Eclipsestate will return false on
this test before it is called.

This commit applies the change to the sim_fibo_ad_cp.cpp
2014-10-27 08:11:27 +01:00
Tor Harald Sandve
0979346430 Remove the check if porv is present in the Eclipsestate.
The porv is computed if needed and the Eclipsestate will return false on
this test before it is called.

Tested on Norne
2014-10-27 08:01:20 +01:00
Liu Ming
ba6fef4fbd pass wells manager from sim_poly_fibo to Simulator class, instead of directly
create it in Simulator class, since polymer inflow need deck and wells.
2014-10-24 14:04:57 +08:00
Liu Ming
61c76c4294 use std::unique_ptr instead of boost::scoped_ptr. 2014-10-20 17:29:59 +08:00
Liu Ming
6b3b90500f Merge remote-tracking branch 'opm/master' into bo_polymer
Conflicts:
	opm/polymer/PolymerProperties.hpp
2014-10-20 13:51:37 +08:00
Liu Ming
6a051b7e4e adapte the API changes of PolymerProperties class. 2014-10-16 10:03:13 +08:00
Liu Ming
ddfb030b57 Merge remote-tracking branch 'opm/master' into bo_polymer 2014-10-16 10:00:37 +08:00
Andreas Lauser
7c122c18d3 use the TLMIXPAR keyword directly
instead of using a table class. This is because the keyword is not a
table...
2014-10-14 12:29:31 +02:00
Liu Ming
6d76151b6d use std::unique_ptr instead of std::shared_ptr for polymerInflowInterface. 2014-10-11 16:38:59 +08:00
Andreas Lauser
4f44cde846 fix the fallout caused by the slightly too premature merge of PR #213
I should have put some message at the end of that PR when the API of
opm-parser changed...
2014-10-10 16:17:41 +02:00
Liu Ming
c2d6347271 make some tricks for initialing polymer_inflow, this maybe wrong, but now no bugs. 2014-10-09 14:23:36 +08:00
Liu Ming
73c2032974 fix some bugs. 2014-10-09 10:04:17 +08:00
Liu Ming
be927741b8 create a blackoil+polymer simulator. 2014-10-08 14:46:43 +08:00
Andreas Lauser
935de71a18 ECL: move the grid manager to ewoms/io/
this class is probably useful for problems other than EclProblem and
the EclWellsManager already is at a generic place...
2014-10-06 12:24:17 +02:00
Andreas Lauser
b4f9a49bd6 fixup! sim_fibo_ad*: print the log messages from the parser/EclipseState 2014-10-06 10:12:57 +02:00
Andreas Lauser
566c7c03d7 sim_fibo_ad*: print the log messages from the parser/EclipseState 2014-10-03 15:53:57 +02:00
Andreas Lauser
e9ef352d80 powerinjection problem: make it work for 2D and 3D grids
and some minor variable renames in the base gradient calculator so
that a delta won't be mistaken for a derivative...
2014-10-01 13:37:55 +02:00
Liu Ming
979c2dc0f7 use Newton iteration solver interface from opm-autodiff, prepare for CPR supporting. 2014-09-26 14:54:57 +08:00
Liu Ming
8620ce2641 use std::shared_ptr instead of boost::scoped_ptr. 2014-09-26 14:03:55 +08:00
Liu Ming
e22398c098 make Opm::DerivedGeology as a direct arguement for simulator. 2014-09-25 16:40:01 +08:00
Liu Ming
9a41199bd4 Merge remote-tracking branch 'opm/master' into fim
Conflicts:
	cmake/Modules/Findopm-autodiff.cmake
2014-09-23 16:04:15 +08:00
Atgeirr Flø Rasmussen
25c9b36d4f Use new location of warning suppression header. 2014-09-20 10:39:34 +02:00
Andreas Lauser
b6aa6c0734 adapt the the table related API changes of opm-parser 2014-09-19 14:40:35 +02:00
Andreas Lauser
b4fe4e3667 adapt the the table related API changes of opm-parser 2014-09-19 14:40:35 +02:00
Andreas Lauser
0f436e12c9 adapt the the table related API changes of opm-parser 2014-09-18 16:49:29 +02:00
Andreas Lauser
5ca84d208f adapt the the table related API changes of opm-parser 2014-09-17 13:43:47 +02:00
Andreas Lauser
9fbf4b2b3b adapt the the table related API changes of opm-parser 2014-09-17 13:28:39 +02:00
Atgeirr Flø Rasmussen
e597bbeca6 Merge pull request #193 from blattms/fix-176
Makes distinction between functions more clear. (#176)
2014-09-04 08:37:33 +02:00
Andreas Lauser
5f61781afd sim_fibo_ad*: change the default for the use_cpr parameter from false to true
SPE9 and Norne are basically unusable if UMFPack is used as linear solver...
2014-09-03 13:35:28 +02:00
Andreas Lauser
0d2bcdf610 some smallish parallel ctest improvements
the goal is to make it faster on computers with many cores: The
easiest way to do this is to ensure that the longest running tests are
not taking too much time and that they need about the same time. Thus
this patch contains the following changes which limits the CPU time
taken by each test to about two minutes in debug mode on my machine:

 - the water-air problem using the non-isothermal primary variable
   switching model now uses an 16x16 instead of a 32x32 grid. as a
   compensation it now runs for a year instead of 5000 seconds and the
   global grid refinement is now tested.
 - the end time of the lens problem ctests is now 3000 instead of
   30000 seconds. The binary itself does not change at all.
 - sort the tests in the CMakeLists.txt roughly in the order of their
   required time. (this will cause ctest not having to wait for long
   running test which were started late for too long.)
2014-09-03 13:09:47 +02:00
Bård Skaflestad
be589ba5f3 Merge pull request #189 from atgeirr/add-minpv
Add MINPV support to grid creation for fully implicit sims.
2014-08-29 09:16:55 +02:00
Markus Blatt
7127101c1c Makes distinction between functions more clear.
Currently, there are two abstract interface for the grids. One that
usually returns pods and arrays of them that also can be used by C
and is used also in opm-core, and one that returns Eigen datastructures
 needed within opm-autodiff.

This commit adds a postfix ToEigen to those functions (faceCells, and
cellCentroidsZ) one could imagine to also return pods and arrays of them.
This should at least resolve the confusion about the two faceCells functions.

The next step will be issue #192
Fixes #176
2014-08-28 14:44:13 +02:00
Atgeirr Flø Rasmussen
6ba5068928 Make simulator programs actually obtain threshold pressures. 2014-08-27 18:23:11 +02:00
Atgeirr Flø Rasmussen
3fdfeec10c Pass dummy threshold pressures through simulator to solver. 2014-08-27 18:23:10 +02:00
Atgeirr Flø Rasmussen
09eb0d455e Add MINPV support to grid creation for fully implicit sims. 2014-08-25 16:05:42 +02:00
Bård Skaflestad
077b01b767 Merge pull request #188 from OPM/support-resv
Support RESV controls
2014-08-25 13:54:30 +02:00
Andreas Lauser
1af65c8ba2 ecl grid manager: adapt to slightly changed Dune::CpGrid API 2014-08-25 13:34:32 +02:00
Andreas Lauser
f5baa7d760 test the tensor-vtk-output code a bit by enabling to write the intrinsic perms for the lens problem
this requires new reference solutions...
2014-08-22 21:53:27 +02:00
Atgeirr Flø Rasmussen
e35546070f Use direct deck-using version of grid construction method. 2014-08-21 15:26:07 +02:00
Atgeirr Flø Rasmussen
e644c51750 Merge branch 'master' into support-resv
Conflicts:
	examples/sim_fibo_ad.cpp
	examples/sim_fibo_ad_cp.cpp
	opm/autodiff/SimulatorFullyImplicitBlackoil.hpp
	opm/autodiff/SimulatorFullyImplicitBlackoil_impl.hpp
2014-08-19 09:53:20 +02:00
Andreas Lauser
9c57bfcf3c ECL problem: make it compile with Scalar != double
opm-parser always returns vector<double> as data fields...
2014-08-17 15:12:06 +02:00
Andreas Lauser
b76a77128c adapt to the reference pressure != surface pressure change in opm-material 2014-08-12 15:49:47 +02:00
Atgeirr Flø Rasmussen
1b7e748431 Update sim_fibo_ad_cp to use refactored simulator class.
Also add some other features that have been added to sim_fibo_ad
but not to sim_fibo_ad_cp:
 - (Un)Strict parsing parameter.
 - EQUIL init (currently throws, since initEquil not yet made generic).
2014-08-12 12:54:55 +02:00
Atgeirr Flø Rasmussen
bb118a9a39 Remove superfluous output and use const. 2014-08-12 12:53:11 +02:00
Atgeirr Flø Rasmussen
b85ba1bcc0 Clean up files and streams for timing output.
Total time will be written to walltime.txt, and single step times to
step_timing.txt (changed suffix from param to txt). This did not work
properly before this fix (step_timing file was overwritten each step).
2014-08-12 09:28:28 +02:00
Andreas Lauser
9d7cac49f5 remove most spurious semicolons
hopefully "most" means "all of them"...
2014-08-11 16:46:09 +02:00
Andreas Lauser
360246401e remove unused typedef, constants and enums
most of them anyway...
2014-08-11 14:24:13 +02:00
Atgeirr Flø Rasmussen
d170de43cb Merge remote-tracking branch 'GitPaean/New_BLACKOIL_SIMULATOR' into restructure-sim
Conflicts:
	examples/sim_fibo_ad.cpp
	opm/autodiff/SimulatorFullyImplicitBlackoil_impl.hpp
2014-08-11 14:01:54 +02:00
Bård Skaflestad
23520be41a RESV: Prepare for dynamic rate distribution calculation
This commit changes the API of class SimulatorFullyImplicitBlackoil<>
in order to support wells controlled by (total) reservoir voidage
volume rates.  Specifically, we switch to holding a mutable Wells
object (backed by a std::shared_ptr<>) in class Impl rather than a
reference to a WellsManager.  This allows dynamically updating rate
distributions and targets of individual well controls.  That, in
turn, is a prerequisite to supporting ECL-style "RESV" control
modes--be it in prediction or history matching capacity.

While in the process of API changes, also prepare for the second
stage of "WCONHIST/RESV" support: Accept a ScheduleConstPtr that
holds the input deck's notion of the history matching vs. prediction
controls.  We need to distinguish the two in order to support the
exact semantics of "WCONHIST/RESV".

Update SimFIBO<> clients accordingly.
2014-08-08 11:40:50 +02:00
osae
8fa34b421a Strict parsing is now the default. 2014-08-07 19:14:36 +02:00
osae
a8d99d0443 Make non-strict parsing the default. 2014-08-07 16:39:41 +02:00
Andreas Lauser
9bbcb0d228 remove accidentally left over include
it was used for debugging intersection mappers. to make this include
work, dune-cornerpoint must be available and that the intersection
mapper PR must be merged.
2014-08-07 10:55:58 +02:00
Andreas Lauser
2922a8e3a0 use finishInit() properly for all problems
this means that all code which could potentially throw an exception is
moved to this method(). (In particular FluidSystem::init() proved
troublesome in the past.) Besides avoiding segmentation the faults
which stem from exceptions thrown in constructors, this also has the
advantage that simulations which spend a noticable amount of time to
initialize stop at the "correct" place, i.e. after the "Finish init of
the problem" message was printed by the simulator...
2014-08-06 16:31:48 +02:00
Andreas Lauser
6ff728565b ECL problem: use spline based two-phase material laws
... instead of piece-wise linear ones. This improves convergence rates
slightly.
2014-08-06 13:52:53 +02:00
Andreas Lauser
cb8668ce0a Black Oil model: implement support for multi-region PVT tables
this requires opm-material commit 12a6d1f
2014-08-05 16:52:52 +02:00
Andreas Lauser
35379d7575 ECL problem: fix "unused variable" warnings for optimized builds 2014-08-05 00:21:18 +02:00
Andreas Lauser
2ff8cdacf8 ECL simulator: add a well model based on the Peaceman approach
not yet implemented: group controls, changing well control modes after
a time step. (The latter should be relatively straight-forward.)
2014-08-04 20:29:54 +02:00
Andreas Lauser
8c457f3f78 ECL problem: write the initial solution again
this regressed after time step index of the initial solution was
changed from 0 (actually, this was also 0 for the first time step...)
to -1 in b30af664.
2014-08-04 17:16:48 +02:00
Andreas Lauser
6d6640fc9d use dune-alugrid instead of the old version from dune-grid if the module is available 2014-07-30 12:42:32 +02:00
Bård Skaflestad
a612d2c96f Restore gravity effects
The refactorisation of class FullyImplicitBlackoilSolver<Grid> to
defer transmissibility and pore-volume calculation to the client in
order to support multipliers (net-to-gross &c) accidentally ended up
removing all effects of gravity.  This commit restores those effects.
2014-07-29 19:49:50 +02:00
Andreas Lauser
9e39939e15 ECL problem: set the first time step of the each epsiode to the report step size 2014-07-28 18:26:58 +02:00
Kai Bao
eb3445e6a1 Finishing compliation. 2014-07-27 17:31:00 +02:00
Kai Bao
1e8d5e65b7 Finishing changing. Testing Later 2014-07-25 19:13:23 +02:00
Andreas Lauser
6f429d0590 ECL problem: move the code which potentially throws into the finishInit() method
this avoids some segfaults due to half constructed objects if an
exception is thrown on initialization.
2014-07-25 15:31:01 +02:00
Andreas Lauser
63eaecf246 DerivedGeology: pass the EclipseState object to its constructor
this is required to implement pore volume and permeability multipliers
as discussed with [at]bska and [at]joakim-hove.

Note that this implies that the DerivedGeology class can't be
instantiated anymore if there is no EclipseState object. Thus all code
paths and tests that don't load a deck are removed by this patch. If
this is undesireable, there are two options: First, don't require
EclipseState for DerivedGeology which would imply to make the about 10
required multiplier functions part of the
BlackoilPropertiesAdInterface, or second, one can copy-and-paste the
DerivedGeology class as it was before this patch, derive from a newly
introduced DerivedGeologyInterface and pass DerivedGeologyInterface
objects to the simulator. IMHO, the second solution would be a bit
better but it would involve substantial overhead to implement and to
maintain it.

Anyway, in the mean time simulators cannot be instantiated without
decks.
2014-07-24 16:37:38 +02:00
Andreas Lauser
543d8d75b6 pass the DerivedGeology to the simulators
this was decided to be a good idea by [at]bska. (If I interpreted him
correctly, obviously.)
2014-07-24 16:37:38 +02:00
Andreas Lauser
cad639ec21 adapt to the reworked blackoil fluid system and function tabulation classes
in particular, the density of undersaturated oil is now the one
specified by the PVTO keyword...
2014-07-24 14:59:34 +02:00
Andreas Lauser
4c44c0fa87 use the checkConservativeness() method in all appropriate test problems
"appropriate" basically means "does not use constraints", as
constraints do not care about the conservation quantities...
2014-07-22 12:41:56 +02:00
Andreas Lauser
eefecea33f FV discretizations: add checkConservativeness() debugging method
this method checks that the difference in the storage terms before and
after a time step is the same as the accumulated fluxes over the
domain boundary plus the source terms.
2014-07-21 21:25:27 +02:00
Andreas Lauser
99430085bd replace a few now-incorrect "Vcfv" prefixes in the comments 2014-07-21 21:21:42 +02:00
Andreas Lauser
8645d2c207 pass the EclipseState and the PhaseUsage objects to EclipseWriter 2014-07-18 11:22:28 +02:00
Andreas Lauser
99779a52e8 problems: fix some rename-fallout for the postTimeStep() to endTimeStep() drive 2014-07-17 16:54:05 +02:00
Andreas Lauser
6727fe28fe adapt construction of to EclipseWriter
i.e., don't pass around the UnstructuredGrid object directly, but use
the "generic" interface which is also used in the case Dune::CpGrid.
2014-07-14 17:55:30 +02:00
Andreas Lauser
ee8e522db8 lens problem: add an ECFV variant 2014-07-11 20:27:44 +02:00
Andreas Lauser
e0a9f58bfe fix the parallel AMG linear solver
... and actually use it for the lens problems. This seems to have been
disabled for debugging and later it was probably forgotten to turn it
on again. This led to some minor bit-rot in that code...
2014-07-11 20:26:15 +02:00
Andreas Lauser
c309145085 newton method: make the tolerance easily settable at run time
The reason for this is to be able to modify the tolerance according to
grid size: The NewtonTolerance parameter has been renamed to
NewtonRawTolerance and for the porous media models is divided by the
square root of the volume of the smallst finite volume in the grid to
get the final tolerance for the Newton method. This is necessary
because very large grids need to achive a higher volumetric accuracy
in the residual than very small ones...
2014-07-11 15:47:06 +02:00
Andreas Lauser
f6fc258b70 rework the model and problem initialization procedure
basically the init() method was split into a finishInit() method which
fills the data structures allocated in the constructor with meaningful
data and into applyInitialSolution() which does just that (and no
more!)
2014-07-11 20:01:54 +02:00
Andreas Lauser
be54eee3c2 ECL problem: fix the episode handling code
now the report steps specified in the deck are adhered to...
2014-07-09 12:03:50 +02:00
Andreas Lauser
1d9d03e0fd ECL problem: fix up calculation of the initial condition 2014-07-08 10:16:29 +02:00
Andreas Lauser
566c813820 ECL problem: Use Cartesian element indices for more fields from the deck
probably there are still a few missing...
2014-07-08 10:16:17 +02:00
Andreas Lauser
9704b89036 ECL problem: use logically cartesian cell indices to retrieve data from the deck
Before, it only worked if all cells were active. Also, take the NTG
and MULTPV keywords into account and prepare for permeability
multipliers.
2014-07-03 15:13:10 +02:00