added: MultisegmentWellAssemble

this handles assembly of the equation system for multisegment well.
start by moving assembleControlEq into the new class
This commit is contained in:
Arne Morten Kvarving
2022-11-18 11:57:37 +01:00
parent 4f38217fc8
commit 4ebde4e003
6 changed files with 273 additions and 124 deletions

View File

@@ -19,6 +19,7 @@
*/
#include <opm/simulators/wells/MultisegmentWellAssemble.hpp>
#include <opm/simulators/wells/WellBhpThpCalculator.hpp>
#include <opm/simulators/utils/DeferredLoggingErrorHelpers.hpp>
#include <opm/input/eclipse/Schedule/MSW/Valve.hpp>
@@ -1671,13 +1672,20 @@ namespace Opm
if (seg == 0) { // top segment, pressure equation is the control equation
const auto& summaryState = ebosSimulator.vanguard().summaryState();
const Schedule& schedule = ebosSimulator.vanguard().schedule();
this->assembleControlEq(well_state,
std::function<EvalWell(const int)> gQ = [this](int a) { return this->getQs(a); };
MultisegmentWellAssemble<FluidSystem,Indices,Scalar>(*this).
assembleControlEq(well_state,
group_state,
schedule,
summaryState,
inj_controls,
prod_controls,
getRefDensity(),
this->getWQTotal(),
this->getBhp(),
SPres,
gQ,
this->linSys_,
deferred_logger);
} else {
const UnitSystem& unit_system = ebosSimulator.vanguard().eclState().getDeckUnitSystem();