Atgeirr Flø Rasmussen
c5a80e97a2
Merge pull request #1138 from andlaus/refactor_well_permeability
...
do not explicitly pass the permeability to the well model anymore
2017-01-27 13:15:50 +01:00
Andreas Lauser
c5a0ea7524
do not explicitly pass the permeability to the well model anymore
...
this information is already part of the EclipseState. The reason why
this should IMO be avoided is that this enforces an implementation
(ordering of the permeability matrices) the simulator on the well
model. If this needs to be done for performance reasons, IMO it would
be smarter to pass an array of matrices, instead of passing a raw
array of doubles. I doubt that this is necessary, though: completing
the full Norne deck takes about 0.25 seconds longer on my machine,
that's substantially less than 0.1% of the total runtime.
in order to avoid code duplication, the permeability extraction
function of the RockFromDeck class is now made a public static
function and used as an implementation detail of the WellsManager.
finally, the permfield_valid_ attribute is removed from the
RockFromDeck class because this data was unused and not accessible via
the class' public API.
2017-01-27 12:51:12 +01:00
Kai Bao
78bf488a2a
set the VREP control as current control when applying VREP control
...
for the first time
Not sure it is always the better things to do here, while it can help
the consistence of the two current controls in the well_controls and
well_state.
2017-01-25 14:11:37 +01:00
Kai Bao
cb84571540
considering effieciency factor when calculating production rate.
2017-01-16 16:13:44 +01:00
Kai Bao
9fe6d80f99
adding groupTargetConverged() to WellCollection
2017-01-16 15:55:35 +01:00
Kai Bao
3a06a2dd50
adding groupProdTargetConverged() to WellsGroup
...
When the group is producing its target, we consider it is converged.
When the group is not producing its target, while the group can not
produce more based on its own limits, we also consider it is converged.
When the group is not producing its target, while the group can
potentially produce more, we consider it is not converged.
2017-01-16 14:19:52 +01:00
Kai Bao
8f658a92f2
adding canProdueMore() function to wellsGroup
...
to indicate whether the group can produce more to match the group target
when they are not producing enough compared with the group target.
2017-01-16 11:25:23 +01:00
Kai Bao
713c833b0a
updating the group control limit for individual control wells
...
to provide a better standard for the wells under individual control to
return to group control. For example, some wells get really big group
control limit and switch to individual control, it is very difficult for
them to return to group control with that kind of unreasonable fixed
group limit.
2017-01-12 15:44:44 +01:00
Atgeirr Flø Rasmussen
7830083e9b
Merge pull request #1133 from blattms/parallel-accumulate
...
Added an accumulate method that allows to switch off non-owner entries.
2017-01-11 15:16:48 +01:00
Markus Blatt
ac6965de2e
Added an accumulate method that allows to switch off overlap entries.
...
It does using a mask vector with entries 0 or 1. If that is not provided
it falls back to std::accumulate.
2017-01-11 12:18:39 +01:00
Atgeirr Flø Rasmussen
00dad30432
Throw if solvent phase injected.
2017-01-09 16:33:03 +01:00
Atgeirr Flø Rasmussen
7ef8971be4
Merge pull request #1120 from jokva/density-from-eclipsestate
...
Use Density from EclipseState
2017-01-09 10:38:30 +01:00
Atgeirr Flø Rasmussen
8daa0f440c
Merge pull request #1125 from jokva/reduce-deck-use-relperm-diagnostics
...
Don't rely on Deck for checkTable and checkPhase
2017-01-09 09:35:25 +01:00
Atgeirr Flø Rasmussen
e2023ed38e
Merge pull request #1124 from jokva/read-rock-from-eclipsestate
...
Read ROCK from EclipseState, not Deck
2017-01-09 09:33:47 +01:00
Atgeirr Flø Rasmussen
898ca1b7e0
Merge pull request #1131 from atgeirr/increase-iters-for-equil
...
Increase max iterations for capillary curve inversion.
2017-01-09 09:31:14 +01:00
Atgeirr Flø Rasmussen
be26c072e1
Increase max iterations for capillary curve inversion.
...
Triggered by a new two-phase case.
2017-01-06 15:24:08 +01:00
Tor Harald Sandve
5ac89ad8a7
Make it optinal to apply SWATINIT
...
The reasoning behind this to make it possible to initialize the case
without SWATINIT in order to compute the same defaulted THPRES values as
Ecl. The initialization needs to be re-computed to account for SWATINIT
in the simulations.
2017-01-02 15:10:09 +01:00
Atgeirr Flø Rasmussen
fdd81eacaa
Remove unused Deck function argument.
2017-01-02 09:47:57 +01:00
Atgeirr Flø Rasmussen
2e49273da7
Fix order of initialization.
2016-12-29 13:55:42 +01:00
Jørgen Kvalsvik
bca5c8e8de
Don't rely on Deck for checkTable and checkPhase
...
Prefer using EclipseState over Deck.
2016-12-20 14:08:58 +01:00
Jørgen Kvalsvik
ad4033b9dc
Read ROCK from EclipseState, not Deck
2016-12-20 12:24:27 +01:00
jokva
ec060d513b
Merge pull request #1123 from jokva/read-pressure-swat-sgas-from-es
...
Read RS,RV,PRESSURE,SWAT,SGAS from EclipseState
2016-12-20 10:01:13 +01:00
Jørgen Kvalsvik
8cc624fd0d
Read RS,RV,PRESSURE,SWAT,SGAS from EclipseState
...
Prefer reading these values from EclipseState rather than the Deck type.
2016-12-19 14:26:27 +01:00
Tor Harald Sandve
2a3a825895
Store whether timestep failed or not
...
Used in flow ebos to tell the simulator to recalculate the cached
quantities for failed timesteps.
2016-12-19 10:52:59 +01:00
Jørgen Kvalsvik
59cc0a1635
Use Density from EclipseState
2016-12-15 16:06:46 +01:00
Jørgen Kvalsvik
f0b4c4f390
Read PVTW from EclipseState
...
Read the PVTW table entries from EclipseState rather than manually
through the Deck object.
2016-12-06 14:53:41 +01:00
Andreas Lauser
b5b3507cb0
AdaptiveTimeStepping: fix stupid (but harmless) mistake in the sub-step info message
...
that was a copy-and-pasto: newton iterations = linearizations - 1
2016-12-03 15:04:32 +01:00
Andreas Lauser
ce02a4bb92
clean up and extend the SimulationReport class
...
it now also accounts for assembly, linear solve, update and output
write time and indicates if an operation has converged.
2016-11-30 11:27:49 +01:00
Atgeirr Flø Rasmussen
8d129d7172
Merge pull request #1113 from atgeirr/remove-grid-stuff
...
Move grid things to opm-grid.
2016-11-29 21:04:14 +01:00
Atgeirr Flø Rasmussen
c7cc24385a
Remove files moved to opm-grid.
2016-11-29 13:25:22 +01:00
Atgeirr Flø Rasmussen
602f3252e6
Merge pull request #1103 from GitPaean/fixing_warning
...
warning fixed related to petsc
2016-11-23 12:37:31 +01:00
Jørgen Kvalsvik
cadb14c9e8
Ask for reference depth at timestep.
2016-11-22 14:22:09 +01:00
Atgeirr Flø Rasmussen
1e462f4c04
Merge pull request #1107 from GitPaean/fixing_findWellNode
...
Adding a flag to WellCollection whether group control active
2016-11-17 23:27:06 +01:00
Kai Bao
4427c85d77
a flag to WellCollection whether group control active
2016-11-17 16:26:19 +01:00
Bård Skaflestad
1429046029
Merge pull request #1105 from andlaus/fix_valgrind_errors
...
fix some valgrind errors in the init code
2016-11-16 19:08:48 +01:00
Andreas Lauser
1d98c3b8ca
fix some valgrind errors in the EQUIL code
...
this fixes some valgrind errors while doing the twophase capability
for flow_ebos: In all previously tested cases, these errors were
probably non-fatal because the memory illegally accessed here is
likely to be allocated (but after this function was finished it
contained garbage).
note that I'm not completely sure if this patch is semantically
correct, so I'd appreciate some input who understands it. (what is
"z"?)
2016-11-16 17:20:24 +01:00
Kai Bao
fda1016532
warning fixed related to petsc
2016-11-16 15:35:35 +01:00
Kai Bao
6e4f9e708e
rewriting the findWellNode function
...
with assuming we should always find the well in the well collection.
2016-11-16 14:27:15 +01:00
Joakim Hove
df920e4970
Merge pull request #1101 from jokva/changes-in-grouptree
...
GroupTree interface changed upstream
2016-11-16 13:26:58 +01:00
Kai Bao
c3b00dc7fd
fixing the comments.
...
No change in the functions and results.
2016-11-16 11:40:10 +01:00
Kai Bao
708bfd169b
addressing a few comments.
2016-11-16 09:51:06 +01:00
Kai Bao
bf2f9b3f06
adding target_updated_ flag to WellNode
...
to save some repeated efforts when updating Well Targets.
2016-11-16 09:43:28 +01:00
Kai Bao
55eec0b2ed
checking whehter need to update before updateWellTargets.
2016-11-15 13:56:49 +01:00
Kai Bao
f9f5bacee4
cleaning up more unused flag from WellsGroup
2016-11-11 11:29:12 +01:00
Kai Bao
91b8c872eb
removing a few not-used function with the new strategy.
2016-11-10 17:50:30 +01:00
Kai Bao
95997e208c
different strategy is using when updating the well targets
...
When the group has wells both under individual control and group
control, since the well rates under individual control changes each
iteration, the well targets for this kind of group need to be updated
each iteration.
When we change to use implicit well potentials later, which is supposed
to be more accurate, we probably should always (unless we decided not to)
update the well targets each iteration.
2016-11-10 17:22:25 +01:00
Kai Bao
085785bf26
adding function findWellNode() to WellCollection
...
to return the WellNode* instead of WellGroupInterface*
2016-11-10 16:28:40 +01:00
Kai Bao
b319e1a75d
cleaning up and adding more comments for better understanding.
...
No functional change.
2016-11-10 16:28:40 +01:00
Kai Bao
3e8b1bdb82
applying the efficiency factor to VREP control.
2016-11-10 16:28:40 +01:00
Kai Bao
76a2108ea9
adding VREP injection support.
...
not handling multiple injection wells for moment.
2016-11-10 16:28:40 +01:00
Kai Bao
88181f4948
using variable only_group instead of hard-coded false.
...
when applying group production control.
2016-11-10 16:28:40 +01:00
Kai Bao
06d380df51
correcting the typo in efficiency
...
It was efficicency, which causes inconvenience when searching variables
or functions.
2016-11-10 16:28:40 +01:00
Kai Bao
2b289f8964
adding basic support for group injection control.
...
more testing will be required later.
2016-11-10 16:28:40 +01:00
Kai Bao
63e5755fa9
applying efficiency factor to the group control.
2016-11-10 16:28:40 +01:00
Kai Bao
a0e1fcf89d
function for accumulative efficiency factor for WellNode
...
This is the final efficiency factor that goes to the source/sink terms
in the material balance equations.
2016-11-10 16:28:40 +01:00
Kai Bao
013c907e66
adding efficiency factor to the WellsGroupInterface.
...
The one for the WellNode should be specified with WEFAC, which we are
not handling for the moment, so we just set it to be 1.0 for the moment.
2016-11-10 16:28:40 +01:00
Kai Bao
2e135388a6
refactoring function updateWellProductionTargets()
...
To handle different types of control mode.
2016-11-10 16:28:40 +01:00
Kai Bao
b8ac674f9b
When NONE is specified, no group control enforcement.
...
NONE is specified in GCONPROD or GCONINJE.
2016-11-10 16:28:40 +01:00
Kai Bao
65d61d1c4f
output cleanining up
2016-11-10 16:28:40 +01:00
Kai Bao
352c185edf
removing the use of cast between base class and derived class
...
between WellsGroupInterface and WellsGroup, WellNode.
2016-11-10 16:28:40 +01:00
Kai Bao
32e9b26ce8
revising updateWellTargets to remove the dependency of WellState
...
avoiding template using here. It is possible we will need WellState
eventually, while only using the well_rates for the moment.
2016-11-10 16:28:40 +01:00
Kai Bao
fec53a1af5
fixing the comilation problem from rebasing.
2016-11-10 16:28:40 +01:00
Kai Bao
e183ab6ccd
revising injectionGuideRate and productionGuideRate
...
for WellNode. It gives a better logic.
2016-11-10 16:28:40 +01:00
Kai Bao
7295f26f54
adding updateWellInjectionTargets updateWellProductionTargets
...
For WellsGroup. At least for the current moment, the updation of the
well targets for injectors and producers should be handled in a
seprate way.
2016-11-10 16:28:40 +01:00
Kai Bao
46a9a62741
functions for indicating injection and production upating.
...
it is for WellCollection, which is logically wrong. It should be done in
the group level, while things will be different for multi-level groups.
The current implementation basically works for current needs, that we
only have one group.
2016-11-10 16:28:40 +01:00
Kai Bao
6942a986da
adding isProducer() and isProjector() to wellNode class.
...
Did not see type() function there, while it should still be a okay idea.
2016-11-10 16:28:40 +01:00
Kai Bao
e28715b601
parameter forced to only_group from applyInjGroup applyProdGroup
...
forced and only_group basically mean two opposite things. Having both of
them in the same context will be really confusing and error-prone.
And also, we do not do anything forcedly. We do things base on what
setup tells us to do.
Only_group may not be the final name, while deinitely a better one than
forced.
2016-11-10 16:28:40 +01:00
Kai Bao
a438680fb0
putting more things in the prototyping test.
2016-11-10 16:28:40 +01:00
Kai Bao
0d5a86cc71
keeping adding group control related in.
2016-11-10 16:28:40 +01:00
Kai Bao
f628064884
keeping putting group controlling in.
2016-11-10 16:28:40 +01:00
Kai Bao
4214cfec83
adding a non-const wellCollection() in WellsManager.
...
For the WellModel from the simulator to use. Not decided totally,
well_collection might need to be updated during the simualtion due
to the update the target of wells.
2016-11-10 16:28:40 +01:00
Kai Bao
36bedfcf67
not returning zero from double WellNode::productionGuideRate
...
Current understanding. Two ways might prevent to return the guide_rate here
1. preventing the well from group control with keyword WGRUPCON
2. the well violating some limits and working under limits. We do not have strategy
to handle this situation yet.
2016-11-10 16:28:40 +01:00
Kai Bao
3bdf0eae11
Not return from the WellNode:applyInjGroupControl
...
unless we prevent the well from group control with keyword WGRUPCON.
2016-11-10 16:28:40 +01:00
Kai Bao
c5958da6c9
To make the injection well be able to receive the target.
...
Very hacky way here. The logic of the code is that only
a well is specified under GRUP control, it is under group
control. Which is not the case observed from the result.
From the result, if we specify group control with GCONPROD
and WCONPROD for a well, it looks like the well will be
under group control. TODO: make the logic correct here
instead of using `false` here.
2016-11-10 16:28:40 +01:00
Kai Bao
a0d3ceff62
group can be both injection group and production group.
...
Change if else to two ifs.
2016-11-10 16:28:40 +01:00
Kai Bao
f79fe1f7ad
adding support for the FLD for the control type of group control.
...
And also adding support for the liquid rate type of guide rate type.
2016-11-10 16:28:40 +01:00
Jørgen Kvalsvik
48cbbdee19
GroupTree interface changed upstream
...
Updates to the slightly modified GroupTree interface from opm-parser.
2016-11-09 13:04:33 +01:00
Arne Morten Kvarving
630d5477d8
fixed: use correct indices for well state completion data
2016-11-04 16:40:09 +01:00
Joakim Hove
e348baa6c7
Merge pull request #1098 from jokva/phase-in-runspec
...
Read phase information from EclipseState.runspec
2016-11-02 11:52:24 +01:00
Andreas Lauser
5376fb618d
Merge pull request #1096 from andlaus/Evaluation_accessors
...
use accessor methods to access the value and derivatives of Evaluation objects
2016-11-01 13:16:05 +01:00
Jørgen Kvalsvik
23ef9dce5c
Read phase information from EclipseState.runspec
2016-11-01 11:37:27 +01:00
Atgeirr Flø Rasmussen
5d33f0d900
Merge pull request #1095 from atgeirr/fix-diag-twophase
...
Fix saturation family diagnostics for two-phase case.
2016-10-28 10:41:17 +02:00
Tor Harald Sandve
d96b7193ee
Make it possible to set initial timestep
...
Default is kept at -1.0. I.e. this PR does not change the current
behaviour.
2016-10-28 09:03:29 +02:00
Andreas Lauser
1387c5f834
use accessor methods to access the value and derivatives of Evaluation objects
2016-10-27 16:53:52 +02:00
Atgeirr Flø Rasmussen
1ce4c47b09
Fix saturation family diagnostics for two-phase case.
2016-10-27 11:58:50 +02:00
Atgeirr Flø Rasmussen
9dfd16cffb
Adapt to changed data::Wells API.
2016-10-25 10:41:16 +02:00
Atgeirr Flø Rasmussen
125d1696d6
Merge pull request #1093 from dr-robertk/PR/fix-wellmanager-constructor
...
Make WellsManager compile with c++-11.
2016-10-23 07:36:08 +02:00
Atgeirr Flø Rasmussen
ad5d98664c
Merge pull request #1075 from jokva/output-data-wells-sans-vectors
...
WIP: Restore from data::Wells without vector dumps
2016-10-21 14:58:10 +02:00
Robert Kloefkorn
d082d977fd
Merge remote-tracking branch 'upstream/master' into PR/fix-wellmanager-constructor
2016-10-21 13:55:21 +02:00
Atgeirr Flø Rasmussen
cc72693348
Merge pull request #1090 from atgeirr/convergence-failure-problem-not-error
...
Convergence failure is "problem" not "error"
2016-10-21 12:49:10 +02:00
Robert Kloefkorn
044d47b9fb
[bugfix] Make WellsManager compile with c++-11.
2016-10-21 10:43:32 +02:00
Atgeirr Flø Rasmussen
069b65a635
Add option to enable logging (default true).
...
This makes it possible to avoid logging from this class in a parallel setting.
2016-10-20 22:39:08 +02:00
Atgeirr Flø Rasmussen
e38b9ffcb7
Classify convergence failure as a "problem" not "error".
2016-10-20 22:36:20 +02:00
Atgeirr Flø Rasmussen
8e8b624d4c
Ensure logging only on first rank.
2016-10-20 22:36:20 +02:00
Andreas Lauser
7d9097490b
RelpermDiagnostics: fix the build
...
this broke because EclEpsScalingPointsInfo::extractScaled() now
requires the deck and the EclipseState as additional parameters.
2016-10-20 20:01:03 +02:00
Jørgen Kvalsvik
e98d6204ad
Restore from data::Wells without vector dumps
...
opm-output's data::Wells interface changed to no longer just accept a
dump of opm-core's WellState object. Update WellState to restore itself
from this new interface rather than reading the dumped vectors as-is.
2016-10-20 16:36:47 +02:00
Jørgen Kvalsvik
1057e6d3d0
Update to shared_ptr-less parser interface.
2016-10-20 10:14:41 +02:00
Atgeirr Flø Rasmussen
33872cfb4a
Undo premature API change adaption.
2016-10-18 15:34:53 +02:00
Atgeirr Flø Rasmussen
f72832dbd6
Merge pull request #1085 from andlaus/opm-parser_units
...
consolidate the units code to opm-parser
2016-10-18 15:25:20 +02:00
Andreas Lauser
07707ecc30
consolidate the unit system to opm-parser
...
since the unit code within opm-parser is now a drop-in replacement,
this simplifies things and make them less error-prone.
unfortunately, this requires quite a few PRs. (most are pretty
trivial, though.)
2016-10-10 17:50:26 +02:00