Commit Graph

2175 Commits

Author SHA1 Message Date
Tobias Meyer Andersen
3f4ae4ddf4 refactor cuistl namespace 2024-08-22 13:52:50 +02:00
jakobtorben
5d54c50ba0 Add method for defining if preconditioners should be recreated 2024-08-20 17:57:38 +02:00
Arne Morten Kvarving
965c89d7a2 added: (restart-)serialization test for MixingRateControls 2024-08-19 14:03:47 +02:00
Arne Morten Kvarving
b902f83fa6 BlackoilModelParameters: introduce translation unit 2024-08-16 17:15:53 +02:00
Arne Morten Kvarving
280704e2e0 move AdaptiveTimeStepping parameters to TypeTag-free parameter system 2024-08-16 13:22:17 +02:00
Arne Morten Kvarving
e2b8715b42 move EclTimeStepping parameters to TypeTag-free parameter system 2024-08-16 13:22:17 +02:00
Arne Morten Kvarving
3716ee664d move BlackoilModel parameters to TypeTag-free parameter system 2024-08-16 13:20:04 +02:00
Arne Morten Kvarving
aab40a32e2 move EnableTerminalOutput parameter to TypeTag-free parameter system 2024-08-16 13:17:56 +02:00
Arne Morten Kvarving
64557a136d NewtonMaxIterations moved to TypeTag-free parameter system 2024-08-13 20:13:28 +02:00
Arne Morten Kvarving
0195f8f113 NewtonTolerance moved to TypeTag-free parameter system 2024-08-13 20:13:28 +02:00
Arne Morten Kvarving
43f9a46b51 ContinueOnConvergenceError moved to TypeTag-free parameter system 2024-08-13 13:31:11 +02:00
Arne Morten Kvarving
9e11888ccb ThreadsPerProcess moved to TypeTag-free parameter system 2024-08-12 14:48:56 +02:00
Kjetil Olsen Lye
eb3d4e9203
Merge pull request #5441 from multitalentloes/add_opm_cuilu0
Add OpmCuILU0 and clean up cuistl
2024-08-12 09:46:37 +02:00
Tobias Meyer Andersen
7a30aaa46e Add an OPM implementation of ILU0
improve file structure in cuistl
run clang-format
2024-08-09 15:52:42 +02:00
Arne Morten Kvarving
edb99264ea add test for new parameter system 2024-08-09 15:29:27 +02:00
Arne Morten Kvarving
e1bcd00a36 adapt to ParameterSystem typetag removal 2024-08-09 10:56:07 +02:00
Arne Morten Kvarving
a65ddff8f6 changed: BlackoilModel parameters moved to Opm::Parameters namespace 2024-08-06 09:50:02 +02:00
Arne Morten Kvarving
d75b91aaba changed: SimulatorFullyImplicitBlackoil parameters moved to Opm::Parameters namespace 2024-08-06 09:50:02 +02:00
Kjetil Olsen Lye
51e8bb7191
Merge pull request #5392 from multitalentloes/add_CuBuffer
Add CuBuffer and CuView
2024-08-05 15:29:59 +02:00
Tobias Meyer Andersen
e8ac31da16 add CuBuffer and CuView to cuISTL 2024-08-01 16:38:16 +02:00
Tor Harald Sandve
f678c082de Adapt to inj prefix and cleanup 2024-08-01 11:23:00 +02:00
Tor Harald Sandve
5f8916c0c3 Use cell temperature in perforated cell to compute reservoir rates 2024-08-01 11:14:29 +02:00
Markus Blatt
03dc006b88
Merge pull request #5488 from lisajulia/fix/ACTIONX-COMPDAT
Fix/actionx compdat
2024-07-30 17:18:04 +02:00
Lisa Julia Nebel
3d8c1a11b7 Add option to compare two parallel runs 2024-07-25 16:26:20 +02:00
Atgeirr Flø Rasmussen
3e3dd7fa26 BSD and macOS getopts require options first. 2024-07-25 16:19:59 +02:00
Markus Blatt
ca2ef490aa
Merge pull request #5408 from BigDataAccelerate/cpr_rocsparse
rocsparse CPR initial version
2024-07-16 18:57:40 +02:00
Lisa Julia Nebel
c92bad8cfe Change asserts to BOOST_REQUIRE_* in test_tasklets_failure 2024-07-15 14:56:26 +02:00
Lisa Julia Nebel
c78a629528 Fix indentation 2024-07-15 14:52:47 +02:00
Lisa Julia Nebel
0a70296eb9 Change pointer to tasklet runners to smart pointer and add comment about why they are created on the heap 2024-07-15 14:51:52 +02:00
Lisa Julia Nebel
c73a51650f Change lock mechanism to std::lock_guard 2024-07-15 14:22:28 +02:00
Lisa Julia Nebel
4d0179cffc Implement a more polling-based interface for the tasklets failure mechanism 2024-07-12 15:12:41 +02:00
Razvan Nane
8963bf16f9 fix tests 2024-07-12 11:47:25 +02:00
Lisa Julia Nebel
f86623a70c Add test for failing tasklets 2024-07-09 09:44:13 +02:00
Atgeirr Flø Rasmussen
db1be5e92b Fix Damaris test.
The h5diff program returns 1 (failure) if there are any differences at all,
even if using a relative or absolute difference tolerance and seeing no
differences above the tolerance. In that situation, the output will be empty,
but the return value 1.

To make this test behave similar to the other regression tests, we now check
if its output is empty instead.

Also: set relative tolerance to 0.01 and remove the absolute test. This test
is not meant to trigger for numerics changes, but should capture errors in
the writing of the HDF5 file.
2024-07-08 15:57:10 +02:00
Atgeirr Flø Rasmussen
874b136ce9 Enable running test on BSD/MacOS.
BSD getopts() require options first.
2024-07-08 15:55:41 +02:00
Kjetil Olsen Lye
f3b5e0d14d
Merge pull request #5433 from multitalentloes/useRecomendedBlockSize
Autotune thread block size
2024-07-08 14:17:39 +02:00
Tobias Meyer Andersen
085c3a9b16 add new constructor arguments in test instantiations 2024-07-08 11:35:26 +02:00
Arne Morten Kvarving
5c46d9cde5 add damaris test support to update_reference_data.sh 2024-07-03 21:01:54 +02:00
Arne Morten Kvarving
82cd3a2e01 changed: NewtonMaxIterations parameter moved to Opm::Parameters namespace 2024-07-01 14:13:48 +02:00
Arne Morten Kvarving
514eddc950 changed: NewtonTolerance parameter moved to Opm::Parameters namespace 2024-07-01 14:13:48 +02:00
Bård Skaflestad
9f8075e8a0
Merge pull request #5455 from akva2/fvbasediscretization_param_split
Adjust to to changes in fvbaseproperties.hh (moving of parameters to Opm::Parmeters namespace)
2024-07-01 13:22:26 +02:00
Arne Morten Kvarving
3e1c8baa35 changed: ContinueOnConvergenceError parameter moved to Opm::Parameters namespace 2024-06-28 14:43:11 +02:00
Arne Morten Kvarving
afa62ee428 changed: ThreadsPerProcess parameter moved to Opm::Parameters namespace 2024-06-28 14:43:11 +02:00
Bård Skaflestad
0c71d0701c Add MPI Support to Saturation Function Consistency Checks
This commit adds a new public member function

    SatfuncConsistencyChecks<>::collectFailures(root, comm)

which aggregates consistency check violations from all ranks in the
MPI communication object 'comm' onto rank 'root' of 'comm'.  This
amounts to summing the total number of violations from all ranks and
potentially resampling the failure points for reporting purposes.

To this end, extract the body of function processViolation() into a
general helper which performs reservoir sampling and records point
IDs and which uses a call-back function to populate the check values
associated to a single failed check.  Re-implement the original
function in terms of this helper by wrapping exportCheckValues() in
a lambda function.  Extract similar helpers for numPoints() and
anyFailedChecks(), and add a new helper function

    SatfuncConsistencyChecks<>::incorporateRankViolations()

which brings sampled points from an MPI rank into the 'root's
internal data structures.

One caveat applies here.  Our current approach to collecting check
failures implies that calling member function reportFailures() is
safe only on the 'root' process in a parallel run.  On the other
hand functions anyFailedChecks() and anyFailedCriticalChecks() are
safe, and guaranteed to return the same answer, on all MPI ranks.

On a final note, the internal helper functions are at present mostly
implemented in terms of non-owning pointers.  I intend to switch to
using 'std::span<>' once we enable C++20 mode.
2024-06-28 11:04:53 +02:00
Kjetil Olsen Lye
9b414419e7
Merge pull request #5404 from multitalentloes/add_dilu_LU_splitting
Add cudilu lu splitting
2024-06-27 14:30:45 +02:00
Bård Skaflestad
c3939c5444 Add New Platform for Saturation Function Consistency Checks
The intention is that this will ultimately replace the existing
RelpermDiagnostics component which does not really work in parallel
and which does not report enough context to help diagnose underlying
issues.  For now, though, we just add the shell of a new set of
checks and hook that up to the build.

Class SatfuncConsistencyChecks<Scalar> manages a configurable set of
consistency checks, the implementations of which must publicly
derive from SatfuncConsistencyChecks<Scalar>::Check.  Client code
will configure a set of checks by first calling

    SatfuncConsistencyChecks<Scalar>::resetCheckSet()

then register individual checks by calling

    SatfuncConsistencyChecks<Scalar>::addCheck()

and finally build requisite internal structures by calling

    SatfuncConsistencyChecks<Scalar>::finaliseCheckSet()

Client code will then run the checks by calling

    SatfuncConsistencyChecks<Scalar>::checkEndpoints()

typically in a loop.  Class SatfuncConsistencyChecks<Scalar> will
count consistency check failures and attribute these to each
individual check as needed.  We also maintain separate counts for
"Standard" and "Critical" failures.  The former will typically
generate warnings while the latter will typically cause the
simulation run to stop.  Individual checks get to decide which check
is "Critical", and client code gets to decide how to respond to
"Critical" failures.

Member function SatfuncConsistencyChecks<Scalar>::reportFailures()
will generate a textual report of the known set of consistency check
failures at a give severity level.

As an internal implementation detail, SatfuncConsistencyChecks uses
"reservoir sampling"
(https://en.wikipedia.org/wiki/Reservoir_sampling) to track details
about individual failed checks.  We maintain at most a fixed number
of individual points (constructor argument).
2024-06-26 12:17:00 +02:00
Bård Skaflestad
26cd7ab993 Move opm/core/props to opm/simulators/utils
The opm/core directory is no longer meaningful, and it contains only
components which might collectively be described as simulator
utilities.
2024-06-25 12:22:09 +02:00
Tobias Meyer Andersen
82ff782d5f clang format 2024-06-18 11:42:00 +02:00
Svenn Tveit
84cdef1135 Fix solution tracers and well output.
-Only output or restart solution tracers for gas/oil tracers with DISGAS/VAPOIL enabled (no solution tracers in water phase!).
-Initial tracers (free/solution) will be set to zero initially if TBLK/TVDP is not given.
- Do not calculate mass transfer between free and solution tracers if it is not necessary.
-Calculate well rates using updated tracer concentrations
2024-06-10 14:50:56 +02:00
Svenn Tveit
61cfcfa523 Fixed vector input in tracer serialization test 2024-06-10 14:50:56 +02:00
Lisa Julia Nebel
ecf7bd1e52 Test for skipping the ghost entries using Jacobi preconditioner 2024-06-07 14:40:58 +02:00
Tobias Meyer Andersen
9b2f41ad96 Add option to split the matrix into diagonal,
strictly lower and stricly upper part.
Add tests checking that the result matches
the CPU dilu implementation.
2024-06-05 13:35:54 +02:00
Stein Krogstad
6318335d76 Update test_vfpproperties 2024-05-31 14:11:10 +02:00
Arne Morten Kvarving
bcbac79486
Merge pull request #5380 from akva2/linalg_template_scalar
LinAlg classes: template Scalar type
2024-05-31 08:40:11 +02:00
Kai Bao
e968da28bb renaming calcRates to calcResvCoeff
and calcInjRates to calcInjResvCoeff.
2024-05-29 22:29:12 +02:00
Bård Skaflestad
a3a2b7a978 Make SummaryState Objects Aware of Undefined UDQ Value
This PR switches to calling the SummaryState constructor which is
aware of the value of undefined UDQs (OPM/opm-common#4052) directly.

While here, also sort headers, split some long lines, and prefer
initialisation lists to constructor body assignments.
2024-05-29 09:16:56 +02:00
Arne Morten Kvarving
ff39bc3b03 WellContribution: template Scalar type 2024-05-24 14:09:11 +02:00
Bård Skaflestad
9841c5d21c
Merge pull request #5377 from akva2/equil_template_scalar
InitStateEquil: template Scalar type
2024-05-23 10:48:04 +02:00
Arne Morten Kvarving
4bef925974 InitStateEquil: use Scalar type from FluidSystem 2024-05-23 09:39:49 +02:00
Arne Morten Kvarving
4cfb7a8566 EquilibrationHelpers: template Scalar type 2024-05-23 09:38:27 +02:00
Arne Morten Kvarving
bac2087b85 WellProdIndexCalculator: template Scalar type 2024-05-22 15:21:37 +02:00
Arne Morten Kvarving
27d99f78ec ParallelWBPCalculation: template Scalar type 2024-05-22 10:51:12 +02:00
Arne Morten Kvarving
b68a854909 ParallelPAvgDynamicSourceData: template Scalar type 2024-05-22 10:51:07 +02:00
Arne Morten Kvarving
0481c7c0b2 adjust to PAvgCalculator templating 2024-05-22 10:51:07 +02:00
Arne Morten Kvarving
59e6d4db08 adjust to PAvgDynamicSourceData templating 2024-05-22 10:51:07 +02:00
Arne Morten Kvarving
16f5290038 ParallelWellInfo: template Scalar type 2024-05-22 09:48:22 +02:00
Arne Morten Kvarving
81189b89c7 PerforationData: template Scalar type 2024-05-22 09:48:07 +02:00
Arne Morten Kvarving
d5d16eaee4 VFPHelpers: move some functions into a class with static members
and template Scalar type
2024-05-21 17:01:30 +02:00
Arne Morten Kvarving
29d142b5e4 VFPProdProperties: template Scalar type 2024-05-21 17:01:30 +02:00
Arne Morten Kvarving
b74b170d5b fixed: build with dune-fem 2.9 2024-05-16 10:58:08 +02:00
Bård Skaflestad
a05d1358c6
Merge pull request #5362 from akva2/janitoring
fixed: use getCommuncation instead of getCollectiveCommuncation
2024-05-16 09:36:28 +02:00
Arne Morten Kvarving
ff80e92e9d fixed: also run the RestartSerialization tests without dune-fem
we want both tests when dune-fem is present
2024-05-16 09:14:15 +02:00
Arne Morten Kvarving
2cc2c89b5d fixed: use getCommuncation instead of getCollectiveCommuncation
latter causes a deprecation warning
2024-05-16 09:11:38 +02:00
Atgeirr Flø Rasmussen
226410cd44
Merge pull request #5303 from akva2/gaslift_template_scalar
GasLift: template Scalar type
2024-05-14 09:59:42 +02:00
Arne Morten Kvarving
66131bd350
Merge pull request #5253 from multitalentloes/script_test
Add HIP support
2024-05-07 08:02:53 +02:00
Tobias Meyer Andersen
e9d6b326cc Add HIP support for AMD GPUs
This commits adds cmake functionality that can
hipify the cuistl framework to support AMD GPUs.

Some tests have been written as HIP does not mirror
CUDA exactly.

CONVERT_CUDA_TO_HIP is the new CMAKE argument.
CMAKE version is increased to include HIP
as a language (3.21 required).

A macro is added to create a layer of indirection
that will make only cuistl files that have been
changed rehipified.

Some BDA stuff is extracted to make sure CUDA
is not accidentally included.
2024-05-06 15:56:53 +02:00
Bård Skaflestad
027eed16e9 Report CNV Violation Pore-Volume Fraction to INFOITER
This commit includes the fraction of pore-volume whose CNV targets
are violated as a new per-iteration quantity in the INFOITER file
(--output-extra-convergence-info=iteration), with the column header
"CnvErrPvFrac".  We collect the values which are already calculated
in

    BlackoilModel<>::getReservoirConvergence()

and store these as a pair of numerator and denominator in the
ConvergenceReport class.  Note that we need both the numerator and
the denominator in order to aggregate contributions from multiple
ranks.

While here, also make a few more objects 'const' and calculate
column widths directly instead of the maximum number of characters
in writeConvergenceHeader().
2024-05-06 11:31:47 +02:00
Atgeirr Flø Rasmussen
da5f20a0d9
Merge pull request #5145 from multitalentloes/add_gpu_direct
Add GPU Direct
2024-04-29 14:08:25 +02:00
Arne Morten Kvarving
09065dd130 GasLiftSingleWellGeneric: template Scalar type 2024-04-24 15:31:13 +02:00
Arne Morten Kvarving
772b00bc19 GasLiftGroupInfo: template Scalar type 2024-04-24 15:31:13 +02:00
Arne Morten Kvarving
3ec8a22e59 fixed: use the eclipse grid from the eclipse state in test_nonnc
if we use a separate instance the actnum arrays get out of sync. in
particular the two cells with PORV == 0 will not be marked as inactive
in the actnum array of the separate instance. this leads to a segfault
in lookUpData as the field props will have those cells filtered, while the grid
still has the cells active.
2024-04-24 10:30:46 +02:00
Arne Morten Kvarving
cc5f692bb3 test_nonnc: convert to boost unit test 2024-04-24 10:30:15 +02:00
Bård Skaflestad
74df895f67
Merge pull request #5301 from atgeirr/fix-option-order-bsd
BSD versions of getopt(), including macOS, require options first.
2024-04-23 14:47:17 +02:00
Atgeirr Flø Rasmussen
38de1dee5b BSD versions of getopt(), including macOS, require options first. 2024-04-23 13:42:13 +02:00
Arne Morten Kvarving
f0e7f8842b BlackoilWellModelGeneric: template Scalar type 2024-04-23 11:33:33 +02:00
Tobias Meyer Andersen
7235f34f0e Add classes handling correct MPI implementation
Make some changes to Georgs original code:
dynamically allocated arrays with std::vectors instead
Implement new class structure handling what
MPI communication implementation to use
create extra scopes to avoid reuse of index variable i

Update related tests:
Update test_cuowneroverlapcopy to account for new
class strucutre
Also remove line that invalidates the MPI tests for multiple processes
2024-04-17 13:28:30 +02:00
Arne Morten Kvarving
15d75c5228 WGState: template Scalar type 2024-04-17 11:12:40 +02:00
Arne Morten Kvarving
67f1811234 GroupState: template Scalar type 2024-04-17 11:12:40 +02:00
Arne Morten Kvarving
be57843296 WellState: template Scalar type 2024-04-17 11:12:40 +02:00
Arne Morten Kvarving
58f334b264 ALQState: template Scalar type 2024-04-17 11:12:40 +02:00
Arne Morten Kvarving
ab0e696709 SingleWellState: template Scalar type 2024-04-17 11:12:40 +02:00
Arne Morten Kvarving
e46e52f3dc SegmentState: template Scalar type 2024-04-17 11:12:40 +02:00
Arne Morten Kvarving
d350049876 PerfData: template Scalar type 2024-04-17 11:12:40 +02:00
Atgeirr Flø Rasmussen
4f53ea512b
Merge pull request #5028 from multitalentloes/update_prec_factory
Update prec factory
2024-04-15 14:09:58 +02:00
Bård Skaflestad
b1be391d4c
Merge pull request #5172 from totto82/gconprod7
Implement WELL as group limit action
2024-04-11 17:36:55 +02:00
Tobias Meyer Andersen
24ec3c25ff update prec factory test 2024-04-11 15:19:55 +02:00
Markus Blatt
d4ae595fd5 use fixtures for test_LogOutputHelper 2024-04-11 10:59:46 +02:00
Markus Blatt
4e9eed0acd [fix] Prevent dangling refernces in Logger for test_LogOutputHelper
In the test methods of the test suite we construct a new logger that
logs to a local stringstream. This logger will be stored in a static
map and hence live longer that the test method and the stringstream.

Some methods use Opm::Log::MessageType::Note, others
Opm::Log::MessageType::Warning for adding the loggging backend . There
is one map per MessageType and sometimes (e.g. previous method used Note
and this one uses Warning) we will log to the old logger with dangling
references.

This problem materialized in a segmentation fault on ppc64el architecture.
2024-04-11 09:44:40 +02:00
Arne Morten Kvarving
6fba1a95c9 adjust to removal of EWOMS_REGISTER_PARAM 2024-04-05 12:24:48 +02:00
Arne Morten Kvarving
c8e26b8e35 adjust to parameter removal in Parameters::registerParam 2024-04-05 12:24:19 +02:00