Opm::ECLPVT::ECLPvtCurveCollection Class Reference

#include <ECLPvtCurveCollection.hpp>

Public Member Functions

 ECLPvtCurveCollection (const ECLGraph &G, const ECLInitFileData &init)
 
void setOutputUnits (std::unique_ptr< const ECLUnits::UnitSystem > usys)
 
std::vector< PVTGraphgetPvtCurve (const RawCurve curve, const ECLPhaseIndex phase, const int pvtRegionID) const
 
std::vector< double > getDynamicPropertySI (const RawCurve property, const ECLPhaseIndex phase, const int pvtRegionID, const std::vector< double > &phasePress, const std::vector< double > &mixRatio=std::vector< double >()) const
 
std::vector< double > getDynamicPropertyNative (const RawCurve property, const ECLPhaseIndex phase, const int pvtRegionID, std::vector< double > phasePress, std::vector< double > mixRatio=std::vector< double >()) const
 

Constructor & Destructor Documentation

◆ ECLPvtCurveCollection()

Opm::ECLPVT::ECLPvtCurveCollection::ECLPvtCurveCollection ( const ECLGraph G,
const ECLInitFileData init 
)

Constructor

Parameters
[in]GConnected topology of current model's active cells. Needed to linearise region mapping (e.g., SATNUM) that is distributed on local grids to all of the model's active cells (
member function G.rawLinearisedCellData()
std::function< double(double, double)> function
Definition: Operate.hpp:28
).
[in]initContainer of tabulated PVT functions for all PVT regions in the model G.

Member Function Documentation

◆ getDynamicPropertyNative()

std::vector< double > Opm::ECLPVT::ECLPvtCurveCollection::getDynamicPropertyNative ( const RawCurve  property,
const ECLPhaseIndex  phase,
const int  pvtRegionID,
std::vector< double >  phasePress,
std::vector< double >  mixRatio = std::vector< double >() 
) const

Compute a single dynamic property in a single active cell for a collection of cell states.

This interface is intended for direct calculation based on raw (unconverted) data vectors from an ECL result set. Consequently, phase property inputs (phase pressure and mixing ratios) must be in the result set's native/serialised collection of units of measure (e.g., pressures in Atmospheres and mixing ratios in scm^3/scm^3 for the "LAB" system of units).

Parameters
[in]propertyNamed property. Must be one of
@ FVF
Formation volume factor (B_\alpha)
or . All other values return an empty result.
[in]phasePhase for which to compute the property value. Must be or . All other values return an empty result.
[in]pvtRegionIDValue of pvtRegionID (1-based region value)
[in]phasePressSequence of phase pressure values pertaining to activeCell. Could, for instance, be the entire time-series of oil pressure values in that cell. Must be in the serialised system of units (i.e., Bars for METRIC, Psi for FIELD, and Atm for LAB and PVT-M).
[in]mixRatioSequence of phase mixing ratio values pertaining to activeCell. Could, for instance, be the entire time-series of dissolved gas/oil ratio values in that cell. Must be empty or match the size of phasePress. If empty, treated as
std::vector<double>(phasePress.size(), 0.0)
which is typically appropriate only for dry gas or dead oil cases.

Must be in the serialised system of units. In other words when the mixRatio represents the dissolved gas/oil ratio (Rs), then the input must be given in sm^3/sm^3 for METRIC, Mscf/stb for FIELD, scm^3/scm^3 for LAB and sm^3/sm^3 for PVT-M. Similarly, when the mixRatio represents the vapourised oil/gas ratio (Rv), then the input must be given in sm^3/sm^3 for METRIC, stb/Mscf for FIELD, scm^3/scm^3 for LAB and sm^3/sm^3 for PVT-M).

Returns
Sequence of dynamic property values corresponding to the requested property name of the identified phase in the particular active cell. Empty for invalid requests, number of elements equal to
phasePress.size()
otherwise. Return values provided in the system of units specified by setOutputUnits(). Strict SI if no output units have been defined.

◆ getDynamicPropertySI()

std::vector< double > Opm::ECLPVT::ECLPvtCurveCollection::getDynamicPropertySI ( const RawCurve  property,
const ECLPhaseIndex  phase,
const int  pvtRegionID,
const std::vector< double > &  phasePress,
const std::vector< double > &  mixRatio = std::vector< double >() 
) const

Compute a single dynamic property in a single active cell for a collection of cell states.

Note: Phase property inputs (phase pressure and mixing ratios) must be in strict SI units of measure (Pascal and sm^3/sm^3, respectively).

Parameters
[in]propertyNamed property. Must be one of or . All other values return an empty result.
[in]phasePhase for which to compute the property value. Must be or . All other values return an empty result.
[in]pvtRegionIDValue of pvtRegionID (1-based region value)
[in]phasePressSequence of phase pressure values pertaining to activeCell. Could, for instance, be the entire time-series of oil pressure values in that cell.
[in]mixRatioSequence of phase mixing ratio values pertaining to activeCell. Could, for instance, be the entire time-series of dissolved gas/oil ratio values in that cell. Must be empty or match the size of phasePress. If empty, treated as
std::vector<double>(phasePress.size(), 0.0)
which is typically appropriate only for dry gas or dead oil cases.
Returns
Sequence of dynamic property values corresponding to the requested property name of the identified phase for the current PVT region. Empty for invalid requests, number of elements equal to
phasePress.size()
otherwise. Return values are in strict SI units of measure–i.e., rm^3/sm^3 for the formation volume factors and Pascal seconds for the viscosities.

◆ getPvtCurve()

std::vector< PVTGraph > Opm::ECLPVT::ECLPvtCurveCollection::getPvtCurve ( const RawCurve  curve,
const ECLPhaseIndex  phase,
const int  pvtRegionID 
) const

Retrieve 2D graph representation of Phase PVT property function in a specific active cell.

Parameters
[in]curvePVT property curve descriptor
[in]phasePhase for which to compute extract graph representation of PVT property function.
[in]pvtRegionIDValue of pvtRegionID (1-based region value)
Returns
Collection of 2D graphs for PVT property curve identified by requests represented by curve, phase and pvtRegionID. One curve (vector element) for each tabulated node of the primary look-up key. Single curve (i.e., a single element vector) in the case of dry gas (no vaporised oil) or dead oil (no dissolved gas). Return values provided in the system of units specified by setOutputUnits(). Strict SI if no output units have been defined.

No curves for water or dead oil with constant compressibility (i.e., keyword 'PVCDO' in the input deck).

Example: Retrieve collection of gas viscosity curves pertaining to PVT region 1.

const auto curves =
pvtCC.getPvtCurve(ECLPVT::RawCurve::Viscosity,

◆ setOutputUnits()

void Opm::ECLPVT::ECLPvtCurveCollection::setOutputUnits ( std::unique_ptr< const ECLUnits::UnitSystem usys)

Define a collection of units of measure for output purposes.

PVT property curves will be reported in the appropriate units of this system. If this function is never called (or called with null pointer), then the output units are implicitly set to the flow-diagnostics module's internal units of measurement (meaning all properties and curves will be reported in strict SI units).

Parameters
[in]usysCollection of units of measure for output purposes. Typically the return value from one of the
*UnitConvention()
functions of the
ECLUnits
namespace.

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