Commit Graph

5928 Commits

Author SHA1 Message Date
Markus Blatt
89ec35e0d2 Make BlackoilWellModel::hasTHPConstraints() work correctly in parallel.
Previously, this method did not take parallelism into account but just
checked the local wells for the constraints. Depending on the load balancing
of the wells this sometimes led to different return values of the function on different
processors. As the output is used to limit the time step size, different processors
were sometimes using different time steps in their local computations. This screwed
up convergence checks int the nonlinear operator such that only some processor thought
convergence was already achieved while others wanted to do more iterations.

With this commit the method now returns whether there is any well on any processor
with the constraint being true.
2019-01-14 22:14:01 +01:00
Bård Skaflestad
767df6c6fe Deferred Logger: Support Older MPI Implementations
The MPI_Pack() function does not support pointers-to-const until
MPI-3.
2019-01-14 18:10:53 +01:00
Atgeirr Flø Rasmussen
8927df3095
Merge pull request #1705 from fgfuchs/feature_gatherdeferredlogger
gather deferredLogger implemented
2019-01-14 14:56:45 +01:00
Markus Blatt
4b6144bb65 Only warn and show parallel logging fallout on demand.
This commit adds an option that allows to enable detecting parallel
logging fallout (option --enable-logging-fallout-warning). It is now
false by default (previous behavior was as if the option was true).

If option is true a warning will be printed for any process with nonzero
rank that does try to log to *.PRT or *.DBG and the logged output will be appended
to these files at the end.
2019-01-14 13:06:21 +01:00
Markus Blatt
52270e7ac7 Use uppercase basename for *DBG and *PRT files for any extension.
Previously runs of flow started with 'flow base.' Would result in base..DBG
files; note the double dot and the case sensitivity. Now the file will be
BASE.DBG in this case. Note that any extension will be stipped (not only
.DATA as before).
2019-01-14 13:03:03 +01:00
Franz G. Fuchs
70425a681f style changes 2019-01-14 09:22:17 +01:00
Franz G. Fuchs
f61e55995a query mpi pack size 2019-01-11 21:23:09 +01:00
Franz G. Fuchs
828c3c7949 fix for variable number of messages 2019-01-11 19:05:11 +01:00
Joakim Hove
848072f658
Merge pull request #1362 from GitPaean/fixing_history_mode
Fixing history mode
2019-01-11 18:05:01 +01:00
Franz G. Fuchs
37d691e678 bugfixes 2019-01-11 15:47:22 +01:00
Franz G. Fuchs
5d902c8bd4 removed commented out line 2019-01-11 13:56:58 +01:00
Franz G. Fuchs
831a374d02 gather deferredLogger implemented 2019-01-11 13:53:18 +01:00
Tor Harald Sandve
2d2d0c4433 Adapt to linear solver api from ewoms 2019-01-10 15:50:09 +01:00
Atgeirr Flø Rasmussen
578923f93a
Merge pull request #1685 from GitPaean/sliencing_extra_
removing some white spaces.
2019-01-10 14:52:41 +01:00
Atgeirr Flø Rasmussen
601cce155c
Merge pull request #1693 from GitPaean/ignoring_well_no_perf
not adding wells without perforations to WellsManager
2019-01-10 14:47:20 +01:00
Kai Bao
affb767017
Merge pull request #1642 from WesselDeZeeuw/AquiferFetkovich
Aquifer fetkovich
2019-01-10 13:06:08 +01:00
Atgeirr Flø Rasmussen
9c799b9c97
Merge pull request #1698 from fgfuchs/new-feature-deferredlogger
New feature deferredlogger
2019-01-09 07:27:49 +01:00
Kai Bao
a9f40df678 not adding wells without perforations to WellsManager 2019-01-08 14:08:14 +01:00
Andreas Lauser
69e21eec0b
Merge pull request #1684 from andlaus/fix_tabulation_api
use the common API opm-material for functions
2019-01-08 13:34:58 +01:00
Franz G. Fuchs
040d576839 Use angle brackets for includes
verify that the tagged messages are forwarded correctly
2019-01-08 13:26:19 +01:00
Franz G. Fuchs
5b2a38fee5 doxygen comment 2019-01-08 11:41:19 +01:00
Franz G. Fuchs
c815c56287 new feature: DeferredLogger class 2019-01-08 11:28:18 +01:00
Kai Bao
47b933a58e removing DynamicListEconLimited
it is not used anymore. A lot of related implementation has been moved
to WellTestState.

Its existence makes some logic rather confusing and some new development
not easy.
2019-01-08 11:28:11 +01:00
Kai Bao
60e5a95972 only using Wells for determination of the RESV well
One of them is redundant, we do not need both of them.
2019-01-07 12:14:33 +01:00
Joakim Hove
8a9df385af Add ErrorGuard when parsing 2019-01-07 10:44:33 +01:00
Kai Bao
98450b5aa8 fixing the way in handling the RESV rates for WCONHIST 2019-01-04 15:10:18 +01:00
WesselDeZeeuw
1b5e65eedd fixing grid_index for AquiferFetkovich 2019-01-03 15:56:55 +01:00
Zeeuw
73445a3055 solves merging conflicts 2019-01-03 13:18:01 +01:00
WesselZ
d6f1f1bd3d Implementation of Fetkovich Aquifers. Makes changes to the files for BlackOilAquiferModel(_impl) and AquiferFetkovich file. 2019-01-03 13:04:10 +01:00
Kai Bao
bfc915849a BHP limit is taken care of from parser side
WellsManager does not need to provide default bhp limit anymore.
2019-01-03 09:48:02 +01:00
Kai Bao
ecdb299671 handling the RESV well distr calculation correctly
more work has been done in the parser side, and the simulator side is
also updated accoridingly.
2019-01-03 09:48:02 +01:00
Kai Bao
9a6f390f38
Merge pull request #1691 from atgeirr/fix-missing-grat
Fix missing GRAT in switch.
2019-01-02 21:22:41 +01:00
Atgeirr Flø Rasmussen
9ba0184da4
Merge pull request #1676 from GitPaean/fixing_grid_indices
fixing grid_index for AquiferCarterTracy
2019-01-02 15:32:28 +01:00
Atgeirr Flø Rasmussen
10c77257ad Fix missing GRAT in switch. 2019-01-02 15:29:22 +01:00
Kai Bao
b3f29de675 using compressed cell index for cellToConnectionIdx_ in AquiferCarterTracy 2019-01-02 14:59:12 +01:00
Kai Bao
dcf036e757 removing some white spaces. 2019-01-02 13:39:00 +01:00
Andreas Lauser
868f447f20 use the common API opm-material for functions
the way to get the result of an evaluation is by return value, i.e.,

 z = fn.eval(x, y);

not by passing a separate argument to the eval() function like

 fn.eval(x, y, z);

the `XYTabulated2DFunction` used the latter approach causing an API
inconsistency with all other tabulation classes in
opm-material. OPM/opm-material#319 fixes that but requires this mop-up
as a consequence.
2018-12-20 10:46:22 +01:00
Atgeirr Flø Rasmussen
483d6c50e1
Merge pull request #1681 from atgeirr/fix-shutting-new-well
Avoid opening well that was shut on same time step.
2018-12-17 11:47:31 +01:00
Atgeirr Flø Rasmussen
a48fbac322
Merge pull request #1680 from GitPaean/flow_polymw_remake
adding the simulator for flow injectivity study
2018-12-17 10:26:41 +01:00
Kai Bao
3a55e4aac2 fixing grid_index for AquiferCarterTracy
adding the mapping from cartisian indices to the actual grid indices.
2018-12-14 15:36:49 +01:00
Kai Bao
0c42a179d5 makig StandardWellV can handle producer
now StandardWellV should be able to be used as the general Standard
Well.
2018-12-14 10:24:08 +01:00
Atgeirr Flø Rasmussen
b1c16e536b Avoid opening well that was shut on same time step. 2018-12-14 10:04:59 +01:00
Kai Bao
76edcc0d91 addressing the second part of comments form PR#1680 2018-12-13 21:31:36 +01:00
Kai Bao
c4254240e2 addressing the first part of comments form PR#1680
there should be no functional change.
2018-12-13 13:29:59 +01:00
Kai Bao
5535406b67 cleaning StandardWell and StandardWellV
to make them more comparable, so that we can do refactoring easier
later.
2018-12-12 15:58:15 +01:00
Kai Bao
525caad508 finishing the function addWellContributions for StandardWellV 2018-12-11 21:40:47 +01:00
Kai Bao
612ac74b89 finish the injecivity functionality
the result looks okay
2018-12-11 21:40:47 +01:00
Kai Bao
391d31e1d6 adding the polymer molecular related to the well model 2018-12-11 21:40:47 +01:00
Kai Bao
7923628f83 adding the few injectivity related functions to StandardWellV 2018-12-11 21:40:47 +01:00
Kai Bao
a08216efd5 creating StandardWellV as the new well model
to employ dynamic-size Evalution, vectors and matrices.
2018-12-11 21:40:47 +01:00
Kai Bao
b079c0a1e5 adding flow_injecitivity executable target 2018-12-11 21:40:47 +01:00
Kai Bao
e1ede3c9d5 adding polymer molecular weight to BlackoilPhases and phaseUsageFromDeck 2018-12-11 21:31:47 +01:00
Kai Bao
93fb5a2c52 add a few fields related to injectivity to WellStateFullyImplicitBlackoil
to account for the water throughput, skin pressure and water velocity
for each perforation.
2018-12-11 21:31:47 +01:00
Atgeirr Flø Rasmussen
56cc37f255 Move throw-if-nan to after storing convergence report. 2018-12-11 13:10:22 +01:00
Tor Harald Sandve
3d866812a6
Merge pull request #1671 from atgeirr/fix-infinite-loop
Fix potential infinite loop
2018-12-07 12:41:37 +01:00
Atgeirr Flø Rasmussen
69cd2f9b84
Merge pull request #1668 from totto82/remove_logging
Remove repetitive logging info
2018-12-07 10:53:31 +01:00
Atgeirr Flø Rasmussen
cb06770b54
Merge pull request #1638 from trinemykk/addtracer
add method for getting the surfacevolume well connection rate
2018-12-07 10:38:21 +01:00
Atgeirr Flø Rasmussen
cf687c19fb
Merge pull request #1571 from kel85uk/fix_#14_aquifer_making_connections
Fixes for carter tracy aquifer model
2018-12-07 09:56:36 +01:00
Tor Harald Sandve
77869606f3 Remove repetitive logging info 2018-12-07 09:28:27 +01:00
Atgeirr Flø Rasmussen
23edd39c63 Revise logic of shutting wells vs. chopping step.
An infinite loop was possible if no wells were actually shut,
yet the step was restarted with no chopping.
2018-12-03 13:25:19 +01:00
Atgeirr Flø Rasmussen
6b896d178e Add bool return value to forceShutWellByNameIfPredictionMode().
Returns true if the well requested was actually shut.
2018-12-03 13:24:34 +01:00
kel85uk
4ccbfefe0b Factor out face area calculation to a separate function. 2018-11-29 09:43:55 +01:00
kel85uk
875fec79fc Makes the necessary interface changes to check for nullptr instead of values for the influx_coeff and aquifer initial pressure. 2018-11-29 07:56:53 +01:00
Kai Bao
575907941d removing some repeated code in phaseUsageFromDeck 2018-11-27 14:55:26 +01:00
Arne Morten Kvarving
51da91c1ad remove files moved to opm-simulators-legacy 2018-11-27 11:00:21 +01:00
Atgeirr Flø Rasmussen
b6f8128260
Merge pull request #1661 from akva2/removeBlackoilStateCorr
Remove usage of BlackoilState class
2018-11-27 10:14:06 +01:00
Tor Harald Sandve
b661791a63 Remove usage of BlackoilState class
This allows (re)moving of the following files
opm/autodiff/RateConverter.hpp
opm/autodiff/Compat.cpp
opm/autodiff/Compat.hpp
opm/core/props/BlackoilPropertiesInterface.hpp
opm/core/simulator/BlackoilState.cpp
opm/core/simulator/BlackoilState.hpp
opm/core/simulator/BlackoilStateToFluidState.hpp
opm/core/utility/initHydroCarbonState.hpp
opm/polymer/PolymerBlackoilState.cpp
opm/polymer/PolymerBlackoilState.hpp
tests/test_blackoilstate.cpp
2018-11-27 09:38:38 +01:00
Atgeirr Flø Rasmussen
7e91381cd8 Fix another parallel bug.
A WellSwitchingLogger was created in a local context (meaning not
all processes might be there), but since its destructor does
communication it must be called in a global context (guaranteeing
that all processes create it).
2018-11-26 10:21:25 +01:00
Atgeirr Flø Rasmussen
09405ce6f5 Fix bug in parallel case.
Since computeAverageFormationFactor() involves communication to reduce
values across the whole reservoir, it must be called by all processes,
also those with no wells to reopen.
2018-11-26 09:39:54 +01:00
Kai Bao
76271e3960 not shut a well because of cannot-produce-inject reason
which is a numerical reason. Removing it for now for better result.

It minght come back with more complete strategy and understanding.
2018-11-25 20:31:56 +01:00
Kai Bao
3dac7266b0 typo correction and message output adjustment for WTEST
recovering the const for updateWellStateWithTarget

there is no functional change.
2018-11-25 20:31:56 +01:00
Kai Bao
680c45b8f8 not updateWellControl for non-operable wells 2018-11-25 20:31:56 +01:00
Kai Bao
eaa3ad19f5 first version of the well testing for physical reason
the key difficulty is that we do not have reliable explicit information
to do the testing.

In this version, we try to obtain the explicit information by finishing
one converged solving.
2018-11-25 20:31:56 +01:00
Atgeirr Flø Rasmussen
48db4062b5 Count lower/upper entries simpler and faster. 2018-11-23 21:38:22 +01:00
Atgeirr Flø Rasmussen
8a038401ce Avoid in-loop allocation in convertToCRS().
This is done by counting entries first.
2018-11-23 21:38:22 +01:00
Atgeirr Flø Rasmussen
8bd3cbc1c1 Only shut down wells if under prediction-type control. 2018-11-23 12:51:13 +01:00
Atgeirr Flø Rasmussen
1979fc8f5d Avoid deep chopping by shutting down misbehaving wells. 2018-11-22 16:24:52 +01:00
Atgeirr Flø Rasmussen
422d477945 Add method BlackoilWellModel::forceShutWellByName(). 2018-11-22 16:24:17 +01:00
Atgeirr Flø Rasmussen
3bbc13a9ce Add step numbers to convergence reports, add query method. 2018-11-22 11:14:39 +01:00
Atgeirr Flø Rasmussen
9167d08839 Limit timestep when we have THP constraints present.
Using 16 days as the current limit. Could be made a user parameter.
2018-11-22 11:03:18 +01:00
Kai Bao
7d721408f2 adding canProduceInjectWithCurrentBhp to StandardWell
and use it the operability_status determination.
2018-11-22 07:05:46 +01:00
Kai Bao
f9988057af fixing comments from review of PR#1648
there should be no functional change
2018-11-20 13:56:14 +01:00
Kai Bao
8330c3a6a7 adjusting OperabilityStatus of WellInterface
hopefully, it improves the readability
2018-11-20 13:56:14 +01:00
Kai Bao
bf9b5367d9 some cleaning up, no functional changes 2018-11-20 13:56:14 +01:00
Kai Bao
90f805bf3e we need to open the cross-flow to solve the sigularity
if a well is banned from cross-flow. When it is under RATE control, its
BHP might be initialized in way causing all the drawdown in the wrong
direction. It will cause singular well equations.

here, we open the croff-flow to fix the singularity and rely on Newton
iteraton to get desired result.

possible alternative approach is to adust the BHP to avoid the situation
that all the drawdown are in the wrong direction.
2018-11-20 13:56:14 +01:00
Kai Bao
bba373c0b5 THP control tolerance changed to 1.e4
to fix some convergence problem.
2018-11-20 13:55:34 +01:00
Kai Bao
c994a99583 WCON keyword can open a well closed due to physical reason
more tests will be required to figure out more accurate specific way to
open a well closed due to physcal reason with WCON input.
2018-11-20 13:55:34 +01:00
Kai Bao
30742112c6 switching to BHP limit when THP limit is not operable
a well is specified with THP target, while it can not work under its THP
target. For this case, we will switch to its BHP limit.
2018-11-20 13:55:34 +01:00
Kai Bao
8e17d4aeba shut/close well based on physical limits 2018-11-20 13:55:34 +01:00
Kai Bao
ea42d1de9d adding function isOperable() to WellInterface
to indicate if the well is operable.
2018-11-20 13:55:34 +01:00
Kai Bao
ae3b514e0b not switching to THP/BHP limit when not operable under them 2018-11-20 13:54:45 +01:00
Kai Bao
5204bbe4ca adding function checkWellOperatability() to StandardWell
it includes BHPLimit check, THPlimit check, and also to see whether if
the well can produce/inject in the correct direction.
2018-11-20 13:54:45 +01:00
Kai Bao
dbe047a8a5 adding function operabilityCheckingUnderTHP to VFPProdProperties
To test the operability under THP limit.
2018-11-20 13:54:21 +01:00
Kai Bao
b27dc3ec2e stopping use function crossflowAllowed()
it turns on the crossflow when all the drawdown in the wrong direction,
then the well get rates in the wrong direction.

flow is not ready to handle this type of situation, then the only result
will be chopped time step.
2018-11-20 13:54:21 +01:00
Kai Bao
2e43b440e0 adding OperabilityStatus to WellInterface
to check the operability status of a well.
2018-11-20 13:54:21 +01:00
Trine S Mykkeltvedt
9fa2c09783 add method for getting the surfacevolume well connection rate
changed wellpointer from unique to shared to make it accecible from outside the wellmodel
add method for surfacevolume well connection rate
2018-11-20 08:59:50 +01:00
Atgeirr Flø Rasmussen
83ce1eb919 Ensure all residuals are checked for convergence.
Looping over all components instead of phases, to handle polymer etc.
correctly. Also slight refactoring of how component names for output
are handled.
2018-11-19 14:46:31 +01:00
Atgeirr Flø Rasmussen
b42165b560 Store convergence reports from all steps and iterations. 2018-11-19 11:48:07 +01:00
Atgeirr Flø Rasmussen
fe79a9fc07 Refactor getConvergence() to use ConvergenceReport.
Note: the communication and reduction for computing reservoir
convergence is not done by gathering ConvergenceReports, but
as before, using the convergenceReduction() method.
2018-11-19 11:48:07 +01:00
Atgeirr Flø Rasmussen
c006ea23f2
Merge pull request #1651 from totto82/speed_up_add_cell_rates
Speed up add cell rates
2018-11-19 10:49:19 +01:00