Commit Graph

10681 Commits

Author SHA1 Message Date
Stein Krogstad
ee16e90ba2 fix well-convergence for well-copies 2023-12-07 13:09:00 +01:00
Stein Krogstad
73ec44d9c4 include use-implicit-ipr as paramaeter 2023-12-07 13:09:00 +01:00
Stein Krogstad
03366b92eb include thp-solve for potentials 2023-12-07 13:09:00 +01:00
Stein Krogstad
44e17fa615 cleanup thp-solve 2023-12-07 13:09:00 +01:00
Stein Krogstad
3e6732a67b rename to implicit_ipr 2023-12-07 13:09:00 +01:00
Stein Krogstad
746e05db5d Include implicit ipr for ms-wells 2023-12-07 13:09:00 +01:00
Stein Krogstad
b287981e5e testing 2023-12-07 13:09:00 +01:00
Stein Krogstad
7aa50f149f updates 2023-12-07 13:09:00 +01:00
Stein Krogstad
2470b20d13 final revert 2023-12-07 13:09:00 +01:00
Stein Krogstad
94c0b49cf7 revert changes 2023-12-07 13:09:00 +01:00
Atgeirr Flø Rasmussen
446670943a
Merge pull request #5042 from akva2/serializer_throw_early_no_hdf5
changed: throw early in simulator serializer
2023-12-07 10:42:01 +01:00
Bård Skaflestad
d2ee47de7f
Merge pull request #5041 from steink/prevent_nans_for_valve_models
Guard against nans from certain expressions in the valve models
2023-12-06 19:42:32 +01:00
Stein Krogstad
4355a94511 make reference to parameter 2023-12-06 14:45:18 +01:00
Arne Morten Kvarving
4eeefabedd changed: throw early in simulator serializer
if HDF5 input/output is requested but no support is available
we throw early instead of just logging an error when save/load
is to be performed
2023-12-06 10:03:29 +01:00
Markus Blatt
faad3a6ee5
Merge pull request #4811 from akva2/simulator_serializer_class
Move simulator serialization to separate class
2023-12-06 10:02:26 +01:00
Markus Blatt
abd387abba
Merge pull request #5036 from blattms/comm-sigular-mat-exception
Communicate exceptions during WellModel::updateAndCommunicate
2023-12-06 09:54:00 +01:00
Stein Krogstad
a483839caa return zero for powers with negative base 2023-12-05 21:28:54 +01:00
Arne Morten Kvarving
f46b6c5a01 changed: move simulator serialization to separate class
more separation of concerns
2023-12-05 11:20:22 +01:00
Arne Morten Kvarving
eb599af058 add missing header 2023-12-05 11:00:56 +01:00
Markus Blatt
3a9c586d19 Make sure that problems with singular matrices are logged.
Previously, if the problem occured on an MPI process with rank other
than zero the the logging would not seen (at least in the output
files). Now together with the previous commit the problem should be
logged together with the well name and calling method.
2023-12-04 23:15:08 +01:00
Markus Blatt
779dd74923 Communicate exceptions during WellModel::updateAndCommunicate
For multi segment well the underlying call to
MultisegmentWell::updateWellStateWithTarget (at least if
updateWellStateWithTHPTargetProd is called for a producer under thp
control) might throw as there might be a singular matrix during the
solve needed in MultisegmentWell::iterateWellEqWithControl.

Previously, if that happened then the MPI process where it happened would
stop the nonlinear iteration as failed and try with a chopped time
step. The others might go one with the current time step and we would
see MPI errors about truncated messages.

Now we communicate any exception happening during this part of
WellModel::updateAndCommunicate and all processes will stop the
nonlinear iteration as failed and chop the time step.
2023-12-04 22:26:55 +01:00
Bård Skaflestad
338c210985
Merge pull request #5034 from akva2/fix_fip_no_summary_kw
fixed: grab list of FIP regions from FieldPropsManager
2023-12-04 17:46:00 +01:00
Arne Morten Kvarving
d120fe1ebc fixed: grab list of FIP regions from FieldPropsManager
not from SummaryConfig. the latter only holds regions with
summary keywords
2023-12-04 13:24:32 +01:00
Vegard Kippe
55067636f4 Ensuring that the UDA is updated every time step, not just only report step. 2023-12-01 19:44:09 +01:00
Vegard Kippe
fa6697a5fa Capture reference in lambda 2023-12-01 13:30:48 +01:00
Vegard Kippe
69f82f1104 Allow using UDQ for WCONPROD item 12 (ALQ) 2023-12-01 13:21:34 +01:00
Vegard Kippe
17452e0fc6 Adding const 2023-12-01 09:34:42 +01:00
Vegard Kippe
0acb148ba7 Using std::exception 2023-11-30 16:13:40 +01:00
Vegard Kippe
2294983759 Catch exceptions from well testing (often: inf/nan in MSW matrices). 2023-11-29 09:17:53 +01:00
Antonella Ritorto
8017ff9a02 add cartesianCoordianteLevel in ALUCartIdxMapp, used in RelperDiag 2023-11-28 15:47:00 +01:00
Bård Skaflestad
5fe1eafb34
Merge pull request #5026 from totto82/fix_gpmaint2
Bugfix sign of gpmaint prod
2023-11-28 11:16:03 +01:00
Tor Harald Sandve
f7323bd679 fix sign of gpmaint prod 2023-11-27 15:10:11 +01:00
Atgeirr Flø Rasmussen
cb3ab14a71
Merge pull request #5025 from blattms/expect-singular-matrices-upate-WellControl
[bugfix] Expect singular matrices, terminate updateWellControls/nonlinear and cut timestep
2023-11-27 08:42:11 +01:00
Markus Blatt
31ab752ae6 [fix] Parallel try-catch also added for updateWellControls for groups.
Not sure whether this is needed, but better safe than sorry.
2023-11-25 21:04:13 +01:00
Markus Blatt
50c25ead52 [bugfix] Expect singular matrices and terminate updateWellControls.
We are experiencing singular matrices when solving mulisegment wells
sometimes. In that case (here during
BlackoilModelEbos::assembleReservoir <-
BlackoilModelEbos::initialLinerization <-
BlackoilModelEbos:::nonlinearIterationNewton ) an exception is thrown
when updating the controls of a well.

The problem here is that this exception only happens on one
process. That one goes to the catch block in
NonLinearSolverEbos::step, marks the nonlinear solve as failed and
cuts the time step. The others move to the collective communication
below. Somehow and somewhen all end up in a non-matching collective
communication with different data types and we get an MPI Error that
the message was truncated.

Now all processes will throw, terminate the nonlinear solver and cut
the timestep as it should be.
2023-11-25 19:32:11 +01:00
Bård Skaflestad
a6d583b9d0
Merge pull request #5024 from blattms/not-warn-loadStep-OutputDir
Do not warn about OutputDir when combined with LoadStep.
2023-11-24 19:03:52 +01:00
Bård Skaflestad
6b78dd4ad4
Merge pull request #5021 from atgeirr/nldd-refinements
Nldd refinements
2023-11-24 16:40:39 +01:00
Atgeirr Flø Rasmussen
6945b927ec Minor refactoring of domain ordering for NLDD. 2023-11-24 14:57:45 +01:00
Markus Blatt
fa10546c0a Do not warn about OutputDir when combined with LoadStep.
Both can safely be used together.
2023-11-24 13:28:20 +01:00
Markus Blatt
24408862ff
Merge pull request #5008 from aritorto/compressedLevelZero
compressedLevelZero used to read relative permeability
2023-11-24 13:21:23 +01:00
Bård Skaflestad
cd94ac3a7c
Merge pull request #5023 from totto82/wpimult
Adapt wdfac to wpimult
2023-11-23 16:28:32 +01:00
Bård Skaflestad
7343aca2be
Merge pull request #5018 from blattms/parallel-well-fixes
[fix] Do parallel sums with int instead of bool.
2023-11-23 16:24:36 +01:00
Tor Harald Sandve
e1aa233026 Adapt wdfac to wpimult 2023-11-23 15:22:51 +01:00
Atgeirr Flø Rasmussen
6f04c31c7c Use string to enum helper. 2023-11-23 14:06:39 +01:00
Atgeirr Flø Rasmussen
7578fbf144 Change nldd default approach to gauss-seidel.
Also adjust local CNV tolerance scaling to 0.1 instead of 0.01.
2023-11-23 14:06:39 +01:00
Atgeirr Flø Rasmussen
94554ea4f2 Change default nldd number of domains to one per 1000 cells. 2023-11-23 14:06:39 +01:00
Atgeirr Flø Rasmussen
8acc8af2a4 Add MaxPressure NLDD domain ordering option, make it default. 2023-11-23 14:06:39 +01:00
Kai Bao
3aed0b9501 not updating the connection pressure for StandardWell
at the early stage of computeWellRatesWithBhpIterations. The perforation rates are not updated,
and it is not sensible to update based on the inconsistent well rates and perforation rates.

Better to keep the original explicit quantities for better consistency.

Furthermore, it can be dangerous to update the explicit quantities based on the
irrelevant perforation rates, since the ratios can be very undesirable due to crossflow.
2023-11-23 09:13:57 +01:00
Stein Krogstad
b08bc029e6 Fix shut-in logic for wells with shut-intructions 2023-11-22 16:53:48 +01:00
Markus Blatt
6a866ac8d2 [fix] Do parallel sums with int instead of bool.
Using bool here is at least frowned upon. To be honest, I have no idea
what happens underneath here if we pass a bool. In contrast to other
pod types we do not associate it with a builtin type of MPI (not even
sure what to use). Hence we probably create a custom type for sending
and receiving. That should work. But I have no idea what will be used
for summation.

BTW: I am debugging a case that previously crashed and now suddenly
works and this seems to be the only relevant change I made in the
meantime.
2023-11-22 16:50:57 +01:00
Bård Skaflestad
82a83d04e2
Merge pull request #5017 from akva2/missing_include
add missing include
2023-11-22 15:26:14 +01:00
Bård Skaflestad
8dca5a931e
Merge pull request #5005 from totto82/fixWDFACCOR
dont scale d factor from wdfaccor with connection factor
2023-11-22 14:55:51 +01:00
Tor Harald Sandve
be06132702 remove trans multiplier from dake 2023-11-22 13:59:06 +01:00
Arne Morten Kvarving
f2a2fc2938 add missing include 2023-11-22 13:18:56 +01:00
Bård Skaflestad
3a01da0a12
Merge pull request #5010 from totto82/cgfrf
Add output of connection dissolved gas and vaporized oil
2023-11-22 12:54:33 +01:00
Tobias Meyer Andersen
ee95223b27 Use std::optional to only allocate reordered matrix when using multiple threads 2023-11-22 10:10:29 +01:00
Tor Harald Sandve
4879896789 adapt to refactoring of getDFactor 2023-11-22 09:17:28 +01:00
Tobias Meyer Andersen
e22f4399a0 fix typo 2023-11-22 09:16:43 +01:00
Tor Harald Sandve
ecd9930225 dont scale d factor from wdfaccor 2023-11-21 17:51:36 +01:00
Tobias Meyer Andersen
5f6c97ff3b add OpenMP parallelized version of DILU.
Implement graphcoloring to expose rows in level sets that that can be
executed in parallel during the sparse triangular solves.
Add copy of A matrix that is reordered to ensure continuous memory reads
when traversing the matrix in level set order.
TODO: add number of threads available as constructor argument in DILU
2023-11-21 15:41:53 +01:00
Tor Harald Sandve
ee77d30fe5 Add output of connection dissolved gas and vapporized oil 2023-11-21 14:29:40 +01:00
Tobias Meyer Andersen
e2a531dd65 replace loop with std function, remove print from test 2023-11-21 09:52:48 +01:00
Tobias Meyer Andersen
3cd1873771 add graph coloring 2023-11-20 16:57:56 +01:00
Antonella Ritorto
6d180a7f91 compressedLevelZero added in AluCartIdxMapper, used in RelpermDiags 2023-11-20 15:56:17 +01:00
Tobias Meyer Andersen
54b7f9c44f GraphColoring.hpp: cosmetics 2023-11-20 13:06:40 +01:00
Tobias Meyer Andersen
9309f96d8f GraphColoring.hpp: reorder headers 2023-11-20 13:06:34 +01:00
Atgeirr Flø Rasmussen
9c9fae26a8 Require initial assembly for subdomains with Gauss-Seidel. 2023-11-20 12:59:44 +01:00
Kai Bao
6ab809c69d
Merge pull request #5004 from blattms/control-mode-typo
Fixed typo: control model -> control mode.
2023-11-20 09:13:03 +01:00
Kai Bao
3b1ef932c2
Merge pull request #5003 from vkip/check_if_closed_before_hist_open
Check if well was closed this step before re-opening during history
2023-11-20 09:03:06 +01:00
Markus Blatt
de50fe5702 Fixed typo: control model -> control mode. 2023-11-20 08:29:24 +01:00
Bård Skaflestad
ea3b22480a Enable Loading Parallel NLDD Partition From File
This commit adds support for loading a three-column NLDD
partitioning scheme of the form

    MPI_Rank  Cartesian_Index  NLDD_Domain_ID

from a text file.  In an MPI run it is assumed that the first column
holds integers in the range 0..MPI_Size()-1, and typically that each
such integer is listed at least once.  In a sequential run, the MPI
rank column is ignored.

With this scheme we can load the same partition files that we write,
for increased repeatability and determinism, and we can also
experiment with externally generated NLDD partitions.
2023-11-17 17:39:17 +01:00
Vegard Kippe
abbcb4b148 Check if a well was closed this step before re-opening in history mode 2023-11-17 17:29:30 +01:00
Bård Skaflestad
68fe118781 Make Compress/Count Partition Vector Helper Generally Available
This function pair is useful also when loading a partition from
file to ensure that there are no gaps in block numbering.
2023-11-17 09:17:46 +01:00
Bård Skaflestad
c0c96123bc Add Support for Writing NLDD-Like Partitions in Parallel
This commit adds a new (hidden) debugging option,

    DebugEmitCellPartition (--debug-emit-cell-partition)

which, when set, will cause each rank to write a three-column text
file of the form

    MPI_Rank  Cartesian_Index  NLDD_Domain_ID

into the directory

    partition/CaseName

of the run's output directory.  That file will be named according to
the process' MPI rank, so the first column will be the same as the
file name.

The option is primarily intended for debugging the NLDD partitioning
scheme, so is mostly reserved for runs with low MPI sizes (e.g.,
less than 20).

While here, also make the MPIPartitionFromFile helper class aware of
this format so that we can use concatenated output files as an input
to the MPI partitioning algorithm for repeatability.
2023-11-17 09:17:46 +01:00
Bård Skaflestad
c559de51cf
Merge pull request #4996 from totto82/fixWDFAC
Fix wdfac and d factor in comdat
2023-11-17 09:09:22 +01:00
Atgeirr Flø Rasmussen
d069081b52
Merge pull request #4960 from daavid00/dispersivity
Support for mechanical dispersion
2023-11-17 08:50:00 +01:00
David Landa Marban
bc03821d57 Support for mechanical dispersion 2023-11-16 16:55:01 +01:00
Bård Skaflestad
610c45aa77 Add Support for Reading MPI Partitioning From File
This commit introduces new, experimental support for loading a
partitioning of the cells from a text file.  The name of the file is
passed into the simulator using the new, hidden, command line option

    --external-partition=filename

and we perform some basic checking that the number of elements in the
partition matches the number of cells in the CpGrid object.
2023-11-16 16:28:14 +01:00
Tor Harald Sandve
82cb3c3b53 Fix connection and well dfactor
The well dfactor is scaled by the well index

If postive the connection dfactor is threated as a well factor
and also scaled. If negative the connection dfactor is not scaled
2023-11-16 14:50:59 +01:00
Kai Bao
e355990ac2
Merge pull request #4999 from vkip/always_open_historic_wells
Always check if wells on historic controls can be opened
2023-11-15 20:29:21 +01:00
Vegard Kippe
e0d1ff9c66 Always check if wells on historic controls can be opened 2023-11-15 19:04:48 +01:00
Bård Skaflestad
ed77c90238 Make Zoltan-Based Domain Partitioning MPI Aware
This commit switches the current implementation of
'partitionCellsZoltan()', i.e., 'partitionCells("zoltan", ...)' into
using the MPI-aware ParallelNLDDPartitioningZoltan utility.  In
doing so we make 'partitionCellsZoltan()' private since its
availability is not guaranteed.  We also slightly reorder the
parameters and switch from passing a "Grid" into passing a
"GridView" as an argument to partitionCells(), and specialise this
function for the known grid views in OPM Flow.

We extract the Zoltan-related parameters out to an Entity-dependent
helper structure and move the complexity of forming this type to a
new helper function, BlackoilModelEbosNldd::partitionCells().
2023-11-15 13:31:41 +01:00
Bård Skaflestad
27aaa28c71 Add Partitioner for Unstructured Connectivity Graph
Invokes Zoltan library and requires MPI.  Client code constructs an
abstract connectivity graph by defining connections/edges through
the 'registerConnection()' member function.  May also impose a
restriction that certain cells/vertices be placed in the same
domain/block in the resulting partition.  Client code must supply a
callback function that defines globally unique cell/vertex/object
IDs, across all MPI ranks, for each vertex in the connectivity
graph.

Member function 'partitionElement()' forms the resulting partition
vector, the size of which is the total number of objects visible to
the local rank-typically the number of cells owned by the rank, and
the number of overlap cells--i.e., the size of the local grid view.
2023-11-15 13:31:41 +01:00
Bård Skaflestad
f195f73949 Extract Binary_Search Out to Helper
Mostly for readability.
2023-11-15 13:31:41 +01:00
Bård Skaflestad
0b2c396a01
Merge pull request #4961 from vkip/network_restart_use_node_pressures
Use network pressures from restart
2023-11-15 09:46:35 +01:00
Tor Harald Sandve
0f12977b17 only use d factor for gas wells 2023-11-14 12:45:25 +01:00
Tor Harald Sandve
e33d27ca90
Merge pull request #4973 from daavid00/enabledisgaswatvap
Enabling disGas and watVap at compile time for gasWaterBrine systems
2023-11-13 15:01:38 +01:00
Kai Bao
bbdad520d6
Merge pull request #4915 from vkip/network_multi_root
Support computation of network pressures in networks with multiple roots
2023-11-13 14:39:07 +01:00
Atgeirr Flø Rasmussen
cd5ba003d8
Merge pull request #4905 from vkip/allow_nowellmatch_with_lowstrictness
If parsing strictness is set to 'low', proceed (with warning) if no matching wells found
2023-11-13 10:56:54 +01:00
Markus Blatt
f1d75297d3
Merge pull request #4990 from akva2/janitoring
Avoid some dead stores
2023-11-12 21:49:00 +01:00
Atgeirr Flø Rasmussen
66f34eb234
Merge pull request #4979 from blattms/complete-log-problem-cont
log problem if asked to continue with nonconverged nonlinear solver.
2023-11-12 19:01:24 +01:00
Bård Skaflestad
fe67e9f9d3
Merge pull request #4978 from akva2/loghelper_refactor_fip_output
changed: refactor LogOutputHelper::fip
2023-11-10 14:49:09 +01:00
Arne Morten Kvarving
ddd0c5629d GasLiftSingleWellGeneric: avoid dead store
all branches below write a new value
2023-11-10 14:32:30 +01:00
Arne Morten Kvarving
9a8e58d7c3 changed: use prefix for increments
avoids dead store in the final block while still maintaining
easy cut-n-paste additions
2023-11-10 14:30:13 +01:00
Vegard Kippe
194bf9d6af Set SCHEDULE_INVALID_NAME to warning with --parsing-strictness=low 2023-11-10 11:48:18 +01:00
Vegard Kippe
4ce9c41a37 Replacing loop by assignment 2023-11-10 09:01:09 +01:00
Bård Skaflestad
16c8184e3f
Merge pull request #4914 from vkip/extra_network_output
Allow output of network pressures based on rates at end of time step
2023-11-09 23:19:48 +01:00
Arne Morten Kvarving
8982c67e79
Merge pull request #4980 from akva2/fipconfig_serialize
add extra instantation for bitset
2023-11-09 14:42:39 +01:00
Arne Morten Kvarving
44ce054492 changed: refactor LogOutputHelper::fip
only do one output per call. allow passing the name of the
regions to process
2023-11-09 13:08:17 +01:00
Bård Skaflestad
ea9bc39657
Merge pull request #4975 from atgeirr/add-extra-well-convergence-output
Add extra output to INFOITER file detailing unconverged wells.
2023-11-09 11:03:54 +01:00