Commit Graph

4537 Commits

Author SHA1 Message Date
Arne Morten Kvarving
896cb8484d added: option to disable the BDA solvers 2023-08-11 11:00:07 +02:00
hnil
07fb18422d hopefully fixed compilation and linking problems with WITHGPU 2023-08-11 11:00:07 +02:00
hnil
63b9b01671 fixed includegards 2023-08-11 11:00:07 +02:00
hnil
68322c06e5 added forgotten GPU versions 2023-08-11 11:00:07 +02:00
hnil
d623695d2a - moded all bda spesific tings to separete class 2023-08-11 11:00:07 +02:00
Atgeirr Flø Rasmussen
1a59c91c51 Silence release-mode warning. 2023-08-09 12:06:20 +02:00
Arne Morten Kvarving
c6f1aa0110
Merge pull request #4765 from hnil/change_poly_alugrid
removed use of hidden private defines for poly and alugrid
2023-08-09 11:15:02 +02:00
hnil
66ff026008 remove use of hidden private defines for poly and alugrid
- fixed polygrid
- renamed executables to include blackoil in name
2023-08-08 15:30:05 +02:00
Kai Bao
c46f60103e adding perf_data comparison in equality operator for SingleWellState 2023-08-08 14:52:49 +02:00
Arne Morten Kvarving
82ba00b4ba remove accidentially left-over member 2023-08-04 15:34:05 +02:00
Atgeirr Flø Rasmussen
840dd9de90
Merge pull request #4752 from hnil/linearsolver_timing
-- added more timing to get better coverage of cpr solver
2023-07-27 15:14:10 +02:00
Markus Blatt
f20716eaf3 Rename LinearTimeSteppingBreakdown to TimeSteppingBreakdown. 2023-07-25 15:10:07 +02:00
Atgeirr Flø Rasmussen
7c9d57cc84 Add code path for the no-MPI case. 2023-07-25 13:20:16 +02:00
Atgeirr Flø Rasmussen
0d2d8dfe21
Merge pull request #4734 from atgeirr/add-linear-system-size-printout
Add output of linear system sizes to DBG file.
2023-07-25 10:51:29 +02:00
Atgeirr Flø Rasmussen
30a9e02998 Add output of linear system sizes to DBG file. 2023-07-25 09:43:51 +02:00
Markus Blatt
943d84c836 Don't write out of bounds (fixes fallout from PR #4750)
While we never use the data receive, we should still not write beyond
arrays as this may create problems.
2023-07-24 16:04:15 +02:00
hnil
c065d34d0e -- added more timing to get better coverage of amg solver
-- added includes needed
2023-07-24 12:28:08 +02:00
Markus Blatt
118dfdf041 Move MPI process check to *-cpp file. 2023-07-19 14:05:19 +02:00
Markus Blatt
7551229e77 Do a graceful exit instead of MPI_Abort for expected exceptions.
Instead of unconditionally issuing MPI_Abort if we encounter a fatal
exception, we try to test whether all processes have experienced this
exception and if this is the case just terminate nomally with a exit
code that signals an error. We still use MPI_Abort if not all
processes get an exception as this is the only way to make sure that
the program aborts.

This approach also works around issues in some MPI implementations
that might not correctly return the error.

Multiple messages like this are gone now:
```
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 1 in communicator MPI_COMM_WORLD
with errorcode 1.

NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.
--------------------------------------------------------------------------
[smaug.dr-blatt.de:129359] 1 more process has sent help message help-mpi-api.txt / mpi-abort
[smaug.dr-blatt.de:129359] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages
```

Bu we still see something like this:
```
--------------------------------------------------------------------------
Primary job  terminated normally, but 1 process returned
a non-zero exit code. Per user-direction, the job has been aborted.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
mpirun detected that one or more processes exited with non-zero status, thus causing
the job to be terminated. The first process to do so was:

  Process name: [[35057,1],0]
  Exit code:    1
--------------------------------------------------------------------------
```
2023-07-19 13:44:12 +02:00
Bård Skaflestad
ac6b9b2f34
Merge pull request #4748 from plgbrts/gconprod
Enable items, 11, 12 and 13 of GCONPROD
2023-07-14 21:30:14 +02:00
Paul
ae553787ba Use struct for collecting group limit actions 2023-07-14 11:20:03 +02:00
Paul
1796b3343b improved messages text 2023-07-13 13:15:54 +02:00
Paul
7302c37b78 Enable items, 11, 12 and 13 of GCONPROD 2023-07-12 20:44:10 +02:00
Bård Skaflestad
8c9682ab7a Split Well and Group Initialization Out to Helper
In preparation of adding support for opening/creating wells or
groups in the middle of a report step.  This is needed if an
ACTIONX block runs something like WELOPEN or WELSPECS/COMPDAT.
2023-07-12 17:23:14 +02:00
Bård Skaflestad
e965f6f27f Prune Unused Well State Parameter
The WellState parameter in setCmodeGroup() became unused when we
split the GroupState out of the WellState in commit e1d117c59f.
2023-07-12 17:23:14 +02:00
Markus Blatt
fc9b1cccce Improve error message when time step is cut too often/much.
Changes
```
Program threw an exception: [/home/mblatt/src/dune/opm/opm-simulators/opm/simulators/timestepping/AdaptiveTimeSteppingEbos.hpp:586] Solver failed to converge after cutting timestep 11 times.
```
to
```
Simulation aborted: Solver failed to converge after cutting timestep 11 times.
```

Which seems more user friendly.
2023-07-12 16:18:29 +02:00
Bård Skaflestad
7b880727b5 Declare Support for WPAVE/WBPn
We emit a warning if the model uses connection flag 'ALL', but
continue the run.  This behaviour is still being debated and we
may decide to halt the run in this situation.
2023-07-11 11:29:08 +02:00
Bård Skaflestad
7f89276fe8 Hook New WBPn Calculation Up to Well Model
This commit activates the support for calculating WBPn summary
result values per well in parallel.  To affect the calculation we
add two new data members in BlackoilWellModelGeneric:

  - conn_idx_map_:
    Maps well's connection index (0..getConnections().size() - 1) to
    connections on current rank.  Its local() connections are
    negative 1 (-1) if the connection is not on current rank, and a
    non-negative value otherwise.  The global() function maps well
    connections on current rank to global connection ID for each
    well.  Effectively the reverse of local().  Finally, the open()
    function maps well connections on current rank to open/flowing
    connections on current rank.  Negative 1 if connection is not
    flowing.

  - wbpCalculationService:
    Parallel collection of WBPn calculation objects that knows how
    to exchange source and result information between all ranks in a
    communicator.  Also handles distributed wells.

We furthermore need a way to compute connection-level fluid mixture
density values.  For the standard well class we add a way to access
the StandardWellConnection's 'perf_densities_' values.  However,
since these are defined for open/flowing connections only, this
means we're not able to fully meet the requirements of the

  WELL/ALL

WPAVE depth correction procedure for standard wells.  The
multi-segmented well type, on the other hand, uses the fluid mixture
density in the associated well segment and is therefore well defined
for ALL connections.  OPEN well connections are supported for both
well types.
2023-07-10 13:42:46 +02:00
Bård Skaflestad
ff9e6ca18a
Merge pull request #4745 from akva2/filtercake_separate_class
FilterCake: put code in separate class
2023-07-07 16:51:23 +02:00
Arne Morten Kvarving
60b92d02eb WellFilterCake: make stateful 2023-07-07 16:08:42 +02:00
Arne Morten Kvarving
dcf8a444fd changed: put calculation of filter cake multiplier in WellFilterCake 2023-07-07 16:08:20 +02:00
Arne Morten Kvarving
aaeedf4091 put updating of FilterCake multiplier in separate method 2023-07-07 16:08:20 +02:00
Arne Morten Kvarving
1e7ca08702 changed: put handling of filtration particle volume in separate class 2023-07-07 16:08:17 +02:00
Bård Skaflestad
95d715b807 Add Parallel Calculation Support for WBPn/WPAVE
This commit adds a parallel calculation object derived from the serial
PAvgCalculator class.  This parallel version is aware of MPI
communicators and knows how to aggregate contributions from wells that
might be distributed across ranks.

We also add a wrapper class, ParallelWBPCalculation, which knows how to
exchange information from PAvgCalculatorCollection objects on different
ranks and, especially, how to properly prune inactive cells/connections.
2023-07-07 15:01:05 +02:00
Stein Krogstad
b1c11f6d88 Move function to WellInterfaceGeneric 2023-07-07 13:13:43 +02:00
Stein Krogstad
252d08f1bd No need to loop over phases here 2023-07-07 13:13:43 +02:00
Stein Krogstad
2f8d210896 Also do explicit fallback for double-interp 2023-07-07 13:13:43 +02:00
Stein Krogstad
2dcebd4bdd Rephrase explicit to prev(uous) 2023-07-07 13:13:43 +02:00
Stein Krogstad
ab98e477c4 Use explicit rates as fallback for small FLO 2023-07-07 13:13:42 +02:00
Stein Krogstad
5212d20a96 Add explicit rates to well state 2023-07-07 13:12:34 +02:00
Bård Skaflestad
a560b06dce
Merge pull request #4346 from GitPaean/support_cake_filtration
A simple cake model to simulate formation damage due to suspended solids in injection water
2023-07-07 10:23:30 +02:00
Kai Bao
e264042c62 refining the function updateInjFCMult
for code improvements.
2023-07-07 09:32:03 +02:00
Kai Bao
22269c92c3 adding regression tests for filtration cake model 2023-07-06 23:38:53 +02:00
Kai Bao
1981a3bf4d switching to scale the mobility instead of the well index
mostly to make the calculation of productivity easier.
2023-07-06 15:58:30 +02:00
Arne Morten Kvarving
1b905f884c
Merge pull request #4743 from akva2/blackoilmodelebos_nldd_separate
BlackoilModelEbos: separate out NLDD code to separate class
2023-07-05 14:23:29 +02:00
Arne Morten Kvarving
8e7de83218 BlackoilModelEbos: put Nldd solver in separate class 2023-07-05 13:40:13 +02:00
Kai Bao
cb74d26e85 WIP in storing the filtration_particle_volume in BlackoilWellModelGeneric
instead of PerfData to handle the situation that well can be SHUT and
OPEN again.
2023-07-05 13:25:03 +02:00
Kai Bao
274c431492 tracking filtration particle volume instead of water injection volume
for filter cake calculation. The main reason is that the injection
concentration may vary during the simulation, which makes the tracking
of water injection volume is not very helpful when used for filter cake
calculation.
2023-07-05 13:25:03 +02:00
Kai Bao
eb08e2e863 cleaning up implementation related to filter cake 2023-07-05 13:25:03 +02:00
Kai Bao
7e5f1a1642 slightly different way to calculate the skin factor
for the radial model of the filter cake.

not tested yet.
2023-07-05 13:25:03 +02:00