opm-simulators
Loading...
Searching...
No Matches
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...
struct  ProductionConstraintInfo
 Result for a production constraint with its production control mode. More...
struct  InjectionConstraintInfo
 Result for an injection constraint with its injection control mode. More...
struct  ProductionConstraintResult
 Per-rate-type production constraints info for a group. More...
class  GeneralCalculator
 Shared logic for injector and producer paths. More...
class  TopToBottomCalculator
 Distribute a top-level constraint (target or limit) down to the requested group. More...

Public Types

enum class  ConstraintType { Target , Limit }
 Type of constraint to calculate: target or limit.
using ControlMode
 Union of control-mode types used by group constraint calculations.
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.
std::optional< ProductionConstraintInfogroupProductionTarget (const Group &group)
 Compute production target for group.
std::optional< ProductionConstraintResultgroupProductionConstraints (const Group &group)
 Compute per-rate-type production constraints for a group.
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 GroupStateHelperType & groupStateHelper () 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
Initial value:
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 Function Documentation

◆ 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.


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