mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Use well and group controls from opm-common.
This PR remove the usage of well_control_ from opm-core and instead uses the control classes for wells and groups from opm-common. This PR also removes the usage of the group classes from opm-core.
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
Copyright 2017 SINTEF Digital, Mathematics and Cybernetics.
|
||||
Copyright 2017 Statoil ASA.
|
||||
Copyright 2017 IRIS
|
||||
Copyright 2019 Norce
|
||||
|
||||
This file is part of the Open Porous Media project (OPM).
|
||||
|
||||
@@ -39,6 +40,7 @@
|
||||
#include <opm/simulators/wells/RateConverter.hpp>
|
||||
#include <opm/simulators/wells/VFPProperties.hpp>
|
||||
#include <opm/simulators/wells/WellHelpers.hpp>
|
||||
#include <opm/simulators/wells/WellGroupHelpers.hpp>
|
||||
#include <opm/simulators/wells/WellStateFullyImplicitBlackoil.hpp>
|
||||
#include <opm/simulators/flow/BlackoilModelParametersEbos.hpp>
|
||||
|
||||
@@ -148,7 +150,7 @@ namespace Opm
|
||||
|
||||
virtual void initPrimaryVariablesEvaluation() const = 0;
|
||||
|
||||
virtual ConvergenceReport getWellConvergence(const std::vector<double>& B_avg, Opm::DeferredLogger& deferred_logger) const = 0;
|
||||
virtual ConvergenceReport getWellConvergence(const WellState& well_state, const std::vector<double>& B_avg, Opm::DeferredLogger& deferred_logger) const = 0;
|
||||
|
||||
virtual void solveEqAndUpdateWellState(WellState& well_state, Opm::DeferredLogger& deferred_logger) = 0;
|
||||
|
||||
@@ -232,7 +234,7 @@ namespace Opm
|
||||
|
||||
void closeCompletions(WellTestState& wellTestState);
|
||||
|
||||
const Well2* wellEcl() const;
|
||||
const Well2& wellEcl() const;
|
||||
|
||||
// TODO: theoretically, it should be a const function
|
||||
// Simulator is not const is because that assembleWellEq is non-const Simulator
|
||||
@@ -250,7 +252,7 @@ namespace Opm
|
||||
bool isOperable() const;
|
||||
|
||||
/// Returns true if the well has one or more THP limits/constraints.
|
||||
bool wellHasTHPConstraints() const;
|
||||
bool wellHasTHPConstraints(const SummaryState& summaryState) const;
|
||||
|
||||
/// Returns true if the well is currently in prediction mode (i.e. not history mode).
|
||||
bool underPredictionMode() const;
|
||||
@@ -258,6 +260,17 @@ namespace Opm
|
||||
// update perforation water throughput based on solved water rate
|
||||
virtual void updateWaterThroughput(const double dt, WellState& well_state) const = 0;
|
||||
|
||||
void stopWell() {
|
||||
wellIsStopped_ = true;
|
||||
}
|
||||
void openWell() {
|
||||
wellIsStopped_ = false;
|
||||
}
|
||||
|
||||
bool wellIsStopped() {
|
||||
return wellIsStopped_;
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
// to indicate a invalid completion
|
||||
@@ -284,9 +297,6 @@ namespace Opm
|
||||
// typically, it should apply to injection wells
|
||||
std::vector<double> comp_frac_;
|
||||
|
||||
// controls for this well
|
||||
struct WellControls* well_controls_;
|
||||
|
||||
// number of the perforations for this well
|
||||
int number_of_perforations_;
|
||||
|
||||
@@ -356,6 +366,8 @@ namespace Opm
|
||||
|
||||
std::vector<RateVector> connectionRates_;
|
||||
|
||||
bool wellIsStopped_;
|
||||
|
||||
const PhaseUsage& phaseUsage() const;
|
||||
|
||||
int flowPhaseToEbosCompIdx( const int phaseIdx ) const;
|
||||
@@ -372,14 +384,14 @@ namespace Opm
|
||||
const WellState& well_state,
|
||||
Opm::DeferredLogger& deferred_logger) const;
|
||||
|
||||
double getTHPConstraint(Opm::DeferredLogger& deferred_logger) const;
|
||||
double getTHPConstraint(const SummaryState& summaryState) const;
|
||||
|
||||
int getControlIndex(const WellControlType& type) const;
|
||||
|
||||
// Component fractions for each phase for the well
|
||||
const std::vector<double>& compFrac() const;
|
||||
|
||||
double mostStrictBhpFromBhpLimits(Opm::DeferredLogger& deferred_logger) const;
|
||||
double mostStrictBhpFromBhpLimits(const SummaryState& summaryState) const;
|
||||
|
||||
struct RatioLimitCheckReport;
|
||||
|
||||
@@ -437,9 +449,9 @@ namespace Opm
|
||||
WellTestState& well_test_state,
|
||||
Opm::DeferredLogger& deferred_logger) const;
|
||||
|
||||
void solveWellForTesting(const Simulator& ebosSimulator, WellState& well_state,
|
||||
const std::vector<double>& B_avg,
|
||||
Opm::DeferredLogger& deferred_logger);
|
||||
void solveWellForTesting(const Simulator& ebosSimulator, WellState& well_state,
|
||||
const std::vector<double>& B_avg,
|
||||
Opm::DeferredLogger& deferred_logger);
|
||||
|
||||
bool solveWellEqUntilConverged(const Simulator& ebosSimulator,
|
||||
const std::vector<double>& B_avg,
|
||||
@@ -450,18 +462,18 @@ namespace Opm
|
||||
|
||||
void initCompletions();
|
||||
|
||||
WellControls* createWellControlsWithBHPAndTHP(DeferredLogger& deferred_logger) const;
|
||||
|
||||
// count the number of times an output log message is created in the productivity
|
||||
// index calculations
|
||||
int well_productivity_index_logger_counter_;
|
||||
|
||||
bool checkConstraints(WellState& well_state, const SummaryState& summaryState);
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// definition of the struct OperabilityStatus
|
||||
template<typename TypeTag>
|
||||
struct
|
||||
|
||||
Reference in New Issue
Block a user