mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Use currentControls() field of well state class.
Now the well state is consulted for the controls to use when assembling the well control equations, instead of the (immutable) wells_ struct. Also, added dummy implementation of updateWellControls().
This commit is contained in:
parent
bad64de4f2
commit
20ecd37709
@ -687,7 +687,7 @@ namespace {
|
|||||||
FullyImplicitBlackoilSolver::
|
FullyImplicitBlackoilSolver::
|
||||||
assemble(const V& pvdt,
|
assemble(const V& pvdt,
|
||||||
const BlackoilState& x ,
|
const BlackoilState& x ,
|
||||||
const WellStateFullyImplicitBlackoil& xw )
|
WellStateFullyImplicitBlackoil& xw )
|
||||||
{
|
{
|
||||||
// Create the primary variables.
|
// Create the primary variables.
|
||||||
const SolutionState state = variableState(x, xw);
|
const SolutionState state = variableState(x, xw);
|
||||||
@ -748,7 +748,8 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
addWellEq(state);
|
addWellEq(state);
|
||||||
addWellControlEq(state);
|
updateWellControls(xw);
|
||||||
|
addWellControlEq(state, xw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -933,7 +934,17 @@ namespace {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void FullyImplicitBlackoilSolver::addWellControlEq(const SolutionState& state)
|
void FullyImplicitBlackoilSolver::updateWellControls(WellStateFullyImplicitBlackoil& /*xw*/) const
|
||||||
|
{
|
||||||
|
// Do stuff.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void FullyImplicitBlackoilSolver::addWellControlEq(const SolutionState& state,
|
||||||
|
const WellStateFullyImplicitBlackoil& xw)
|
||||||
{
|
{
|
||||||
// Handling BHP and SURFACE_RATE wells.
|
// Handling BHP and SURFACE_RATE wells.
|
||||||
|
|
||||||
@ -945,14 +956,18 @@ namespace {
|
|||||||
M rate_distr(nw, np*nw);
|
M rate_distr(nw, np*nw);
|
||||||
for (int w = 0; w < nw; ++w) {
|
for (int w = 0; w < nw; ++w) {
|
||||||
const WellControls* wc = wells_.ctrls[w];
|
const WellControls* wc = wells_.ctrls[w];
|
||||||
if (well_controls_get_current_type(wc) == BHP) {
|
// The current control in the well state overrides
|
||||||
bhp_targets[w] = well_controls_get_current_target(wc);
|
// the current control set in the Wells struct, which
|
||||||
|
// is instead treated as a default.
|
||||||
|
const int current = xw.currentControls()[w];
|
||||||
|
if (well_controls_iget_type(wc, current) == BHP) {
|
||||||
|
bhp_targets[w] = well_controls_iget_target(wc, current);
|
||||||
rate_targets[w] = -1e100;
|
rate_targets[w] = -1e100;
|
||||||
} else if (well_controls_get_current_type( wc ) == SURFACE_RATE) {
|
} else if (well_controls_iget_type(wc, current) == SURFACE_RATE) {
|
||||||
bhp_targets[w] = -1e100;
|
bhp_targets[w] = -1e100;
|
||||||
rate_targets[w] = well_controls_get_current_target(wc);
|
rate_targets[w] = well_controls_iget_target(wc, current);
|
||||||
{
|
{
|
||||||
const double * distr = well_controls_get_current_distr( wc );
|
const double * distr = well_controls_iget_distr(wc, current);
|
||||||
for (int phase = 0; phase < np; ++phase) {
|
for (int phase = 0; phase < np; ++phase) {
|
||||||
rate_distr.insert(w, phase*nw + w) = distr[phase];
|
rate_distr.insert(w, phase*nw + w) = distr[phase];
|
||||||
}
|
}
|
||||||
|
@ -166,15 +166,18 @@ namespace Opm {
|
|||||||
addOldWellEq(const SolutionState& state);
|
addOldWellEq(const SolutionState& state);
|
||||||
|
|
||||||
void
|
void
|
||||||
addWellControlEq(const SolutionState& state);
|
addWellControlEq(const SolutionState& state,
|
||||||
|
const WellStateFullyImplicitBlackoil& xw);
|
||||||
|
|
||||||
void
|
void
|
||||||
addWellEq(const SolutionState& state);
|
addWellEq(const SolutionState& state);
|
||||||
|
|
||||||
|
void updateWellControls(WellStateFullyImplicitBlackoil& xw) const;
|
||||||
|
|
||||||
void
|
void
|
||||||
assemble(const V& dtpv,
|
assemble(const V& dtpv,
|
||||||
const BlackoilState& x,
|
const BlackoilState& x,
|
||||||
const WellStateFullyImplicitBlackoil& xw);
|
WellStateFullyImplicitBlackoil& xw);
|
||||||
|
|
||||||
V solveJacobianSystem() const;
|
V solveJacobianSystem() const;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user