Commit Graph

643 Commits

Author SHA1 Message Date
Arne Morten Kvarving
6c9e887669 add simple inspection tool for .OPMRST files 2023-02-16 13:47:54 +01:00
Arne Morten Kvarving
4b07f6d010 added: HDF5Serializer
this takes the serialization data and stores it in a hdf5 file,
alternatively reads the data and deserializes.

will be used for restarting purposes
2023-02-14 13:15:43 +01:00
Arne Morten Kvarving
f2a14b2d07 SimulatorTimer: add serialization support 2023-02-13 18:01:16 +01:00
Arne Morten Kvarving
c6632d5b83 added: file for extra serialization packers
for now, it holds a packer for boost::gregorian::date
2023-02-13 17:53:05 +01:00
Arne Morten Kvarving
d73d52e162 added: simple HDF5File class
bare minimum to enable reading and writing byte arrays
2023-02-06 09:44:50 +01:00
Arne Morten Kvarving
e5dc2996e2 changed: move banner printing to separate compile unit 2023-02-01 22:54:55 +01:00
Arne Morten Kvarving
1729c1a414 Main: move some code to separate compile unit 2023-01-18 12:26:10 +01:00
Tor Harald Sandve
8d37ded703 Suppot EQUIL + WATER + GAS 2023-01-13 10:16:48 +01:00
Arne Morten Kvarving
c707d91684 WellConnectionAuxiliaryModule: add a typetag independent base class
and put its code in a compile unit. allows embedding WellConnections.hpp
2023-01-12 13:06:25 +01:00
Bård Skaflestad
858ca8fa49 Output Non-Linear Convergence to Separate File if Requested
This commit enables outputting non-linear convergence metrics, i.e.,
the MB and CNV values, per phase, for each non-linear iteration in
each timestep.  If the user passes the option value "iterations" to
the --extra-convergence-output command line option, this commit will
create a new output file, CASE.INFOITER, that holds

    * report step
    * time step within that report step
    * elapsed time
    * MB and CNV values per phase
    * well convergence status

for each non-linear iteration.

We use an asynchronous file writing procedure and confer ownership
of the report step's unprocessed convergence reports to this
procedure just before the end of

    SimulatorFullyImplicitBlackoilEbos::runStep()

At that point, the convergence reports are about to go out of scope.
The asynchronous protocol uses a dedicated queue of output requests,
class ConvergenceReportQueue, into which the producer-i.e., member
function runStep()-inserts new convergence reports and from which
the output thread, ConvergenceOutputThread::writeASynchronous(),
retrieves those requests before writing the file data.
2022-12-20 10:14:13 +01:00
Arne Morten Kvarving
aa684a10b8 added: MultisegmentWellSegments
this is a container class for per-segment properties in MultisegmentWell
2022-12-19 15:55:20 +01:00
Arne Morten Kvarving
e1fccd47dc added: MultisegmentWellPrimaryVariables
this is a container class for the primary variables in
multisegment well
2022-12-19 13:05:39 +01:00
Bård Skaflestad
63654a73fc Don't Output INFOSTEP File by Default
This commit introduces a new helper class,

    ConvergenceOutputConfiguration

which parses comma separated option strings into a runtime
configuration object for whether to output additional convergence
information and, if so, what information to output.

Supported option string values are

  * "none"       -- Dont want any additional convergence output.

  * "steps"      -- Want additional convergence output pertaining to the
                    converged solution at the end of each timestep.

  * "iterations" -- Want additional convergence output pertaining to each
                    non-linar ieration in each timestep.

Option value "none" overrides all other options.  In other words, if the
user requests "none", then there will be no additional convergence
output, even if there are other options in the option string.

We add a new option, ExtraConvergenceOutput (command line option
--extra-convergence-output), which takes a string argument expected
to be a comma separated combination of these options.  The default
value is "none".  Finally, make the INFOSTEP file output conditional
on the user supplying "steps" as an argument to the new option.
2022-12-15 13:02:09 +01:00
Arne Morten Kvarving
4ebde4e003 added: MultisegmentWellAssemble
this handles assembly of the equation system for multisegment well.
start by moving assembleControlEq into the new class
2022-12-05 11:07:09 +01:00
Arne Morten Kvarving
57f09050fc add: MultisegmentWellEquations
this is a container for the multisegment well equation system
2022-12-01 10:25:28 +01:00
Arne Morten Kvarving
f9b570ec84 remove test_ecl_output
the tests done here is already done (better) elsewhere
2022-11-30 15:30:49 +01:00
Arne Morten Kvarving
b08c165384 rename StandardWellGeneric to StandardWellConnections 2022-11-25 12:54:56 +01:00
Markus Blatt
42fdc38ae0
Merge pull request #4273 from Tongdongq/add-test
Add test for cusparseSolver
2022-11-22 13:55:11 +01:00
Arne Morten Kvarving
15d49e745e added: StandardWellPrimaryVariables
this is a container class for the primary variables in
standard well
2022-11-22 13:11:17 +01:00
Arne Morten Kvarving
10e967653b added: StandardWellAssemble
this handles assembly of the equation system for standardwell.
start by moving assembleControlEq into the new class
2022-11-22 12:22:18 +01:00
Arne Morten Kvarving
a8c912ccfa add: StandardWellEquations
this is a container for the standard well equation system
2022-11-22 10:36:54 +01:00
Tong Dong Qiu
21b23b7aa4 Combine multiple defines into one 2022-11-18 13:09:39 +01:00
Tong Dong Qiu
65128d1616 Removed unused reordering functions, file, header inclusions 2022-11-17 09:38:23 +01:00
Tong Dong Qiu
35287a61ff Remove FPGASolver and references 2022-11-17 09:38:01 +01:00
Markus Blatt
4988f98060
Merge pull request #4178 from Tongdongq/rocalution
Add rocalutionSolver
2022-11-09 16:44:35 +01:00
Tong Dong Qiu
8ef4e23d16 Fix CMake variables 2022-11-03 15:47:38 +01:00
Tong Dong Qiu
7e2a6800de Add test for rocalutionSolver 2022-11-03 15:47:32 +01:00
Tong Dong Qiu
ea73a1bf3c Add rocalutionSolver 2022-11-02 15:55:07 +01:00
Bård Skaflestad
73466da197
Merge pull request #4224 from akva2/wellinterface_eval_rename_assemble
Rename WellinterfaceEval to WellAssemble
2022-11-01 13:51:08 +01:00
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
Arne Morten Kvarving
122ac87c55 GasLiftStage2: no longer a need to template on TypeTag 2021-05-28 08:24:07 +02:00
Arne Morten Kvarving
3aa2b38832 changed: split out FluidSystem only dependent code from WellInterface
this allows using explicit template instantation to only build
this code once for each FluidSystem
2021-05-27 14:22:14 +02:00
Arne Morten Kvarving
70ece6d25a eclwriter: split in typetag dependent and typetag-independent parts 2021-05-22 13:21:09 +02:00
Joakim Hove
23180e06d2 Rename WellStateFullyImplicitBlackoil -> WellState 2021-05-21 15:07:21 +02:00
Joakim Hove
3dcb0742d0 Moved init and initSingleWell and removed WellState.cpp 2021-05-21 14:57:38 +02:00
Joakim Hove
9c4b8df02d Do not install wellstate.hpp 2021-05-21 14:57:38 +02:00
Arne Morten Kvarving
1614767362 GasLiftSingleWell: split typetag independent code to separate class 2021-05-21 09:09:10 +02:00
Arne Morten Kvarving
ffc3d8fbd6 eclgenericoutputblackoilmodule: split in typetag dependent/independent parts 2021-05-20 09:16:44 +02:00
Arne Morten Kvarving
0f4bb49ed9 changed: split out non-typetag dependent code from WellInterface 2021-05-19 09:25:03 +02:00
Arne Morten Kvarving
30414bf0ff ecltracermodel: split in typetag dependent and typetag-independent parts
this allows using explicit template instantation to only
compile this code per grid, not per simulator object
2021-05-14 14:06:18 +02:00
Joakim Hove
3ed51c28f9
Merge pull request #3256 from akva2/eclthresholdpressure_vanguard_separate
eclthresholdpressure: split in typetag dependent/independent parts
2021-05-14 09:07:36 +02:00
Arne Morten Kvarving
f5fa602abb eclthresholdpressure: split in typetag dependent and typetag-independent parts
this allows using explicit template instantation to only
compile this code per grid, not per simulator object
2021-05-13 21:09:38 +02:00
Arne Morten Kvarving
861899de2e changed: put WellStateFullyImplicitBlackoil in separate compile unit 2021-05-13 12:01:03 +02:00
Markus Blatt
af68511a63
Merge pull request #3223 from akva2/ecltransmissibility_vanguard_separate
Separate eclctransmissibility.hh into typetag dependent/independent code
2021-05-13 09:33:59 +02:00
Arne Morten Kvarving
6ef5e239b2 sort alphabetically 2021-05-13 00:38:08 +02:00
Arne Morten Kvarving
a032c5a80e changed: put WellState in separate compile unit 2021-05-13 00:38:08 +02:00
Arne Morten Kvarving
ca1a799e95 changed: put partially supported keywords in separate compile unit
avoid triggering full simulator rebuilds when updating
this list
2021-05-12 14:29:33 +02:00
Arne Morten Kvarving
306593af3b changed: put unsupported keywords in separate compile unit
avoid triggering full simulator rebuilds when updating
this list
2021-05-12 14:29:33 +02:00
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