Commit Graph

396 Commits

Author SHA1 Message Date
Arne Morten Kvarving
7ff44d9093 ecltransmissibility: separate from typetag
this allows using explicit template instantation to only
compile this code per grid, not per simulator object
2021-05-12 12:10:29 +02:00
Arne Morten Kvarving
215a8b7c25 eclcpgridvanguard: split in typetag dependent and typetag-independent parts 2021-05-11 11:30:35 +02:00
Arne Morten Kvarving
3397cd6252 eclbasevanguard: split in template and non-template parts 2021-05-11 09:15:11 +02:00
Markus Blatt
d462aee2f8
Merge pull request #3204 from akva2/collect_separate_compile_unit
CollectDataToIORank: move to separate compile unit
2021-05-07 08:55:47 +02:00
Joakim Hove
36cc9e8567 Add small class WellContainer to manage well data in WellState 2021-05-06 15:46:52 +02:00
Arne Morten Kvarving
d4b67e9af0 TargetCalculator: move to separate compile unit
use explicit instantation to avoid some templates being
instanced a lot of places in a lot of objects.
2021-05-04 08:42:02 +02:00
Bård Skaflestad
c0b68ea117
Merge pull request #3205 from akva2/relperm_compile_unit
RelpermDiagnostics: make templates private
2021-05-04 00:19:24 +02:00
Arne Morten Kvarving
0e2c61856f RelpermDiagnostics: make templates private
use explicit template instantation. to avoid rebuilding
this code over and over (minor), and to avoid includes in headers.
2021-05-03 20:39:37 +02:00
Arne Morten Kvarving
543dbe7114 CollectDataToIORank: move to separate compile unit
make it a template for grid types. this allows using
explicit template instantation and compile this code
only once per grid type, instead of once per simulator object.
2021-05-03 13:45:52 +02:00
Joakim Hove
8a78dc1c59 Add class GlobalWellInfo and use it from WellState 2021-05-03 13:28:28 +02:00
Arne Morten Kvarving
cf06a322ec countGlobalCells: put non-template code in separate compile unit 2021-04-30 15:09:23 +02:00
Arne Morten Kvarving
541ebdde13 phaseUsageFromDeck: move to separate compile unit 2021-04-29 13:00:23 +02:00
Arne Morten Kvarving
0cb0971673 ParallelFileMerger: move to separate compile unit 2021-04-29 12:57:27 +02:00
Joakim Hove
8bae5e0127 Add class ALQState to manage the ALQ state in the WellState 2021-04-28 09:33:06 +02:00
Joakim Hove
e1d117c59f Extract group state and create WGState to manage well & group state 2021-04-27 10:55:38 +02:00
Joakim Hove
7fecd9f433 Create new class GroupState to maintain runtime state of groups 2021-04-21 13:07:57 +02:00
Markus Blatt
13f62a718b
Merge pull request #2998 from g-marchiori/fpgasolver-integration
Added fpgaSolver, requires Xilinx Alveo U280 FPGA board
2021-04-15 11:21:39 +02:00
Peter Verveer
1640c4afcf Implement a new keyword validator 2021-04-12 16:47:02 +02:00
Håkon Hægland
61e67b143d Adds a simple test case for gas lift.
Adds a simple test case for gas lift optimization. Currently this is
very simplistic and only covers a fraction of the gas lift optimization
code. The plan is to use this as a building block to add more tests
in the future.
2021-04-01 16:41:46 +02:00
Giacomo Marchiori
a933d4da10 Modified CMakeLists.txt after comments by blattms.
Also, tentative changes to compile the FPGA library from a different module: this part needs to be revised because it assumes a fixed path for the OPM/FPGA module.
Modified CMakeLists_files.cmake to remove files moved to the OPM/FPGA module.
2021-03-12 11:15:02 +01:00
Giacomo Marchiori
b4aa28771f Added fpgaSolver 2021-03-12 11:14:59 +01:00
Kai Bao
9ecdca75d9 Merge remote-tracking branch 'upstream/master' into new_numerical_aquifer 2021-03-11 14:08:42 +01:00
Tong Dong Qiu
688d8ff627 Shorten opencl kernel params, add source file for openclKernels 2021-03-03 13:09:24 +01:00
Kai Bao
6008aa8339 begining simulator code for numerical aquifer
most of the functionality is to collect data for summary output.
2021-02-22 23:15:26 +01:00
tqiu
c8dca99fad Renamed fgpilu to ChowPatelIlu 2021-02-03 17:43:54 +01:00
tqiu
9f92a69037 Added CPU and GPU implementations of Fine-Grained Parallel ILU (FGPILU) 2021-01-12 15:21:19 +01:00
Atgeirr Flø Rasmussen
d910d42f6e Only add AMG preconditioners to factory if sensible.
Also add test using a new operator class, that would not compile
without the change.
2020-12-17 14:54:59 +01:00
Markus Blatt
3996967344 Added a class with information and comunicator for parallel wells.
BlackoilWellModel now stores an instance of this class for each
well. Inside that class there is a custom communicator that only
contains ranks that will have local cells perforated by the well.
This will be used in the application of the distributed well operator.

This is another small step in the direction of distributed wells,
but it should be safe to merge this (note creation of the custom
communicators is a collective operation in MPI but done only once).
2020-12-03 09:29:43 +01:00
Jose Eduardo Bueno
09e38a38e9 Fixed CMakeLists_files.cmake 2020-11-19 15:41:59 -03:00
Jose Eduardo Bueno
a9c2a684c6 Removed WellContributionsOCLContainer class (rebase) 2020-11-18 09:14:31 -03:00
Markus Blatt
64fa5a2b30
Merge pull request #2858 from Tongdongq/ilu-reorder-strategy
Added cmdline parameter --ilu-reorder-strategy
2020-11-17 09:35:12 +01:00
Joakim Hove
da2bc2affd Refactor application of NNC / EDITNNC
- The edit manipulations from EDITNNC have already been applied to the NNC data
  from opm-common

- The NNC data structures are guaranteed to be ordered, both with cell1 <= cell2
  and the NNCs are in ascending order

- The NNC output to EGRID / INIT files is based on std::vector<NNCdata>
2020-11-10 16:59:30 +01:00
tqiu
0cdac39732 Removed deleted ILUReorder.cpp, added headers to CMake 2020-10-19 11:36:25 +02:00
tqiu
d25405d39a Renamed parameter to OpenclIluReorder and moved error checking to BdaBridge constructor. 2020-10-19 11:36:25 +02:00
Atgeirr Flø Rasmussen
6155188a70 Remove unused file SimFIBODetails.hpp. 2020-10-15 16:35:35 +02:00
Bård Skaflestad
b6e0bd1b7b Add Calculator for Connection/Well Productivity Index
Switches between using the logarithmic and unit scaling factor based
on whether or not the well has an explicit, positive drainage radius
(WELSPECS item 7).  Does presently not include the D factor.

Add a set of unit tests to exercise the facility.
2020-10-13 15:42:35 +02:00
Atgeirr Flø Rasmussen
842afd312e Refactor setupPropertyTree(). 2020-10-11 09:24:05 +02:00
Atgeirr Flø Rasmussen
65817c9068 Removed old amg/cpr code that can be replaced.
The replacement consists of using the FlexibleSolver code.
2020-10-08 15:12:41 +02:00
Jose Eduardo Bueno
1ba81cece2 First commit 2020-09-24 16:35:36 -03:00
Markus Blatt
575245d785 Factored out logging setup and deck reading from class Main.
These codes are reimplemented in the ebos simulator and should
be reused, instead. This commit factilitates this and starts
reusing the logging setup code in ebos. Hence reduces code duplication.
2020-08-27 09:05:09 +02:00
Markus Blatt
faaee51d09
Merge pull request #2682 from Tongdongq/openclSolver
Added openclSolver
2020-07-10 13:38:32 +02:00
T.D. (Tongdong) Qiu
5971a7ae9e Split WellContributions into .cpp and .cu 2020-07-10 11:13:55 +02:00
T.D. (Tongdong) Qiu
ab49f60eca Added opencl.hpp to define variables and import opencl
Added opencl.cpp to get OpenCL error strings
2020-07-07 13:46:47 +02:00
T.D. (Tongdong) Qiu
91591abd56 Removed removed file from cmake install list 2020-07-07 11:42:00 +02:00
T.D. (Tongdong) Qiu
8913e1d057 Make sure OpenCL can be used without CUDA 2020-06-25 18:44:49 +02:00
Atgeirr Flø Rasmussen
c2c79f0903 Move well operators to separate file.
Also introduce new class WellModelAsLinearOperator making a well model
into an actual Dune::LinearOperator, this prevents the TypeTag dependent
type from leaking into the type of the WellModelMatrixAdapter instantiation.

As a side benefit, the adapter classes can now adapt (i.e. combine with a
matrix operator) any linear operator.
2020-06-25 10:13:12 +02:00
T.D. (Tongdong) Qiu
98ddf47b44 Added block_size template to BdaSolvers and BILU0 2020-06-25 09:39:55 +02:00
T.D. (Tongdong) Qiu
f974a5f6db Added openclSolver
Usage: --gpu-mode=[cusparse|opencl|none] on command line
2020-06-22 18:26:49 +02:00
Atgeirr Flø Rasmussen
171656144f Install FlexibleSolver_impl.hpp for downstream users. 2020-06-19 16:04:27 +02:00
Atgeirr Flø Rasmussen
f24b2cd708 Split instantiation files to enable parallel build. 2020-06-17 13:03:57 +02:00
Atgeirr Flø Rasmussen
a6d186551b Use explicit instantiation for FlexibleSolver to reduce compile times. 2020-06-17 07:43:30 +02:00
Arne Morten Kvarving
5d423e2300 changed: move moduleVersion to a separate object library
this to minimize re-linking due to compile timestamp support
2020-06-08 10:07:22 +02:00
Atgeirr Flø Rasmussen
83cafe9517
Merge pull request #2632 from atgeirr/add-printvfp-util
Add a small utility to print a slice of a VFP table.
2020-05-27 09:34:22 +02:00
Markus Blatt
55b3a65230
Merge pull request #2628 from Tongdongq/multisegmentwells-gpu
cusparseSolver can now handle MultisegmentWells
2020-05-22 16:24:58 +02:00
Atgeirr Flø Rasmussen
cb3165e681 Add a small utility to print a slice of a VFP table. 2020-05-20 11:27:28 +02:00
T.D. (Tongdong) Qiu
04ee2be348 cusparseSolver can now handle MultisegmentWells, they are actually applied on CPU via SuiteSparse/UMFPACK 2020-05-15 16:40:34 +02:00
Atgeirr Flø Rasmussen
bf0e7f0e4a Split file to ensure correct authorship and license is applied. 2020-05-13 13:53:45 +02:00
Markus Blatt
057a0ceeeb Removes stale CPR headers that have been superseeded.
No need to drag them along and confuse people.
2020-04-15 21:38:28 +02:00
Håkon Hægland
8c2ba0bfb6 Add Main.hpp to CMakeLists_files.cmake.
Pull request #2521 forgot to add Main.hpp to CMakeLists_files.cmake.
Adding Main.hpp to CMakeLists_files.cmake such that OpmInstall.cmake will
install the file to $CMAKE_INSTALL_PREFIX/include/opm/simulators/flow
when running "make install".
2020-04-14 10:43:26 +02:00
Tor Harald Sandve
60bb9e4eaa
Merge pull request #2505 from atgeirr/group-controls-at-wells-cleaned
Group controls at wells (cleaned)
2020-04-08 12:29:30 +02:00
Atgeirr Flø Rasmussen
f30ddffdb7 Split WellGroupHelpers to cpp/hpp.
Also changed namespace name.
2020-04-02 13:57:38 +02:00
Markus Blatt
2fc2703aba Use special default for LinearSolverMaxIter for CPR and honor CprMaxEllIter 2020-03-31 16:49:37 +02:00
Markus Blatt
c0a82ff335
Merge pull request #2475 from Tongdongq/separate_wellcontributions_for_gpu
Separate wellcontributions for gpu
2020-03-20 12:14:06 +01:00
Arne Morten Kvarving
a2d840a5f7 changed: put eclipse state broadcast in separate compilation unit
to avoid compiling several times for each flow variant
2020-03-19 09:31:52 +01:00
T.D. (Tongdong) Qiu
fdcf46792a BdaBridge and WellContributions are only included and compiled when CUDA is found 2020-03-18 19:03:14 +01:00
T.D. (Tongdong) Qiu
d067c08be7 Added header to CMake_files, updated copyright year 2020-03-16 12:57:35 +01:00
Arne Morten Kvarving
c40c733a57 fixed: build without MPI 2020-03-13 17:52:37 +01:00
T.D. (Tongdong) Qiu
581cbc6a3e cusparseSolver can now apply wellcontributions separately, so --matrix-add-wellcontributions=true is not required anymore 2020-03-13 14:21:59 +01:00
Markus Blatt
4c962e61d1 Also distribute the centroids when loadbalancing CpGrid.
They are attached to the cells as well and are now distributed
during CpGrid::loadBalance. Due to this change we also rename
FieldPropsDataHandle to PropsCentroidsDataHandle.
2020-03-06 14:09:32 +01:00
Markus Blatt
77478a59eb Use CpGrid::loadBalance to distribute the field properties.
The created data handle for the communication could in theory be used
with other DUNE grids, too. In reality we will need to merge with the
handle that ALUGrid already uses to communicate the cartesian indices.

This PR gets rid of using the get_global_(double|int) method in
ParallelEclipseState and reduces the amount of boilerplate code there.
2020-03-06 09:48:04 +01:00
Arne Morten Kvarving
35de9fa53d add ParallelEclipseState and ParallelFieldProps
these are wrappers sitting on top of the EclipseState and
FieldPropsManager classes.

The former has some additional methods related to parallelism,
and the latter is a parallel frontend to the FieldPropManager which
only hold the process-local data (in compressed arrays).
2020-02-28 10:26:55 +01:00
T.D. (Tongdong) Qiu
5ee7f26313 Fixed incorrect extension for header 2019-12-19 09:13:19 +01:00
T.D. (Tongdong) Qiu
e28fb78f26 Fixed incorrect path for headers 2019-12-19 09:11:57 +01:00
T.D. (Tongdong) Qiu
b6e13bffd2 Added headers to PUBLIC_HEADER_FILES. Added warning print when cusparseSolver did not converge. Added more synchronization points in cusparseSolver. Pinning b and x vector as well. 2019-12-05 18:02:27 +01:00
T.D. (Tongdong) Qiu
69033ca7f2 Changed structure of cusparseSolver to fit into master branch 2019-12-04 16:59:58 +01:00
T.D. (Tongdong) Qiu
4db2e7ca4e Added cusparseSolver. Automatically compiled when CUDA is detected. Must be enabled at runtime by adding '--use-gpu=true' 2019-12-03 14:29:06 +01:00
Arne Morten Kvarving
1ca7bdfe47 added: test for serializations in ParallelRestart 2019-11-28 08:58:56 +01:00
Atgeirr Flø Rasmussen
e718bf3ccf Remove unused code. 2019-11-25 11:00:21 +01:00
Atgeirr Flø Rasmussen
87188f5862 Avoid using the Wells struct. 2019-11-25 08:36:18 +01:00
Joakim Hove
22bb38e5cc Remove unused class RockFromDeck 2019-11-19 23:23:30 +01:00
Atgeirr Flø Rasmussen
5267f3cf17
Merge pull request #1965 from totto82/killDistr
Reimplementation of the well control code
2019-10-22 10:25:32 +02:00
Tor Harald Sandve
53896ffca8 Use well and group controls from opm-common.
This PR remove the usage of well_control_ from opm-core
and instead uses the control classes for wells and groups
from opm-common.
This PR also removes the usage of the group classes from
opm-core.
2019-10-18 16:08:07 +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
af1bf9a193 Compile well_controls as C++ 2019-08-12 10:46:11 +02:00
Atgeirr Flø Rasmussen
5749a7150c Move files out of opm/core/simulator. 2019-06-20 11:00:52 +02:00
Atgeirr Flø Rasmussen
fa016a6008 Moved all remaining files out of opm/autodiff. 2019-06-20 11:00:51 +02:00
Atgeirr Flø Rasmussen
a33cfbf0bc Moved Flow-related classes and files to opm/simulators/flow. 2019-06-20 11:00:51 +02:00
Andreas Thune
c4e0bc2385 Moving findOverlapRowsAndColumns() to a separate file. 2019-06-20 11:00:51 +02:00
Kai Bao
3dcec6a436 removing StandardWellV 2019-06-13 14:49:04 +02:00
Atgeirr Flø Rasmussen
b837dd71b4 Small fixes for the FlexibleSolver system. 2019-06-11 09:55:05 +02:00
Atgeirr Flø Rasmussen
72ae444566 Fixes for Dune < 2.6.
The PreconditionerFactory requires 2.6, so this is addressed by
simply not using that code at all for Dune < 2.6. No FlexibleSolver
etc.
2019-06-06 09:10:43 +02:00
Atgeirr Flø Rasmussen
c21fd6f26d Add and use PreconditionerFactory class.
This replaces the makePreconditoner() function. The main advantage
is that it is extensible, making it easy to for example add new
preconditioners to the factory at runtime. It supports both parallel
and serial preconditioners.
2019-06-05 15:12:52 +02:00
Atgeirr Flø Rasmussen
a76b19d95a Make FlexibleSolver feature-complete.
In particular:
 - Add parallel solvers and preconditioners.
 - Add the update() interface to preconditioners, and use it with CPR.
2019-06-03 11:42:30 +02:00
Halvor Møll Nilsen
ec498086a6 Add flexible solver and preconditioner infrastructure.
Also use it in flow_blackoil_dunecpr.cpp. Adds new command-line parameter,
--linear-solver-configuration-json-file, to read linear solver config from
JSON-format file at runtime.
2019-06-03 11:42:30 +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
f02c2d4114 Factor out sorting of NNC and application of EDITNNC for reuse. 2019-05-08 13:50:50 +02:00
Atgeirr Flø Rasmussen
c17adf788f Moved files to opm/simulators/ subdirs. 2019-05-08 12:58:19 +02:00
hnil
f05a9fdb25 Version of cpr amg which can reuse setup and also change smoothers of fine and coarse system by changing tags 2019-04-10 14:40:46 +02:00
Bård Skaflestad
2418df701f WellState FIBO: Return Segment Vectors from report()
This commit extends class WellStateFullyImplictBlackoil to report
segment-related quantities as Opm::data::Segment objects (included
in Opm::data::WellRates objects).  All wells have at least a top
segment in the context of WellState FIBO, so there is a meaningful
value to report for each well.

We put the extraction of segment-related quantities into a new
helper function

    WellStateFullyImplicitBlackoil::reportSegmentResults()

to avoid cluttering up the body of report() more than absolutely
needed.

The primary use-case for this is assigning appropriate values to
items 8 through 11 of restart vector RSEG.  In turn, this will
enable restoring these quantities from a restart file.
2019-04-04 16:22:19 +02:00
Franz G. Fuchs
25299b7a0a correct exception handling in wells for parallel runs 2019-03-13 15:19:31 +01:00