Commit Graph

730 Commits

Author SHA1 Message Date
Arne Morten Kvarving
e008c76a80 BlackoilModelEbos: output error message using OpmLog 2023-06-30 08:57:14 +02:00
Arne Morten Kvarving
e88c44eaaf BlackoilModelEbos: remove unused member function 2023-06-30 08:57:14 +02:00
Arne Morten Kvarving
0a670f3694 BlackoilModelEbos: use constexpr where appropriate 2023-06-30 08:57:14 +02:00
Arne Morten Kvarving
5874377937 BlackoilModelEbos: prefer using 2023-06-30 08:57:14 +02:00
Arne Morten Kvarving
b29f24c9be BlackoilModelEbos: use Parallel::Communication type alias 2023-06-30 08:57:14 +02:00
Vegard Kippe
a80f44a3be Updating variable name in SimulatorFullyImplicitBlackoilEbos.hpp and adding tests 2023-06-29 15:20:38 +02:00
Vegard Kippe
65f73f5462 Chaning to new TUNING semantics (opm-common pr3522) 2023-06-29 15:13:10 +02:00
Vegard Kippe
029e3c8616 Removing some whitespace 2023-06-29 15:13:10 +02:00
Vegard Kippe
462ec3153d Use mass balance limit from TUNING 2023-06-29 15:12:51 +02:00
Bård Skaflestad
9de535098f
Merge pull request #3764 from atgeirr/aspin
Add nonlinear solver based on domain decomposition method
2023-06-28 15:49:56 +02:00
Arne Morten Kvarving
adfe80cba0 avoid dead stores 2023-06-27 13:40:54 +02:00
Atgeirr Flø Rasmussen
98b7f4d986 Fix header order and remove dead code. 2023-06-26 17:37:13 +02:00
Atgeirr Flø Rasmussen
424ee2174d Make sure micp and energy fixes are not discarded.
Also do not change getting intensive quantities in convergence
checks.
2023-06-26 11:18:57 +02:00
Atgeirr Flø Rasmussen
15c1e38533 Silence unused variable/parameter warnings. 2023-06-23 16:24:18 +02:00
Atgeirr Flø Rasmussen
cbfe25d0f0 Add NLDD nonlinear solver option. 2023-06-23 16:24:18 +02:00
Vegard Kippe
d6d4b94b25 Parameterized iteration limits in network solver 2023-06-16 12:15:06 +02:00
Atgeirr Flø Rasmussen
81bda54c67
Merge pull request #4709 from blattms/omp-allow-oversubscribe
OpenMP: allow oversubscribing to prevent only 1 thread on some hardware
2023-06-14 13:58:12 +02:00
Markus Blatt
2906d7157d Allow oversubscribing OpenMP threads.
There is a strange interaction when using MPI and OpenMP on some
hardware/MPI implementations. I a serial run omp_get_num_procs() would
return the number of processors but when started under mpirun it would
always return 1.

With this we now allow users to use any amount of threads.
2023-06-14 12:03:56 +02:00
Markus Blatt
ae1f319c10 [bugfix] Honor command line --threads-per-process
While we reported that we used the number of threads that were passed
on the command line, we never really used it for OpenMP but always
sticked to two unless environment variable OMP_NUM_THREADS was set.

Note that because the ThreadManager in opm-models would always use the
command line option and hence the linearizer would use that number of
threads.

Please note that the only use of OpenMP in opm-common (volume
calculation in EclipseGrid) is not effected by this as it happens
before we set the number of OpenMP threads.
2023-06-14 12:02:25 +02:00
Atgeirr Flø Rasmussen
7f3635145b Make solver object a member of SimulatorFullyImplicitBlackoilEbos. 2023-06-14 10:01:53 +02:00
Atgeirr Flø Rasmussen
712a7c8131 Add utilities that will be needed for NLDD solvers.
Includes:
 - SubDomain struct,
 - simple partitioning utilities for testing,
 - some matrix and vector manipulation functions,
 - tests for the above.
2023-06-09 10:08:29 +02:00
Kjetil Olsen Lye
c478e46c8d Setting CUDA device for MPI runs. 2023-05-31 21:47:46 +02:00
Bård Skaflestad
3549d85d83
Merge pull request #4568 from totto82/2psolvent
Add gaswater solvent
2023-05-30 11:36:16 +02:00
Kai Bao
23c0126095
Merge pull request #4640 from steink/ms_pressure_eq_derivatives
Update of multisegment well pressure equations - testing
2023-05-26 22:57:23 +02:00
Bård Skaflestad
3c643dba13 Don't Provide Deck Accessors in FlowMainEbos
Following commits f4f8c033d and c7016854d (PR #4286), the "vanguard"
no longer maintains an internal Deck data member.  Don't pretend
that it does by providing member functions to access that data
member.  If someone tries to actually call these member functions
then they will get an unfriendly diagnostic message and a build
failure.
2023-05-26 17:12:30 +02:00
Tor Harald Sandve
7cf3f69cf9 Add gaswater solvent
Fix some places that assumed 3p + solvent
2023-05-26 16:24:38 +02:00
Tor Harald Sandve
1592ef8bd2 solvent + foam simulator 2023-05-24 16:03:09 +02:00
Stein Krogstad
3beef758e4
Merge branch 'OPM:master' into ms_pressure_eq_derivatives 2023-05-24 13:35:11 +02:00
Stein Krogstad
5c0b76f337 Revert to original segment density computations
(keep average version as option)
2023-05-23 12:44:06 +02:00
Tor Harald Sandve
ee39117771 Add energy + precsalt simulator 2023-05-12 10:49:17 +02:00
Bård Skaflestad
bf0b7ed948
Merge pull request #4592 from totto82/fix_vapwat_gw
pick correct version of flow for gas-water-vapwat case
2023-05-03 11:14:22 +02:00
Bård Skaflestad
4dba837b39
Merge pull request #4606 from akva2/opmrst_more_checks
Serialized restart: Add some more checks
2023-04-27 13:32:19 +02:00
Arne Morten Kvarving
c61639251f added: check command line parameters when doing a .OPMRST restart
compare command line used to create .OPMRST differ
to current run and warn if they differ. safety net to avoid
misunderstandings
2023-04-27 12:32:00 +02:00
Arne Morten Kvarving
1003bf7735 added: explicitly check that number of processes matches .OPMRST file
while the grid hash check would pick this up as well, it's better
to emit an explicit error message
2023-04-25 15:07:58 +02:00
Arne Morten Kvarving
163ea6f0b0 fixed: missed a .SAVE -> .OPMRST 2023-04-25 15:07:31 +02:00
Atgeirr Flø Rasmussen
ca62d96714 Add helpful message about termination due to unsupported keywords. 2023-04-25 13:02:45 +02:00
Atgeirr Flø Rasmussen
9ca6034388 Remove EclStrictParsing, replace with ParsingStrictness.
The new parameter takes the "high", "normal" (default), or "low" string.
Also implemented behaviour.
2023-04-25 12:03:13 +02:00
Atgeirr Flø Rasmussen
04d2b8f39d Make KeywordValidation::validateDeck() more flexible.
Adding a bool argument 'treat_critical_as_noncritical' to possibly
reduce terminating errors to warnings.
2023-04-25 10:44:59 +02:00
Atgeirr Flø Rasmussen
77d151e0b5 Refactor get_error_report() for more flexibility. 2023-04-25 10:33:20 +02:00
Tor Harald Sandve
2a20ad8283 pick currect version of flow for gas-water-vapwat case 2023-04-17 15:25:59 +02:00
Arne Morten Kvarving
f2983ac6af minimum dune version required is now 2.7 2023-04-12 09:41:23 +02:00
Tor Harald Sandve
4dd0798e5b add gas + water + energy to flow 2023-03-31 08:47:19 +02:00
Kai Bao
c8d914caad using double for regularization_factor_wells_ 2023-03-23 16:47:03 +01:00
hnil
dedda84a2b fixed review comments 2023-03-22 19:17:22 +01:00
hnil
e1c4a73c43 -- removed double evaluation of processLocalData
-- separated fluid in place work from other cell based data
-- added some timing macros for better preformance overview
2023-03-22 11:55:37 +01:00
Atgeirr Flø Rasmussen
c9ba0afea3 Silence warnings: struct/class, missing override. 2023-03-03 10:12:46 +01:00
Bård Skaflestad
dcf2a1304b
Merge pull request #4499 from akva2/adaptivetimesteppingebos_more_compile_unit
AdaptiveTimeSteppingEbos: move more code to compile unit
2023-03-02 13:38:07 +01:00
Arne Morten Kvarving
ebd53ee72d move StepReport into ConvergenceReport.hpp
there is no reason for this to be typetag dependent
2023-03-02 12:37:13 +01:00
Bård Skaflestad
00da723b59
Merge pull request #4497 from akva2/nonlinearsolverebos_compile_unit
NonlinearsolverEbos: add compile unit
2023-03-01 16:14:22 +01:00
Arne Morten Kvarving
cbaaca4f14 NonlinearSolverEbos: put stabilizeNonlinearUpdate in compile unit 2023-03-01 10:48:17 +01:00
Arne Morten Kvarving
4aeb980f4f changed: make NonlinearSolverEbos::RelaxType a namespace scoped enum class
name it NonlinearRelaxType
2023-03-01 10:46:51 +01:00
Arne Morten Kvarving
64c4694bab NonlinearSolverEbos: put detectOscillations in compile unit 2023-03-01 10:46:51 +01:00
Arne Morten Kvarving
c92195c96a changed: pass the version info as parameters in Banners.cpp/Main.cpp
we want to avoid these symbols in the library
2023-03-01 09:11:18 +01:00
Bård Skaflestad
6636b2f331
Merge pull request #4494 from akva2/flowmainebos_compile_unit
FlowMainEbos: add a compile unit
2023-02-28 20:13:30 +01:00
Arne Morten Kvarving
b238bba53b FlowMainEbos: move ExtraConvergenceOutput code to compile unit 2023-02-28 16:02:08 +01:00
Atgeirr Flø Rasmussen
b5678bf5cb
Merge pull request #4495 from atgeirr/add_timing_block
Add timing block
2023-02-28 15:00:17 +01:00
Arne Morten Kvarving
143139c6ee FlowMainEbos: move parallel file merge code to separate compile unit
avoid some headers in simulator objects
2023-02-28 14:05:51 +01:00
Arne Morten Kvarving
fe011bbd41 FlowMainEbos: prefer std::make_unique 2023-02-28 13:58:52 +01:00
Arne Morten Kvarving
5fd5753ed7 fixed: mixed-up input and output paths for restart serialization 2023-02-27 12:17:00 +01:00
Arne Morten Kvarving
070f3677f7 fixed: output OPMRST file to output dir
will look in both output dir and input file dir on load
2023-02-22 14:26:23 +01:00
Arne Morten Kvarving
c50fcc5818 added: store a hash of the grid cell mapping on each process
this is a simple sanity check to make sure the restarted run
has the same grid partitioning as the original run.
2023-02-16 14:49:38 +01:00
Arne Morten Kvarving
8c3400f562 added: parallel support to HDF5File / HDF5Serializer 2023-02-16 14:49:38 +01:00
Arne Morten Kvarving
a60b7e50ca added: ability to specify .OPMRST file to be used
useful, in particular for testing.
2023-02-16 13:56:29 +01:00
Arne Morten Kvarving
72133deadc added: support for loading serialized state from .OPMRST file 2023-02-16 13:48:36 +01:00
Arne Morten Kvarving
ed170026c1 added: support for saving serialized state to OPMRST file
uses a HDF5 container
2023-02-16 13:46:36 +01:00
Arne Morten Kvarving
524c1320bb add serialization support to SimulatorFullyImplicitBlackoilEbos
this is the top of the hierarchy so a test would basically
be a full restart test
2023-02-16 12:38:02 +01:00
hnil
fd98d8ea27 added timing blocks to most important parts 2023-02-15 09:41:37 +01:00
Arne Morten Kvarving
c33240f5c1 changed: introduce EclGenericVanguard::SimulationModelParams
this is a struct that holds the information transferred
from the simulator prior to vanguard instantation.
this way we can avoid the static members for state,
which causes issues for serialization (in particular, it makes
it impossible to compare two instances like we do in tests).
2023-02-13 18:52:38 +01:00
Arne Morten Kvarving
05f92a1133 EclGenericVanguard: rename setParams to defineSimulationModel
setParams is a rather generic method name, be more specific
2023-02-13 17:49:59 +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
385f526d77 fixed: regression from 82d2146c90
missing PRT header
2023-01-31 15:18:25 +01:00
Arne Morten Kvarving
715e0e1c82 fix Damaris setup in Main 2023-01-18 15:37:41 +01:00
Arne Morten Kvarving
e89a68b2ff Main.hpp: forward WellTestState 2023-01-18 14:01:43 +01:00
Arne Morten Kvarving
2b756a8202 Main: forward Action::State 2023-01-18 14:01:42 +01:00
Arne Morten Kvarving
7991af9c66 Main.hpp: forward UDQState 2023-01-18 14:01:42 +01:00
Arne Morten Kvarving
4aab577275 Main: move code for setting up Damaris to compile unit 2023-01-18 14:01:42 +01:00
Arne Morten Kvarving
560b0e5cbb Main: move code for setting up Vanguard to compile unit 2023-01-18 14:01:42 +01:00
Arne Morten Kvarving
c901570c9b Main.hpp: remove unnecessary Python.hpp include 2023-01-18 14:01:42 +01:00
Arne Morten Kvarving
82d2146c90 Main: move code for reading deck to compile unit 2023-01-18 14:01:42 +01:00
Arne Morten Kvarving
1729c1a414 Main: move some code to separate compile unit 2023-01-18 12:26:10 +01:00
Arne Morten Kvarving
fef009f792 Main: remove unused method and associated filesystem include 2023-01-18 12:22:50 +01:00
Arne Morten Kvarving
ffcfc5e2ea Main.hpp: remove unnecessary ErrorGuard.hpp include 2023-01-17 13:30:39 +01:00
Arne Morten Kvarving
240c039f53 readDeck: make the ErrorGuard an internal detail 2023-01-17 13:30:39 +01:00
Arne Morten Kvarving
8179935217 Main.hpp: remove unnecessary ParseContext.hpp include 2023-01-17 09:36:35 +01:00
Arne Morten Kvarving
56df430bd6 readDeck: make the ParseContext an internal detail 2023-01-17 09:36:31 +01:00
Bård Skaflestad
6eb97c0165
Merge pull request #4388 from akva2/parser_hpp_cleanup
Main.hpp: remove unneccesary Parser.hpp include
2023-01-17 09:20:07 +01:00
Arne Morten Kvarving
978d130f30 Main.hpp: remove unneccesary Parser.hpp include 2023-01-17 07:56:37 +01:00
Arne Morten Kvarving
d6b7e1c253 Main.hpp: remove unnecessary ArrayDimChecker.hpp include 2023-01-17 07:36:02 +01:00
Arne Morten Kvarving
60b23e8bb1 move ParseContext configuration to readDeck
this way we do not need to include InputErrorAction in Main.hpp
2023-01-16 22:17:39 +01:00
Arne Morten Kvarving
fd94ca7031 add missing InputErrorAction.hpp includes 2023-01-16 22:17:39 +01:00
Arne Morten Kvarving
3a01e89585 adjust to InputErrorAction change to enum class 2023-01-16 22:17:39 +01:00
Arne Morten Kvarving
3745a4c02d clean up Units.hpp includes
include it where required instead of relying on other
headers to pull it in
2023-01-16 12:21:29 +01:00
Arne Morten Kvarving
12a72b4d6e add missing include 2023-01-09 12:49:29 +01:00
Arne Morten Kvarving
64140f51c9 pass output stream
there is no default argument any longer
2023-01-03 15:24:28 +01:00
Arne Morten Kvarving
b148b454c6 NonlinearSolverEbos: avoid use of sstream 2023-01-02 15:17:49 +01:00
Tor Harald Sandve
5854b8a7a1 Support gas dissolution in water (Rsw)
- adapt to interface change in waterPvt()
- add gas + water + disgasw simulator

Note
- MSW is not supported
- EQUIL initialization is not supported
2022-12-21 13:13:52 +01:00
Bård Skaflestad
8dcb37570b Rename Convergence Output Option
This commit renames the previously introduced command line option
ExtraConvergenceOutput (--extra-convergence-output) into the more
descriptive

    OutputExtraConvergenceInfo (--output-extra-convergence-info)

Suggested by: [at]OPMUSER
2022-12-20 12:32:14 +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
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
f17a90170d use exception classes from opm-common 2022-12-13 12:56:13 +01:00
Bård Skaflestad
3c63a7aa6d Capture Timestep's Non-Linear Convergence History
This enables outputting a formatted record of the limiting MB and
CNV quantities as time and non-linear iterations progress.  This, in
turn, is intended for diagnostic and analysis purposes and will not
be output unless specifically requested.

In particular, add a new type,

    ConvergenceReport::ReservoirConvergenceMetric

which captures the convergence metric type (MB or CNV) along with
the associate phase and numerical value of the convergence metric.
We add a vector of these convergence metric objects as a new data
member of the ConvergenceReport.

Finally, foreshadowing the intended use case, also store the report
time in the ConvergenceReport object.
2022-12-09 16:22:36 +01:00
Bård Skaflestad
149ae34dd2 Capture Component Names in Independent Datastructure
This is in preparation of enabling separate convergence output
for diagnostic purposes.
2022-12-09 09:41:22 +01:00
Tor Harald Sandve
bdb82c2f3d Rename PrimaryVarsMeaning{Water/Gas/Pressure/Brine} to {Water/Gas/Pressure/Brine}Meaning 2022-11-25 13:03:26 +01:00
Tor Harald Sandve
22d27bdf5f Adapt to change of enum to enum class for primary variable meaning 2022-11-25 10:53:48 +01:00
Tor Harald Sandve
a190668800 adapt to rename of waterSaturationIdx -> waterSwitchIdx 2022-11-25 10:53:48 +01:00
Tor Harald Sandve
0c6d29a352 adapt to primary variable refactoring 2022-11-25 10:53:48 +01:00
Arne Morten Kvarving
c7016854d9 changed: make the deck an implementation detail in Opm::readDeck 2022-11-24 13:00:38 +01:00
Arne Morten Kvarving
f4f8c033d8 EclGenericVanguard: remove deck member 2022-11-24 12:10:52 +01:00
Atgeirr Flø Rasmussen
2192b3a86c Unhide NewtonMaxIterations. 2022-10-31 17:13:09 +01:00
Markus Blatt
2fdc9e6cc6 Remove references of flow i usage string of Newton method properties.
This makes them constent to NewtonMaxIterations
2022-10-28 16:41:54 +02:00
Markus Blatt
2c8a63fc3d Use consistent NewtonMaxIteration usage string.
Needed to prevent an exception. Apparently both the value and usage
sting must match each time we register a parameter no matter
whether the template parameters differs or not.
2022-10-28 16:41:54 +02:00
OPMUSER
bbd9d8bf58 Rename option FlowNewtonMaxIterations to NewtonMaxIterations.
Now it is consistent with other options (e.g. NewtonMinIterations
2022-10-28 16:41:54 +02:00
Arne Morten Kvarving
96ec2b0e96 comment out unused private variable (causes a warning) 2022-10-26 10:59:43 +02:00
Tor Harald Sandve
d25dc4e795 check controls in getWellConvergence 2022-10-18 10:55:17 +02:00
Atgeirr Flø Rasmussen
a2c5ec1127
Merge pull request #4037 from totto82/scaleEnergy
scale energy residual to have the same relative order as the mass balance residuals
2022-10-17 23:33:28 +02:00
Atgeirr Flø Rasmussen
c6b3e4c462 Hide all vtk parameters. 2022-10-14 10:46:45 +02:00
Arne Morten Kvarving
72dfc63167 BlackoilModelEbos: use elements range generator 2022-10-13 23:01:37 +02:00
Arne Morten Kvarving
ecc36f6ce8 fix cmake handling
- use imported target for linking
- use separate damaris cmake script
- handle HAVE_DAMARIS config variable in the usual way

fixing issues when user does not provide an outputDir via a command_line

avoid adding damaris's command lines when we dont have damaris
2022-10-13 12:23:06 +02:00
Elyes Ahmed
0a7f7e94b7 fixing unused variable err 2022-10-13 12:23:06 +02:00
Atgeirr Flø Rasmussen
c1b3c5e973 Rename option to EnableDamarisOutputCollective. 2022-10-13 12:23:06 +02:00
Atgeirr Flø Rasmussen
926c213628 Make ensureOutputDirExists() callable outside readDeck.cpp, and use it.
This is necessary because when using Damaris we must have the output dir ready
when we initialize Damaris. In the existing code, this was ensured only
from the setupLogging() call.
2022-10-13 12:23:06 +02:00
Atgeirr Flø Rasmussen
fae71df32d Fix initialization and stopping Damaris.
With this, flow no longer hangs on exit.
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
Markus Blatt
fcc3690832 Added missing include of config.h in cpp files. 2022-10-12 15:28:38 +02:00
Atgeirr Flø Rasmussen
a7a5a7a98d Make the Python interface use the TpfaLinearizer. 2022-10-04 11:44:35 +02:00
Atgeirr Flø Rasmussen
d7ba860bf1 Rename so that flow_blackoil_tpfa becomes flow_blackoil. 2022-10-03 14:14:15 +02:00
Atgeirr Flø Rasmussen
dacb77425a
Merge pull request #4017 from atgeirr/make-fast-assembly-default
Make the TPFA linearizer default for 1/2/3 phase blackoil.
2022-10-03 12:01:22 +02:00
Atgeirr Flø Rasmussen
f6033702c9 Ensure DIFFUSE is supported.
This is only instantiated for two-phase gas/oil and for 3-phase blackoil.
Runtime safeguards have been added to avoid the mistake of running with
a simulator combination that silently ignores DIFFUSE.
2022-09-30 15:28:58 +02:00
OPMUSER
7ab39dd5da Update NonlinearSolverEbos.hpp
This is one of several PRs that will rename some command line parameters for greater consistency, as agreed with Atgeirr in #4096

Here we rename FlowNewtonMinIterations to NewtonMinIterations
2022-09-30 19:52:18 +08:00
Atgeirr Flø Rasmussen
f1762a1abd Make the TPFA linearizer default for 3 phase blackoil. 2022-09-30 09:21:34 +02:00
Kai Bao
087eb56a64 changing max_strict_iter_ to min_strict_cnv_iter_
to make the naming reflect the actual usage more clearly.
2022-09-07 14:28:41 +02:00
Bård Skaflestad
d5401eeb43
Merge pull request #4044 from atgeirr/fix-restart-initialization
Ensure intensive quantities are calculated at start of simulation.
2022-09-01 17:10:32 +02:00
Atgeirr Flø Rasmussen
92538b0612 Ensure intensive quantities are calculated at start of simulation.
Moving it ensures it is also done for restart simulation runs. Without
this, the well model will actually initialize the IQs, but only for
owned cells, not overlap/ghost cells, which caused parallel failure.
2022-09-01 14:00:42 +02:00
Tor Harald Sandve
3e27c23222 scale energy residual to have the same relative order as the mass balance residuals 2022-08-29 15:05:01 +02:00
Arne Morten Kvarving
3b0b5b4708 changed: remove unneeded includes for ParameterGroup 2022-08-26 09:21:46 +02:00
Arne Morten Kvarving
371b2592f5 changed: put ParallelIstlInformation in separate compile unit 2022-08-18 09:15:28 +02:00
Atgeirr Flø Rasmussen
cabe64cc58 Further reduction of modifications. 2022-08-09 11:11:36 +02:00
Atgeirr Flø Rasmussen
5fba14373b Modification to reduce PR to minimal changes. 2022-08-09 11:11:36 +02:00
Atgeirr Flø Rasmussen
66a1c46413 Remove unused code branch. 2022-08-09 11:09:48 +02:00
hnil
8f5e0940fe restructuring to be able to call without local indices 2022-08-09 11:09:48 +02:00
hnil
d53b6ad9fa added spesialisation for using simple property updating 2022-08-09 11:09:48 +02:00
hnil
95308d7d02 ensure intensive quantities is updated 2022-08-09 11:09:48 +02:00
Elyes Ahmed
5c2b60bcd0 rebasing 2022-07-28 20:40:34 +02:00
Arne Morten Kvarving
eeeeb283c5 remove unnecessary includes 2022-07-26 19:03:39 +02:00
Tor Harald Sandve
cf1abb086f remove msw(ms) from regulariztion parameter 2022-06-29 15:39:51 +02:00
Arne Morten Kvarving
1794934f0d anonymize unused parameters 2022-06-27 14:47:44 +02:00
Arne Morten Kvarving
a4d254b749 changed: introduce EclGenericVanguard::setParams
this is used transferring ownership of setup structures to the
simulator. drop all the flowEbosXXX set deck methods and use the
generic vanguard. also means various structs that were only passed
in the blackoil simulator are now passed in all simulators.
2022-06-24 15:06:13 +02:00
Arne Morten Kvarving
00c374be5c changed: remove support for internal summaryconfig handling in simulators 2022-06-24 15:06:13 +02:00
Arne Morten Kvarving
4510f40b6d changed: remove support for internal schedule handling in simulators 2022-06-24 15:06:13 +02:00
Arne Morten Kvarving
1a35c5ac47 changed: remove support for internal eclstate handling in simulators 2022-06-24 15:06:13 +02:00
Arne Morten Kvarving
371c8058bc changed: remove support for internal deck handling in simulators 2022-06-24 15:06:13 +02:00
Bård Skaflestad
7512c0c247
Merge pull request #3906 from totto82/regMSW100
change default reg factor for MSW to 100
2022-06-13 20:15:33 +02:00
Bård Skaflestad
be4221ea92
Merge pull request #3869 from plgbrts/vapoilwat
adding three-phase simulator including water evaporation and salt precipitation
2022-05-25 15:33:53 +02:00
Paul Egberts
a255613452
Merge branch 'master' into vapoilwat 2022-05-11 11:55:54 +02:00
Håkon Hægland
91ac3a2a32 Dynamically update schedule from Python
Adds some methods that enables Opm::Schedule to be dynamically modified
from Python. A test case in test_schedule.py illustrates the use case.
2022-05-05 13:10:39 +02:00
Tor Harald Sandve
6bf90c9ebe change default reg factor for MSW to 100 2022-05-02 09:41:43 +02:00
Tor Harald Sandve
74d8db36c5
Merge pull request #3859 from totto82/default_strict
use a relaxed (but not too relaxed) well tolerance when iter>6
2022-04-29 15:53:53 +02:00
Markus Blatt
c66fb8a93d Added support for water-only and water-only + thermal to flow.
Also run the onephase tests with flow now.
2022-04-26 17:07:09 +02:00
Tor Harald Sandve
52fca6c91d use a relaxed (but not too relaxed) well tolerance when iter>6
also shut unsolvable wells during iterations as default

Note however that getWellConvergence return false if a well is unsolvable
i.e. it will cut the timestep and redo the iteration if the well is unsolvable
and only shut it completly if the time step is below the
MinTimeStepBeforeShuttingProblematicWellsInDays (default 0.01 days)
2022-04-26 10:55:22 +02:00
Paul Egberts
c2fa5fc5a8 adding three-phase simulator including water evaporation and saltpreciopitation 2022-04-11 21:56:44 +02:00
Tor Harald Sandve
0c9bb3990e
Merge pull request #3830 from plgbrts/vapwat
Adding explicit input specification of water-gas ratio (RVW) and RVW output plus simulator gas-water system with salt precipitation and water evaporation for
2022-04-07 09:03:26 +02:00
Bård Skaflestad
dfdfbbd7d7 Don't Process Corner-Point Data If No Valid Cell Geometry
If no cell has a valid corner-point geometry, typically caused by
using GDFILE to read non-finite data such as all ZCORN = -1.0E+20,
then we must not attempt to generate a grid structure.  If we do, we
will typically just fail somewhere deep down in the corner-point
processing code and generate a diagnostic message that's hard to
decipher.

With this commit we instead output a diagnostic message of the form

    Failed to create valid EclipseState object.
    Exception caught: No active cell in input grid has valid/finite cell geometry
    Please check geometry keywords, especially if grid is imported through GDFILE

This may not be a lot better than the original diagnostic

    Processing grid
    flow: ${ROOT}/opm-grid/opm/grid/cpgpreprocess/preprocess.c:768: is_lefthanded: Assertion `! searching' failed.
    Aborted (core dumped)

but does at least suggest that the grid data may be faulty.
2022-03-25 14:35:55 +01:00
Paul Egberts
390a5a4b82 clean up 2022-03-06 21:02:22 +01:00
Paul Egberts
797fdc278b water-gas ratio input and output plus simulator for salt precipitation and water evaporation 2022-03-01 20:52:43 +01:00
Tor Harald Sandve
ad799b3e80 Add more performance summary output
This commit ads: NEWTON, MLINEARS, MSUMLINS, MSUMNEWT, NLINEARS, NLINSMIN, NLINSMAX
2022-02-03 15:03:37 +01:00
Markus Blatt
710d648eda Prevent multiple *.?.dbg/prt files in production crashed parallel runs.
There was a fallout when skipping concating these files to the
default ones (PR #1708). We should also have deactivated creating
these files at all. As a result these files appeared in all parallel
runs that were aborted.

This change now prevents creating and logging to these files in
parallel in a default
run (--enable-parallel-logging-fallout-warning=false).

Developers can still activate logging and concating to see whether
everything is only logged on the io process by passing
--enable-parallel-logging-fallout-warning=true.

Closes 3725
2022-01-27 17:21:29 +01:00
Tor Harald Sandve
bf77bbbc10
Merge pull request #3759 from plgbrts/saltp
Enable salt precipitation/dissolution
2022-01-18 12:02:32 +01:00
Arne Morten Kvarving
a82ad816c7 add fallback return (control reaches end of non-void function) 2022-01-17 13:59:47 +01:00
Paul Egberts
98c8e691c3 Allow for brine and precipitation/dissolution of salt 2022-01-14 11:46:40 +01:00
Bård Skaflestad
3317f10c4a
Merge pull request #3729 from goncalvesmachadoc/gaswater_brine
allow for gas-water + brine
2022-01-12 12:31:34 +01:00
goncalvesmachadoc
300f536a19 add exit_failure for water+brine case 2022-01-11 14:23:37 +01:00
Joakim Hove
6b92443cb4 Downstream filesystem reorganisation in opm-common 2022-01-02 14:33:34 +01:00
Atgeirr Flø Rasmussen
eec32ec581 Replace DEMONSTRATE_RUN_WITH_NONWORLD_COMM macro with runtime bool.
This allows for testing the simulator with the artifically split communicator,
in order to verify that there is no inappropriate usage of the world communicator.
2021-12-10 17:42:44 +01:00
goncalvesmachadoc
7f320102c3 allow for gas-water + brine 2021-12-08 14:35:22 +01:00
Tor Harald Sandve
4f75d1ab8d Add gasoil + energy simulator
Useful when combining CO2STORE + THERMAL

This PR also fixes an issue with missing phases in computation of output temperature
2021-12-07 09:18:38 +01:00
Markus Blatt
a2246d331b Spelling fixes
Gbp-Pq: Name 0005-Spelling-fixes.patch
2021-11-15 12:06:05 +01:00
Tor Harald Sandve
ae5a1df29c
Merge pull request #3638 from blattms/exclude-pv-aquifer-cnv
Exclude pv of numerical aquifer cells in ratio of cells violating CNV
2021-11-12 13:27:58 +01:00
Arne Morten Kvarving
dc136746df cosmetics: do not indent for namespace
also avoid an unnecessary close/open for namespace Opm
2021-11-10 14:24:51 +01:00
Arne Morten Kvarving
7f7fbab2f4 remove FLOW_BLACKOIL_ONLY hack from Main.hpp
now that the python simulator uses runStatic, the
runDynamic template is never instanced, and thus there
are no linker issues.
2021-11-10 10:07:11 +01:00
Arne Morten Kvarving
06bd25575f use std::filesystem directly 2021-11-01 12:31:58 +01:00
Bård Skaflestad
f212c946c7 Separate MICP Case Out to Helper Function
In keeping with the other simulation cases.
2021-10-29 16:15:44 +02:00
Arne Morten Kvarving
a056aa858a changed: special case no input deck given handling
we do not want to invoke MPI_Abort in this case
2021-10-29 12:16:01 +02:00
Markus Blatt
85b5a60270 [bugfix] Exclude pv of numerical aquifer cells for CNV violation.
In some models there will be only a few cells with rather high pore volume representing the numerical aquifer. Including them (as non-violated cells) in the ratio will make the ratio lower than without the aquifer there and might lead to accepting vectors as converged when they should not.
2021-10-26 12:01:46 +02:00
Alf Birger Rustad
a10387fcec Do not print confusing message to terminal. 2021-10-25 15:35:30 +02:00
Joakim Hove
56c7c74016 Handle NEXTSTEP behavior in time stepper 2021-10-18 11:52:33 +02:00
Tor Harald Sandve
70c9d2e237
Merge pull request #3590 from daavid00/micp-2021-10
micp
2021-10-14 22:28:28 +02:00
daavid00
48b175904a first version of micp implementation in flow 2021-10-14 17:44:57 +02:00
Joakim Hove
4b85fc74ae
Merge pull request #3594 from joakim-hove/wtest-rst
load WellTestState from restart file
2021-10-13 11:27:41 +02:00
Arne Morten Kvarving
8eb63409cb fixed: double call to MPI_Finalize
I missed this one when moving the MPI handling into RAII style
2021-10-13 09:35:16 +02:00
Joakim Hove
2c68f12769 Load WellTestState from restart file 2021-10-13 08:46:48 +02:00
Joakim Hove
5db60aba5e Set external Action::State object in the vanguard 2021-10-12 10:41:29 +02:00
Bård Skaflestad
61ac76fe90 Make ARGV[ARGC] Into a Nullpointer
This is strictly speaking required by POSIX.
2021-10-09 00:17:32 +02:00
Bård Skaflestad
ad74de2e1a Use Algorithm to Locate '--version' Option 2021-10-09 00:17:32 +02:00
Bård Skaflestad
fca167acfd Split Individual Cases Out to Helper Functions
This commit moves the bodies of the various 'dynamicDispatch_<>()'
cases out to separate helper functions.  Not only does this reduce
the number of nested conditionals, it also helps reasoning about
each case in isolation and aids future maintenance.
2021-10-09 00:17:32 +02:00
Bård Skaflestad
3455dbdac9 Main.hpp: Adjust Whitespace
In preparation of refactoring 'dispatchDynamic_<>()'
2021-10-09 00:17:32 +02:00
Markus Blatt
1520f9c85f [bugfix] handle exception when linearizing the wells.
As multisegment wells may throw in applyUMFPack this is now needed and
the exception needs to communicated to all processes. We do this in
the linearize method of the well model.

Before this change this is what could happen:
- The process with the exception would have chopped the time step
- The others would have successfully setup the systems and entered the
  linear solve

This  poduced a deadlock. One processes was waiting in
OPM_END_PARALLEL_TRY  during the setup of the shorter time step and in
collective communication during the setup of the linear solver for the
unchopped time step.
2021-10-08 16:01:07 +02:00
Elyes Ahmed
65f0e4e7f0 Replacing calling Communication with a header 2021-10-05 13:07:52 +02:00
Elyes Ahmed
0202b00d59 clean up after review 2021-10-05 13:07:52 +02:00
Elyes Ahmed
f53c597f90 Replacing use of MPI_COMM_WORLD with a variable communicator. 2021-10-05 13:07:52 +02:00
Tor Harald Sandve
afdfe55bbc restrict maximum number of times a well can switch to the same control 2021-10-04 10:12:39 +02:00
Tor Harald Sandve
cb9254636b rename and cleanup 2021-09-30 09:01:07 +02:00
Tor Harald Sandve
c9e93e6155 stop updating operability during iterations 2021-09-30 08:47:47 +02:00
Joakim Hove
5d3e56baa3 Call MPI_Abort() in main catch all clause 2021-09-28 20:53:38 +02:00
Markus Blatt
3cda8a2fdb Added missing parallel try-catch clause for updatePrimaryIntensities.
As Problem::updatePrimaryIntensities might throw we need to do this
to prevent dealocks in parallel run in case problem occurs.
2021-09-24 09:25:44 +02:00
Håkon Hægland
7a394df43f Include <stdexcept> header to use std::logic_error()
And some minor stylistic changes.
2021-09-23 13:13:23 +02:00
Håkon Hægland
4c5245196b Changed calling convention for shared pointers.
Expect non-reference type shared pointers arguments instead of references
to shared pointer. This will make it clear to the caller that the called
function is making a copy of the pointer for its own use and not trying
to modify the original pointer of the caller.
2021-09-22 23:49:13 +02:00
Håkon Hægland
5ad65c70ee Initialize blackoil simulator from schedule shared with Python.
Adds a new constructor to Main.hpp that takes shared pointers to Deck,
EclipseState, Schedule, and SummaryConfig. This makes it possible to
share these variables with Python without worrying about lifetime issues
of the underlying C++ objects. For example, a Python script can first
create an opm.io.schedule.Schedule object which is modified from Python.
Then, assume the same Python script creates an
opm.simulators.BlackOilSimulator which is initialized with the same
schedule object. Since the underlying C++ object is a shared pointer,
the Schedule object in Python may go out of scope (get deleted by Python)
without having the C++ schedule object being deleted. And the Python
BlackOilSimulator may continue to be used after the Python Schedule object
has been deleted since it still has a valid C++ schedule object.
2021-09-21 15:52:59 +02:00
Joakim Hove
357540bfca Create Action::State external to the vanguard 2021-09-19 10:17:58 +02:00
Tor Harald Sandve
81d9a8c178 add option for relaxed convergence for stw 2021-09-14 14:32:14 +02:00
Atgeirr Flø Rasmussen
d1bfd48b6e Add missing include for unordered_map. 2021-09-09 12:17:54 +02:00
Tor Harald Sandve
f3513a31eb add option for relaxed well convergence for the last netwon iterations 2021-09-08 09:58:14 +02:00
Joakim Hove
060eac4999 Add basic functionality for validating special case keywords 2021-08-24 13:50:40 +02:00
Tor Harald Sandve
8e23a2b88d
Merge pull request #3476 from totto82/changeDefaultInner
Change default MaxNewtonIterationsWithInnerWellIterations to 8
2021-08-24 10:29:03 +02:00
Tor Harald Sandve
0f58343c48 Change default MaxNewtonIterationsWithInnerWellIterations to 8 2021-08-18 08:41:37 +02:00
Arne Morten Kvarving
1ef981f35c use RAII for MPI initialization 2021-08-12 13:20:59 +02:00
Arne Morten Kvarving
d99f642dff add collective communication to generic vanguard 2021-08-12 12:08:43 +02:00
Tor Harald Sandve
43d129861f
Merge pull request #3454 from plgbrts/gw1
adjustments needed for gas-water system
2021-08-03 12:01:34 +02:00
Arne Morten Kvarving
78c5675daf changed: get rid of OPM_UNUSED macro usages
prefer anonymous parameters or c++17 [[maybe_unused]]
2021-08-02 14:55:41 +02:00
Paul Egberts
d5653d9ca2 removed exit failure for gas-water system 2021-08-01 18:11:56 +02:00
Paul Egberts
e25b78f106 fix for relative change calculation for gas-water system 2021-08-01 18:09:54 +02:00
Joakim Hove
c62a9ba198 Set external UDQState for flow blackoil 2021-07-04 08:55:07 +02:00
Joakim Hove
528078e8e1 Assemble UDQState external to the vanguard 2021-07-01 08:24:59 +02:00
Peter Verveer
7be1bce651 Small fix for the keyword validation 2021-06-18 12:12:58 +02:00
Atgeirr Flø Rasmussen
8c5a6b12d5
Merge pull request #3158 from totto82/operability_solve
shut/stop unsolvable wells
2021-06-18 10:13:14 +02:00
Tor Harald Sandve
b5e29684f2 shut/stop unsolvable wells 2021-06-17 11:50:31 +02:00
Peter Verveer
fd753e20c4 Add keyword validation using a predicate function 2021-06-14 18:10:36 +02:00
Tor Harald Sandve
96091f4313 change get param from bool to int 2021-06-11 08:09:35 +02:00
Tor Harald Sandve
5686d90c61
Merge pull request #3350 from totto82/maxNiWi
Change the inner iterations logic
2021-06-10 19:49:23 +02:00
Arne Morten Kvarving
14ea3e6dd1 SimulatorFullyIplicitBlackoilEbos: avoid boost includes in header 2021-06-08 15:44:28 +02:00
Arne Morten Kvarving
a0dea4d58f remove unused method 2021-06-08 15:10:11 +02:00
Tor Harald Sandve
3ca6e215dc Change the inner iterations logic
This replace the Boolean switch to enable inner iterations with a
int that controls for which maximum number of newton iterations
inner iterations applies.

Default is set to 3
2021-06-04 10:51:15 +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
d55df4330e fixed: do not use Opm:: prefix when inside namespace Opm 2021-05-25 12:06:06 +02:00
Joakim Hove
23180e06d2 Rename WellStateFullyImplicitBlackoil -> WellState 2021-05-21 15:07:21 +02:00
Joakim Hove
842e0a53a4
Merge pull request #3263 from akva2/move_ecldeck_param
changed: move Deck parameter to BlackoilModelParametersEbos
2021-05-18 08:19:19 +02:00
Arne Morten Kvarving
8d1a8126ea changed: move Deck parameter to BlackoilModelParametersEbos
it is used there. now eclbasevanguard.hh includes
BlackoilModelParametersEbos, instead of the other way around.
2021-05-15 14:42:50 +02:00
Peter Verveer
ad0b62ab1c Simplify the message for keywords with only a single record 2021-05-14 15:12:12 +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
3397cd6252 eclbasevanguard: split in template and non-template parts 2021-05-11 09:15:11 +02:00
Arne Morten Kvarving
86bc095e3a eclbasevanguard: change canonicalDeckPath to std::string
makes use of filesystem an implementation detail
2021-05-11 09:15:11 +02:00
Arne Morten Kvarving
a4c0af09d9 fixed: do not use Opm:: prefix when inside namespace Opm 2021-05-05 11:59:18 +02:00
Bård Skaflestad
aa1df1352f
Merge pull request #3197 from akva2/move_to_comp_units
Move to separate compilation units
2021-04-30 16:50:54 +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
238109b0e9 FlowMainEbos: use forwarding
also remove unnecessary includes
2021-04-29 12:47:27 +02:00
Arne Morten Kvarving
bbfda699d3 KeywordValidation: use forwarding 2021-04-29 12:46:49 +02:00
Tor Harald Sandve
090b75425f Use switch event 2021-04-16 13:38:56 +02:00
Peter Verveer
1640c4afcf Implement a new keyword validator 2021-04-12 16:47:02 +02:00
Kai Bao
347ca3978a adding parameter to control the min time step
can be reduced to based on the newton iteration counts.

By default it is zero, so it should not change any running results.
2021-03-10 11:49:59 +01:00
Joakim Hove
ec344d555d Pass ouput interval overeride to Schedule constructor 2021-03-08 19:30:58 +01:00
Joakim Hove
6f15765f53 Use Schedule time functions - avoid TimeMap 2021-02-25 18:10:22 +01:00