Opm::WellGroupHelper< Scalar, IndexTraits > Class Template Reference

#include <WellGroupHelper.hpp>

Inheritance diagram for Opm::WellGroupHelper< Scalar, IndexTraits >:
Inheritance graph

Classes

class  GroupStateGuard
 
class  WellStateGuard
 

Public Member Functions

 WellGroupHelper (WellState< Scalar, IndexTraits > &well_state, GroupState< Scalar > &group_state, const Schedule &schedule, const SummaryState &summary_state, const GuideRate &guide_rate, const PhaseUsageInfo< IndexTraits > &phase_usage_info)
 
void accumulateGroupEfficiencyFactor (const Group &group, Scalar &factor) const
 
std::pair< bool, Scalar > checkGroupConstraintsInj (const std::string &name, const std::string &parent, const Group &group, const Scalar *rates, const Phase injection_phase, const Scalar efficiency_factor, const std::vector< Scalar > &resv_coeff, const bool check_guide_rate, DeferredLogger &deferred_logger) const
 
std::pair< bool, Scalar > checkGroupConstraintsProd (const std::string &name, const std::string &parent, const Group &group, const Scalar *rates, const Scalar efficiency_factor, const std::vector< Scalar > &resv_coeff, const bool check_guide_rate, DeferredLogger &deferred_logger) const
 
std::map< std::string, Scalar > computeNetworkPressures (const Network::ExtNetwork &network, const VFPProdProperties< Scalar > &vfp_prod_props, const Parallel::Communication &comm) const
 
Scalar getGuideRate (const std::string &name, const GuideRateModel::Target target) const
 
GuideRate::RateVector getProductionGroupRateVector (const std::string &group_name) const
 
Scalar getWellGroupTargetInjector (const std::string &name, const std::string &parent, const Group &group, const Scalar *rates, const Phase injection_phase, const Scalar efficiency_factor, const std::vector< Scalar > &resv_coeff, DeferredLogger &deferred_logger) const
 
Scalar getWellGroupTargetProducer (const std::string &name, const std::string &parent, const Group &group, const Scalar *rates, const Scalar efficiency_factor, const std::vector< Scalar > &resv_coeff, DeferredLogger &deferred_logger) const
 
GuideRate::RateVector getWellRateVector (const std::string &name) const
 
std::vector< std::string > groupChainTopBot (const std::string &bottom, const std::string &top) const
 
int groupControlledWells (const std::string &group_name, const std::string &always_included_child, const bool is_production_group, const Phase injection_phase) const
 
const GroupState< Scalar > & groupState () const
 
const PhaseUsageInfo< IndexTraits > & phaseUsageInfo () const
 
GroupStateGuard pushGroupState (GroupState< Scalar > &group_state)
 
WellStateGuard pushWellState (WellState< Scalar, IndexTraits > &well_state)
 
void setCmodeGroup (const Group &group, GroupState< Scalar > &group_state) const
 
template<class AverageRegionalPressureType >
void setRegionAveragePressureCalculator (const Group &group, const FieldPropsManager &fp, std::map< std::string, std::unique_ptr< AverageRegionalPressureType > > &regional_average_pressure_calculator) const
 
void setReportStep (int report_step)
 
Scalar sumSolventRates (const Group &group, const bool is_injector) const
 
Scalar sumWellResRates (const Group &group, const int phase_pos, const bool injector) const
 
Scalar sumWellSurfaceRates (const Group &group, const int phase_pos, const bool injector) const
 
Scalar sumWellPhaseRates (bool res_rates, const Group &group, const int phase_pos, const bool injector, const bool network=false) const
 
template<class RegionalValues >
void updateGpMaintTargetForGroups (const Group &group, const RegionalValues &regional_values, const double dt, GroupState< Scalar > &group_state) const
 
int updateGroupControlledWells (const bool is_production_group, const Phase injection_phase, GroupState< Scalar > &group_state, DeferredLogger &deferred_logger) const
 
void updateGroupProductionRates (const Group &group, GroupState< Scalar > &group_state) const
 
void updateGroupTargetReduction (const Group &group, const bool is_injector, GroupState< Scalar > &group_state) const
 
void updateNetworkLeafNodeProductionRates (GroupState< Scalar > &group_state) const
 
void updateREINForGroups (const Group &group, bool sum_rank, GroupState< Scalar > &group_state) const
 
void updateReservoirRatesInjectionGroups (const Group &group, GroupState< Scalar > &group_state) const
 
void updateVREPForGroups (const Group &group, GroupState< Scalar > &group_state) const
 
void updateState (WellState< Scalar, IndexTraits > &well_state, GroupState< Scalar > &group_state)
 
void updateSurfaceRatesInjectionGroups (const Group &group, GroupState< Scalar > &group_state) const
 
void updateWellRates (const Group &group, const WellState< Scalar, IndexTraits > &well_state_nupcol, WellState< Scalar, IndexTraits > &well_state) const
 
const WellState< Scalar, IndexTraits > & wellState () const
 
void updateWellRatesFromGroupTargetScale (const Scalar scale, const Group &group, bool is_injector, WellState< Scalar, IndexTraits > &well_state) const
 
std::pair< std::optional< std::string >, Scalar > worstOffendingWell (const Group &group, const Group::ProductionCMode &offended_control, const Parallel::Communication &comm, DeferredLogger &deferred_logger) const
 Returns the name of the worst offending well and its fraction (i.e. violated_phase / preferred_phase) More...
 

Constructor & Destructor Documentation

◆ WellGroupHelper()

template<typename Scalar , typename IndexTraits >
Opm::WellGroupHelper< Scalar, IndexTraits >::WellGroupHelper ( WellState< Scalar, IndexTraits > &  well_state,
GroupState< Scalar > &  group_state,
const Schedule &  schedule,
const SummaryState &  summary_state,
const GuideRate &  guide_rate,
const PhaseUsageInfo< IndexTraits > &  phase_usage_info 
)

Member Function Documentation

◆ accumulateGroupEfficiencyFactor()

template<typename Scalar , typename IndexTraits >
void Opm::WellGroupHelper< Scalar, IndexTraits >::accumulateGroupEfficiencyFactor ( const Group &  group,
Scalar &  factor 
) const

◆ checkGroupConstraintsInj()

template<typename Scalar , typename IndexTraits >
std::pair< bool, Scalar > Opm::WellGroupHelper< Scalar, IndexTraits >::checkGroupConstraintsInj ( const std::string &  name,
const std::string &  parent,
const Group &  group,
const Scalar *  rates,
const Phase  injection_phase,
const Scalar  efficiency_factor,
const std::vector< Scalar > &  resv_coeff,
const bool  check_guide_rate,
DeferredLogger deferred_logger 
) const

◆ checkGroupConstraintsProd()

template<typename Scalar , typename IndexTraits >
std::pair< bool, Scalar > Opm::WellGroupHelper< Scalar, IndexTraits >::checkGroupConstraintsProd ( const std::string &  name,
const std::string &  parent,
const Group &  group,
const Scalar *  rates,
const Scalar  efficiency_factor,
const std::vector< Scalar > &  resv_coeff,
const bool  check_guide_rate,
DeferredLogger deferred_logger 
) const

◆ computeNetworkPressures()

template<typename Scalar , typename IndexTraits >
std::map< std::string, Scalar > Opm::WellGroupHelper< Scalar, IndexTraits >::computeNetworkPressures ( const Network::ExtNetwork &  network,
const VFPProdProperties< Scalar > &  vfp_prod_props,
const Parallel::Communication comm 
) const

◆ getGuideRate()

template<typename Scalar , typename IndexTraits >
Scalar Opm::WellGroupHelper< Scalar, IndexTraits >::getGuideRate ( const std::string &  name,
const GuideRateModel::Target  target 
) const

◆ getProductionGroupRateVector()

template<typename Scalar , typename IndexTraits >
GuideRate::RateVector Opm::WellGroupHelper< Scalar, IndexTraits >::getProductionGroupRateVector ( const std::string &  group_name) const

◆ getWellGroupTargetInjector()

template<typename Scalar , typename IndexTraits >
Scalar Opm::WellGroupHelper< Scalar, IndexTraits >::getWellGroupTargetInjector ( const std::string &  name,
const std::string &  parent,
const Group &  group,
const Scalar *  rates,
const Phase  injection_phase,
const Scalar  efficiency_factor,
const std::vector< Scalar > &  resv_coeff,
DeferredLogger deferred_logger 
) const

◆ getWellGroupTargetProducer()

template<typename Scalar , typename IndexTraits >
Scalar Opm::WellGroupHelper< Scalar, IndexTraits >::getWellGroupTargetProducer ( const std::string &  name,
const std::string &  parent,
const Group &  group,
const Scalar *  rates,
const Scalar  efficiency_factor,
const std::vector< Scalar > &  resv_coeff,
DeferredLogger deferred_logger 
) const

◆ getWellRateVector()

template<typename Scalar , typename IndexTraits >
GuideRate::RateVector Opm::WellGroupHelper< Scalar, IndexTraits >::getWellRateVector ( const std::string &  name) const

◆ groupChainTopBot()

template<typename Scalar , typename IndexTraits >
std::vector< std::string > Opm::WellGroupHelper< Scalar, IndexTraits >::groupChainTopBot ( const std::string &  bottom,
const std::string &  top 
) const

◆ groupControlledWells()

template<typename Scalar , typename IndexTraits >
int Opm::WellGroupHelper< Scalar, IndexTraits >::groupControlledWells ( const std::string &  group_name,
const std::string &  always_included_child,
const bool  is_production_group,
const Phase  injection_phase 
) const

returns the number of wells that are actively under group control for a given group with name given by group_name

◆ groupState()

◆ phaseUsageInfo()

template<typename Scalar , typename IndexTraits >
const PhaseUsageInfo< IndexTraits > & Opm::WellGroupHelper< Scalar, IndexTraits >::phaseUsageInfo ( ) const
inline

◆ pushGroupState()

template<typename Scalar , typename IndexTraits >
GroupStateGuard Opm::WellGroupHelper< Scalar, IndexTraits >::pushGroupState ( GroupState< Scalar > &  group_state)
inline

◆ pushWellState()

◆ setCmodeGroup()

template<typename Scalar , typename IndexTraits >
void Opm::WellGroupHelper< Scalar, IndexTraits >::setCmodeGroup ( const Group &  group,
GroupState< Scalar > &  group_state 
) const

◆ setRegionAveragePressureCalculator()

template<typename Scalar , typename IndexTraits >
template<class AverageRegionalPressureType >
void Opm::WellGroupHelper< Scalar, IndexTraits >::setRegionAveragePressureCalculator ( const Group &  group,
const FieldPropsManager &  fp,
std::map< std::string, std::unique_ptr< AverageRegionalPressureType > > &  regional_average_pressure_calculator 
) const

◆ setReportStep()

template<typename Scalar , typename IndexTraits >
void Opm::WellGroupHelper< Scalar, IndexTraits >::setReportStep ( int  report_step)
inline

◆ sumSolventRates()

template<typename Scalar , typename IndexTraits >
Scalar Opm::WellGroupHelper< Scalar, IndexTraits >::sumSolventRates ( const Group &  group,
const bool  is_injector 
) const

◆ sumWellPhaseRates()

template<typename Scalar , typename IndexTraits >
Scalar Opm::WellGroupHelper< Scalar, IndexTraits >::sumWellPhaseRates ( bool  res_rates,
const Group &  group,
const int  phase_pos,
const bool  injector,
const bool  network = false 
) const

◆ sumWellResRates()

template<typename Scalar , typename IndexTraits >
Scalar Opm::WellGroupHelper< Scalar, IndexTraits >::sumWellResRates ( const Group &  group,
const int  phase_pos,
const bool  injector 
) const

◆ sumWellSurfaceRates()

template<typename Scalar , typename IndexTraits >
Scalar Opm::WellGroupHelper< Scalar, IndexTraits >::sumWellSurfaceRates ( const Group &  group,
const int  phase_pos,
const bool  injector 
) const

◆ updateGpMaintTargetForGroups()

template<typename Scalar , typename IndexTraits >
template<class RegionalValues >
void Opm::WellGroupHelper< Scalar, IndexTraits >::updateGpMaintTargetForGroups ( const Group &  group,
const RegionalValues &  regional_values,
const double  dt,
GroupState< Scalar > &  group_state 
) const

◆ updateGroupControlledWells()

template<typename Scalar , typename IndexTraits >
int Opm::WellGroupHelper< Scalar, IndexTraits >::updateGroupControlledWells ( const bool  is_production_group,
const Phase  injection_phase,
GroupState< Scalar > &  group_state,
DeferredLogger deferred_logger 
) const

update the number of wells that are actively under group control for a given group with name given by group_name its main usage is to detect cases where there is no wells under group control

◆ updateGroupProductionRates()

template<typename Scalar , typename IndexTraits >
void Opm::WellGroupHelper< Scalar, IndexTraits >::updateGroupProductionRates ( const Group &  group,
GroupState< Scalar > &  group_state 
) const

◆ updateGroupTargetReduction()

template<typename Scalar , typename IndexTraits >
void Opm::WellGroupHelper< Scalar, IndexTraits >::updateGroupTargetReduction ( const Group &  group,
const bool  is_injector,
GroupState< Scalar > &  group_state 
) const

◆ updateNetworkLeafNodeProductionRates()

template<typename Scalar , typename IndexTraits >
void Opm::WellGroupHelper< Scalar, IndexTraits >::updateNetworkLeafNodeProductionRates ( GroupState< Scalar > &  group_state) const

◆ updateREINForGroups()

template<typename Scalar , typename IndexTraits >
void Opm::WellGroupHelper< Scalar, IndexTraits >::updateREINForGroups ( const Group &  group,
bool  sum_rank,
GroupState< Scalar > &  group_state 
) const

◆ updateReservoirRatesInjectionGroups()

template<typename Scalar , typename IndexTraits >
void Opm::WellGroupHelper< Scalar, IndexTraits >::updateReservoirRatesInjectionGroups ( const Group &  group,
GroupState< Scalar > &  group_state 
) const

◆ updateState()

template<typename Scalar , typename IndexTraits >
void Opm::WellGroupHelper< Scalar, IndexTraits >::updateState ( WellState< Scalar, IndexTraits > &  well_state,
GroupState< Scalar > &  group_state 
)

◆ updateSurfaceRatesInjectionGroups()

template<typename Scalar , typename IndexTraits >
void Opm::WellGroupHelper< Scalar, IndexTraits >::updateSurfaceRatesInjectionGroups ( const Group &  group,
GroupState< Scalar > &  group_state 
) const

◆ updateVREPForGroups()

template<typename Scalar , typename IndexTraits >
void Opm::WellGroupHelper< Scalar, IndexTraits >::updateVREPForGroups ( const Group &  group,
GroupState< Scalar > &  group_state 
) const

◆ updateWellRates()

template<typename Scalar , typename IndexTraits >
void Opm::WellGroupHelper< Scalar, IndexTraits >::updateWellRates ( const Group &  group,
const WellState< Scalar, IndexTraits > &  well_state_nupcol,
WellState< Scalar, IndexTraits > &  well_state 
) const

◆ updateWellRatesFromGroupTargetScale()

template<typename Scalar , typename IndexTraits >
void Opm::WellGroupHelper< Scalar, IndexTraits >::updateWellRatesFromGroupTargetScale ( const Scalar  scale,
const Group &  group,
bool  is_injector,
WellState< Scalar, IndexTraits > &  well_state 
) const

◆ wellState()

◆ worstOffendingWell()

template<typename Scalar , typename IndexTraits >
std::pair< std::optional< std::string >, Scalar > Opm::WellGroupHelper< Scalar, IndexTraits >::worstOffendingWell ( const Group &  group,
const Group::ProductionCMode &  offended_control,
const Parallel::Communication comm,
DeferredLogger deferred_logger 
) const

Returns the name of the worst offending well and its fraction (i.e. violated_phase / preferred_phase)


The documentation for this class was generated from the following files: