Commit Graph

679 Commits

Author SHA1 Message Date
Markus Blatt
0e22cc1552
Merge pull request #5746 from lisajulia/feature/ms-wells-solving
Feature/ms wells - part 2: Solving, straightforward option
2024-12-06 09:16:20 +01:00
Tor Harald Sandve
128e80ec7a Maximum allowed oscillation for groups part 2
Set a parameter for maximum allowed oscillation of group controls
The parameter is only used for iter > nupcol
2024-12-04 09:17:46 +01:00
Tor Harald Sandve
933d2949be Also check group constrains for iter > nupcol 2024-12-03 09:21:38 +01:00
Tor Harald Sandve
73a28a7abb Maximum allowed oscillation for groups part 1 2024-12-03 09:21:38 +01:00
Atgeirr Flø Rasmussen
b6f23f6fe5
Merge pull request #5773 from akva2/fix_msw_deadlock
fixed: well model could deadlock
2024-12-02 10:36:07 +01:00
Tor Harald Sandve
42e17219b6
Merge pull request #5724 from totto82/changeNUPCOL
Changes in how the simulator handles NUPCOL
2024-12-02 10:29:09 +01:00
Arne Morten Kvarving
67765a3f08 fixed: well model could deadlock
if umfpack encounters a singular matrix on any process,
the exception propagated up across communication boundaries
leading to deadlock as the other processes tried to do global
reductions
2024-11-29 14:17:43 +01:00
Tor Harald Sandve
8479655deb Set 20 as number of sub-iterations for the network 2024-11-27 14:21:05 +01:00
Tor Harald Sandve
93206349c8 Add sub iterations for balancing the network 2024-11-27 14:21:05 +01:00
Tor Harald Sandve
b4fe429b35
Merge pull request #5748 from steink/Only-update-targets-for-relevant-controls
Only update target of group-controlled wells during updateAndCommunicate
2024-11-25 15:30:32 +01:00
Lisa Julia Nebel
6bdb80126f Add parameter enableDistributedWells to the well state an when set to true, do not throw when initalizing distributed multi-segment wells in WellState.cpp 2024-11-22 15:16:00 +01:00
Svenn Tveit
48f9e90248 Use gas lift optimization to get ALQ for well test 2024-11-22 10:30:32 +01:00
Tor Harald Sandve
71614ea5b0 Add parameter --nupcol_group_rate_tolerance to be able to set the relative tolerance. Default is 0.001 2024-11-20 17:46:31 +01:00
Tor Harald Sandve
7639450ce1 Update VREP even for iter > nupcol if VREP changes significant 2024-11-20 17:46:31 +01:00
Stein Krogstad
9b54245d9a Only update target of group-controlled wells during updateAndCommunicate 2024-11-19 12:57:42 +01:00
Razvan Nane
baf94f76d2 Rename bda to gpu for classes 2024-11-04 12:31:34 +01:00
jakobtorben
60bd3f5514 Remove unused num_cells argument from well equations 2024-10-10 20:26:13 +02:00
Atgeirr Flø Rasmussen
a7efc0091d
Merge pull request #5341 from jakobtorben/NLDD_remove_need_for_addWellContrib
Remove the need for add well contributions to matrix for NLDD
2024-10-10 16:23:52 +02:00
jakobtorben
e790972201 PR review changes 2024-10-10 15:51:53 +02:00
jakobtorben
22af0bd2ae Pre-calculate local perforated cell indexes in subdomains 2024-10-10 15:12:48 +02:00
jakobtorben
61d61541d6 Remove reallocatin of temporary local variables 2024-10-10 15:12:48 +02:00
jakobtorben
3ea5c5820e Add well operator for NLDD domains 2024-10-10 15:12:48 +02:00
jakobtorben
e53a3fd3f4 Remove unused well apply 2024-10-08 19:36:34 +02:00
jakobtorben
08bbbbf9fb Map well solution recovery vector to perforated well cells 2024-10-08 11:34:12 +02:00
Vegard Kippe
e19063d957 Fix 'off-by-a-step' error in filter cake cleaning + refactor slightly 2024-10-07 19:35:10 +02:00
jakobtorben
58a8d5ee41 Map global index to local subdomain index in well operator 2024-10-07 09:13:00 +02:00
jakobtorben
60ece76adf Make well equations use only perforated cells 2024-10-07 09:12:59 +02:00
Atgeirr Flø Rasmussen
9c74c4d638
Merge pull request #5305 from hnil/shut_inj_temp
fixing some of output
2024-09-17 14:33:29 +02:00
hnil
c000678c0b fixe merge error 2024-09-16 10:44:46 +02:00
hnil
1f78064b75 fixed errors in merging 2024-09-16 10:41:51 +02:00
hnil
eb1b2c6711 fixing some of output 2024-08-30 09:46:23 +02:00
Arne Morten Kvarving
b5bd290887 BlackoilModel: use appropriate Scalar type 2024-08-23 11:15:03 +02:00
Bård Skaflestad
fa199461b5 Varnish Parts of Well Implementation
In particular

  * Split some long lines
  * Reverse conditions to reduce nesting
  * Mark potentially unused arguments as [[maybe_unused]]
  * Try to remove redundant calculations
  * Mark some objets 'const' where possible
2024-08-22 14:51:00 +02:00
Arne Morten Kvarving
3716ee664d move BlackoilModel parameters to TypeTag-free parameter system 2024-08-16 13:20:04 +02:00
Arne Morten Kvarving
aab40a32e2 move EnableTerminalOutput parameter to TypeTag-free parameter system 2024-08-16 13:17:56 +02:00
Vegard Kippe
0320a14eed Avoid expensive schedule.getWells() call and also update BlackoilWellModel_impl.hpp to use new signature of updateWellsDefaultALQ 2024-08-15 21:04:04 +02:00
Lisa Julia Nebel
87a46d7b01 Fix NLDD solver for parallel runs with the COMPDAT keyword inside an ACTIONX 2024-08-14 08:31:37 +02:00
Bård Skaflestad
ad595fed5e
Merge pull request #5506 from akva2/move_params_to_parameters
Move parameters to Opm::Parameters namespace
2024-08-09 09:16:10 +02:00
Lisa Julia Nebel
9a97a8d658 Make test on one process pass by taking the possible future connections into account when creating the sparsity pattern of the jacobian and when creating the partitions for the solver 2024-08-06 16:07:01 +02:00
Arne Morten Kvarving
a65ddff8f6 changed: BlackoilModel parameters moved to Opm::Parameters namespace 2024-08-06 09:50:02 +02:00
Arne Morten Kvarving
d75b91aaba changed: SimulatorFullyImplicitBlackoil parameters moved to Opm::Parameters namespace 2024-08-06 09:50:02 +02:00
Tor Harald Sandve
5f8916c0c3 Use cell temperature in perforated cell to compute reservoir rates 2024-08-01 11:14:29 +02:00
Kai Bao
706fa281a1
Merge pull request #4935 from plgbrts/auto-choke
WIP: Enabling automatic choke to model a sub-sea manifold in an extended network
2024-07-03 21:29:50 +02:00
Paul
f9d82c6042 adressing several reviewers comments 2024-07-03 16:55:00 +02:00
Paul
6e76602e8f changed assessing safe THP range 2024-07-03 16:54:24 +02:00
Paul
393c70a83e clean up and improvements according reviewer comments 2024-07-03 16:54:05 +02:00
Paul
1ddf675cfd moved common thp calculation to updateWellControls 2024-07-03 16:53:51 +02:00
Paul
6ddf5dd01b allow individual well constraints 2024-07-03 16:53:29 +02:00
Paul
36dcf233c5 simplyfying code as some logic is moved to the parser 2024-07-03 16:52:11 +02:00
Paul
b2258dcf90 autochoke producers control mode set to THP 2024-07-02 12:13:56 +02:00
Paul
30e1f5178c Automatic choke 2024-07-02 12:13:52 +02:00
Kai Bao
ce05406483 make sure a well exists in the process
before closing it due to group action
2024-07-01 22:00:39 +02:00
Bård Skaflestad
26cd7ab993 Move opm/core/props to opm/simulators/utils
The opm/core directory is no longer meaningful, and it contains only
components which might collectively be described as simulator
utilities.
2024-06-25 12:22:09 +02:00
Kai Bao
6ac7f8fdaf not applying WECON RATE limit
when the well is under zero group target.
2024-06-24 14:42:10 +02:00
Arne Morten Kvarving
bcbac79486
Merge pull request #5380 from akva2/linalg_template_scalar
LinAlg classes: template Scalar type
2024-05-31 08:40:11 +02:00
Kai Bao
e968da28bb renaming calcRates to calcResvCoeff
and calcInjRates to calcInjResvCoeff.
2024-05-29 22:29:12 +02:00
Arne Morten Kvarving
ff39bc3b03 WellContribution: template Scalar type 2024-05-24 14:09:11 +02:00
Stein Krogstad
427351cc12 Include checking for zero targets from groups where required 2024-05-23 14:55:37 +02:00
Arne Morten Kvarving
e9050359db BlackoilWellModel: use appropriate Scalar type 2024-05-23 08:52:59 +02:00
Arne Morten Kvarving
27d99f78ec ParallelWBPCalculation: template Scalar type 2024-05-22 10:51:12 +02:00
Arne Morten Kvarving
0481c7c0b2 adjust to PAvgCalculator templating 2024-05-22 10:51:07 +02:00
Arne Morten Kvarving
59e6d4db08 adjust to PAvgDynamicSourceData templating 2024-05-22 10:51:07 +02:00
Arne Morten Kvarving
3747981347 VFPProperties: template Scalar type 2024-05-21 17:01:30 +02:00
Atgeirr Flø Rasmussen
226410cd44
Merge pull request #5303 from akva2/gaslift_template_scalar
GasLift: template Scalar type
2024-05-14 09:59:42 +02:00
Arne Morten Kvarving
3024fba293 fixed: properly avoid inclusion of BDA types if BDA is disabled 2024-05-02 11:37:03 +02:00
Arne Morten Kvarving
772b00bc19 GasLiftGroupInfo: template Scalar type 2024-04-24 15:31:13 +02:00
Arne Morten Kvarving
f5d6b69703 BlackoilWellModel: use Scalar type 2024-04-23 11:33:33 +02:00
Arne Morten Kvarving
f0e7f8842b BlackoilWellModelGeneric: template Scalar type 2024-04-23 11:33:33 +02:00
Arne Morten Kvarving
3d381bac91 BlackoilWellModelGuideRates: template Scalar type 2024-04-22 15:39:51 +02:00
Arne Morten Kvarving
77f9692277 BlackoilWellModelConstraints: template Scalar type 2024-04-22 15:39:51 +02:00
Atgeirr Flø Rasmussen
edf4be5f79
Merge pull request #5227 from akva2/improve_ide_experience
Improve IDE experience
2024-04-22 15:31:08 +02:00
Arne Morten Kvarving
aa03d06c4d WellGroupHelpers: template Scalar type 2024-04-19 11:28:40 +02:00
Arne Morten Kvarving
be57843296 WellState: template Scalar type 2024-04-17 11:12:40 +02:00
Bård Skaflestad
b1be391d4c
Merge pull request #5172 from totto82/gconprod7
Implement WELL as group limit action
2024-04-11 17:36:55 +02:00
Arne Morten Kvarving
0161d69660 adjust to removal of EWOMS_GET_PARAM 2024-04-05 14:02:28 +02:00
Tor Harald Sandve
2210b523e4 Close worst-offending well based on ratio between violated and preferred phase 2024-04-03 09:16:39 +02:00
Tor Harald Sandve
920ad68782 Implement WELL as group limit action
And remove G as unsupported option in WTEST
2024-04-03 08:51:09 +02:00
Arne Morten Kvarving
cecedc1042 fixed: rate converter must be initialized early if WELLPI is enabled 2024-04-02 16:42:40 +02:00
Arne Morten Kvarving
ae60f0b640 BlackoilWellModel: header cleanup
add necessary headers, remove unused
2024-04-02 14:20:50 +02:00
Arne Morten Kvarving
3475da7d8c Rename ebos_simulator members/parameters to simulator 2024-03-06 10:53:00 +01:00
Arne Morten Kvarving
90aadd4c94 BlackoilWellModel: improve IDE experience 2024-02-27 10:43:03 +01:00
Arne Morten Kvarving
c0a50597a1 BlackoilWellModel::computePotentials: improve exception message
- add which well the exception added for
- concatenate message for all exceptions to show all, not just last exception
2024-02-07 14:12:54 +01:00
Kai Bao
e5e9143a2a shutting wells zero rate constraint and not allowing crossflow 2024-02-01 23:09:53 +01:00
Vegard Kippe
31b46b4829 Revert the choice to open history wells at every step, since this may cause some models to be stuck at very short time steps. 2024-01-26 12:05:26 +01:00
Atgeirr Flø Rasmussen
3c4dd1f3b7 Avoid illegal combination of options.
NLDD requires --matrix-add-well-contributions=true for now.

Also: minor improvement to well rank and subdomain output clutter.
2024-01-24 14:19:07 +01:00
Bård Skaflestad
24ebb77257
Merge pull request #5116 from atgeirr/parallel-well-domain-output
Parallel well domain and error logging for NLDD
2024-01-23 15:41:11 +01:00
Arne Morten Kvarving
98c704c1c3 changed: move ebos/eclmpiserializer.hh to opm/simulators/utils/MPISerializer.hpp
it does not use the typetag system
2024-01-23 10:51:32 +01:00
Atgeirr Flø Rasmussen
1842df7cfd Output well subdomain info properly in the parallel case. 2024-01-19 16:15:53 +01:00
Atgeirr Flø Rasmussen
6eb670b5c7 Improve parallel logging in NLDD solver. 2024-01-15 09:08:52 +01:00
Markus Blatt
50e1d09a8c Add semicolon to help with indentation. 2023-12-07 16:41:16 +01:00
Markus Blatt
260dac77a5 [MPI] Handle exception during assembleWellEqWithoutIteration correctly
For this particular model WetGasPVT::saturationPressure did throw
because convergence in the newton solver is not reached in 20
iterations. Unfortunately, the exception was only seen on one MPI rank
and the others continued.

With this commit we communicate the problem and throw on all MPI
processes. Time step will be cut as a result.
2023-12-07 15:41:35 +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
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
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
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
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