Commit Graph

1477 Commits

Author SHA1 Message Date
hnil
81714806c2 hide all vtk related if not vtk enabled 2020-05-26 16:16:42 +02:00
Joakim Hove
b28d926f32 Instantiate packer for std::optional<GPMaint> 2020-05-26 13:41:30 +02:00
Bård Skaflestad
4ea5b7e989 Check GCONSALE Limits: Remove Unused Variable
Fixes a warning.
2020-05-24 13:16:47 +02:00
Tor Harald Sandve
82b424c2cf don't regularize MSW as default 2020-05-22 20:52:14 +02:00
Tor Harald Sandve
8a5c9e82df add run time parameters for msw convergence tuning. Default values are set to minimize convergence failures for model2 based tests. These parameters are also tested on bigger models with good results 2020-05-22 20:52:14 +02:00
Tor Harald Sandve
ec7c6e236d increase segment volume to stabilize to improve convergence 2020-05-22 20:52:14 +02:00
Tor Harald Sandve
d49c590879 apply the relaxtion factor on the pressure change not the max pressure change limit 2020-05-22 20:52:14 +02:00
Tor Harald Sandve
cf702a5384 use relaxed tolerance for MSW when solution stagnates 2020-05-22 20:52:14 +02:00
Markus Blatt
55b3a65230
Merge pull request #2628 from Tongdongq/multisegmentwells-gpu
cusparseSolver can now handle MultisegmentWells
2020-05-22 16:24:58 +02:00
T.D. (Tongdong) Qiu
98a8dac155 Passing std::vectors to pass data for C and B faster. Variables for D are initialized in initializer list. 2020-05-21 11:41:15 +02:00
T.D. (Tongdong) Qiu
f04a629546 Updated comments 2020-05-20 15:13:58 +02:00
Håkon Hægland
2734445bf5 Refactor runSimulator().
A resubmission of commit b25f489 in PR #2403 and PR #2441 to work with
the current master.

Continues the work in PR #2619 to refactor FlowMainEbos.hpp to work with
the Python bindings.

We need to refactor runSimulator() to avoid code duplication when
executeStepInit() is implemented (see later commit). Here, runSimulator()
is refactored into a runSimulatorInitOrRun() that takes a callback
function. When runSimulatorInit() is implemented it will pass a different
callback that only initializes the simulator. Currently, runSimulator()
passes the callback runSimulatorRunCallback_() which runs the whole
simulation. The code outputting the simulation summary in runSimulator()
is also refactored into a runSimulatorAfterSim_() method.
2020-05-19 16:52:46 +02:00
Atgeirr Flø Rasmussen
94ea40b253
Merge pull request #2619 from hakonhagland/refactor_execute
Refactor `execute()` in `FlowMainEbos.hpp`
2020-05-19 13:58:10 +02:00
Bernd Flemisch
a3b27ad9a4 [properties] include header with linear algebra property definitions 2020-05-19 10:04:35 +02:00
T.D. (Tongdong) Qiu
f6036ffa8e Now WellContributions copies vectors for MultisegmentWells to reduce number of copies 2020-05-18 18:48:58 +02:00
T.D. (Tongdong) Qiu
0f273ebdf6 Removed unused variables. Changed initializerlist order for readability. 2020-05-18 16:10:19 +02:00
Bernd Flemisch
21df1cbe31 [properties] adapt to changes in the property system
`NEW_PROP_TAG` is now a definition and not just a declaration.
Eliminate superfluous declarations, include headers with definitions.
Make one necessary forward declaration explicit.
2020-05-18 15:54:26 +02:00
Markus Blatt
74936c3239 Skip exception for unset verbosity, use fallback for default solvers
boost::property_try::get without a defaults throws an exception. As
result the nonlinear solver and timestepper think that there is a
problem with solving and chop the timnestep until they give up.

This commit fixes this by using a default and falling back to the
command line specified value for the default solvers.
2020-05-18 08:33:49 +02:00
T.D. (Tongdong) Qiu
dcbba53510 Updated comment 2020-05-15 17:55:06 +02:00
T.D. (Tongdong) Qiu
04ee2be348 cusparseSolver can now handle MultisegmentWells, they are actually applied on CPU via SuiteSparse/UMFPACK 2020-05-15 16:40:34 +02:00
Markus Blatt
b887492285 Write out the linear system when ultra high verbosity is requested.
This added to ISTLSolverEbosFlexible and should be available form
ISTLSolverEbos for consistency reasons, too. Done with this commit.
2020-05-15 16:21:48 +02:00
Markus Blatt
e812eb132a
Merge pull request #2625 from blattms/modify-cpr-defaults
Modify cpr defaults (for better performance)
2020-05-15 14:07:36 +02:00
Markus Blatt
712f576b36 Default to trueimpes as this seems slightly faster for Norne. 2020-05-15 12:41:25 +02:00
Markus Blatt
6635c8c7cd Actually honor CprMaxEllIter
instead of always overwriting it with 1.
2020-05-15 12:40:17 +02:00
Markus Blatt
65fceb34c1 Delete superfluous second setting of trueimpes.
It is already set in the if-else above.
2020-05-15 12:38:41 +02:00
Atgeirr Flø Rasmussen
77132af517
Merge pull request #2623 from atgeirr/fix-wrong-message
Correct messages for group control switching.
2020-05-15 11:32:09 +02:00
Bård Skaflestad
d382565681
Merge pull request #2622 from hnil/use_more_tuning
made constructor consistent with updateTuning
2020-05-14 23:14:42 +02:00
hnil
94a27afdd0 made constuctor consistent with updateTuning 2020-05-14 21:31:18 +02:00
Atgeirr Flø Rasmussen
5aa2a785af Correct messages for group control switching. 2020-05-14 17:31:21 +02:00
Atgeirr Flø Rasmussen
35cf505d14
Merge pull request #2618 from blattms/actually-use-trueimpes-for-cpr-trueimpes
Use "trueimpes" for weight_type for configuration cpr_trueimpes.
2020-05-14 09:57:12 +02:00
Bård Skaflestad
3c44a670bb
Merge pull request #2616 from atgeirr/specialize-amgsmootherargs
Specialize amgSmootherArgs() for ParallelOverlappingILU0
2020-05-13 19:55:30 +02:00
Atgeirr Flø Rasmussen
883b987837 Set default smoother relaxation to 1.0. 2020-05-13 17:08:38 +02:00
Atgeirr Flø Rasmussen
ebce35b318 Add specialization for ParallelOverlappingILU0. 2020-05-13 17:08:38 +02:00
Markus Blatt
50cbe9a09e Use "trueimpes" for weight_type for configuration cpr_trueimpes.
Previously, we always used quasiimpes.
2020-05-13 17:00:36 +02:00
Håkon Hægland
fcddbbba52 Refactor execute() in FlowMainEbos.hpp
Currently, execute() calls runSimulator() to run the simulation. When
the Python step_init() is implemented (see a later commit), it will
instead call an executeStepInit() that will need to do the same
initialization as in execute() except that it should call a
runSimulatorInit() instead of runSimulator(). In order to avoid code
duplication for execute() and executeStepInit(), execute() is here
refactored into an execute_() method.
2020-05-13 16:59:29 +02:00
Markus Blatt
76e710df97 Simplify intstantiation of BDABridge template members
with a macro and stripping unneeded template members.
2020-05-13 16:29:36 +02:00
Markus Blatt
85fffee06e Pass a mutable matrix to BdaBridge::solve_system
That function will overwrite zero diagonal values with small nonzero ones.
2020-05-13 16:28:15 +02:00
Markus Blatt
d54268513e Add getMatrix() const method needed for GPU solvers.
Somehow I missed testing with CUDA.
2020-05-13 15:33:34 +02:00
Atgeirr Flø Rasmussen
654fbf864e
Merge pull request #2609 from hakonhagland/refactor_flowebos2
Refactors flow_ebos_blackoil.cpp (2)
2020-05-13 15:04:23 +02:00
Markus Blatt
46ab154396
Merge pull request #2615 from atgeirr/split-files
Split file to ensure correct authorship and license is applied.
2020-05-13 15:02:54 +02:00
Markus Blatt
90a0e2b392
Merge pull request #2613 from blattms/use-correct-matrix
Use correct matrix for scaling and get rid of unused preconditioner matrix member
2020-05-13 14:54:07 +02:00
Markus Blatt
f6b4a4396e
Merge pull request #2614 from blattms/clean-hnil-fix
Fixed unitialized value for ILU when using flexible solvers.
2020-05-13 14:40:02 +02:00
Atgeirr Flø Rasmussen
bf0e7f0e4a Split file to ensure correct authorship and license is applied. 2020-05-13 13:53:45 +02:00
Håkon Hægland
8bb914b144 Fixed bug in initFlowEbosBlackoil()
The return code from the call to initialize_() in initFlowEbosBlackoil()
in Main.hpp was overwritten by a mistake.
2020-05-13 13:45:16 +02:00
Markus Blatt
664e582b5f [bugfix] Use correct matrix for scaling.
For some of the scaling approaches the wrong matrix (dereferenced
nullptr) would have been used which should have resulted segmentation
faults. With this commit we add a method getMatrix() that returns the
correct one and use that for scaling.
2020-05-13 13:38:02 +02:00
Markus Blatt
9f278db5a6 Removes additional member for matrix used by the preconditioner.
Somehow that approach went missing in action and it is always the
same as the assembled matrix. Hence no need for that member anymore
and we remove it to prevent confusion.
2020-05-13 13:38:02 +02:00
Markus Blatt
1e56b8f907
Merge pull request #2608 from blattms/merge-cpr-legacy
Make flexible solvers and CPR accessible for flow binary.
2020-05-13 13:20:23 +02:00
hnil
e309d86012 Fixed unitialized value for ILU when using flexible solvers.
If the user requested ILU0, the uninitialized valued caused an
arbritrary (quite high) fill-in level to be used which stalled the
computation and exhausted memory when running parallel.
2020-05-13 13:13:54 +02:00
Markus Blatt
7ed960b6d1 Use normal pointer to assembled matrix. 2020-05-13 12:23:20 +02:00
Håkon Hægland
946b5f5806 Refactor flow_ebos_blackoil.cpp (2)
NOTE: this pull request depends on #2555 which should be merged first.

A rewrite of the outdated PR #2543.

Refactors flow_ebos_blackoil.cpp such that we can choose not to execute
the whole simulation using the flowEbosBlackoilMain() function but
instead only initialize by calling flowEbosBlackoilMainInit(). This is
necessary to implement a Python step() method that can advance the
simulator one report step at a time.

Also adds a method initFlowEbosBlackoil() to Main.hpp that can be used
directly from the Python interface's BlackOilSimulator object to gain
access to the FlowMainEbos object before it has initialized the
simulation main loop.
2020-05-13 11:54:18 +02:00
Markus Blatt
ddd947bf0a Use correct matrix for flexible solver when parallel.
In this case matrix_ is a nullptr and noGhostMat_ is the optimized
matrix to use. Before this commit we experienced a segmentation fault
as the nullptr was dereferenced and passed to the solver.
2020-05-12 19:06:12 +02:00
Markus Blatt
4c72af9546 Make only rank zero honor verbosity in flexible solvers.
Previously all the ranks print linear solver statistics in verbose
mode which cluttered the output in parallel runs. Now only rank 0
will print like it should be.
2020-05-12 18:06:20 +02:00
Markus Blatt
1f177b33e7 Use communicator to decide whether this is a truly parallel. 2020-05-12 12:46:04 +02:00
Markus Blatt
1ff1f24fbb Fix when the matrix with no ghosts will be used. 2020-05-12 12:46:04 +02:00
Markus Blatt
e8b79b2b63 Prevent matrix copy in serial run. 2020-05-12 12:46:04 +02:00
Markus Blatt
357469dc21 Only extract overlap and interior information if needed.
That is, if actually set up the additional matrix with no ghosts.
2020-05-12 11:52:19 +02:00
Markus Blatt
aa54b4d8db Remove unused weight_filename from json file. 2020-05-12 11:52:19 +02:00
Markus Blatt
47acb6ecb3 Make flexible solvers and CPR accessible for flow binary.
Previously, one had to call a seperate binary called
flow_blackoil_dunecpr. Unforntunately, that was only built if users
requested that the tests (`-DBUILD_TESTING=ON`) and the flow
variants (`-DBUILD_FLOW_VARIANTS=ON`) should be built. In addition
it would use a slightly different nonlinear solver implementation.

With this commit flow can be asked to either use
CPR (`--use-cpr=true --matrix-add-well-contributions=true`) or to use
the flexible solvers bx setting the `--linear-solver-configuration`
option. In all other cases the usual solver implementations are still
used.

Note that the flexible solvers still need
`--matrix-add-well-contributions=true` and hence cannot cope with
multi-segment wells.
2020-05-12 11:52:19 +02:00
Markus Blatt
71b234ec54 Make CprReuseSetup always use same default value.
The default was 0 for flow and 3 for flow_blackoil_dunecpr. Now we
always use 3. This is safe as it will not be used for any other
solvers than the flexible ones.
2020-05-12 11:52:19 +02:00
Markus Blatt
5b4acd5417 Do not query wells for solver if it is actually not needed. 2020-05-12 11:52:19 +02:00
Markus Blatt
19bd9cea65 for DUNE 2.7 and up we need to specialize for Opm:MatrixBlock
as there already is a specialization for an arbitrary Block
and that one leads to compile errors because we redefine it
in OPM (and miss some other specializations for Opm:MatrixBlock,
e.g. isNumber).
2020-05-11 21:29:47 +02:00
Joakim Hove
b5fda287d4
Merge pull request #2555 from hakonhagland/python_simulators3
Python bindings for the blackoil simulator (simplified).
2020-05-11 18:55:04 +02:00
Bård Skaflestad
e786c713fb
Merge pull request #2600 from totto82/improve_msw_convergence_clean
compute initial volume fractions on the well copies
2020-05-11 17:45:37 +02:00
Håkon Hægland
f94553c5a7 Python bindings for the blackoil simulator.
A simplified version of PR #2518 that uses a deck filename to construct
the simulator.

After private discussion with @joakim-hove it was decided that the
construction of the blackoil simulator from Python using deck,
ecliseState, schedule and summaryConfig as constructor arguments from
\#2518 should be replaced by a constructor taking only the deck filename
as parameter.

A rewrite of the Python bindings for the blackoil simulator using
pybind11 as introduced in PR #2127. The new version uses the
refactored flow.cpp introduced in PR #2516 and thus avoids duplication
of the code in simulators.cpp.

This PR will be the starting point for implementing the Python bindings
introduced in PR #2403.
2020-05-11 15:03:17 +02:00
Bård Skaflestad
34b750336e Remove 'MAXVALUE' From List of Missing Features
We've supported that operator for quite some time.
2020-05-10 14:38:17 +02:00
Tor Harald Sandve
904353367d compute initial volume fractions on the well copies also 2020-05-08 19:29:20 +02:00
Atgeirr Flø Rasmussen
7beabdb9fb
Merge pull request #2599 from atgeirr/improve-matrix-output
Improvements to matrix writing facility.
2020-05-08 15:41:33 +02:00
Atgeirr Flø Rasmussen
329036612b Enable matrix dumping also without MPI.
Also remove the need for the reinterpret_cast by adding some extra
implementation details for more general block matrices.
2020-05-08 13:32:36 +02:00
Atgeirr Flø Rasmussen
d108f9afa6 Avoid file-ending starting with S or A to not confuse comparison program. 2020-05-08 11:56:52 +02:00
Atgeirr Flø Rasmussen
cf7b258f72 Minor adjustments from review. 2020-05-08 09:21:25 +02:00
Atgeirr Flø Rasmussen
561bec4a64 Make CASENAME.STEPINFO the name of the step info report file. 2020-05-07 22:29:01 +02:00
Atgeirr Flø Rasmussen
9458357009 Use = rather than += when appropriate for reports. 2020-05-07 22:09:17 +02:00
Atgeirr Flø Rasmussen
9dd2275af9 Remove seconds and add timestep to ITERINFO report. 2020-05-07 21:19:31 +02:00
Atgeirr Flø Rasmussen
769028b591 Remove 'verbosity' member and reorganize. 2020-05-07 21:00:39 +02:00
Atgeirr Flø Rasmussen
8dd53a38e9 Refactor SimulatorReport system.
Now SimulatorReport object contains a vector of SimulatorReportSingle objects,
for both successful and failing steps.
2020-05-07 16:13:39 +02:00
Atgeirr Flø Rasmussen
cfdb2b9be6 Modifications of formatting, compile fix. 2020-05-07 15:04:20 +02:00
hnil
0f33835e67 added writing of detailed performance report 2020-05-07 11:37:24 +02:00
hnil
d275242b01 Add a writeSystem() helper and use it to write system matrices.
Triggered only when using the flexible solver and a solver verbosity > 10.
2020-05-06 16:56:30 +02:00
Markus Blatt
3f65235935
Merge pull request #2591 from atgeirr/fix-parameter-setup
Do not run setupParameter_() twice for the static-typed sims.
2020-05-05 17:27:44 +02:00
Atgeirr Flø Rasmussen
9357919201 Do not run setupParameter_() twice for the static-typed sims. 2020-05-05 16:19:10 +02:00
Atgeirr Flø Rasmussen
7dbbc0f2e5
Merge pull request #2588 from totto82/addMinMaxSupportGCONSALE
Implement min/max for GCONSALE
2020-05-05 15:46:36 +02:00
Tor Harald Sandve
85e95fb87d Implement min/max for GCONSALE
Only default action RATE is implemented for violation of maximum sales target
2020-05-05 14:24:17 +02:00
Atgeirr Flø Rasmussen
859db45e45
Merge pull request #2590 from totto82/fixSolventRein
Fix solvent reinjection when different reinjection group is given
2020-05-05 11:36:50 +02:00
Tor Harald Sandve
f33737afc4 Fix solvent reinjection when different reinjection group is given 2020-05-05 10:46:49 +02:00
Arne Morten Kvarving
fa5c4a8573
Merge pull request #2586 from atgeirr/fix-tag-for-init
Ensure that the typetag used for initialization is correct.
2020-05-04 11:12:44 +02:00
Atgeirr Flø Rasmussen
f0b1ee76b8 Ensure that the typetag used for initialization is correct.
Without this, properties set in the static variants of flow such as
flow_blackoil_dunecpr.cpp will be honored in the run. However, the
text for '--help' and the property printout in the .DBG file will not
reflect the true type tag, but the default.

This bug was added during the recent refactoring of all Flow variants
to use the same initialization and setup code.
2020-05-04 08:52:49 +02:00
Joakim Hove
da5042c538 Update connection <-> segment implementation 2020-04-30 14:53:35 +02:00
Joakim Hove
926e904e90 Instantiate std::optional<double> and std::optional<std::string> 2020-04-29 16:26:58 +02:00
Joakim Hove
ec647bcc16
Merge pull request #2574 from joakim-hove/serialize-optional
Add support for serializing std::optional
2020-04-29 10:48:43 +02:00
Markus Blatt
ca744231b1 Removes unused member istlSolver_ and method to get it from BlackoilModelEbos
It is not used since quite some time and tends to confuse me.
2020-04-28 16:46:17 +02:00
Joakim Hove
40d7cd4381 Add support for serializing std::optional 2020-04-28 16:25:17 +02:00
OPMUSER
163ce3b613 Update Missing Features with PERMFACT 2020-04-28 13:39:40 +02:00
Bård Skaflestad
9756edce50 Remove Unused 'currentControl' Variable 2020-04-27 21:29:10 +02:00
Atgeirr Flø Rasmussen
14bde098ce
Merge pull request #2570 from blattms/fix-prec-factory-dune-master
Complete future-proofing ILU usage in the preconditioner factory.
2020-04-27 16:37:27 +02:00
Atgeirr Flø Rasmussen
06e5e6b6ac
Merge pull request #2565 from totto82/avoidOscNupcol
use nupcol to avoid oscillation between group controls
2020-04-27 16:02:32 +02:00
Atgeirr Flø Rasmussen
6684cd7cb3
Merge pull request #2564 from totto82/fixGCONSALE
Fix GCONSALE
2020-04-27 15:59:29 +02:00
Markus Blatt
f03b56c261 Complete future-proofing ILU usage in the preconditioner factory.
SeqILU0/SeqILU0 are removed in master and one should use SeqILU
2020-04-27 15:52:43 +02:00
Joakim Hove
750070fbd7 Remove VISCREF from MissingFeatures 2020-04-27 10:30:50 +02:00
Tor Harald Sandve
33afb332fa use nupcol to avoid oscilation between group controls 2020-04-27 10:29:00 +02:00
OPMUSER
c62318387d Update Missing Features with HMMULTSG
HMMULTSG
2020-04-25 18:19:31 +02:00