Commit Graph

686 Commits

Author SHA1 Message Date
Markus Blatt
bc98b20118 Only filter in filterConnections_ on root process.
When filterConnections_ is called the grid is not load
balanced, yet. Currently that means that grid() will also return the
unbalanced grid and all processes will see the whole global grid.

We will change semantics of the unbalanced grid soon: Only the root
process will see the whole grid and the others will see an empty
partition of it. Hence filtering on this partition will remove all
connections on all wells in the schedule for non-root processes and
produce wrong results.

For non-root process the filtering needs to be done on the load
balanced grid. This is accomplished by this commit.
2019-11-14 23:41:17 +01:00
Joakim Hove
fce5d2f369 Rename Well2 -> Well and Group2 -> Group 2019-11-13 23:18:01 +01:00
Atgeirr Flø Rasmussen
415f4adcef
Merge pull request #2151 from joakim-hove/skip-processing
Skip processing of filename if external deck already exists.
2019-11-08 09:08:54 +01:00
Michael Sargado
e1e1efbaaf Skip processing of filename if external deck already exists. 2019-11-07 21:03:30 +01:00
Bård Skaflestad
55a49b8146
Merge pull request #2073 from goncalvesmachadoc/goncalvesmachadoc-addProdInjReportPRT
Add Production and Injection Reports to PRT
2019-11-06 08:09:19 -06:00
Cintia Goncalves Machado
003fa994db
Update ecloutputblackoilmodule.hh 2019-11-06 13:25:04 +01:00
goncalvesmachadoc
8efae16087 çonverted tabs to spaces 2019-11-01 12:56:20 +01:00
goncalvesmachadoc
9982ddf3fb fix 2019-10-30 17:51:49 +01:00
goncalvesmachadoc
2082641074 fix 2019-10-30 15:27:41 +01:00
goncalvesmachadoc
6f2adff3d7 added groups to reports 2019-10-30 14:09:51 +01:00
Markus Blatt
a597539342 Filter connections on non-IO ranks, too.
This removes a deadlock experienced for some models
where we have specified connections to non-active cells.

On non-IO ranks we are using the local grid since in the
future there will be no global grid available. Wells connecting
cells not on these processors are neglected anyway.

Closes #2101
2019-10-30 13:46:43 +01:00
goncalvesmachadoc
03433997b9 Changes revised by Bard 2019-10-29 11:46:26 +01:00
goncalvesmachadoc
18b5ad2bf8 changed as revised by OPMUsers 2019-10-26 13:13:44 +02:00
Markus Blatt
608b317ecc Allow different ElementMapper types in ElementIndexScatterHandle.
This is needed to support dune-fem where the local mapper might
be
`MultipleCodimMultipleGeomTypeMapper<GridView<GridPart2GridViewTraits<AdaptiveLeafGridPart<CpGrid, (PartitionIteratorType)4,
false> > >, Dune::Impl::MCMGFailLayout>`
as opposed to the global one being
`MultipleCodimMultipleGeomTypeMapper<GridView<DefaultLeafGridViewTraits<CpGrid>>, Dune::Impl::MCMGFailLayout>`.

Closes #2095.
2019-10-22 14:49:55 +02:00
Markus Blatt
9751984021
Merge pull request #2033 from blattms/avoid_equil_grid-rebased
Avoid using global grid (equilGrid) on non-IO processes.
2019-10-21 11:47:17 +02:00
Bård Skaflestad
a4eaf07243
Merge pull request #2071 from totto82/fix_restart
Always allocate buffers when restarting
2019-10-18 18:09:48 -05:00
Tor Harald Sandve
cf7c8552a5 Always allocate buffers when restarting 2019-10-18 09:07:06 +02:00
dr-robertk
18c31bda0b
Merge pull request #2047 from totto82/enableRockcompFlow
enable rockcomp in flow
2019-10-17 14:12:35 +02:00
Tor Harald Sandve
8c7d7e3d2e enables rockcomp in flow 2019-10-17 12:44:49 +02:00
dr-robertk
abf793726d
Merge pull request #2046 from totto82/sync_logging
Add logging in ebos
2019-10-15 14:19:34 +02:00
Markus Blatt
0bc1630cc9 CollectToIORank: Made localIdxToGlobalIdx lookup working.
Since the indexMaps do not contain the global element index anymore
(but the global id). The old code did not work anymore.

Unfortunately, we are using CpGrid specific functions (scatterData)
to get the mapping. Therefore this might be broken if other grids are
used.
2019-10-15 14:03:24 +02:00
Markus Blatt
9735bdadfc Load restart with global grid only available on one processor.
For this the master (IO) rank loads the RestartValue and then
broadcasts it to the other ranks.
2019-10-15 14:03:24 +02:00
Joakim Hove
1777fc5a03
Merge pull request #2028 from joakim-hove/rm-props-iget
Adapt to removal of GridProperty::iget()
2019-10-15 07:54:03 +02:00
Markus Blatt
7784d53198 Fix wrong globalSize.
That has gotten a little to big and hence the vector
globalCartesianIndex_ and DistributedIndexMapping::ranks_ ,too.
2019-10-14 14:32:22 +02:00
Markus Blatt
1124b82f05 Move translation of global cartesian index of global grid to IoRank.
Previously, it was still assumed that all ranks knew the global grid
and each map on CollectDataToIORank::indexMaps_ was a mapping of
send/receive index to the index of the cell using the mapper of  the
corresponding global grid.

With this patch inside of CollectDataToIORank::DistributeIndexMapping
indexMaps is a mapping from send/receive index to global cartesian
index until the destructor is run. Inside of the destructor of the
iorank the remapping to mapped index of the global grid happens and
the ranks array is computed.
2019-10-14 14:32:22 +02:00
Markus Blatt
39979ad3f7 Only access globalTransmissibility on IO rank in EclWriter.
For other ranks this will not be available in the future.
2019-10-14 14:32:22 +02:00
Markus Blatt
5812b767ef Always initialize mpiRank in constructor and use it consistently.
We cannot use grid->comm().rank() to check whether we are an
IORank since for an unbalanced grid this will always be zero in the
master branch.
2019-10-14 14:32:22 +02:00
Markus Blatt
cb396dfac6 Make sure subclass functions are not called before subclass is initialized.
This at least slightly improves the old design. In that design the
subclass had no own constructor but inherited the one of the base class.
That base class constructor called certain subclass
functions (createGrids_, filterConnections_, updateOutputDir_, and
finalizeInit_)that would initialize raw pointers of the
subclass. Hence subclasses where not allowed to have non-pod members
and those used later (e.g. deleted in the destructor) had to be
initialized in these functions.

The new (still ugly) design introduces constructors into the
subclasses and skips inheriting constructors. Now one must call a base
class function classImplementationInit which will still call the
functions createGrids_, filterConnections_, updateOutputDir_, and
finalizeInit_, but at least at this point the baseclass is fully
constructed and the subclass is constructed as much as
possible/needed (non-pod types will be initialized now.)
2019-10-14 14:32:22 +02:00
Markus Blatt
4e6bbddbf5 Use global grid only on IO process in EclWriter 2019-10-14 14:32:22 +02:00
Markus Blatt
bcff77fb4a Construct and ECLTranmissibility only on IO process, 2019-10-14 14:32:22 +02:00
Markus Blatt
42c20171eb make and use equilGrid only on IO process.
With the change of CPgrid to only holding the grid on one process
it will be an empty grid on all other processes. This has really
strange side effects like Schedule::filterConnections removing all
well perforations on theses processes.
2019-10-14 14:32:22 +02:00
Markus Blatt
5001645d6a Make code compile without MPI. 2019-10-14 14:32:22 +02:00
Arne Morten Kvarving
7efbee9fb0 changed: avoid usage of equilGrid on non-root processes 2019-10-14 14:32:22 +02:00
Joakim Hove
1d9a3e3d35 Adapt to removal of GridProperty::iget() 2019-10-14 13:31:11 +02:00
Atgeirr Flø Rasmussen
40f91b0e32
Merge pull request #2034 from totto82/sync_restart
sync restart
2019-10-14 13:26:57 +02:00
Tor Harald Sandve
86ef30950d Add logging in ebos
With this .PRT and .DBG files are created also for ebos
2019-10-14 10:39:10 +02:00
Halvor M. Nilsen
d873ae165d Enable single-phase runs. 2019-10-11 08:19:18 +02:00
Markus Blatt
e4e8425bad
Merge pull request #1858 from dr-robertk/PR/cleanup-sparsematrixadapter
Cleanup SparseMatrixAdapter.
2019-10-09 12:44:52 +02:00
Bård Skaflestad
1b610f06a4 Prepare for Making Summary Writing Independent of LibECL
This commit adds requisite libecl includes that are needed as an
intermediate steps for enabling new summary writing independent of
libecl.
2019-10-04 20:32:09 +02:00
Atgeirr Flø Rasmussen
2b9e30df33
Merge pull request #2036 from blattms/improve-vanguard-layering-violation
Make sure subclass functions are not called before subclass is initia…
2019-10-02 14:57:00 +02:00
Robert Kloefkorn
28cf1c17be [bugfix][EclWriter] GlobalGrid and GridView can potentially differ and
that is why types should be extracted from the structures that provide the objects.
2019-10-02 12:48:12 +02:00
Markus Blatt
a0fa87e81f Make sure subclass functions are not called before subclass is initialized.
This at least slightly improves the old design. In that design the
subclass had no own constructor but inherited the one of the base class.
That base class constructor called certain subclass
functions (createGrids_, filterConnections_, updateOutputDir_, and
finalizeInit_)that would initialize raw pointers of the
subclass. Hence subclasses where not allowed to have non-pod members
and those used later (e.g. deleted in the destructor) had to be
initialized in these functions.

The new (still ugly) design introduces constructors into the
subclasses and skips inheriting constructors. Now one must call a base
class function classImplementationInit which will still call the
functions createGrids_, filterConnections_, updateOutputDir_, and
finalizeInit_, but at least at this point the baseclass is fully
constructed and the subclass is constructed as much as
possible/needed (non-pod types will be initialized now.)
2019-10-01 21:18:17 +02:00
Atgeirr Flø Rasmussen
96af6ca5f0
Merge pull request #2023 from totto82/fix_solvent_restart
Fix solvent restart
2019-10-01 15:35:22 +02:00
Tor Harald Sandve
f83e99c6aa sync restart 2019-10-01 14:30:11 +02:00
Tor Harald Sandve
afba6c8e8e Fix solvent restart 2019-10-01 13:07:29 +02:00
Bård Skaflestad
d979fb0fae Blackoil Output: Chase API Change in SummaryNode Class
In particular, the .type() function is renamed to .category(), and
it no longer returns a LibECL type.  Similarly, the .num() function
has been renamed to .number().
2019-09-30 15:00:05 +02:00
Bård Skaflestad
fabc067b5e Blackoil Output: Don't Include "eclwriter.hh"
The EclWriter class depends on the EclOutputBlackOilModule, not the
other way around.  This removes a cyclic include.
2019-09-30 14:47:50 +02:00
Tor Harald Sandve
dfede36018 Make is possible to test driftCompensation i Flow, Default is still false 2019-09-25 09:03:32 +02:00
Joakim Hove
06107450d6 Uuse new EquilRecord from opm-common 2019-09-23 21:42:41 +02:00
Joakim Hove
bbb9cd3483 Pass sim start argument to SummaryState constructor 2019-09-20 07:40:04 +02:00
Arne Morten Kvarving
8d78334e21 changed: ewoms/io -> opm/models/io 2019-09-19 11:17:12 +02:00
Arne Morten Kvarving
1aba020ea3 changed: ewoms/disc -> opm/models/discretization 2019-09-19 11:16:26 +02:00
Arne Morten Kvarving
d3d9831fc3 changed: ewoms/common -> opm/models/utils 2019-09-19 11:14:36 +02:00
Arne Morten Kvarving
7048589ec1 changed: ewoms/models/blackoil -> opm/models/blackoil 2019-09-19 11:12:45 +02:00
Arne Morten Kvarving
681672660a changed: ewoms/parallel -> opm/models/parallel 2019-09-16 09:52:49 +02:00
Arne Morten Kvarving
5599bb6d8c changed: namespace Ewoms -> namespace Opm 2019-09-05 17:14:38 +02:00
Atgeirr Flø Rasmussen
aff158566e
Merge pull request #1990 from akva2/use_opm_grid_region_mapping
changed: remove duplicated regionmapping class
2019-09-05 12:39:33 +02:00
Joakim Hove
ef3a159e89
Merge pull request #1986 from joakim-hove/enum-refactor
Adapt to enum changes
2019-09-04 16:29:32 +02:00
Arne Morten Kvarving
e1696e6d5b changed: remove duplicated regionmapping class
use version from opm-grid
2019-09-04 15:47:52 +02:00
Joakim Hove
3d36565db7 Adapt to enum changes 2019-09-03 22:18:34 +02:00
Joakim Hove
750184cdf6 Add reportStep argument to Schedule::actions() 2019-08-29 19:38:27 +02:00
Joakim Hove
9b4c9e7dae Add applyActions() to Simulator 2019-08-19 16:26:22 +02:00
Andreas Lauser
993f1133c8 enable the foam extension for ebos/mebos 2019-08-09 11:04:45 +02:00
Atgeirr Flø Rasmussen
12032203b3 Improve out-of-range check for extra components. 2019-08-07 12:03:43 +02:00
Atgeirr Flø Rasmussen
dd612c58a2 Make ebos variants compile. 2019-08-07 10:39:16 +02:00
Franz G. Fuchs
7fb90bff47 Use foam module. 2019-08-07 10:39:16 +02:00
Andreas Thune
e4098df759 Allow for different edge weight methods during load balancing 2019-07-23 10:41:27 +02:00
Arne Morten Kvarving
911727527b quell some unused parameter warnings 2019-07-08 12:14:24 +02:00
Andreas Lauser
c67b9e66d3 ebos: by default, do not abort the simulation as quickly 2019-06-27 15:51:40 +02:00
Tor Harald Sandve
e2420a4361
Merge pull request #1916 from andlaus/abort_on_unknown_parameters
mebos, flow: adapt to the eWoms changes in handling unknown parameters
2019-06-27 14:59:35 +02:00
Tor Harald Sandve
fd26b61599
Merge pull request #1907 from andlaus/improve_time_integration
Improve time integration
2019-06-27 14:08:07 +02:00
Andreas Lauser
1bbf18d7c8 mebos, flow: adapt to the eWoms changes in handling unknown parameters
for `flow`, there's no change compared to the current behavior, `ebos`
and its variants will complain when it encounters unused parameters.
2019-06-27 11:51:28 +02:00
Kai Bao
9a2fcdbfd5 fixing warnings in other folder under opm-simulators 2019-06-26 10:48:41 +02:00
Andreas Lauser
c2aebbb5da EclProblem: use the generic time integration mechanism
i.e., the EclProblem does no longer need to implement the
`timeIntegration()` method itself. since `flow` does not use this code
path, it is unaffected.
2019-06-25 12:39:00 +02:00
Andreas Lauser
626e8dd243 ebos: set the default for the number of threads to 2 if openMP is available
this value is was chosen to exactly replicate `flow`'s behavior. IMO,
it would be less surprising to set the default to `1`, i.e., the user
needs to specify `--threads-per-process=$N` explicitly if
multithreaded linearization ought to be used.
2019-06-24 14:23:55 +02:00
Andreas Lauser
c0b48e28c3
Merge pull request #1902 from totto82/fix_ebos_ecl_tuning2
Only apply timestep after event at the beginning of an episode
2019-06-21 11:02:56 +02:00
Tor Harald Sandve
4b1544469d Only apply timestep after event at the beginning of an episode 2019-06-21 08:43:13 +02:00
Arne Morten Kvarving
76eab9e160 fixed: unused variable warning without MPI 2019-06-19 11:57:56 +02:00
Joakim Hove
2950faece0 Extract the Summary::eval() call from the output call 2019-06-19 09:51:46 +02:00
Joakim Hove
24e3afc544
Merge pull request #1887 from joakim-hove/remove-unused-args
Remove unused arguments from write task
2019-06-14 16:05:56 +02:00
Joakim Hove
e5d2d70ee5 Remove unused arguments from write task 2019-06-14 14:44:06 +02:00
Tor Harald Sandve
ba3598a6ae Let the output writer determine what to write in ebos 2019-06-14 13:57:41 +02:00
Tor Harald Sandve
edbc28f46c
Merge pull request #1879 from andlaus/mebos
add `mebos`, a multiplexed ebos variant
2019-06-13 11:03:38 +02:00
Andreas Lauser
ca8ea76818 add mebos, a multiplexed ebos variant
`mebos` works similarly as `flow`, but in contrast to `flow`, `mebos`
only creates the deck in the common code path whilst the
'EclipseState' and the other higher-level parser objects are always
created internally by the vanguard. this approach avoids code
duplication and the worst effects of parser API creep.

to avoid having to compile non-trivial compile units multiple times,
the actual code of the variants is moved into `ebos_$VARIANT.{hh,cc}`
files and the respective compile units are each put into a small
static library whilst the main function of said libraries are invoked
by either the multiplexed or the respective specialized simulator's
`main()`. This is also somewhat similar of how `flow` works, with the
difference that `mebos` uses the blackoil variant to determine the
parameters it needs to know for parsing the deck instead of
introducing a "fake" type tag for this. The rationale is to reduce
compile time compared to the "fake type tag" approach and -- to a
lesser extend -- avoid unnecessary copy-and-pasting of code. In
particular, this means that for the vast majority of cases, only one
place needs changed in the code for all `ebos` variants if, for
example, the parser API requires further objects in the future.
2019-06-11 10:27:47 +02:00
Joakim Hove
1790910269 Call Summary::eval() and ::add_timestep separately 2019-06-06 12:14:46 +02:00
Joakim Hove
47f4e750d2
Merge pull request #1865 from joakim-hove/use-shared-summarystate
Use shared summarystate
2019-06-04 09:49:56 +02:00
Tor Harald Sandve
9d6f20b172
Merge pull request #1870 from andlaus/ebos_cleanups
Ebos cleanups
2019-06-03 14:32:17 +02:00
Tor Harald Sandve
2df734f00e output .INIT and .GRID also on restart 2019-06-03 12:21:34 +02:00
Andreas Lauser
f5e26df6af ebos: tell the parser not to bail out if it encounters superfluous records
this makes slightly incorrect decks usable with `ebos`. since the
common `flow` variants use a different code path to parse the deck,
they are unaffected. (as far as I can see, the only variant which
might be affected is `flow_ebos_oilwater_polymer_injectivity` and even
for it `flow`'s multiplexing code will abort the run before the
vanguard is even called.)
2019-06-03 11:20:41 +02:00
Andreas Lauser
c315a9a473 ebos: make it possible to disable aquifiers
for now, disabling aquifers is an experimental feature...
2019-06-03 11:20:41 +02:00
Andreas Lauser
ef74025523 ebos: tone down the warning in the startup message slightly
The intend is to make the purpose of `ebos` clearer: while it can be
used in production, the stability guarantees are somewhat lower than
for `flow` and testing is a bit less rigorous (most of the time).
2019-06-03 11:11:41 +02:00
Andreas Lauser
c86470e768 tracer model: fix a few output messages
fixes some typos, adds better wording and fixes some duplication
issues on parallel runs.
2019-06-03 11:11:41 +02:00
Andreas Lauser
b699f40cee fix "checking conservativeness" debug message for parallel runs 2019-06-03 11:11:41 +02:00
Andreas Lauser
c0a2fdf5c6 fix a few harmless compiler warnings 2019-06-03 11:11:41 +02:00
Andreas Lauser
18d989c394 ebos: replace tabs with spaces and remove trailing white space
for some reason this keeps creping back in...
2019-06-03 11:11:41 +02:00
Tor Harald Sandve
8f60a5f9fc
Merge pull request #1841 from andlaus/remove_isSubstep
EclProblem: remove the isSubstep parameter from writeOutput()
2019-06-03 10:41:12 +02:00
Andreas Lauser
80238d9940
Merge pull request #1863 from totto82/fix_init
Make it possible to restart without computing initial conditions
2019-05-29 12:23:40 +02:00
Atgeirr Flø Rasmussen
f3b21f8ead
Merge pull request #1861 from totto82/fixFPRP
Fix FPRP output
2019-05-29 09:59:46 +02:00
Joakim Hove
6edba5d94e Use shared SummaryState in eclwellmanager 2019-05-29 07:45:58 +02:00
Joakim Hove
dc4f57f7eb
Merge pull request #1831 from joakim-hove/use-wells2-controls
Use wells2 controls
2019-05-29 06:46:58 +02:00
Tor Harald Sandve
ae78cb86df Make it possible to restart without computing initial conditions 2019-05-28 13:04:28 +02:00
Tor Harald Sandve
e8db16554f Fix FPRP output 2019-05-27 11:24:55 +02:00
Joakim Hove
511645d12c Use InjectionControls and ProductionControls data classes 2019-05-23 16:27:17 +02:00
Bård Skaflestad
a618a1a777
Merge pull request #1857 from totto82/fix_fip_seg_fault
fix typo in fip output
2019-05-23 10:38:07 +02:00
Joakim Hove
b6840db604 Use new well implementation Well2 from opm-common 2019-05-22 21:47:45 +02:00
Tor Harald Sandve
dbf7efa6cb fix typo in fip output 2019-05-22 15:39:57 +02:00
Markus Blatt
337c637fa0 Write transmissibility between direct vertical neighbors into TRANZ.
In the case where two were direct vertical neighbors in the grid
but not in the underlying cartesian grid (e.g. because of MINPV or
pinch outs), we treated them as NNCs and wrote the transmissibilty
to TRANNC.

With this patch we detect this situation (two neighbor cells with identical
i and i and no active cells between them) and do not create an NNC
in the eclipse output files but write the transmissibility to TRANZ.
2019-05-21 11:24:17 +02:00
Bård Skaflestad
4a5dcdca75
Merge pull request #1793 from jalvestad/cell-summary-props
Changes to provide Summary data output of additional block variables
2019-05-14 18:29:12 +02:00
Andreas Lauser
2bbfb583d4
Merge pull request #1839 from totto82/fix_restart
Fix episode index for restart
2019-05-14 15:28:45 +02:00
Jostein Alvestad
38265ead52 Have rerwritten the code in a more compact and logical form 2019-05-14 09:31:18 +02:00
Jostein Alvestad
9d5e55180a Added corrections to cancel unintended changes to code 2019-05-14 09:31:17 +02:00
Jostein Alvestad
45e0773edd changes to provide Summary data output of additional block variables
Provide output data for:
    BOSAT
    BWKR
    BOKR
    BKRO
    BGKR
    BKRG
    BKRW
    BWPC
    BGPC
    BVWAT
    BWVIS
    BVGAS
    BGVIS
    BVOIL
    BOVIS
2019-05-14 09:31:16 +02:00
Atgeirr Flø Rasmussen
3ac8e0a736
Merge pull request #1837 from totto82/summaryState
add a summary state member in eclproblem
2019-05-14 09:25:51 +02:00
Andreas Lauser
8657f18075 EclProblem: remove the isSubstep parameter from writeOutput()
Now that the book keeping for time stepping is correct even in `flow`,
this parameter has become redundant.
2019-05-13 13:05:39 +02:00
Tor Harald Sandve
a9b72ab45b Fix episode index for restart 2019-05-13 12:49:08 +02:00
Tor Harald Sandve
6887f3bc73
Merge pull request #1821 from andlaus/tickling_the_dragon
flow: provide the correct episode size
2019-05-13 12:40:35 +02:00
Tor Harald Sandve
8afdf2cdb5 add a summary state member in eclBaseVanguard 2019-05-13 12:35:06 +02:00
Arne Morten Kvarving
3327e69c7f fixed: use of restartTimeStep() before it has been read
it is read in the beginRestart() method, reorder code accordingly
2019-05-09 14:33:48 +02:00
Andreas Lauser
9b0be0f8ad flow: provide the correct episode size 2019-05-09 13:28:56 +02:00
Markus Blatt
781fb46e61 [bugfix] Search all NNCs when applying EDITNNC.
The latter is not sorted. Therefore we either need to search the whole
range or sort it before processing it. Io pted for the former.
2019-05-08 13:50:51 +02:00
Markus Blatt
d2efdcfaa5 Implement correct ignore thresholds for NNC with/without EDITNNC.
It seems like eclipse ignores NNCs with small transmissibility.
Small means less than 1e-6 for Eclipse (Even if it says that it
is ignoring values below 1e-5 and/or zero values)!.
This commit now implements the same threshold during IO.

Also fixes a bug when applying EDITNNC, it needs to have cell1<=cell2 to work.
2019-05-08 13:50:51 +02:00
Markus Blatt
7849ce690d Make sortNncAndApplyEditnnc return vector of NNCData ready to be processed.
Previously the vector of NNCData was passed in as a reference and sorted.
Unfortunately, it needed to be transformed later to meet all prerequisites.
With this commit we do this transformations in sortNncAndApplyEditnnc.
Furthermore EDITNNC data is passed by value as it is not needed
outside and should usually not be to big. It was copied outside anyway!
2019-05-08 13:50:50 +02:00
Markus Blatt
f02c2d4114 Factor out sorting of NNC and application of EDITNNC for reuse. 2019-05-08 13:50:50 +02:00
Markus Blatt
583741d5b1 Ignore NNCs with zero transmissibility during output. 2019-05-08 13:50:26 +02:00
Markus Blatt
5aa0399c67 Write NNCs once and honor them when writing fault transmissibility
We first add all NNCs specified in the deck to the ouput
and then determine additional NNCs by iterating over all faces that
connect cells that are not connected in the underlying cartesian grid.
Therefore we need to make sure that we do not output NNCs twice
and for faults that also have a specified NNC we need to substract
the transmissibility specified via NNC.
2019-05-08 13:50:26 +02:00
Atgeirr Flø Rasmussen
c17adf788f Moved files to opm/simulators/ subdirs. 2019-05-08 12:58:19 +02:00
Tor Harald Sandve
890d34a9e1 Add support for water induced compaction using
ROCKCOMP, ROCK2D, ROCK2DTR, ROCKWNOD and OVERBURD
2019-05-07 13:17:29 +02:00
Andreas Lauser
dd74fe1027 document all methods of EclThresholdPressure 2019-05-03 14:07:15 +02:00
Andreas Lauser
d329547463 EclProblem: clean up the time management code
- when an episode/report step is over, the next is started by endEpisode()
- the problem does not deal with updating the simulation time anymore
- rename `episodeIdx` in to `reportStepIdx` the 'EclWriter' because
  this variable is -- and always has been -- the report step number
  used by some parts of `opm-output`'s ECL writing code (the report
  step number is equivalent to the episode index plus 1). IMO, the
  output and parser code should be made more consistent in regard of
  whether it expects 0-based or 1-based indices, but this is a story
  for another day.
2019-05-03 14:07:15 +02:00
Andreas Lauser
17a4092c82 EclProblem: introduce a simulator auxiliary variable in most most cases
in most instances, this reduces the visual clutter a bit...
2019-05-03 14:07:15 +02:00
Andreas Lauser
6e351fef2e EclProblem: limit the limitTimeStepSize() to ebos
also, fix a few mistakes in that function.
2019-05-03 14:07:15 +02:00
Andreas Lauser
b9995f697f well models: remove superfluous arguments
concretely this means the `eclState` and `schedule` arguments to the
`init()` and `beginTimeStep()` methods.
2019-05-03 14:07:15 +02:00
Andreas Lauser
7868e420c0 EclProblem: print "checking conservativeness" messages in debug mode 2019-05-03 14:06:41 +02:00
Andreas Lauser
0be0de38cb EclProblem: ensure that eclWriter_ is always present
before patch, setting the `EnableEclOutput` parameter to `false`
resulted in the `eclWriter_` not to be allocated; yet it was used in
some places. this resulted in segfaults.
2019-05-03 14:06:41 +02:00
Andreas Lauser
701eb0edd3 ebos: never write restart files using the ad-hoc format
medium term, the output and restart file writing should be refactored:
the simulator does not need to be aware of this because it can be
accomplised in the problem's endTimeStep() method.
2019-05-03 14:06:41 +02:00
Tor Harald Sandve
e19508e599
Merge pull request #1780 from andlaus/ebos_deck_diagnostics
Ebos deck diagnostics
2019-05-03 13:49:02 +02:00
Andreas Lauser
794b043a28 ebos: use the non-multisegmented well model by default
this avoids regressions for decks that use well testing and makes
`ebos` work as expected if UMFPACK is not available, but obviously it
will not work for decks that use multisegment wells in earnest.

`flow` is unaffected by this because it does not use this type tag.
2019-05-02 13:54:40 +02:00
Markus Blatt
184be292ea [bugfix] Use NNC data with applied EDITNCC for transmissibility.
Unfortunately, we first created NNC with applied EDITNNC and then
still used the original NNC data to set the transmissibility. Thus
we were actually ignoring EDITNNC.

This commit fixes this by using the data structure that has EDITNNC
applied.
2019-04-26 21:25:59 +02:00
Markus Blatt
3aa60433ad Removes unsigned-signed integer comparison warnings. 2019-04-25 10:00:59 +02:00
Markus Blatt
48c3802bf3 Removes unused function parameter warnings. 2019-04-25 10:00:59 +02:00
Andreas Lauser
4805e9fe05 ebos: run the diagnostics code for relative permeabilities
maybe this needs to be reverted since the code in question can
cause the simulation to abort inadvertently.

As usual, `flow` is unaffected because this functionality is only
called in experimental mode and flow calls it itself.
2019-04-05 16:21:22 +02:00
Andreas Lauser
67a8283000 ebos: call Opm::checkDeck() after parsing
this catches at least some common issues with ECL decks.
2019-04-05 16:21:22 +02:00
Joakim Hove
c9dcfc8be0 Use RFTConfig() object to query for RFT active wells 2019-04-04 07:27:39 +02:00
Tor Harald Sandve
ae6edf6a06
Merge pull request #1774 from andlaus/support_THPRESFT
Support THPRESFT
2019-04-03 09:20:53 +02:00
Tor Harald Sandve
c88806a5bc
Merge pull request #1770 from blattms/allow-empty-fipnum-vector
Cater for empty fipnum vectors in output code.
2019-04-02 14:59:34 +02:00
Tor Harald Sandve
2c51bc6219
Merge pull request #1772 from andlaus/ebos_maintainance
ebos: make its core headers self sufficient
2019-03-29 13:49:18 +01:00
Andreas Lauser
11439bca80 ebos: some small fixes to EclProblem::checkDeckCompatibility_() 2019-03-28 13:12:29 +01:00
Andreas Lauser
7b967d0498 ebos: implement experimental support for THPRESFT
as usual, `flow` is unaffected.
2019-03-28 13:09:44 +01:00
Tor Harald Sandve
2156f15d5f Adapt to new deck specification for the boundary condition 2019-03-27 09:27:03 +01:00
Andreas Lauser
cd681c6445 ebos: make its core headers self sufficient
this is part of the release maintainance. in this context "core
headers" means the ones which do not include the well model headers,
and only those which are concerned with non-exotic functionality,
e.g., the PolyhedralGrid and ALUGrid vanguards are not changed.
2019-03-26 13:17:54 +01:00
Tor Harald Sandve
d1d7d0e0f5
Merge pull request #1769 from andlaus/api_tracking_stub
ebos: add a stub implementation for API tracking
2019-03-26 12:39:32 +01:00
Tor Harald Sandve
17c249fa46
Merge pull request #1765 from andlaus/minor_cleanups
Minor cleanups
2019-03-26 12:38:50 +01:00
Markus Blatt
831f41c0e3 Cater for empty fipnum vectors in output code.
Due to loadbalancing this vector might be empty under some circumstances.
Hence the old code would dereference the end iterator which is a bug.
2019-03-22 15:14:08 +01:00
Andreas Lauser
cdb2c6312a ebos: add a stub implementation for API tracking
the only thing which this does so far is to introduce the respective
property and `ebos` will abort the run if the deck requests API tracking.

As usual for experimental features, `flow` is unaffected.
2019-03-22 15:04:07 +01:00
Andreas Lauser
076f18c5d5
Merge pull request #1768 from andlaus/ebos_deck_check
ebos: add some checks to make sure that the simulator produces what the deck specifies
2019-03-22 15:02:00 +01:00
Andreas Lauser
0b0eb6df5e ebos: add some checks to make sure that the simulator produces what the deck specifies
this should significantly reduce surprising behavior for users. since
this is an experimental feature, `flow` is unaffected.
2019-03-22 13:38:58 +01:00
Andreas Lauser
1b8124cc31 EclProblem: remove the initialTemperature_ array
this was not used since the fluid states that correspond to the
initial condition are kept permanently.
2019-03-21 12:35:10 +01:00
Andreas Lauser
fe62b4fe5e add an ebos variant which uses completely different numbering for phases and components
for some reason, this yields quite different results for norne than
the default variant, e.g. when comparing PRESSURE, we get

```
> compareECL -k PRESSURE -t UNRST ebos/NORNE_ATW2013 ebos_altidx/NORNE_ATW2013 1 1e-4
Comparing 'ebos/NORNE_ATW2013' to 'ebos_altidx/NORNE_ATW2013'.
Comparing PRESSURE...
Occurrence in first file    = 9
Occurrence in second file   = 9
Value index                 = 0
(first value, second value) = (254.195, 253.191)

Program threw an exception: [/home/and/src/opm-common/build-cmake/fake-src/examples/test_util/EclRegressionTest.cpp:161] Deviations exceed tolerances.
The absolute deviation is 1.00311, and the tolerance limit is 1.
The relative deviation is 0.00394624, and the tolerance limit is 0.0001.
```

IMO this is a bug, but the reasons for it are currently unknown.
2019-03-13 11:14:22 +01:00
Andreas Lauser
6452fbc3cd
Merge pull request #1752 from totto82/fixTUNING
Fix bugs in the TUNING implementation in ebos
2019-03-11 12:00:56 +01:00
Tor Harald Sandve
a6e82886bb Fix bugs in the TUNING implementation in ebos 2019-03-11 10:18:27 +01:00
Joakim Hove
39525dbf9c
Merge pull request #1749 from joakim-hove/move-wells
Move well includes to subdirectory Well/
2019-03-08 12:42:30 +01:00
Joakim Hove
485db348f0 Move well includes to subdirectory Well/ 2019-03-07 15:30:33 +01:00
Andreas Lauser
383009e031 add some ebos variants
these variants should cover most of the common use cases. That said,
there are no plans to provide simulators for combinations of blackoil
extensions or a "multiplexing" simulator like `flow`: If someone is
interested in e.g., an oil-water simulator with polymer and energy
enabled, a separate self-compiled executable should be added locally.
2019-03-05 18:30:35 +01:00
Tor Harald Sandve
81c709fabd
Merge pull request #1746 from andlaus/drift_compensation
ebos: implement partial elimination of systematic mass defects
2019-03-05 15:07:22 +01:00
Atgeirr Flø Rasmussen
ec408ed6da
Merge pull request #1744 from GitPaean/warning_nnc_inactive_active
warning instead of throwing for nnc between active cells and inactive cells
2019-03-05 14:01:34 +01:00
Andreas Lauser
a812041184 ebos: implement partial elimination of systematic mass defects
the idea is to compensate the residual of the final solution of a time
step by means of an opposing source term in the next time step.

This patch has been developed as a joint project with [at]totto82 and
[at]osae.

(`flow` is unaffected by this because for now drift compensation is an
experimental feature and thus disabled within the production
simulator.)
2019-03-05 11:32:11 +01:00
Andreas Lauser
d9c67ef551 ebos: use the same well model, aquifer model and linear solver as flow
This enables `ebos` to run Norne and other non-trivial data
sets. While at it, adapt the tolerances by `ebos`.

This patch only affects the research simulator, i.e. `flow` is
unaffected by it.
2019-03-04 14:23:59 +01:00
Andreas Lauser
d7e74e7c4e fix review comment by [at]totto82 2019-03-04 13:59:50 +01:00
Andreas Lauser
b60305082d EclBaseProblem: fix the parent type tags for the EclBaseProblem tag in the non-default cases
this bitrot a bit because it was never seen by the compiler. (I still
did not check if `ebos` compiles and works if `CpGrid` is replaced by
dune-alugrid or `PolyhedralGrid`.)
2019-03-04 13:58:38 +01:00
Andreas Lauser
3ca8b8f285 ebos: improve the messages printed during the run
the convergence behaviour can now be understood and the report step
information is printed, too. This does not affect `flow`, becase it
implements its own newton and time stepping routines.
2019-03-04 13:58:38 +01:00
Andreas Lauser
8e5f1279f3 EclWellManager: do not use parallelism
the speedup gained by parallelism here are simply not worth the
headaches.

note that `flow` is unaffected by this because it uses
`Opm::BlackoilWellModel`.
2019-03-04 13:58:38 +01:00
Andreas Lauser
43dd9928b4 EclNewtonMethod: Fix convergence criterion if the residual is volumetric 2019-03-04 13:58:38 +01:00
Andreas Lauser
0a9d6a0760 include missing header files
this makes the well model and the equil initializer header more autonomous.
2019-03-04 13:58:38 +01:00
Kai Bao
a83db39cce warning instead of throwing for nnc between active cells and inactive cells 2019-03-04 12:49:17 +01:00
Andreas Lauser
f36680bf3a EclProblem: Rename NewtonRawTolerance to NewtonTolerance
this property is not used by `flow` because `flow` implements its own
Newton method, but it not renaming the property prevents `flow` from
building.
2019-03-01 10:48:06 +01:00
Andreas Lauser
c9dfad2a3d prefix the ECL timestep tuning parameters with 'Ecl' 2019-02-20 12:47:12 +01:00
Andreas Lauser
148728973f fix the output of the size of the next time step if timestepping is done externaly 2019-02-20 12:47:12 +01:00
Andreas Lauser
b1a526e5c2 ebos: remove unused deprecated function 2019-02-20 12:47:12 +01:00
Andreas Lauser
a34a8d6b9e ebos: implement partial support for the TUNING keyword
this only implements the parameters that are currently supported by
`flow`.
2019-02-20 12:47:12 +01:00
Andreas Lauser
0b600cb824 Merge pull request #483 from totto82/massratebc
Add option for setting mass boundary rate from deck
2019-02-20 12:15:21 +01:00
Tor Harald Sandve
430e667517 Add option for setting mass boundary rate from deck
Usage
BCRATE
1 1 1 1 1 10 X WATER 1e-7 /

This will inject 1e-7 of water (mass/time/length/length) on the x side of the
boundary cells with cartesian index [1 1 1] to [1 1 10]
2019-02-20 10:56:53 +01:00
Tor Harald Sandve
b4382c23e8 Merge pull request #481 from andlaus/add_experimental_mode
introduce an "experimental mode"
2019-02-20 09:39:33 +01:00
Andreas Lauser
c80e4c40c4 fix missing semicolon 2019-02-19 11:04:40 +01:00
Andreas Lauser
10d1d5c9a7 introduce an "experimental mode"
this is a compile time switch with the intention to be able to more
easily turn experimental features that are not yet considered to be
production quality on and off. DUNE has a similar mechanism (i.e., the
`DUNE_GRID_EXPERIMENTAL_GRID_EXTENSIONS` macro), but it relies on
the preprocessor.

For now, the property does not have any effect.
2019-02-19 10:22:34 +01:00
Tor Harald Sandve
9de0e54b63 Merge pull request #475 from andlaus/fix_ecl_restart
ebos: Fix restart from ECL files
2019-02-19 10:11:02 +01:00
Andreas Lauser
7165ae246a ebos: clarify startup message
this hopefully makes the purpose of `ebos` clear in its
description. this prose should be interpreted as "if you use ebos in
production, you are on your own and you should only expect a very
limited amount of support (or even sympathy) if something breaks".
2019-02-19 10:07:01 +01:00
Andreas Lauser
5b032a6a28 fix the issues found by [at]tosa82 in his review
in particular the missing synchronization after restarts was very
nasty to find. thanks a ton for pointing this out!

also, IIRC changing DR[SV]DT in the schedule section has been working
properly for a while, so the comment which stated the opposite is
removed as well.
2019-02-19 09:07:12 +01:00
Andreas Lauser
65d44a055f EclProblem: fix a few minor style issues 2019-02-18 15:30:28 +01:00
Andreas Lauser
427741fe84 ebos: Fix restart from ECL files
Some time loop stuff was missing in the doobly-doo, the init() method
of the well model was not called and there was the slightly deeper
issue that the initial solutions where not calculated on restarts
which breaks everything that relies on them. (at the moment, that's
everything which is related to non-trivial boundary contitions.)
2019-02-18 15:29:27 +01:00
Andreas Lauser
2e75eaa0ac Merge pull request #390 from joakim-hove/opm-rst-default-false
[Equinor internal]: Opm rst default false
2019-02-18 12:19:13 +01:00
Tor Harald Sandve
a86ee61bf6 Merge pull request #478 from andlaus/ebos_remove_mass_conservative_init
ebos: remove the code to calculate a mass conservative initial condtion if the specified condition is inconsistent
2019-02-18 11:18:12 +01:00
Andreas Lauser
3cd1252079 ebos: remove the code to calculate a mass conservative initial condtion if the specified condition is inconsistent
As far as I can see, this was always set to `false` anyway.
2019-02-15 13:45:23 +01:00
Andreas Lauser
0423676305 ebos: remove the DisableWells property
the purpose of this was a hack to be able to manipulate the Jacobian
matrix directly from outside code. Since `flow` has been converted to
the eWoms wells API, this is not required anymore.
2019-02-15 13:39:58 +01:00
Arne Morten Kvarving
c02ca868d6 Merge pull request #466 from atgeirr/handle-nnc
Use NNC support from CpGrid.
2019-02-14 10:22:42 +01:00
Andreas Lauser
0e761010a8 Merge pull request #472 from totto82/freeBC
Add support for using free boundary conditions in Flow
2019-02-08 20:50:02 +01:00
Tor Harald Sandve
a5463ed1a0 Add support for using free boundary conditions in Flow
The OPM spesific keywords FREEBC[XYZ[-]] can be used to specify
boundary cells that are open. Default is a closed boundary.
2019-02-07 14:56:55 +01:00
Atgeirr Flø Rasmussen
e926f557b8 Fix: indexInInside() and indexInOutside() return signed integers. 2019-02-07 12:00:49 +01:00
Atgeirr Flø Rasmussen
d087d7c41b Use NNC support from CpGrid. 2019-02-07 12:00:49 +01:00
Andreas Lauser
51b24d33d5 EclWriter: remove obsolete writeOutput() overload
this has been unused for any simulator for a while. the only code
which called it was the ECL output test, but this one could be easily
ported.
2019-02-06 12:21:08 +01:00
Andreas Lauser
dc1b92521a ebos: make it possible to account for external setup costs 2019-02-06 12:21:08 +01:00