Commit Graph

1649 Commits

Author SHA1 Message Date
Liu Ming
c2bcc9cea8 do not write error summary twice. 2016-04-02 11:45:18 +08:00
Tor Harald Sandve
9c4015dae9 Calculate default guide rates using the well potentials
The default guide rates are caculated using the well potentials.
The well potentials are calculated in the simulator and given as input
to the wellsManager.
2016-04-01 15:00:21 +02:00
Liu Ming
939085155e refactor relperm diagnostics using OpmLog functions. 2016-04-01 12:27:03 +08:00
Tor Harald Sandve
0f6a821903 BUGFIX. Call setupGuideRates before groupcontrol is applied 2016-03-31 09:32:09 +02:00
Atgeirr Flø Rasmussen
734fbfc38d Implement direct fast field access. 2016-03-29 10:46:14 +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
301653de83 Changed include due to OpmLog changed path 2016-03-17 15:59:50 +01:00
Liu Ming
395ff9a221 use two slashes for comments inside functions. 2016-03-11 17:19:39 +08:00
Liu Ming
26b4265427 use error variable. 2016-03-11 17:15:32 +08:00
Liu Ming
40c98b91e7 fix saturation family bug. 2016-03-11 17:13:40 +08:00
Liu Ming
7cecb10edf fix indentation and fluid system issues. 2016-03-11 17:03:31 +08:00
Liu Ming
8cea813d57 Merge remote branch 'remotes/opm/master' into solvent-diagnostics 2016-03-10 14:38:22 +08:00
Liu Ming
df67ef2e75 Add solvent saturation functions support. 2016-03-10 14:32:43 +08:00
Liu Ming
04946d7526 Add solvent to fluid system. 2016-03-10 11:17:18 +08:00
Andreas Lauser
ccc1ca0b76 BlackoilPropertiesFromDeck: properly calculate the Rs and Rv values for viscosity
the dissolution factors used for the viscosities were always zero so
far. this was not discovered earlier because flow is completely
unaffected by this since the only place where this class is used in
flow is the equilibration code and the equilibration code does not
need phase viscosities.

thanks to @atgeirr for finding this.
2016-03-08 11:07:20 +01:00
Andreas Lauser
a9f758a8e7 replace the blackoil PVT classes by the ones of opm-material
the opm-material classes are the ones which are now used by
opm-autodiff and this patch makes it much easier to keep the opm-core
and opm-autodiff results consistent. Also, the opm-material classes
seem to be a bit faster than the opm-core ones (see
https://github.com/OPM/opm-autodiff/pull/576)

I ran the usual array of tests with `flow`: SPE1, SPE3, SPE9 and Norne
all produce the same results at the identical runtime (modulo noise)
and also "Model 2" seems to work.
2016-03-05 19:11:44 +01:00
Joakim Hove
e3106175e7 Merge pull request #966 from jokva/initconfig-equil
Remove Equil + EquilWrapper, replace with upstream
2016-03-04 18:18:57 +01:00
Atgeirr Flø Rasmussen
d6c0e771ca Only .cpp files should include config.h. 2016-03-04 09:10:19 +01:00
Atgeirr Flø Rasmussen
6b2f1d1507 Include template implementation file. 2016-03-04 09:09:52 +01:00
Liu Ming
355f349470 make grid as template parameter. 2016-03-04 09:09:38 +08:00
Jørgen Kvalsvik
dd77a39d95 Remove Equil + EquilWrapper, replace with upstream
Upstream (opm-parser) now provides a better Equil + EquilRecord, and
simultaneously deprecated EquilWrapper. This patch fixes the resulting
breakage.

One important note: The new Equil does not expose integers for live
oil/wet gas initialization procedure methods, but rather booleans
through constRs/constRv methods. This is how the variable behaves
according to the Eclipse reference manual (EQUIL keyword section).

Code has been updated to reflect this.
2016-03-01 09:59:54 +01:00
Jørgen Kvalsvik
33f8446a4e Add missing opm-parser headers
opm-parser pull #695
https://github.com/OPM/opm-parser/pull/695
2016-02-26 11:49:40 +01:00
Joakim Hove
016f300c9f Replaced TwoPhaseState -> SimulatorState 2016-02-22 22:03:43 +01:00
Joakim Hove
4bab7b7f4c Added free function initSaturation().
The state argument is of type SimulatorState& - and no longer a template
parameter.
2016-02-22 22:03:41 +01:00
Joakim Hove
84485dde53 Changes in SimulatorState:
1. Added method setCellDataComponent()
 2. Removed setFirstSat()

Implemented saturation initialisation using setCellDataComponent()
instead of setFirstSat(). This way the template<class Props> has been
removed from the SimulatorState class.
2016-02-22 08:42:04 +01:00
Andreas Lauser
68be58faa9 fix some recent deprecation warnings
these are caused by OPM/opm-parser#687. While they are harmless, they
are certainly annoying. (that's their point!)
2016-02-21 17:29:43 +01:00
Atgeirr Flø Rasmussen
b9d44c1f4b Merge pull request #957 from joakim-hove/cmp-template
Using template for cmp::vector_equal()
2016-02-19 11:41:07 +01:00
Joakim Hove
c40ed3ece6 Using template for cmp::vector_equal() 2016-02-19 07:57:02 +01:00
Jørgen Kvalsvik
04d605159f 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-18 08:50:26 +01:00
Joakim Hove
6f3c4fb618 Merge pull request #956 from jokva/remove-unused-wrapper
Remove unused Wrapper includes from Deck/Utility
2016-02-17 17:10:43 +01:00
Jørgen Kvalsvik
9836712782 Remove unused Wrapper includes from Deck/Utility 2016-02-17 14:46:15 +01:00
Joakim Hove
83a32061f7 Removed opm_memcmp_double() - use cmp from common. 2016-02-14 21:41:51 +01:00
Bård Skaflestad
83f474f118 Merge pull request #946 from jokva/clean-up-header
Improve includes from opm-parser
2016-01-26 15:58:25 +01:00
Jørgen Kvalsvik
b0692304d5 Improve includes from opm-parser
Adopting to opm-parser PR#661, add previously missing includes.

https://github.com/OPM/opm-parser/pull/661
2016-01-26 13:30:58 +01:00
Liu Ming
cd55b1f4b5 Omit some usages of to_string function. 2016-01-25 11:18:56 +08:00
Liu Ming
e227b6bb96 change headline to saturation functions diagnostics. 2016-01-25 11:00:23 +08:00
Liu Ming
6aca45b576 Format output and add SATNUM for scaled saturation endpoints. 2016-01-25 10:58:50 +08:00
Liu Ming
aae9169cff fix bugs: counter warning as error. 2016-01-25 09:38:55 +08:00
Liu Ming
675f730b01 Merge remote branch 'remotes/opm/master' into update_relperm_diagnostics
Conflicts:
	opm/core/props/satfunc/RelpermDiagnostics.cpp
2016-01-22 13:04:01 +08: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
Liu Ming
6efd22c637 fix typo. 2016-01-21 16:10:31 +08:00
Liu Ming
8b4dda67ed remove comments. 2016-01-21 14:04:01 +08:00
Liu Ming
ee71a59ece make const as more as possible 2016-01-21 14:01:02 +08:00
Liu Ming
a7238d0a7d saturation region should start with 1. 2016-01-21 13:47:57 +08:00
Liu Ming
4daa70292e fix formatting and grammar issues. 2016-01-21 13:45:32 +08:00
Liu Ming
a7aa2cf2c3 Add region number for output and output summary msg to streamLog 2016-01-18 11:10:51 +08:00
Liu Ming
598f456a29 change error to warning due to eclipse manual. 2016-01-18 11:10:36 +08:00
Liu Ming
30ace9cdcc Add region number for unscaled endpoints. 2016-01-18 11:10:26 +08:00
Liu Ming
708da37250 1. use scaled_messages_ to store scaled endpoints infor.
2. format the terminal output messages.
2016-01-18 11:10:14 +08:00
Liu Ming
6753c84547 Add counter for numbering warning, error, proble, and bugs. 2016-01-18 11:10:04 +08:00
Liu Ming
2f19d0bba6 For that break clipse rules should raise an error. 2016-01-18 11:09:50 +08:00
Liu Ming
5c271db842 add cell index for scaled endpoints error messages output. 2016-01-18 11:09:02 +08:00
Joakim Hove
4a95eb2917 Merge pull request #939 from joakim-hove/table-column
Table column
2016-01-08 15:29:10 +01:00
Joakim Hove
718ec8e791 Changed to use new table api from opm-parser. 2016-01-08 14:47:09 +01:00
chflo
c02966f6bc OPM-163: Use EclipseState instead of Deck for PvtInterface 2016-01-07 16:36:28 +01:00
Atgeirr Flø Rasmussen
462b4ca996 Merge pull request #934 from totto82/residualSaturations
Add method to access the materialLawManager
2015-12-11 13:08:39 +01:00
Tor Harald Sandve
1deadd257f Add method to access the materialLawManager 2015-12-11 12:50:54 +01:00
Liu Ming
4d4051ea2b make the constructor as explicit. 2015-12-09 16:51:07 +08:00
Liu Ming
db103c7868 Merge remote branch 'remotes/opm/master' into relpermDiagnostics
Conflicts:
	CMakeLists_files.cmake
2015-12-08 16:08:02 +08:00
Liu Ming
35dff82700 Use OpmLog to output messages.
return messages and opmLog.
2015-12-02 10:58:06 +08:00
Liu Ming
96b012d9b1 remove unused functions and comments, add documentations to diagnosis(). 2015-11-30 10:52:34 +08:00
Liu Ming
a96f9b0d3b 1. remove eclState from phaseCheck_ function.
2. rename messager_ to messages_.
3. change 0 and 1 to 0.0 and 1.0
4. change unsigned to int.
2015-11-30 10:42:57 +08:00
Liu Ming
324b562d3d reorder function and make more whitespace. 2015-11-30 10:26:59 +08:00
Liu Ming
45807a392d make enum as private members. 2015-11-30 10:20:43 +08: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
Liu Ming
b30d04f5fa Fix bugs and remove reptetitive messagers. 2015-11-27 10:47:04 +08:00
Liu Ming
f61ecdd777 Add NEXUS scaled endpoints consistency check. 2015-11-26 16:32:17 +08:00
Liu Ming
a19c0d49b7 Check scaled endpoints mobility. 2015-11-26 15:40:40 +08:00
Liu Ming
7fa569bc91 add endpoints scaling consistency check. 2015-11-26 15:22:51 +08:00
Tor Harald Sandve
f24dcf1957 Use cell depths based on averaging cell corners 2015-11-24 10:17:12 +01:00
Liu Ming
693ac24483 make use of fluidSystem. 2015-11-20 11:04:50 +08:00
Liu Ming
255e0d4a24 unify the output messages. 2015-11-20 10:57:13 +08:00
Liu Ming
382df80573 clear up unused functions. Make some functions ad private member. 2015-11-19 16:24:09 +08:00
Liu Ming
5baa83bde4 fix typo and output message. 2015-11-19 13:51:03 +08:00
Liu Ming
ead2f3437a clear message output. 2015-11-19 13:31:02 +08:00
Liu Ming
a4b6c7b9cc solve git cherry-pick conflict. 2015-11-19 11:05:43 +08:00
Liu Ming
24152f9a65 Use messager container to store error message.
Conflicts:

	opm/core/props/satfunc/RelpermDiagnostics.hpp
2015-11-19 11:00:21 +08:00
Liu Ming
d9a2fa6f42 initial RelpermDiagnostics. 2015-11-19 09:21:00 +08:00
Atgeirr Flø Rasmussen
80c16e7ea9 Merge pull request #907 from andlaus/thpress_from_initial
implement determining the threshold pressure from the initial condition
2015-11-17 09:03:02 +01:00
Atgeirr Flø Rasmussen
5f9d361c03 Merge pull request #922 from blattms/return_mask_for_updateOwnerMask
Return a constant reference to the mask for ParallelISTLInformation::updateOwnerMask
2015-11-13 15:20:35 +01:00
Atgeirr Flø Rasmussen
c0cd038e97 Merge pull request #920 from totto82/interpolation_points
Change the number of integration points in the initialization
2015-11-09 16:52:30 +01:00
Andreas Lauser
e3c066cd02 implement determining the threshold pressure from the initial condition
This needs to be done if a equilibration region transition is
mentioned by the THPRES keyword, but no value is given for this record
in the third item. (it seems that this is used quite frequently.)

Also, the approach taken by this patch also does not collide with the
restart machinery as far as I can see. This is because the initial
condition is applied by the simulator before the state at the restart
time is loaded. (I interpreted the code that way, but I could be
wrong, could anyone verify this?)

since it is pretty elaborate to calculate initial condition, this
patch is pretty messy. I also do not know if Eclipse does include
capillary pressure in this calculation or not (this patch does). Huge
kudos go to [at]totto82 for reviewing, testing and debugging this.
2015-11-05 12:29:19 +01:00
Markus Blatt
2c22cb68c8 Return a constant reference to the mask for ParallelISTLInformation::updateOwnerMask
Thus we can actually access the mask in external code. This is for
example needed when calculating averages in RateConverter of opm-autodiff.
2015-11-02 15:02:32 +01:00
Tor Harald Sandve
3086e67ee2 Change the number of integration points in the initialization
The number is changed from 100->2000 to increase accuracy.
2015-10-30 08:14:10 +01:00
Atgeirr Flø Rasmussen
8d327e9c67 Merge pull request #919 from blattms/fixes-wells-with-perforations-in-overlap
Fixes well manager for wells crossing into cells that overlap.
2015-10-28 13:23:35 +01:00
Atgeirr Flø Rasmussen
9de17c38d3 Merge pull request #918 from blattms/allow-zero-initialization-of-rock-properties
Allow the rock properties to be zero initialized without a deck.
2015-10-28 13:21:16 +01:00
Markus Blatt
7d7f37f42d Make constructor taking one argument explicit. 2015-10-28 13:19:42 +01:00
Markus Blatt
c871eaec5f Added comment about 9 entries in permeability tensor. 2015-10-28 13:14:56 +01:00
Markus Blatt
3e8381be20 Renamed well_index to well_index_on_proc and added comment.
This should prevent misunderstandings about what the
well_index_on_proc is. It is not the well_index according to
the eclipse state (on open wells count) but the index of the
wells that are stored on this process' domain.
2015-10-28 13:09:12 +01:00
Markus Blatt
4bfc921957 Fix grammar and spelling in warning. 2015-10-27 14:26:01 +01:00
Markus Blatt
02df6dd963 Fixes well manager for wells crossing into cells that overlap.
In the parallel run there are cases where wells perforate cells
that are neighbors of overlap/halo cells. On other process only
parts of the well are seen as perforations. These wells should be
ignored there. While the well was indeed ignored, the perforations
found where mistakenly added to the well found due not clearing the
wellperf_data[well_index]. This commit now does this clearing and
results in the right handling of wells for e.g. SPE9.
2015-10-27 14:02:26 +01:00
Markus Blatt
c0e2d7748c Allow the rock properties to be zero initialized without a deck.
This is needed in parallel runs where the rock properties will not
be read from the deck but be communicated from a master process. Nevertheless
we need to be able to initialize the data structures with the correct
container size. In addition we need to be able to change the container values
from opm-autodiff's BlackoilPropsDataHandle.
2015-10-26 23:52:24 +01:00
Markus Blatt
559c91505d [bugfix] Fixes copyOwnerToAll.
Previously, we copied owner/overlap to all which is clearly wrong.
Now we copy from owner to all as the function name says.
2015-10-26 23:45:12 +01:00
Arne Morten Kvarving
5674635125 fix Equilibration test by adding some fuzz
Backports parts of a7b1e69a45c14ec88a82b92ee704424f1ea1b41c
2015-10-26 11:21:26 +01:00
Atgeirr Flø Rasmussen
c65ad8292b Make SaturationPropsFromDeck work for two-phase cases. 2015-10-21 15:27:52 +02:00
Atgeirr Flø Rasmussen
10b4d6c6f7 Merge pull request #897 from totto82/crossflow
Add boolean flag to determine whether crossflow is allowed in a well
2015-10-14 09:36:27 +02:00
Andreas Lauser
d41f989a78 use the error macros from opm-common 2015-10-08 11:42:15 +02:00
Tor Harald Sandve
da44c2cfd6 Set wd.allowCrossFlow directly 2015-10-07 12:50:00 +02:00
Tor Harald Sandve
cf35ecbb05 Avoid using bool in the c code 2015-10-07 12:49:05 +02:00
Bård Skaflestad
c5d61faaa1 Merge pull request #896 from joakim-hove/relocate-warning-headers
Relocated warning headers.
2015-10-06 15:56:23 +02:00
Tor Harald Sandve
40ec39fa71 Add boolean flag to determine whether crossflow is allowed in a well
This PR adds allow_cf to the wells structure that determine whether
crossflow is allowed or not. An extra argument is added to addWell(..)
to specify the allow_cf flag.
2015-10-06 15:54:20 +02:00
Joakim Hove
197dda9ee0 Relocated warning headers. 2015-10-06 11:39:14 +02:00
Joakim Hove
d54899ba07 Fxied bug in table-container use. 2015-10-05 15:59:08 +02:00
Joakim Hove
adb333177d Merge pull request #886 from joakim-hove/table-container
Changed Table code to use TableContainer
2015-10-05 14:46:49 +02:00
Joakim Hove
2dc7d1cef7 Changed Table code to use TableContainer 2015-10-05 09:59:29 +02:00
Atgeirr Flø Rasmussen
a0e50d2a21 Merge pull request #887 from osae/equil-water-zone
Support for equil-initialisation for datum depth outside oil zone.
2015-10-03 19:04:34 +02:00
Atgeirr Flø Rasmussen
061b283a03 Merge pull request #888 from totto82/avoid_throw_wellManager
WARN instead of THROW if completion is not found in the grid
2015-09-28 10:02:06 +02:00
Markus Blatt
e2e9ea1bf5 Prevent WellsManager from subscripting empty container.
While hopefully not a bug it raises an exception with gcc's
libc debugging mode. Therefore we resort to using C++11's
std::vector::data instead.

The exception was rosen when running SPE9 in parallel.
2015-09-23 09:28:59 +02:00
Tor Harald Sandve
fb127aeb9a WARN instead of THROW if completion is not found in the grid
Completions that are not found in the grid are ignored.
2015-09-22 13:51:06 +02:00
osae
04107a1955 Support for equil-initialisation for datum depth outside oil zone. 2015-09-21 18:22:11 +02:00
Robert Kloefkorn
8163137b2c WellState: move typedefs into public section and include string. 2015-09-16 12:36:05 +02:00
Robert Kloefkorn
50bf1d7e62 WellState: add assertion on wells->name[]. 2015-09-16 09:48:43 +02:00
Robert Kloefkorn
14d7ce43a6 WellState: move mapping from well name to well index to here from autodiff's WellStateFullyImplicitBlackoil. 2015-09-16 09:48:43 +02:00
Bård Skaflestad
99368d73d2 RegionMapping<>: Support arbitrary region IDs
This commit introduces a new public method, activeRegions(), that
retrieves those region IDs that contain at least one active cell.
We furthermore extend the cells() method to support lookup of
arbitrary region IDs.  Non-active region IDs produce empty cell
ranges.

Intended use case is

    for (const auto& reg : rmap.activeRegions()) {
        const auto& c = rmap.cells(reg);

        // use c
    }
2015-09-15 15:33:22 +02:00
Bård Skaflestad
b5ba068309 convertSats(): Transpose loop nest for locality of data 2015-09-15 15:33:22 +02:00
Bård Skaflestad
7090b58f03 Mark non-template functions in headers as 'inline' 2015-09-15 15:33:22 +02:00
Atgeirr Flø Rasmussen
99d3ca24bb Use compressedToCartesian() to avoid possible null reference. 2015-09-15 14:23:10 +02:00
Atgeirr Flø Rasmussen
827da9baa3 Moved compressedToCartesian() to its own file. 2015-09-15 14:13:58 +02:00
Tor Harald Sandve
8d9bdb8d47 Use cell thickness from EclipseGrid in well transmissibility
calculations

The dz calculated in WellDetails::getCubeDim is not correct in cases
where the face centroid of the horizontal faces is located above or
below the face centroid or the vertical faces. The cell thickness in
EclipseGrid, calculated using the Z-coordinates, is therefore used
instead.
2015-09-15 10:50:56 +02:00
Atgeirr Flø Rasmussen
d0285c3eb1 Cleanup SaturationPropsFromDeck interface.
Unused methods and arguments have been removed,
and we avoid including the EclMaterialLawManager
in the header. Clients IncompPropertiesFromDeck
and BlackoilPropertiesFromDeck have been updated.
2015-09-14 15:02:59 +02:00
Atgeirr Flø Rasmussen
530df90a42 Remove unused args from constructor.
Also from init() function. This means the methods are no longer templates,
and have been moved to the cpp file.
2015-09-14 15:02:59 +02:00
Robert Kloefkorn
67200b54e6 SimulatorState: export num_cells_ and num_faces_ and allow to register data from any
class. This is needed in the parallel output class. A formal interface for the state
class needs to be introduced.
2015-09-14 12:57:36 +02:00
Markus Blatt
af2f3a0a90 Allow a few well completions in the overlap.
If on one process a well completion is next to border then
it might also be stored in the neighbor process. Still not
all the completions of the well are known to the neighbor.
This breaks the previous assumption that for each well all
completions must belong to the partition of the process.

Therefore with this commit we allow wells that only have a
part of their completions assigned to the partition of the process.
This wells are deactivated under the assumption that they must
exist completely on another process due to the partitioning.
2015-09-08 20:38:02 +02:00
Atgeirr Flø Rasmussen
830fd552f4 Merge pull request #873 from blattms/fix-parallel-wellsmanager-for-partly-shut-wells
[bugfix] Account for shut completions when checking well in parallel
2015-09-08 11:01:44 +02:00
Markus Blatt
602310541e Make code clearer with and if-else-if statements and spaces. 2015-09-08 10:48:55 +02:00
Markus Blatt
50eab88274 Improve code comments. 2015-09-08 10:48:14 +02:00
Markus Blatt
8b11b7069f Make last commit compile 2015-09-08 09:30:16 +02:00
Markus Blatt
4fc36e58fb [bugfix] Account for shut completions when checking well in a parallel run.
Previously well with just some shut completions errorneously triggered an
exception in parallel runs. This is fixed with this commit.

Due to the logic shut completions will always be marked as existing
on a process. (Initially all completions are marked as found. For
each open completion we check whether the cartesian index belongs to
the local grid. If that is not the case we mark it as not found).
Therefore we now check whether the found number of completions
is either the number of shut completions or the number of all completions.
In the former case the well is not stored on this process, and in the latter
case it is. In other cases we throw an exception.
2015-09-07 16:55:08 +02:00
Robert Kloefkorn
9ab8e6ec93 [BlackoilPropsFromDeck] remove sign/unsigned warnings. 2015-09-07 09:50:40 +02:00
Atgeirr Flø Rasmussen
2dc9d78286 Merge pull request #867 from babrodtk/fix_warnings
Fixed several warnings
2015-09-04 14:13:34 +02:00
babrodtk
2d252964ed Fixed several warnings 2015-09-03 15:17:10 +02:00
Markus Blatt
4102846873 Fix complaint about initial declaration in foor loop.
gcc-4.7.2 (Debian 4.7.2-5) complained about:
"‘for’ loop initial declarations are only allowed in C99 mode
note: use option -std=c99 or -std=gnu99 to compile your code"
when seeing a loop like
for(int i=0; i<end; ++i)

This is fixed by moving the declaration before the for loop with
this commit. Altenatively, we could use the above option.
2015-09-03 14:03:25 +02:00
Andreas Lauser
1ec3a6065a SaturationPropsFromDeck: fix some array index screw-ups in the twophase case
I don't think the code gets more beatiful because of this, but it
seems like it does not crash anymore.
2015-09-02 12:29:18 +02:00
Andreas Lauser
750e9aedf4 use a .cpp instead of an _impl.hpp file for SaturationPropsFromDeck
this avoids having to include the "Evaluation.hpp" file as the first
thing in the morning.
2015-09-02 12:29:18 +02:00
Andreas Lauser
823f3a4032 InitStateEquil: fix valgrind complaint about uninitialized values
it seems that it was pure luck that this worked so far!
2015-09-02 12:29:18 +02:00
Andreas Lauser
48d4abef1a remove the now obsolete SatFunc* classes 2015-09-02 12:29:18 +02:00
Andreas Lauser
4a81a0acf1 SaturationPropsFromDeck: add the code to calculate all saturation properties using opm-material
also remove the now obsolete code in that class.
2015-09-02 12:29:11 +02:00
Andreas Lauser
97f62d5f6f add a fluid state where scalars include the derivatives w.r.t. the saturations 2015-09-02 12:23:24 +02:00
Andreas Lauser
d57d121c38 ExplicitArraysFluidState: always make it appear threephase to the exterior, but also accept twophase arrays 2015-09-02 12:23:24 +02:00
Joakim Hove
08a77e36d0 Using TableManager to get tables. 2015-09-01 12:58:09 +02:00
babrodtk
6365579866 Fixed whitespace 2015-08-19 13:20:58 +02:00
Atgeirr Flø Rasmussen
68428ad856 Do thp init() differently. 2015-08-19 13:12:15 +02:00
babrodtk
60a66165f5 Minor fixes 2015-08-19 13:12:14 +02:00
babrodtk
9458fcc498 Fixed several compiler warnings 2015-08-19 13:12:14 +02:00
babrodtk
a002781998 Bugfix with THP for injection wells 2015-08-19 13:12:14 +02:00
babrodtk
ede4945282 Removed superfluous line 2015-08-19 13:12:14 +02:00
babrodtk
a743efe819 Refactoring 2015-08-19 13:12:14 +02:00
babrodtk
9d602f0cd0 Update support for VFP tables: Now produces almost identical results to BHP for 'identity' table' 2015-08-19 13:12:14 +02:00
babrodtk
25155aefbb More integration of VFP tables 2015-08-19 13:12:03 +02:00
babrodtk
92628187b0 Initial integration of VFP 2015-08-19 13:11:41 +02:00
babrodtk
c6311decdc Fixed warning 2015-08-19 13:10:48 +02:00
babrodtk
ffac75a873 Update support for VFP tables: Now produces almost identical results to BHP for 'identity' table' 2015-08-19 13:10:48 +02:00
babrodtk
83f6b02941 More integration of VFP tables 2015-08-19 13:10:48 +02:00
babrodtk
f320b04c4d Initial integration of VFP 2015-08-19 13:10:48 +02:00
Atgeirr Flø Rasmussen
24f91aa248 Use the correct (new) method from the Group class for group RESV.
Production controls now are no longer initialised from injection control data.
2015-08-13 10:21:24 +02:00
Atgeirr Flø Rasmussen
84acbc4601 Make saturation functions work with two phases again.
Note that this changes ExplicitArraysFluidState to take
a run-time argument for the number of phases.
2015-08-12 13:38:32 +02:00
Atgeirr Flø Rasmussen
23fd80d0b2 Bugfix: add forgotten setIndex() call. 2015-08-12 13:38:10 +02:00
Atgeirr Flø Rasmussen
5216550cdf Suppress warnings. 2015-08-10 16:07:45 +02:00
Robert Kloefkorn
9c8460d471 TofDiscGalReorder and TofReader: remove warnings due to new boost version. 2015-08-07 12:02:59 +02:00
Atgeirr Flø Rasmussen
b80a202287 Define the UF_long type if necessary.
The UF_long type is deprecated in UMFPack, and actually seems
to be removed from the latest versions.
2015-08-06 09:54:05 +02:00
Robert Kloefkorn
d3962fb7cf SimulatorState: added copyright
BlackoilState: added copyright

Also, small docu fix.
2015-07-08 13:23:36 +02:00
Robert Kloefkorn
78c53fa1ed SimulatorState: store all data in a vector to allow for flexibility when used with
derived states.
BlackoilState: adjusted to SimulatorState changes.
2015-07-08 13:23:36 +02:00
Atgeirr Flø Rasmussen
131bbd5846 Fix unused argument warnings. 2015-07-08 12:37:11 +02:00
Andreas Lauser
85cfd8da2a use the multiplexer saturation function in SaturationPropsFromDeck
this makes it possible to switch to different saturation functions
again. So far the only supported function besides the default one is
the one which implements the "Stone 2" model.
2015-06-29 14:49:20 +02:00
Andreas Lauser
e3ab614c73 SaturationPropsFromDeck: make the jump to fluid states
this means the following changes:

- the "SatFuncGwseg" class is converted
- for now, Gwseg is the only saturation function supported by
  SaturationPropsFromDeck. (will be changed in later commits.)
- the funcForCell() method of SaturationPropsFromDeck is removed as it
  just occludes things
2015-06-29 14:49:20 +02:00
Andreas Lauser
2d5798f51a SaturationPropsFromDeck: remove the 'SatFuncSet' template parameter
in any reasonable simulator which reads an ECL deck the deck is going
to decide which saturation function is to be used and not the outside
code. also, the table this which function will be using is not really the
calling code's business. (for any reasonable deck it is always going to
be a non-uniform table so it makes a lot of sense to avoid unnecessary
complexity IMO.)

this patch temporarily removes the ability to use anything except the
ECL default saturation function ("Gwseg"). this ability will be
restored later in this patch series.
2015-06-29 14:49:20 +02:00
Andreas Lauser
5af89a0e55 add some fluid state classes
namely BlackoilStateToFluidState which takes a BlackoilState object
and exposes it as a opm-material like fluid state object. Similar for
ExplicitArraysFluidState, which takes raw arrays.

since fluid states are a local API, the index of the cell to be used
for these two classes must be set externally. The advantage of this
concept is that it is possible to make "saturation functions" which
not only depend on saturations but also on arbitrary other quanties
(like temperature or phase composition) without having to change the
API of the "saturation" functions.
2015-06-29 14:49:20 +02:00
Andreas Lauser
55786028fd remove obsolete and empty file SaturationPropsFromDeck.cpp 2015-06-26 13:01:22 +02:00
Atgeirr Flø Rasmussen
e8dc0a7148 Add missing include statement. 2015-06-22 13:04:14 +02:00
Edvin Brudevoll
b4e01187ff OPM-188: Fixup after review 2015-06-17 09:41:00 +02:00
Fredrik Gundersen
13f30e294a Added support for WPIMULT 2015-06-02 13:24:37 +02:00
Atgeirr Flø Rasmussen
a5da86a9ec Silence multiple warnings.
Also add more warnings to the disabling list of disable_warnings.h.
2015-05-28 14:05:09 +02:00
Markus Blatt
7f266458b5 Fix creation of initial value for computing the max (Fixes PR #805).
Bård spotet a bug after PR #805 was merged. Indead returning
-numeric_limits<type>::min() does not make sense for integral
values. This commit resorts to returning numeric_limits<type>::min().

Kudos to Bård for his attention.
2015-05-27 15:03:28 +02:00
Markus Blatt
a4e28119a3 Adds the possibility to compute a parallel inner product. 2015-05-27 11:07:15 +02:00
Markus Blatt
3fb7af1719 Do not use the masked value of the first container entry as initial value.
This behaviour does not work for computing a global inner product.
Therfore this commit introduces a new function to the functor that
returns an appropriate initial value.
2015-05-27 11:07:15 +02:00
Markus Blatt
fa279d6b16 Use correct type get the maximum value.
Previously we hardcoded float. Now we use the result_type of
the binary_function without any qualifiers. With any cv or reference
qualifiers std::numeric_limits uses a default implementation which
produces nonesense (e.g. numeric_limits<const int>::max() returns 0).
2015-05-27 11:07:15 +02:00
Markus Blatt
3aa869cfa0 Removes well debugging output. 2015-05-27 09:22:54 +02:00
Markus Blatt
63d8d5e781 [bugfix,parallel] Deactivate non-existing wells in manager.
Previously, we used the setStatus method to set wells that do not
exist on the local grid to SHUT. Or at least this is what I thought
that ```well.setStatus(timestep, SHUT)```. Unfortunately, my
assumption was wrong. This was revealed while testing a parallel run
with SPE9 that threw an expeption about "Elements must be added in
weakly increasing order" in Opm::DynamicState::add(int, T). Seems like
the method name is a bit misleading.

As it turns out the WellManager has its own complete list of active
wells (shut wells are simply left out). Therefore we can use this
behaviour to our advantage: With this commit we not only exclude shut
wells from the list, but also the ones that do not exist on the local
grid. We even get rid of an ugly const_cast.

Currently, I have running a parallel SPE9 test that has not yet
aborted.
2015-05-26 21:01:16 +02:00
Markus Blatt
ca3bcb2662 Use more accurate name for the size of the global components.
The new name is num_global_components, which actually is an upper bound
for the the number of global components (1 plus the maximum global index).
2015-05-19 19:58:05 +02:00
Markus Blatt
e2df1e981c Add spaces around binaries and explicit braces. 2015-05-19 19:56:37 +02:00
Markus Blatt
be7abe0706 Rename no_components to num_components. 2015-05-19 19:53:37 +02:00
Markus Blatt
202a0ab827 Update copyright information. 2015-05-19 16:20:57 +02:00
Markus Blatt
104c75d575 Allow to create the correct communication information if there are several unknowns.
In this case the parallel index set might represent N entries (this might be the number of
cells of grid). Nevertheless, there several (n) equations/unknowns attached to each index.
In this case we construct a larger index set representing N*n unknows, where each unknown
is attached to an index.

This change only affects parallel runs.
2015-05-19 16:18:14 +02:00
Atgeirr Flø Rasmussen
f24b9a1dc2 Merge pull request #800 from blattms/parallel-verbose-only-on-master
Allow to prevent printing to std::cout.
2015-05-13 14:42:37 +02:00
Markus Blatt
1a7ab6b81c Get rid of unclear continue; statement in favor of if-else 2015-05-12 15:30:20 +02:00
Markus Blatt
9514b8c89a Switched from default constructing to explicit construction with false. 2015-05-08 19:44:50 +02:00
Markus Blatt
2b4ebb94cc Adds possibility of having a well not stored on a grid partitioning.
In a parallel run each process only knows a part of the grid. Nevertheless
it does hold the complete well information. To resolve this the WellsManager
must be able to handle this case.

With this commit its constructor gets a flag indicating whether this is
a parallel run. If it is, then it does not throw if a well has cells that
are not present on the local part of the grid. Nevertheless it will check
that either all or none of the cells of a well are stored in the local part
of the grid.

Wells with no perforated cells on the local will still be present but set to SHUT.
2015-05-08 16:35:00 +02:00
Markus Blatt
802895acaf Allow to prevent SimulatorReport for printing to std::cout.
This commit adds a verbose flag to the constructor of
SimulatorReport to allow for deactivating any
output to std:cout. This is handy for parallel runs where we only
want to print statistics on one process.
2015-05-08 11:12:23 +02:00
Atgeirr Flø Rasmussen
928660ec0f New method SimulatorReport::reportFullyImplicit().
It does not make sense to report transport and pressure separately
for fully implicit solvers. It still makes sense to separate solver
from init and output though.
2015-04-21 10:48:02 +02:00
Markus Blatt
16d05fcc93 Correct documentation of why we use operator[] to initialize map.
This commit updates the source code comment about using operator[] to
initialize the unordered map. Thanks to Bard's persistence we found
out that the cause is not the construction of the key value of type
std::string from const char* but the mapped type being a (mutable)
char* (due to C?).

This completes the PR #784.
2015-04-14 09:36:47 +02:00
Markus Blatt
236718cff9 Deactivate PETSc's KSPCHEBYSHEV (not available in 3.2!) 2015-04-13 11:01:24 +02:00
Markus Blatt
b791d0743b Use operator[] to populize unordered_map with string as the key
g++-4.4 has problems converting const char* to char*
which it thinks is needed for constructing std::string.
Using operator[] circumvents this problem.

The compiler error fixed here was:
/usr/include/c++/4.4/bits/stl_pair.h: In constructor ‘std::pair<_T1, _T2>::pair(std::pair<_U1, _U2>&&) [with _U1 = const char*, _U2 = const char*, _T1 = const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _T2 = char*]’:
/home/mblatt/src/dune/opm/opm-core/opm/core/linalg/LinearSolverPetsc.cpp:40:   instantiated from here
/usr/include/c++/4.4/bits/stl_pair.h:107: error: invalid conversion from ‘const char*’ to ‘char*’
make[2]: *** [CMakeFiles/opmcore.dir/opm/core/linalg/LinearSolverPetsc.cpp.o] Fehler 1
2015-04-13 10:58:31 +02:00
Atgeirr Flø Rasmussen
d0820dcb3f Suppress sign-comparison warnings. 2015-03-27 15:38:21 +01:00
Atgeirr Flø Rasmussen
aa7dcf91d3 Merge pull request #765 from andlaus/implement_temperature_dependent_density
Implement temperature dependent density
2015-03-26 15:10:13 +01:00
Atgeirr Flø Rasmussen
2d534f0536 Fix property method calls.
Cell argument can not be null for BlackoilPropertiesFromDeck class.
2015-03-23 16:19:40 +01:00
Andreas Lauser
53aa151e1c add a wrapper for thermal gas PVT objects 2015-03-17 12:40:14 +01:00
Andreas Lauser
44e218ffca add a wrapper for thermal oil PVT objects 2015-03-17 12:40:09 +01:00
Andreas Lauser
1b961652b8 add a wrapper for thermal water PVT objects 2015-03-17 12:40:07 +01:00
Robert Kloefkorn
a77f681999 iostream --> ostream. 2015-03-04 14:48:50 +01:00
Robert Kloefkorn
e75551127f SimulatorReport: add total number of newton and linear iterations to report struct. 2015-03-04 14:01:13 +01:00
Atgeirr Flø Rasmussen
8a1b35d4f6 Fix unneeded-internal-declaration warning.
Again related to anonymous namespace function only being used
in template functions.
2015-03-02 10:28:55 +01:00
Markus Blatt
7539a80ed2 Put spaces around operators. 2015-02-20 14:30:06 +01:00
Markus Blatt
c1d61705c9 Rely on auto instead of querying the explicit type
via e.g. typename UgGridHelpers::Face2VerticesTraits<Grid>::Type
2015-02-20 14:29:05 +01:00
Markus Blatt
5b8442d985 Ported initStateEquil to using the GridHelpers.
Currently the keyword EQUIL is not supported by the fully
implicit blackoil simulator when using CpGrid. This
commit is a first step towards this as it makes the
implementation of initStateEquil generic.
2015-02-20 09:39:50 +01:00
Markus Blatt
a458aa7688 Prevents unsigned-signed-comparison warnings for container with signed size.
Well, you never know. There are containers that use a signed integer
for storing its size. This results in a warning about comparing signed with
unsigned integers. This commit prevents this by explicitly casting the size
to std::size_t.
2015-02-19 09:13:39 +01:00
Atgeirr Flø Rasmussen
529662ca1a Complete function argument cleanup. 2015-02-17 13:56:02 +01:00
Atgeirr Flø Rasmussen
a38bdaf4c3 Remove unused argument from several functions. 2015-02-17 10:28:11 +01:00
Atgeirr Flø Rasmussen
2f7a87aa4b Merge pull request #755 from blattms/istl-consistent-rhs
Makes right hand side passed to linear solver consistent.
2015-02-16 12:48:28 +01:00
Markus Blatt
a35b2f2b7c [fixup] Use the correct function.
This should have been in the las commit and should be added there before
merging.
2015-02-13 11:00:28 +01:00
Markus Blatt
50aba2c8f6 Makes right hand side passed to linear solver consistent.
Due to the size of the overlap layer and the discretization scheme
the rhs might not contain correct values for overlap cells. This
commit makes sure they are correct by an additional communication step.
2015-02-12 21:00:32 +01:00
Atgeirr Flø Rasmussen
28597d18ee Added computeWellPairs() function. 2015-02-11 14:03:47 +01:00
Markus Blatt
95f62e6e12 Improve the documentation a bit. 2015-02-05 15:43:48 +01:00
Markus Blatt
20f3a4151a Makes BlackoilPropertiesFromDeck copyable.
We need this for the parallel sim_fibo_ad_cp, where we will need
to point to the same parts in two copies without duplicating data.
2015-02-05 15:41:02 +01:00
Atgeirr Flø Rasmussen
fb983a44b1 Add default producer BHP control when not given in deck.
Default limit is 1 atm.
2015-02-04 10:30:15 +01:00
Atgeirr Flø Rasmussen
9cb9ec50b1 Rename directory opm/core/tof -> opm/core/flowdiagnostics. 2015-02-03 21:44:24 +01:00
Joakim Hove
f27f75b0b9 Use Value<double> for Connection Factor 2015-02-03 13:10:38 +01:00
Atgeirr Flø Rasmussen
4f327a5329 Merge pull request #738 from blattms/constify-parallelinformatio-workaround-eigen
Constify parallelinformation and workaround Eigen's weirdness
2015-01-30 20:35:33 +01:00
Markus Blatt
2caaca4160 Do not rely on begin()/end() of the containers to compute reductions.
One would think that such an assumption is safe in any case,
wouldn't one? But foen Eigen'S container this does not hold.
They do not provide STL compliant iterators, and access to them.
With this patch make the even stricter assumption that the containers
are random access and use operator[] instead of iterators.
2015-01-30 16:10:41 +01:00
Robert K
1f2a429a59 BlackoilState: added forgotten rv to equal method. 2015-01-29 11:07:24 +01:00
Markus Blatt
2a3adf7591 Constified the compute reduction functions.
These should and have to be used with a const object.
2015-01-28 21:55:35 +01:00
Joakim Hove
d2dab23d60 Using Parser to calculate well reference depth. 2015-01-26 12:03:11 +01:00
Markus Blatt
aac4cb7d66 Correctly compute the minimum and maximum values.
As there are no functors for computing the minimum and maximum,
we convert the std::max and std::min function pointers to
functors (which is not really nice.) Previously we were somehow
tricked into using std::greater and std::less, which of course do
return true or false and not what we need. Additionally, do more
excessive testing with different ranges.
2015-01-23 20:48:53 +01:00
Markus Blatt
6fe660a3d5 Do recurse in the recursive funtion computeGlobalReduction!
Somehow this was missed and only the first entry in the tuple
was computed globally.
2015-01-23 20:46:46 +01:00
Bård Skaflestad
6d8c89abea Merge pull request #728 from blattms/global-reductions
Added methods for computing global reductions.
2015-01-23 17:28:12 +01:00
Markus Blatt
033f290392 Add missing return statements. 2015-01-23 16:38:08 +01:00
Markus Blatt
d137b0c144 Calm warnings about excessive semi-colons, unused variables, and missing declarations. 2015-01-23 16:36:48 +01:00
Markus Blatt
4a80474782 Fixes formatting according to Atgeirr's coding style. 2015-01-23 14:56:15 +01:00
Atgeirr Flø Rasmussen
3e69d72fbd Reformat header for readability. 2015-01-23 09:13:43 +01:00
Atgeirr Flø Rasmussen
fb0bccc625 Fix whitespace issues. 2015-01-23 09:12:15 +01:00
Atgeirr Flø Rasmussen
3b1aa47830 Add missing #include <algorithm>. 2015-01-22 13:02:16 +01:00
Atgeirr Flø Rasmussen
73a310725e Fixed size of zero vector passed as gpress. 2015-01-21 21:14:32 +01:00
Markus Blatt
7bce15c04b Added methods for computing global reductions.
We need to compute quite a few global reductions in the
Newton method of opm-autodiff. This commit adds the functionality
to compute several reductions combined using only one global
communication. Compiles and test succeeds with one or more process.
2015-01-21 16:19:35 +01:00
Atgeirr Flø Rasmussen
77ae151be9 Added calculation of flow diagnostics quantities.
New functions:
 - computeFandPhi()
 - computeLorenz()
 - computeSweep()

Also a unit test has been added for the new features.
2015-01-21 14:58:44 +01:00
Atgeirr Flø Rasmussen
998d5f9d5a Added IncompTpfaSinglePhase class. 2015-01-20 15:47:50 +01:00
Atgeirr Flø Rasmussen
fa16d8f616 Add IncompPropertiesSinglePhase class. 2015-01-20 15:47:50 +01:00
Joakim Hove
c2f9390d95 Wellsmanager will check completion status
With this commit the WellsManager will check the status of completions
before adding them to the internal struct wells
datastructure. Completions can be in the four states:

  OPEN, SHUT, AUTO, POPN

Completions with state == SHUT will be ignored, wheras the wellsmanager
will throw  if the states AUTO or POPN are encountered. The WELOPEN
keyword can also have the value 'STOP'; for completions that is
translated to 'SHUT' by Schedule object.
2015-01-12 12:43:45 +01:00
Joakim Hove
80423a0188 Pure white-space change 2015-01-12 12:43:44 +01:00
Joakim Hove
b9e7c88314 Added missing enum rename 2015-01-12 12:41:56 +01:00
Joakim Hove
a0d41dc130 Added WellCompletion namespace 2015-01-12 12:10:51 +01:00
Tor Harald Sandve
880026e893 Fix comments. 2015-01-09 09:10:10 +01:00
Tor Harald Sandve
1718800e55 Add warning to c solvers when stopped wells occur
Stopped wells are treated as shut wells in the c solvers in opm-core.
I.e they are completly isolated from the domain.
2015-01-09 09:10:10 +01:00
Tor Harald Sandve
82eafbb510 Renaming well is shut to well is stopped.
Rename the the meaning for shut as whats used in Eclipse.
STOP: Well stopped off above the formation. I.e. allow for flow in the
well.
SHUT: Well completely isolated from the formation. The well is removed
from the well list.
2015-01-09 09:10:10 +01:00
Tor Harald Sandve
b8bf45d24d Support stopped wells
The given control is applied to the stopped well, and the status is set
to not open. (i.e closed, but currently named shut)
2015-01-09 09:10:10 +01:00
Atgeirr Flø Rasmussen
45a2631b7f Put reformatted error message in anonymous namespace. 2015-01-07 10:16:13 +01:00
Atgeirr Flø Rasmussen
dfebd46acf Make compilation of class depend on Boost.Heap availablility.
If boost version is too old, the API is still the same and the
class will build, but throws upon construction.
2015-01-07 09:49:47 +01:00
Atgeirr Flø Rasmussen
1e39010ba4 Fix anisotropy closeness test.
The old test was simply wrong: it computed the M-distance and compared
to the grid radius, which becomes dependent on the scaling of the
metric M. The corrected test in isClose() depends on the anisotropy
ratio of M and the grid radius.
2015-01-02 15:22:02 +01:00
Atgeirr Flø Rasmussen
8491d186d4 Make isClose() use actual grid and metric data.
Note that current implementation is somewhat ad-hoc, and not
in line with the algorithm of the paper.
2014-12-29 12:28:30 +01:00
Atgeirr Flø Rasmussen
2eab160761 Whitespace fix. 2014-12-29 12:28:29 +01:00
Atgeirr Flø Rasmussen
451bca1753 Add computeValueUpdate() to avoid recomputing. 2014-12-29 12:28:29 +01:00
Atgeirr Flø Rasmussen
cb7be97ee5 Change order of steps in algorithm to avoid rework. 2014-12-29 12:28:29 +01:00