Commit Graph

514 Commits

Author SHA1 Message Date
Arne Morten Kvarving
b700ec9b53 rename WellInterfaceEval to WellAssemble 2022-11-01 12:55:00 +01:00
Arne Morten Kvarving
06686702ea added: WellConstraints
this will hold the code for well constraints.
start by moving activeProductionConstraint to the new class
2022-11-01 08:56:41 +01:00
Bård Skaflestad
dea582d296
Merge pull request #4197 from akva2/well_group_constraints
Add class for well group constraints
2022-10-31 16:12:17 +01:00
Arne Morten Kvarving
cd734f7a0d added: WellBhpThpCalculator
this will hold the code for THP/BHP calculations.

first method moved there is wellHasThpConstraints
2022-10-31 13:15:18 +01:00
Arne Morten Kvarving
698b748270 added: WellGroupConstraints
this holds the code for well group constraints.
move checkGroupConstraintsInj into the new class
2022-10-31 13:14:50 +01:00
Arne Morten Kvarving
cfd0eda7de added: WellGroupControls
this holds the code for well group controls.
move getGroupInjectionControl into the new class
2022-10-31 08:52:19 +01:00
Bård Skaflestad
7b499c4f0a
Merge pull request #4199 from akva2/well_test
Add class for well tests
2022-10-29 13:49:22 +02:00
Arne Morten Kvarving
dc607ce3ff add BlackoilWellModelGuideRates
start by moving getGuideRateValues
2022-10-28 22:40:38 +02:00
Bård Skaflestad
d1d5ff2831
Merge pull request #4208 from akva2/well_convergence
Add class for checking well convergence
2022-10-28 21:26:17 +02:00
Arne Morten Kvarving
0f8ca0c529 add WellConvergence
move checkConvergenceControlEq into it
2022-10-28 19:47:55 +02:00
Arne Morten Kvarving
2d9d452fff add BlackoilWellModelConstraints
start by moving hasTHPConstraints
2022-10-28 18:21:43 +02:00
Arne Morten Kvarving
0b32c1afd9 add BlackoilWellModelRestart
start by moving loadRestartConnectionData
2022-10-28 15:13:06 +02:00
Arne Morten Kvarving
9367335fe3 added: WellTest
this will hold the code for well tests.
start by moving checkMaxRatioLimitWell to the new class
2022-10-24 10:55:32 +02:00
Markus Blatt
3e680e41f5
Merge pull request #4136 from Tongdongq/remove_reordering
Remove reordering for opencl
2022-10-19 15:30:01 +02:00
Atgeirr Flø Rasmussen
a9c1a0998e Use MPI_FOUND not MPI_Found. 2022-10-19 14:13:39 +02:00
Arne Morten Kvarving
ac6c7d82f5 fixed: damaris depends on mpi 2022-10-18 13:12:01 +02:00
Markus Blatt
fc96ef86c1 [bugfix] Unconditionally compile WellContributions.cpp et al
Otherwise we get undefined references. Fixes problems introduced with #4157
2022-10-17 16:51:53 +02:00
Elyes Ahmed
31f5ff3f0e fixing initDamarisInitXmalFile in Cmake_Lists_FXiles 2022-10-13 12:23:06 +02:00
Atgeirr Flø Rasmussen
76bacff3cf Move XML template to separate file, fix formatting, and use path. 2022-10-13 12:23:06 +02:00
Elyes Ahmed
4e7d9b5900 adding a constraint to let flow compile without having damaris necessarly 2022-10-13 12:23:06 +02:00
Joshua Bowden
fa7af3540c Changes needed to add Damaris functionality. The current state is that we output the pressure field and we use both HDF5 and parallel HDF5.
Damaris initialization is added after InitMpi but before starting the simulation. Damaris will invoke a separate core for writing in
parallel and leave the rest of cores for the simulator. The main changes are in main where start_damaris and then in eclwriterm where
we use damaris to output the PRESSURE. To test Damaris one can use --enable-damaris-output=true and to use parallel HDF5 one can use
--enable-async-damaris-output=true (false is the default choice)
2022-10-13 12:23:06 +02:00
Tong Dong Qiu
860c209bac Removed deleted header reference 2022-10-04 14:23:16 +02:00
Bård Skaflestad
66fac184ad
Merge pull request #4111 from goncalvesmachadoc/test-rvw
Add unit tests for EQUIL with rvw
2022-10-02 22:11:04 +02:00
goncalvesmachadoc
c82e769697 fixes 2022-09-20 10:56:54 +02:00
goncalvesmachadoc
0a91b773d8 test also with live oil 2022-09-16 14:17:53 +02:00
Arne Morten Kvarving
c1c850538a added: command line option for zoltan customization
modeled after the linsolver support. a few built-in presets,
as well as reading options from a json file
2022-09-16 13:51:29 +02:00
Arne Morten Kvarving
b1092c1a12 changed: refactor MPIPacker
to limit the overload party, we put packing details for
specific types in separate structs.
emit compiler error if unsupported type is given,
better to detect this on compile time rather than runtime
2022-09-15 14:04:41 +02:00
goncalvesmachadoc
a5a9f5ee4e addtestfordeadoilwithhumid&wetgas 2022-09-14 16:11:36 +02:00
Bård Skaflestad
56c653235f
Merge pull request #4087 from akva2/rename_serialization
Rename serialization files
2022-09-13 10:48:33 +02:00
Arne Morten Kvarving
8e2b385f4d changed: put parts of ISTLSolverEbos in separate compile unit
in particular this means simulator objects are now not dependent
on FlexibleSolver.hpp and BdaBridge.hpp
2022-09-12 12:44:56 +02:00
Markus Blatt
a4360b4961
Merge pull request #4028 from akva2/reduce_dup
changed: get rid of duplicate MatrixBlock headers/classes
2022-09-09 15:30:30 +02:00
Arne Morten Kvarving
de0018350a changed: rename test_ParallelRestart to test_ParallelSerialization 2022-09-08 13:37:16 +02:00
Arne Morten Kvarving
1838b39d2e changed: split ParallelRestart.hpp/cpp in two bits
the mpi serialization bit is put in MPISerializer.hpp/cpp,
while the parallel restart bit stays in ParallelRestart
2022-09-08 13:36:51 +02:00
Bård Skaflestad
93b059eca1
Merge pull request #4046 from akva2/mswellhelper_priv
make MSWellHelpers templates private
2022-09-01 16:44:15 +02:00
Arne Morten Kvarving
5052a09d6e make MSWellHelpers templates private 2022-09-01 15:17:04 +02:00
Arne Morten Kvarving
69db0dd175 wellhelpers: make templates private
to increase header encapsulation
2022-09-01 13:37:11 +02:00
Arne Morten Kvarving
1a348c0d29 changed: get rid of duplicate MatrixBlock headers/classes
this has already led to some confusion. move some of the code
upstream to opm-models and remove the rest of the duplicated code.

the remainder of MatrixBlock.hpp is renamed to SmallDenseMatrixUtils.hpp
2022-08-25 12:48:53 +02:00
Bård Skaflestad
a56cd6752c
Revert "changed: reduce some code duplication" 2022-08-24 20:34:52 +02:00
Arne Morten Kvarving
447d77b579 changed: get rid of duplicate MatrixBlock headers/classes
this has already led to some confusion. move some of the code
upstream to opm-models and remove the rest of the duplicated code.

the remainder of MatrixBlock.hpp is renamed to SmallDenseMatrixUtils.hpp
2022-08-24 15:54:01 +02:00
Arne Morten Kvarving
3ef07d7f62 changed: put ParallelOverlappingILU0 in separate compile unit
i chose to split in a separate _impl file because this code is so
generic that there may be downstream users who want to use on other
matrix types than what we use in opm-simulators.
2022-08-22 11:21:31 +02:00
Arne Morten Kvarving
ec089af048 changed: split PreconditionerFactory in _impl file
and put instances in separate cpp files.
2022-08-22 09:33:15 +02:00
Arne Morten Kvarving
371b2592f5 changed: put ParallelIstlInformation in separate compile unit 2022-08-18 09:15:28 +02:00
Arne Morten Kvarving
a32a32649d changed: put MILU in separate compile unit 2022-08-16 10:46:20 +02:00
Arne Morten Kvarving
c405d718b1 changed: move action update handling to separate class
clearer interface boundaries plus it allows to build code only once
2022-08-15 12:40:13 +02:00
Arne Morten Kvarving
f57383f416 initstateequil: make it a private template 2022-08-11 15:34:55 +02:00
Arne Morten Kvarving
54cf35e821 equilibrationhelpers: make templates private 2022-08-11 15:34:55 +02:00
Arne Morten Kvarving
f166920e75 changed: rename AquiferInterface to AquiferAnalytical 2022-08-11 09:59:49 +02:00
Bård Skaflestad
27564f0610 Add MPI-Aware Accumulator for Inter-Region Flow Rates
This commit introduces a new helper class

    Opm::EclInterRegFlowMapSingleFIP

that wraps an object of type

    Opm::data::InterRegFlowMap

along with the MPI rank's notion of a FIP region array definition
(e.g., the local FIPNUM array).  The new single-FIP flow map is
responsible for accumulating local contributions to the inter-region
flows defined by that FIP array.  In the case of connections between
MPI ranks, the rank that owns the lowest region ID accumulates the
associate flow rates.

Add unit tests to exercise the new class, including simulating
multiple MPI ranks that are communicated to a single I/O rank for
summary output purposes.
2022-02-18 10:29:56 +01:00
Bård Skaflestad
b5ded12847 Sort List of Existing Unit Tests
In preparation of adding new entries.
2022-02-18 10:29:56 +01:00
Tong Dong Qiu
275bfe2da4 Move cuda files to separate folder 2022-02-02 09:28:41 +01:00
Tong Dong Qiu
e81ca0526e Move opencl files to separate folder 2022-02-01 16:51:32 +01:00
Håkon Hægland
538559cafa Add gas lift headers to PUBLIC_HEADER_FILES
The headers BlackoilWellModel.hpp, StandardWell.hpp,and WellInterface.hpp
all include various GasLift*.hpp headers directly. That means that any
client code that uses those well-related headers will need to have the
GasLift* headers available too.

Also sorts the headers under opm/simulators/wells to make the it easier
to read.
2022-01-25 12:14:50 +01:00
Håkon Hægland
4970b0641e Improve debugging tools in gaslift code.
Introduces a gaslift debugging variable in ALQState in WellState. This
variable will persist between timesteps in contrast to when debugging
variables are defined in GasLiftSingleWell, GasLiftGroupState, or GasLiftStage2.

Currently only an integer variable debug_counter is added to ALQState,
which can be used as follows: First debugging is switched on globally
for BlackOilWellModel, GasLiftSingleWell, GasLiftGroupState, and
GasLiftStage2 by setting glift_debug to a true value in BlackOilWellModelGeneric.
Then, the following debugging code can be added to e.g. one of
GasLiftSingleWell, GasLiftGroupState, or GasLiftStage2 :

    auto count = debugUpdateGlobalCounter_();
    if (count == some_integer) {
        displayDebugMessage_("stop here");
    }

Here, the integer "some_integer" is determined typically by looking at
the debugging output of a previous run. This can be done since the
call to debugUpdateGlobalCounter_() will print out the current value
of the counter and then increment the counter by one. And it will be
easy to recognize these values in the debug ouput. If you find a place
in the output that looks suspect, just take a note of the counter
value in the output around that point and insert the value for
"some_integer", then after recompiling the code with the desired value
for "some_integer", it is now easy to set a breakpoint in GDB at the
line

    displayDebugMessage_("stop here").

shown in the above snippet. This should improve the ability to quickly
to set a breakpoint in GDB around at a given time and point in the simulation.
2022-01-23 20:37:26 +01:00
Arne Morten Kvarving
999e2a449e fixed: conditionally build test_csrToCscOffsetMap 2022-01-18 13:49:24 +01:00
Eduardo Bueno
1df9d2e51f Adds BISAI preconditioner to openclSolver 2022-01-17 13:57:29 -03:00
Tong Dong Qiu
aa5f36b835 Only include test if opencl is found 2021-12-09 08:39:43 +01:00
Tong Dong Qiu
0881089406 Add Preconditioner, superclass of BILU0 and CPR 2021-12-01 11:47:45 +01:00
Tong Dong Qiu
a911d5d2be Add test for solve_transposed_3x3() 2021-12-01 11:47:44 +01:00
Tong Dong Qiu
a71a5cd8fe Moved OpenclMatrix to new file 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
6465cf9cbb Add CPR preconditioner for openclSolver and
change raw pointers to vector for Matrix
2021-12-01 11:43:30 +01:00
Markus Blatt
6d8223f233
Merge pull request #3602 from blattms/parallel-tracers
[feature] Adds support for computing tracers in parallel runs.
2021-11-23 12:39:48 +01:00
Markus Blatt
6f40d63f1f [cmake] Add common source files for CUDA/OpenCL/amgcl only once. 2021-11-17 17:30:01 +01:00
Markus Blatt
9a80d806c0 Setup parallel solvers for tracers. 2021-11-17 16:02:16 +01:00
Arne Morten Kvarving
11c0a75080 fixed: build without any bda backend 2021-11-16 15:48:29 +01:00
Arne Morten Kvarving
e25caba8ed changed: refactor BDA well contributions
split in API specific classes for Cuda/OpenCL

this to
1) it's cleaner
2) it avoids pulling in openCL code in cuda classes which leads
to clashes between nvidia headers and opencl.hpp

there is still too much API specific things in interface between the
bda components to work through a virtual interface so we still have to cast
to the relevant implementation in various places.
2021-11-11 14:49:33 +01:00
Atgeirr Flø Rasmussen
84392a25b4
Merge pull request #3648 from joakim-hove/phase-usage-constructor
Create PhaseUsage constructor
2021-11-05 15:35:50 +01:00
Atgeirr Flø Rasmussen
5503e6ca06 Remove ISTLSolverEbosFlexible and flow_blackoil_dunecpr.
The class ISTLSolverEbos has all features of the removed class, and
is not much more complex. The flow_blackoil_dunecpr is the only
program using it, and is redundant.
2021-11-02 15:02:48 +01:00
Joakim Hove
bcdc974585 Create PhaseUsage constructor 2021-11-01 17:04:42 +01:00
daavid00
48b175904a first version of micp implementation in flow 2021-10-14 17:44:57 +02:00
Tor Harald Sandve
f9832d8830 split RateConverter 2021-09-07 08:53:09 +02:00
Joakim Hove
060eac4999 Add basic functionality for validating special case keywords 2021-08-24 13:50:40 +02:00
Joakim Hove
a54daf75e8 Add trivial class SingleWellState with bhp and thp 2021-08-15 09:01:21 +02:00
Tong Dong Qiu
f77d745b51 Factor out CUDA part of amgclSolver 2021-07-07 16:24:52 +02:00
Tong Dong Qiu
282f611f92 Make sure amgcl can be used without CUDA 2021-07-07 16:24:52 +02:00
Tong Dong Qiu
a08195a983 Use CMake config of amgcl itself 2021-07-07 16:24:52 +02:00
Tong Dong Qiu
c2869810e2 Added amgclSolverBackend 2021-07-07 16:24:51 +02:00
Markus Blatt
2260fde478
Merge pull request #3300 from Tongdongq/add-tests
Added tests for cusparseSolver and openclSolver
2021-06-17 22:31:23 +02:00
Håkon Hægland
fbb24e2a5a Check group limits in gas lift stage 1.
Check group limits in gas lift stage 1 to avoid adding too much ALQ which must
anyway later be removed in stage 2. This should make the optimization
more efficient for small ALQ increment values. Also adds MPI support.
2021-06-16 12:00:54 +02:00
Joakim Hove
34481e48c3 Add data container PerfData to use in WellState 2021-06-10 07:18:46 +02:00
Bård Skaflestad
ed131190eb
Merge pull request #3353 from akva2/msw_eval
add MultisegmentWellEval
2021-06-10 00:10:31 +02:00
Joakim Hove
fc5e2be4e2
Merge pull request #3365 from akva2/wrap_property_tree
Add Opm::PropertyTree
2021-06-09 17:12:38 +02:00
Arne Morten Kvarving
b7e2ad3bfe added: PropertyTree class
this is a thin wrapper around boost::property_tree
with this we avoid parsing property tree headers in all
simulator objects
2021-06-09 15:21:52 +02:00
Arne Morten Kvarving
68fc2b0bc6 add MultisegmentWellEval 2021-06-09 15:17:36 +02:00
Arne Morten Kvarving
29ae002a87 changed: avoid templating in setupPropertyTree
simply pass the required params to function instead.
2021-06-09 12:54:14 +02:00
Arne Morten Kvarving
eb06c4bd70 add StandardWellEval 2021-06-09 08:32:30 +02:00
Bård Skaflestad
aa12201ee2
Merge pull request #3362 from akva2/date_time_prune
Avoid boost/date_time in simulator objects
2021-06-08 17:46:34 +02:00
Arne Morten Kvarving
ce01d780cf SimulatorTimerInterface: avoid boost includes in header 2021-06-08 15:44:56 +02:00
Arne Morten Kvarving
14ea3e6dd1 SimulatorFullyIplicitBlackoilEbos: avoid boost includes in header 2021-06-08 15:44:28 +02:00
Arne Morten Kvarving
fce3247c56 AdaptiveTimeSteppingEbos: avoid boost include in header 2021-06-08 15:44:28 +02:00
Arne Morten Kvarving
c623fba017 add MultisegmentWellGeneric
avoid rebuilding this for all simulators when code
is only dependent on Scalar. instanced for double
2021-06-08 10:43:10 +02:00
Arne Morten Kvarving
10ff86af52 add StandardWellGeneric
avoid rebuilding this for all simulators when code
is only dependent on Scalar. specialized for double
2021-06-08 08:08:50 +02:00
Bård Skaflestad
6c1ca7450f
Merge pull request #3282 from akva2/blackoilwellmodel_generic_split
split out typetag independent code from BlackoilWellModel
2021-06-07 22:13:36 +02:00
Arne Morten Kvarving
059140f2ee split out typetag independent code from BlackoilWellModel 2021-06-07 12:04:06 +02:00
Tong Dong Qiu
74b46e4d8d Added tests for cusparseSolver and openclSolver 2021-06-07 11:40:03 +02:00
Arne Morten Kvarving
4c09b5dde3 add WellInterfaceEval 2021-06-07 08:26:43 +02:00
Arne Morten Kvarving
29842ff9a2 add WellInterfaceIndices
while not a lot of class in this layer, having it helps
in downstream well code.
2021-06-07 08:26:43 +02:00
Joakim Hove
5dc267c6f5 Add class SegmentState 2021-06-03 10:46:04 +02:00
Arne Morten Kvarving
ef635d42af VFPHelpers: put in separate compile unit 2021-05-31 11:42:29 +02:00
Bård Skaflestad
f7b0d599c8
Merge pull request #3314 from akva2/eclproblem_typetag_split
eclproblem: split in typetag and typetag independent parts
2021-05-28 11:47:37 +02:00
Arne Morten Kvarving
cbd7cfe8b6 split eclproblem in typetag dependent and typetag independent classes 2021-05-28 08:54:10 +02:00