Commit Graph

952 Commits

Author SHA1 Message Date
Kristian Flikka
3b0a9067b4 Removes the WELSPECS usage in WellsManager constructor. Step 1 in rewrite of constructor 2014-01-22 15:22:32 +01:00
Kristian Flikka
691148122c Merged from upstream/opm-parser-integrate 2014-01-21 13:05:59 +01:00
Tor Harald Sandve
0c6bf64a33 Phase pressure is used for surface volumes calculations 2014-01-10 16:07:02 +01:00
Tor Harald Sandve
9e2ec6e558 Initialization using the RV keyword
The initial Rv value is specified using the RV keyword in the Parser.
The Rv values are used in the computation of the initial surface
volumes.
2014-01-10 16:07:02 +01:00
Tor Harald Sandve
d5b47295e3 Added pvt functionality for wetgas
The pvt interface is extended to handle wet-gas systems:
1. rvSat is added as a function in the PVT interface
2. SinglePvtLiveGas computes the pvt values and its derivatives
3. The old rbub variable is changed to rsSat for clearity
4. The new interface is tested in test_blackoilfluid with data from
liveoil.DATA and wetgas.DATA
2014-01-10 16:07:02 +01:00
Kristian Flikka
2ffcb219bb Changed phaseUsageFromDeck to use eclipseState 2014-01-10 13:43:02 +01:00
Kristian Flikka
731fe7d3f4 Changed new WellsManager constructor to take in EclipseStateConstPtr instead of SchedulePtr 2014-01-08 16:10:55 +01:00
Joakim Hove
f00e3d5763 Comparing well names protects againts NULL. 2014-01-08 16:10:43 +01:00
Joakim Hove
d96b88742e Removed commented out code. 2014-01-08 15:58:11 +01:00
Joakim Hove
ddf6a3c084 Removed access to internal variabel cpty. 2014-01-08 11:32:00 +01:00
Kristian Flikka
1f1c0ebcf3 New constructor for WellsManager that also takes the new parser as argument. New test comparing old and new 2014-01-07 16:10:45 +01:00
Joakim Hove
370f9f0458 Using && instead of &= in the functions comparing wells and well_controls. 2014-01-06 19:22:39 +01:00
Joakim Hove
9fa7362992 Removed explicit (struct WellControls *) cast to align with the rest of the code. 2014-01-06 19:09:36 +01:00
Joakim Hove
b22b3f9fe2 Moved struct WellControls to the implementation file well_controls.c. 2014-01-06 15:13:32 +01:00
Joakim Hove
c970363f5e Implemented well_controls based on well_controls_get_xxx() functions. 2014-01-06 14:59:11 +01:00
Joakim Hove
8ef5b2b695 Implemented well_controls based on well_controls_get_xxx() functions. 2014-01-06 14:51:11 +01:00
Joakim Hove
027ffb3c5a Implemented well_controls based on well_controls_get_xxx() functions. 2014-01-06 14:40:55 +01:00
Joakim Hove
8132954b85 Added functions to get type, target and distr of *current* control. 2014-01-06 14:40:03 +01:00
Joakim Hove
4db3a70e05 Implemented well_controls based on well_controls_iset_xxx() functions. 2014-01-06 14:19:09 +01:00
Joakim Hove
965c12a689 Implemented well_control based on well_controls_iset_xxx() functions. 2014-01-06 12:40:03 +01:00
Joakim Hove
2ee6331ac1 Implemented well_controls_add_new() with well_controls_iset_xxx() functions. 2014-01-06 12:24:32 +01:00
Joakim Hove
6098368d08 Added new function well_controls_iset_distr(). 2014-01-06 12:22:15 +01:00
Joakim Hove
3d171bd961 Using new function well_controls_invert_current(). 2014-01-06 12:08:29 +01:00
Joakim Hove
bf95c9f768 Added new functions to set target and type and invert value of current control. 2014-01-06 12:06:36 +01:00
Joakim Hove
d783028bcb Using well_controls_get_num() and well_controls_get|set_current() in WellsManager 2014-01-06 10:12:11 +01:00
Joakim Hove
17b800796f Temporarily added symbol HAVE_WELLCONTROLS before including well_controls.h - to get acces to the internal elements in struct WellControls. 2014-01-05 16:25:31 +01:00
Joakim Hove
3653404c41 Reimplemnted struct WellControls access to use the set/get functions in well_controls.c 2014-01-05 16:23:22 +01:00
Joakim Hove
aea54d073a Added well_controls_get_xxx() and well_controls_set_xxx() functions. The well_controls_reserved() function is called from well_controls_add() and not explicitly. 2014-01-05 16:22:30 +01:00
Joakim Hove
fb8413960c Removed #include <opm/core/well_controls.h> from wells.h and inserted explicit #include <opm/core/well_controls.h> where needed. 2014-01-05 15:03:30 +01:00
Joakim Hove
157d0870f2 Removed struct WellControlManagement and replaced with simple integer field cpty in the WellControls structure. 2014-01-05 14:54:56 +01:00
Joakim Hove
8acdf34653 Moved well_controls implementation to separate file well_controls.c. 2014-01-05 14:47:15 +01:00
Joakim Hove
0450e1bb77 Extracted everything related to well controls to separate header well_controls.h - to simplify introducing new parser. 2014-01-03 16:04:12 +01:00
Kristian Flikka
e4a7a33598 Implementation (not finished) of wells_equal, well_controls_equal, and tests. To build a WellsManager test for old and new parser
Conflicts:
	CMakeLists_files.cmake
2014-01-03 16:00:10 +01:00
Bård Skaflestad
2a68bb0341 Add a facility for checking/assigning presence of free phases
This is intentionally black-oil specific because we presently do no
know how to handle other cases (e.g., more phases or number of phases
different from number of components).
2013-12-03 15:56:18 +01:00
Bård Skaflestad
8c8721064d Include <limits> for std::numeric_limits<> template 2013-12-03 15:52:07 +01:00
Bård Skaflestad
c24cc87b26 Sort headers into logical groups.
This is an aesthetic-only change.
2013-12-03 15:43:06 +01:00
Tor Harald Sandve
c77d82a4ee Change name to initBlackoilStateFromDeckUsingRS
The second input of initBlackoilStateFromDeck that computes surface
volumes based on gas/oil ratio is changed from
BlackoilPropertiesInterface to Props. To avoid duplication with the old
initBlackoilStateFromDeck its name is changed to
initBlackoilSurfvolUsingRS.
2013-11-28 15:56:17 +01:00
Tor Harald Sandve
c1b6d57d32 Compute initial saturations from surface volumes
Add new function is added that computes saturation from surface volumes
solving z = As for each cell. This function is used to compute an
intial guess to the saturations in initState_impl.hpp.
2013-11-28 15:56:17 +01:00
Roland Kaufmann
1a1269d9d7 Extract common parts of blackoil and incomp. state
Put the identical parts of the simulator state into a base class that
they can be referenced from when adressing the common fields.
2013-11-13 13:48:28 +01:00
Kristian Flikka
3f970244de Replaced include math.h with cmath, and changed from fabs to abs. Fixed an error in the testfile, a filename was wrong 2013-11-04 13:51:32 +01:00
Joakim Hove
877829f43a Added method equals in BlackoilState.hpp 2013-10-28 17:42:32 +01:00
Atgeirr Flø Rasmussen
847a8f4f7a Bugfix: vector was used with size zero. 2013-10-16 14:02:15 +02:00
Atgeirr Flø Rasmussen
88011cca2e Modify error message. 2013-10-07 12:57:51 +02:00
Atgeirr Flø Rasmussen
d4bb9c0611 Guard against erroneous use of initBlackoilSurfvol(). 2013-10-07 12:46:35 +02:00
Atgeirr Flø Rasmussen
5140d99e60 Merge pull request from totto82/propsMRST
Changes to the props in order to  sync with MRST (Eclipse)
2013-10-07 03:41:09 -07:00
Atgeirr Flø Rasmussen
dcaac93e23 Remove unneeded term, fixing oil injecting behaviour.
The 'comp_term' is supposed to be a total divergence term, which is supposed
to be zero for incompressible flow. It was added for improved robustness in
stagnant areas, but as implemented it would not be computed properly for
oil injection scenarios, due to the convention for two-phase transport
source terms (positive terms are inflow of first phase [water], negative
terms are total outflow).
2013-10-04 13:16:02 +02:00
Atgeirr Flø Rasmussen
13ddbad9a1 Merge pull request from bska/Wunused
Remove unused "typedef"s
2013-10-03 06:52:09 -07:00
Bård Skaflestad
fca913c6b9 Remove unused "typedef"s
CLang and recent versions of GCC warn about unused "typedef"s.  This
change-set removes currently known instances in opm-core.
2013-09-26 19:22:59 +02:00
Bård Skaflestad
8ad884bbde assemble_well_contrib(): Fix misprint in comment. 2013-09-25 15:39:37 +02:00
Bård Skaflestad
e15760856c RESV: Ignore phase distribution for non-PRODUCERs
The WellsManager class handles INJECTORS by assigning a phase
distribution (W->ctrls[i]->distr) that coincides with the injected
fluid for the corresponding well (e.g., {1,0,0} for WATER injectors in
a three-phase WATER/OIL/GAS simulation).  This, however, meshes poorly
with the restriction that all phase components must be ONE in the case
of wells constrained by total reservoir volume flow targets (RESV)
that was introduced in commit b7d1634.

This change-set limits the restriction on phase distributions to
PRODUCERs only and is a tentative solution to GitHub PR .
2013-09-25 15:38:55 +02:00
Tor Harald Sandve
aa126cb59f The initBlackoilStateFromDeck is now called only if RS is given in deck 2013-09-24 15:25:52 +02:00
Atgeirr Flø Rasmussen
d7dc0abc13 Further improved WellReport and Watercut docs. 2013-09-24 14:39:41 +02:00
Atgeirr Flø Rasmussen
87466f25d2 Documented WellReport and Watercut classes. 2013-09-24 14:14:54 +02:00
Roland Kaufmann
f8f6836c2b Only use Clang-specific pragma if compiler is Clang
Otherwise the compiler will probably give us a warning that these
pragmas are unknown. By default that warning is disabled with our
own build system, but we also want to be able to link to our library
without incorporating the entire build system too.
2013-09-24 11:15:26 +02:00
Tor Harald Sandve
7d12b0cc5c An initial guess of the surface volume is now computed using the RS
factor in order to compute a more accurate A matrix.
2013-09-24 11:14:22 +02:00
Roland Kaufmann
88a38a8e3f Fix LinearSolverIstl cleanup also for fast AMG branch
To avoid deprecation warnings the number of smoothing steps was passed
through the Criterion instead of directly to the constructor in commit
a7f32b934b.

However, due to an insufficient test matrix this was not tested using
the fast AMG variant of DUNE so it breaks the builds if
`-DHAS_DUNE_FAST_AMG` is defined.

This change should apply the same type of change to this branch as for
the others. The number of smoothing steps is put into a constant to
avoid the magic number 1 to appear in too many places (although I am
not sure the number for pre- and post-smoothing always should be the
same).
2013-09-20 10:00:21 +02:00
Atgeirr Flø Rasmussen
df8981ed2d Merge pull request from rolk/376_warn
Quelch needless warnings (found by Clang)
2013-09-19 05:05:00 -07:00
Roland Kaufmann
1341903bb7 Don't warn about functions not emitted
If a function is used by a template but this template is not
instantiated, the function will still be defined in the header
of a module but it won't be callable because it is in an anonymous
namespace and thus we get a warning.

This only happens in Clang; GCC consider functions referenced from
templates as used.

fixup! Don't warn about functions not emitted
2013-09-19 13:09:44 +02:00
Roland Kaufmann
5f00467f02 Set linear solver steps in criterion instead of ctor
The constructor that takes the number of steps is deprecated; this
generates needless warnings.
2013-09-19 10:32:49 +02:00
Andreas Lauser
57a1efcdc9 fix headers
make all non-implementation headers includable without
preconditions. Also, this removes the GravityColumnSolver.hpp file,
because it tried to include a non-existing file and it was thus unused.
2013-09-11 13:11:47 +02:00
Andreas Lauser
fde3fe3332 convert users of MESSAGE to OPM_MESSAGE 2013-09-05 13:04:38 +02:00
Andreas Lauser
d6fa31b452 convert users of the ASSERT and the ASSERT2 macros to standard assert() 2013-09-05 13:04:37 +02:00
Andreas Lauser
cb76a0fd7f convert THROW to OPM_THROW 2013-09-05 13:04:37 +02:00
Andreas Lauser
408d3389c3 include iostream in the files which use std::cerr or std::cout
for some of these files this is needed to make to keep it compiling
after the next patch because the new ErrorMacros.hpp file will no
longer implicitly includes <iostream>. for the remaining files it is
just good style.

While at it, the includes for most of these files have been ordered in
order of decreasing abstraction level.
2013-09-05 13:04:37 +02:00
Roland Kaufmann
440c7721ae Remove subdirectory from SuiteSparse include
SuiteSparse may or may not be installed in a suitesparse/ directory.

FindSuiteSparse will look in a suitesparse/ subdirectory when trying
to locate umfpack.h, but it will add the full directory to the compiler
command-line (e.g. `-I/usr/include/suitesparse`) and not that of the
parent. Since the parent is usually included too, it is not noticed
that it is advertedly using another include paths than its own.

However, if we have SuiteSparse installed in a non-system location,
using the subdirectory in the `#include` statement may now cause an
error, even though configuration actually found SuiteSparse!
2013-08-25 09:35:51 +02:00
Roland Kaufmann
76f3863780 Remove bindings to AGMG from library
AGMG is now under a closed-source license, meaning that results
obtained with this solver is not freely reproducible by others.
Its use is therefore discouraged.

As of version 2.3, the DUNE AMG parts are competitive, so there
is a free and open alternative.
2013-08-13 23:25:04 +02:00
Andreas Lauser
e6a2f2655a replace boost::scoped_ptr by std::unique_ptr
thanks to Bård Skaflestad, Atgeirr Rasmusen and Roland Kaufmann for
the hint.
2013-08-08 15:21:38 +02:00
Andreas Lauser
5cd622fbf7 use std::shared_ptr instead of boost::shared_ptr
our policy is that we only use boost if necessary, i.e., if the oldest
supported compiler does not support a given feature but boost
does. since we recently switched to GCC 4.4 or newer, std::shared_ptr
is available unconditionally.
2013-08-08 13:25:58 +02:00
Bård Skaflestad
6858b4290f Merge pull request from rolk/285_shadow
Provide way of shadowing only some properties
2013-07-31 04:05:13 -07:00
Bård Skaflestad
4b42cc2c5d Merge pull request from andlaus/make-gcc44-mandatory
Make gcc44 mandatory
2013-07-30 13:25:35 -07:00
Andreas Lauser
5893b9324e replace boost::array by std::array
GCC 4.4 supports std::array, so there is not much point in keeping
compatibility with ancient compilers...
2013-07-30 17:46:32 +02:00
Andreas Lauser
2306c2c305 fix a few CLang warnings
most of them quite insignificant, but still annoying. The only
exception is the warning about the changed alignment for the 'work'
argument of spu_implicit_assemble(). AFAICT, the only reason why it
worked was that the pointer produced by malloc() was passed
directly. (malloc() seems to fulfill all alignment criteria.) To fix
this, I've changed that argument's type from char* to double*.
2013-07-30 16:27:20 +02:00
Roland Kaufmann
3885bcd7ee Use underscore for data members 2013-07-30 13:24:57 +02:00
Roland Kaufmann
814130f010 Provide way of shadowing only some properties
The current implementations of IncompPropertiesInterface are very
all-or-nothing. In some situations, you want to read rock and fluid
properties from an Eclipse file, but use analytical functions for
the unsaturated properties. Or you want to update properties based
on a marching filter.

This patch provides a way to mix various property objects, or to
"shadow" the properties with a raw array of data, so you don't have
to reimplement the entire interface just to make a small change.
2013-07-30 13:11:52 +02:00
Júlio Hoffimann
c077912466 Remove trailing whitespaces 2013-07-28 08:34:13 -03:00
Roland Kaufmann
baa9bf12e0 Zero-initialize structure to avoid returning undefined
The compiler will otherwise complain that we are returning undefined
data. There is no way for the client code to know whether this was
the case.
2013-07-05 10:59:52 +02:00
Bård Skaflestad
f99377ceec Merge pull request from blattms/non-tr1
Changed std::tr1 occurences to boost.
2013-07-04 12:01:51 -07:00
Markus Blatt
b5db3e0713 Changed std::tr1 occurences to boost.
std::tr1 might not be supported by all compilers and will eventually
be dropped by others. Using boost instead makes this more
portable.
2013-07-04 16:04:35 +02:00
Atgeirr Flø Rasmussen
fb77fffdc8 Merge pull request from bska/remove-redef-kluge
Disable build kluge that is no longer pertinent
2013-06-24 06:02:10 -07:00
Markus Blatt
eaf8e780c7 Fixed unused parameters and whitespace issues. 2013-06-21 12:49:35 +02:00
Bård Skaflestad
85a9a41264 Disable build kluge that is no longer pertinent
The <have_boost_redef.hpp> header was introduced (commit 82369f9) as
a work-around for a particular interaction in the Autotools-based
setup of OPM-Core and the Dune core modules.  Notably, Dune's
"Enable" trick for Boost failed on some older Autoconf systems.  Now
that we're using CMake, however, that kluge is no longer needed
because we (OPM-Core) always

  #define HAVE_BOOST 1

i.e., as an explict true/false value.

Therefore, we need no longer include <have_boost_redef.hpp> .  The
header will be removed at a later time.
2013-06-20 23:14:39 +02:00
Markus Blatt
9b0b60c3f8 Fixed spelling 2013-06-20 17:01:35 +02:00
Markus Blatt
2db889cd2b Unifies the way how AMG is called.
After this patch one can set the prolongation factor for all
AMG calls and the number of smoothing steps for all except
of FastAMG that currently only supports on step.
2013-06-20 16:55:07 +02:00
Markus Blatt
7c69fc31d0 Merge remote-tracking branch 'upstream/master' 2013-06-20 16:07:58 +02:00
Markus Blatt
65a3780e2f Merge remote-tracking branch 'upstream/master'
Conflicts:
	opm/core/linalg/LinearSolverIstl.cpp
2013-06-19 14:55:50 +02:00
Atgeirr Flø Rasmussen
55e58deea6 Add transMult(), poroMultDeriv() and transMultDeriv(). 2013-06-03 14:33:18 +02:00
Atgeirr Flø Rasmussen
5d457ff708 Ensures well rate initialization actually happens.
Do not use the well's comp_frac member, only rely on the control's distr
member for initialization. This forced a change to WellsManager's
initialization of the distr member.
2013-06-02 23:30:43 +02:00
Atgeirr Flø Rasmussen
175cecacda Bugfix in well rate init.
Do not always try to initialize, also initialize proper phase rates.
2013-06-02 22:19:43 +02:00
Atgeirr Flø Rasmussen
ad4c9a47e0 Refined well state initialization.
For SURFACE_RATE controlled wells, initialize wellRates() to match.
2013-06-02 21:58:30 +02:00
Atgeirr Flø Rasmussen
c280f2b0dd Initialize rate-controlled well bhp with safety factor.
Safety factor is 1.01 (INJECTOR) or 0.99 (PRODUCER), similar to
mrst's ad-fi/utils/initWellSolLocal.m > initialize().
2013-05-30 11:03:08 +02:00
Atgeirr Flø Rasmussen
a0a9c482ea Created new initialization routine, using RS from deck. 2013-05-27 15:44:07 +02:00
Atgeirr Flø Rasmussen
6e9a46b34d Added gasoilratio() to BlackoilState. 2013-05-27 12:53:06 +02:00
Atgeirr Flø Rasmussen
125c573461 Added assert to guard against wrong usage. 2013-05-24 09:21:41 +02:00
Atgeirr Flø Rasmussen
1cf0bb465b Fix bug in upwinding code.
Accidental usage of std::vector's operator< discovered.
2013-05-24 09:20:46 +02:00
Atgeirr Flø Rasmussen
8592ca825a Added wellRates() member. 2013-05-21 23:54:30 +02:00
Atgeirr Flø Rasmussen
8c92a47b89 Merge remote-tracking branch 'upstream/master' into add-phaseusage-to-interface 2013-05-15 10:10:18 +02:00
Bård Skaflestad
ac33cd6f17 Merge pull request from atgeirr/tof-improvements
Ensure (average of) tracers sum to one for DG1.
2013-05-14 02:28:21 -07:00
Bård Skaflestad
3f4c2ea564 Always interpret 'ref_pressure' as a double
Otherwise, when specifying (e.g.)

   ref_pressure=1.0e-5

(1 Pascal in bars), the value gets reinterpreted as

   ref_pressure=1

which is one bar.
2013-05-14 10:19:12 +02:00
Atgeirr Flø Rasmussen
d312f760e1 Add phaseUsage() method to BlackoilPropertiesInterface.
Also implement method in derived classes.
2013-05-13 16:20:00 +02:00
Atgeirr Flø Rasmussen
9b56384647 Ensure (average of) tracers sum to one for DG1. 2013-05-13 16:17:41 +02:00