opm-simulators
Opm::GroupConstraintCalculator< Scalar, IndexTraits > Class Template Reference

Calculate group-level constraints for production and injection. More...

#include <GroupConstraintCalculator.hpp>

Classes

struct  ConstraintInfo
 Generic result for a computed constraint and its control mode. More...
 
class  GeneralCalculator
 Shared logic for injector and producer paths. More...
 
struct  InjectionConstraintInfo
 Result for an injection constraint with its injection control mode. More...
 
struct  ProductionConstraintInfo
 Result for a production constraint with its production control mode. More...
 
struct  ProductionConstraintResult
 Per-rate-type production constraints info for a group. More...
 
class  TopToBottomCalculator
 Distribute a top-level constraint (target or limit) down to the requested group. More...
 

Public Types

enum  ConstraintType { Target, Limit }
 Type of constraint to calculate: target or limit. More...
 
using ControlMode = std::variant< std::monostate, Group::InjectionCMode, Group::ProductionCMode >
 Union of control-mode types used by group constraint calculations. More...
 
using FractionCalculator = GroupStateHelpers::FractionCalculator< Scalar, IndexTraits >
 
using InjectionTargetCalculator = GroupStateHelpers::InjectionTargetCalculator< Scalar, IndexTraits >
 
using TargetCalculator = GroupStateHelpers::TargetCalculator< Scalar, IndexTraits >
 
using GroupStateHelperType = GroupStateHelper< Scalar, IndexTraits >
 

Public Member Functions

 GroupConstraintCalculator (const BlackoilWellModelGeneric< Scalar, IndexTraits > &well_model, const GroupStateHelperType &group_state_helper)
 Construct a calculator bound to one report step and simulator state.
 
DeferredLoggerdeferredLogger ()
 
DeferredLoggerdeferredLogger () const
 
int fipnum () const
 
std::optional< InjectionConstraintInfogroupInjectionTarget (const Group &group, ReservoirCoupling::Phase injection_phase)
 Compute injection target for group in the given injection phase. More...
 
std::optional< ProductionConstraintInfogroupProductionTarget (const Group &group)
 Compute production target for group. More...
 
std::optional< ProductionConstraintResultgroupProductionConstraints (const Group &group)
 Compute per-rate-type production constraints for a group. More...
 
const GroupState< Scalar > & groupState () const
 
const GuideRate & guideRate () const
 
const PhaseUsageInfo< IndexTraits > & phaseUsage () const
 
int pvtreg () const
 
int reportStepIdx () const
 
const std::vector< Scalar > & resvCoeffsInj () const
 
const Schedule & schedule () const
 
const SummaryState & summaryState () const
 
const BlackoilWellModelGeneric< Scalar, IndexTraits > & wellModel () const
 
const WellState< Scalar, IndexTraits > & wellState () const
 
const GroupStateHelperTypegroupStateHelper () const
 

Detailed Description

template<class Scalar, class IndexTraits>
class Opm::GroupConstraintCalculator< Scalar, IndexTraits >

Calculate group-level constraints for production and injection.

This class traverses the group hierarchy to determine effective control modes and constraints, applying guide-rate based distribution, sales limits (e.g., GCONSALE), efficiency factors, and RESV coefficients where applicable. It provides a uniform interface for both producers and injectors and consolidates common logic through nested helper classes.

Member Typedef Documentation

◆ ControlMode

template<class Scalar, class IndexTraits>
using Opm::GroupConstraintCalculator< Scalar, IndexTraits >::ControlMode = std::variant< std::monostate, Group::InjectionCMode, Group::ProductionCMode >

Union of control-mode types used by group constraint calculations.

Holds Group::InjectionCMode for injection, Group::ProductionCMode for production; std::monostate denotes that no specific control applies.

Member Enumeration Documentation

◆ ConstraintType

template<class Scalar, class IndexTraits>
enum Opm::GroupConstraintCalculator::ConstraintType
strong

Type of constraint to calculate: target or limit.

Member Function Documentation

◆ groupInjectionTarget()

template<class Scalar , class IndexTraits >
std::optional< typename GroupConstraintCalculator< Scalar, IndexTraits >::InjectionConstraintInfo > Opm::GroupConstraintCalculator< Scalar, IndexTraits >::groupInjectionTarget ( const Group &  group,
ReservoirCoupling::Phase  injection_phase 
)

Compute injection target for group in the given injection phase.

◆ groupProductionConstraints()

template<class Scalar , class IndexTraits >
std::optional< typename GroupConstraintCalculator< Scalar, IndexTraits >::ProductionConstraintResult > Opm::GroupConstraintCalculator< Scalar, IndexTraits >::groupProductionConstraints ( const Group &  group)

Compute per-rate-type production constraints for a group.

Returns the active target plus effective limits for all rate types with defined limits in the group hierarchy.

◆ groupProductionTarget()

template<class Scalar , class IndexTraits >
std::optional< typename GroupConstraintCalculator< Scalar, IndexTraits >::ProductionConstraintInfo > Opm::GroupConstraintCalculator< Scalar, IndexTraits >::groupProductionTarget ( const Group &  group)

Compute production target for group.


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