mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
WellState: template Scalar type
This commit is contained in:
@@ -156,7 +156,7 @@ namespace Opm
|
||||
void
|
||||
MultisegmentWell<TypeTag>::
|
||||
updatePrimaryVariables(const SummaryState& summary_state,
|
||||
const WellState& well_state,
|
||||
const WellState<Scalar>& well_state,
|
||||
DeferredLogger& /* deferred_logger */)
|
||||
{
|
||||
const bool stop_or_zero_rate_target = this->stopppedOrZeroRateTarget(summary_state, well_state);
|
||||
@@ -173,7 +173,7 @@ namespace Opm
|
||||
MultisegmentWell<TypeTag>::
|
||||
updateWellStateWithTarget(const Simulator& simulator,
|
||||
const GroupState& group_state,
|
||||
WellState& well_state,
|
||||
WellState<Scalar>& well_state,
|
||||
DeferredLogger& deferred_logger) const
|
||||
{
|
||||
Base::updateWellStateWithTarget(simulator, group_state, well_state, deferred_logger);
|
||||
@@ -193,7 +193,7 @@ namespace Opm
|
||||
ConvergenceReport
|
||||
MultisegmentWell<TypeTag>::
|
||||
getWellConvergence(const SummaryState& /* summary_state */,
|
||||
const WellState& well_state,
|
||||
const WellState<Scalar>& well_state,
|
||||
const std::vector<double>& B_avg,
|
||||
DeferredLogger& deferred_logger,
|
||||
const bool relax_tolerance) const
|
||||
@@ -255,7 +255,7 @@ namespace Opm
|
||||
MultisegmentWell<TypeTag>::
|
||||
recoverWellSolutionAndUpdateWellState(const SummaryState& summary_state,
|
||||
const BVector& x,
|
||||
WellState& well_state,
|
||||
WellState<Scalar>& well_state,
|
||||
DeferredLogger& deferred_logger)
|
||||
{
|
||||
if (!this->isOperableAndSolvable() && !this->wellIsStopped()) {
|
||||
@@ -275,7 +275,7 @@ namespace Opm
|
||||
void
|
||||
MultisegmentWell<TypeTag>::
|
||||
computeWellPotentials(const Simulator& simulator,
|
||||
const WellState& well_state,
|
||||
const WellState<Scalar>& well_state,
|
||||
std::vector<double>& well_potentials,
|
||||
DeferredLogger& deferred_logger)
|
||||
{
|
||||
@@ -346,7 +346,7 @@ namespace Opm
|
||||
well_flux.resize(np, 0.0);
|
||||
const bool allow_cf = this->getAllowCrossFlow();
|
||||
const int nseg = this->numberOfSegments();
|
||||
const WellState& well_state = simulator.problem().wellModel().wellState();
|
||||
const WellState<Scalar>& well_state = simulator.problem().wellModel().wellState();
|
||||
const auto& ws = well_state.well(this->indexOfWell());
|
||||
auto segments_copy = ws.segments;
|
||||
segments_copy.scale_pressure(bhp);
|
||||
@@ -391,7 +391,7 @@ namespace Opm
|
||||
well_copy.debug_cost_counter_ = 0;
|
||||
|
||||
// store a copy of the well state, we don't want to update the real well state
|
||||
WellState well_state_copy = simulator.problem().wellModel().wellState();
|
||||
WellState<Scalar> well_state_copy = simulator.problem().wellModel().wellState();
|
||||
const auto& group_state = simulator.problem().wellModel().groupState();
|
||||
auto& ws = well_state_copy.well(this->index_of_well_);
|
||||
|
||||
@@ -452,10 +452,9 @@ namespace Opm
|
||||
template<typename TypeTag>
|
||||
std::vector<double>
|
||||
MultisegmentWell<TypeTag>::
|
||||
computeWellPotentialWithTHP(
|
||||
const WellState& well_state,
|
||||
const Simulator& simulator,
|
||||
DeferredLogger& deferred_logger) const
|
||||
computeWellPotentialWithTHP(const WellState<Scalar>& well_state,
|
||||
const Simulator& simulator,
|
||||
DeferredLogger& deferred_logger) const
|
||||
{
|
||||
std::vector<double> potentials(this->number_of_phases_, 0.0);
|
||||
const auto& summary_state = simulator.vanguard().summaryState();
|
||||
@@ -513,7 +512,7 @@ namespace Opm
|
||||
well_copy.debug_cost_counter_ = 0;
|
||||
|
||||
// store a copy of the well state, we don't want to update the real well state
|
||||
WellState well_state_copy = simulator.problem().wellModel().wellState();
|
||||
WellState<Scalar> well_state_copy = simulator.problem().wellModel().wellState();
|
||||
const auto& group_state = simulator.problem().wellModel().groupState();
|
||||
auto& ws = well_state_copy.well(this->index_of_well_);
|
||||
|
||||
@@ -572,7 +571,7 @@ namespace Opm
|
||||
void
|
||||
MultisegmentWell<TypeTag>::
|
||||
solveEqAndUpdateWellState(const SummaryState& summary_state,
|
||||
WellState& well_state,
|
||||
WellState<Scalar>& well_state,
|
||||
DeferredLogger& deferred_logger)
|
||||
{
|
||||
if (!this->isOperableAndSolvable() && !this->wellIsStopped()) return;
|
||||
@@ -676,7 +675,7 @@ namespace Opm
|
||||
MultisegmentWell<TypeTag>::
|
||||
updateWellState(const SummaryState& summary_state,
|
||||
const BVectorWell& dwells,
|
||||
WellState& well_state,
|
||||
WellState<Scalar>& well_state,
|
||||
DeferredLogger& deferred_logger,
|
||||
const double relaxation_factor)
|
||||
{
|
||||
@@ -710,7 +709,7 @@ namespace Opm
|
||||
void
|
||||
MultisegmentWell<TypeTag>::
|
||||
calculateExplicitQuantities(const Simulator& simulator,
|
||||
const WellState& well_state,
|
||||
const WellState<Scalar>& well_state,
|
||||
DeferredLogger& deferred_logger)
|
||||
{
|
||||
const auto& summary_state = simulator.vanguard().summaryState();
|
||||
@@ -729,7 +728,7 @@ namespace Opm
|
||||
MultisegmentWell<TypeTag>::
|
||||
updateProductivityIndex(const Simulator& simulator,
|
||||
const WellProdIndexCalculator& wellPICalc,
|
||||
WellState& well_state,
|
||||
WellState<Scalar>& well_state,
|
||||
DeferredLogger& deferred_logger) const
|
||||
{
|
||||
auto fluidState = [&simulator, this](const int perf)
|
||||
@@ -834,7 +833,7 @@ namespace Opm
|
||||
const BVector& weights,
|
||||
const int pressureVarIndex,
|
||||
const bool use_well_weights,
|
||||
const WellState& well_state) const
|
||||
const WellState<Scalar>& well_state) const
|
||||
{
|
||||
// Add the pressure contribution to the cpr system for the well
|
||||
this->linSys_.extractCPRPressureMatrix(jacobian,
|
||||
@@ -1150,7 +1149,9 @@ namespace Opm
|
||||
template<typename TypeTag>
|
||||
void
|
||||
MultisegmentWell<TypeTag>::
|
||||
checkOperabilityUnderBHPLimit(const WellState& /*well_state*/, const Simulator& simulator, DeferredLogger& deferred_logger)
|
||||
checkOperabilityUnderBHPLimit(const WellState<Scalar>& /*well_state*/,
|
||||
const Simulator& simulator,
|
||||
DeferredLogger& deferred_logger)
|
||||
{
|
||||
const auto& summaryState = simulator.vanguard().summaryState();
|
||||
const double bhp_limit = WellBhpThpCalculator(*this).mostStrictBhpFromBhpLimits(summaryState);
|
||||
@@ -1308,7 +1309,9 @@ namespace Opm
|
||||
template<typename TypeTag>
|
||||
void
|
||||
MultisegmentWell<TypeTag>::
|
||||
updateIPRImplicit(const Simulator& simulator, WellState& well_state, DeferredLogger& deferred_logger)
|
||||
updateIPRImplicit(const Simulator& simulator,
|
||||
WellState<Scalar>& well_state,
|
||||
DeferredLogger& deferred_logger)
|
||||
{
|
||||
// Compute IPR based on *converged* well-equation:
|
||||
// For a component rate r the derivative dr/dbhp is obtained by
|
||||
@@ -1375,10 +1378,9 @@ namespace Opm
|
||||
template<typename TypeTag>
|
||||
void
|
||||
MultisegmentWell<TypeTag>::
|
||||
checkOperabilityUnderTHPLimit(
|
||||
const Simulator& simulator,
|
||||
const WellState& well_state,
|
||||
DeferredLogger& deferred_logger)
|
||||
checkOperabilityUnderTHPLimit(const Simulator& simulator,
|
||||
const WellState<Scalar>& well_state,
|
||||
DeferredLogger& deferred_logger)
|
||||
{
|
||||
const auto& summaryState = simulator.vanguard().summaryState();
|
||||
const auto obtain_bhp = this->isProducer()
|
||||
@@ -1432,7 +1434,7 @@ namespace Opm
|
||||
const double dt,
|
||||
const Well::InjectionControls& inj_controls,
|
||||
const Well::ProductionControls& prod_controls,
|
||||
WellState& well_state,
|
||||
WellState<Scalar>& well_state,
|
||||
const GroupState& group_state,
|
||||
DeferredLogger& deferred_logger)
|
||||
{
|
||||
@@ -1584,7 +1586,7 @@ namespace Opm
|
||||
const double dt,
|
||||
const Well::InjectionControls& inj_controls,
|
||||
const Well::ProductionControls& prod_controls,
|
||||
WellState& well_state,
|
||||
WellState<Scalar>& well_state,
|
||||
const GroupState& group_state,
|
||||
DeferredLogger& deferred_logger,
|
||||
const bool fixed_control /*false*/,
|
||||
@@ -1775,7 +1777,7 @@ namespace Opm
|
||||
const double dt,
|
||||
const Well::InjectionControls& inj_controls,
|
||||
const Well::ProductionControls& prod_controls,
|
||||
WellState& well_state,
|
||||
WellState<Scalar>& well_state,
|
||||
const GroupState& group_state,
|
||||
DeferredLogger& deferred_logger)
|
||||
{
|
||||
@@ -1978,7 +1980,7 @@ namespace Opm
|
||||
template<typename TypeTag>
|
||||
void
|
||||
MultisegmentWell<TypeTag>::
|
||||
updateWaterThroughput(const double /*dt*/, WellState& /*well_state*/) const
|
||||
updateWaterThroughput(const double /*dt*/, WellState<Scalar>& /*well_state*/) const
|
||||
{
|
||||
}
|
||||
|
||||
@@ -2016,7 +2018,7 @@ namespace Opm
|
||||
template<typename TypeTag>
|
||||
std::optional<double>
|
||||
MultisegmentWell<TypeTag>::
|
||||
computeBhpAtThpLimitProd(const WellState& well_state,
|
||||
computeBhpAtThpLimitProd(const WellState<Scalar>& well_state,
|
||||
const Simulator& simulator,
|
||||
const SummaryState& summary_state,
|
||||
DeferredLogger& deferred_logger) const
|
||||
|
||||
Reference in New Issue
Block a user