Opm::VFPHelpers< Scalar > Class Template Reference

#include <VFPHelpers.hpp>

Static Public Member Functions

static detail::InterpData< Scalar > findInterpData (const Scalar value_in, const std::vector< double > &values)
 
static detail::VFPEvaluation< Scalar > interpolate (const VFPProdTable &table, const detail::InterpData< Scalar > &flo_i, const detail::InterpData< Scalar > &thp_i, const detail::InterpData< Scalar > &wfr_i, const detail::InterpData< Scalar > &gfr_i, const detail::InterpData< Scalar > &alq_i)
 
static detail::VFPEvaluation< Scalar > interpolate (const VFPInjTable &table, const detail::InterpData< Scalar > &flo_i, const detail::InterpData< Scalar > &thp_i)
 
static detail::VFPEvaluation< Scalar > bhp (const VFPProdTable &table, const Scalar aqua, const Scalar liquid, const Scalar vapour, const Scalar thp, const Scalar alq, const Scalar explicit_wfr, const Scalar explicit_gfr, const bool use_vfpexplicit)
 
static detail::VFPEvaluation< Scalar > bhp (const VFPInjTable &table, const Scalar aqua, const Scalar liquid, const Scalar vapour, const Scalar thp)
 
static Scalar findTHP (const std::vector< Scalar > &bhp_array, const std::vector< double > &thp_array, Scalar bhp, const bool find_largest=true)
 
static std::pair< Scalar, Scalar > getMinimumBHPCoordinate (const VFPProdTable &table, const Scalar thp, const Scalar wfr, const Scalar gfr, const Scalar alq)
 
static std::optional< std::pair< Scalar, Scalar > > intersectWithIPR (const VFPProdTable &table, const Scalar thp, const Scalar wfr, const Scalar gfr, const Scalar alq, const Scalar ipr_a, const Scalar ipr_b, const std::function< Scalar(const Scalar)> &adjust_bhp)
 

Member Function Documentation

◆ bhp() [1/2]

template<class Scalar >
static detail::VFPEvaluation< Scalar > Opm::VFPHelpers< Scalar >::bhp ( const VFPInjTable &  table,
const Scalar  aqua,
const Scalar  liquid,
const Scalar  vapour,
const Scalar  thp 
)
static

◆ bhp() [2/2]

template<class Scalar >
static detail::VFPEvaluation< Scalar > Opm::VFPHelpers< Scalar >::bhp ( const VFPProdTable &  table,
const Scalar  aqua,
const Scalar  liquid,
const Scalar  vapour,
const Scalar  thp,
const Scalar  alq,
const Scalar  explicit_wfr,
const Scalar  explicit_gfr,
const bool  use_vfpexplicit 
)
static

◆ findInterpData()

template<class Scalar >
static detail::InterpData< Scalar > Opm::VFPHelpers< Scalar >::findInterpData ( const Scalar  value_in,
const std::vector< double > &  values 
)
static

Helper function to find indices etc. for linear interpolation and extrapolation

Parameters
value_inValue to find in values
valuesSorted list of values to search for value in.
Returns
Data required to find the interpolated value

◆ findTHP()

template<class Scalar >
static Scalar Opm::VFPHelpers< Scalar >::findTHP ( const std::vector< Scalar > &  bhp_array,
const std::vector< double > &  thp_array,
Scalar  bhp,
const bool  find_largest = true 
)
static

This function finds the value of THP given a specific BHP. Essentially: Given the function f(thp_array(x)) = bhp_array(x), which is piecewise linear, find thp so that f(thp) = bhp.

◆ getMinimumBHPCoordinate()

template<class Scalar >
static std::pair< Scalar, Scalar > Opm::VFPHelpers< Scalar >::getMinimumBHPCoordinate ( const VFPProdTable &  table,
const Scalar  thp,
const Scalar  wfr,
const Scalar  gfr,
const Scalar  alq 
)
static

Get (flo, bhp) at minimum bhp for given thp,wfr,gfr,alq

◆ interpolate() [1/2]

template<class Scalar >
static detail::VFPEvaluation< Scalar > Opm::VFPHelpers< Scalar >::interpolate ( const VFPInjTable &  table,
const detail::InterpData< Scalar > &  flo_i,
const detail::InterpData< Scalar > &  thp_i 
)
static

This basically models interpolate(VFPProdTable::array_type, ...) which performs 5D interpolation, but here for the 2D case only

◆ interpolate() [2/2]

template<class Scalar >
static detail::VFPEvaluation< Scalar > Opm::VFPHelpers< Scalar >::interpolate ( const VFPProdTable &  table,
const detail::InterpData< Scalar > &  flo_i,
const detail::InterpData< Scalar > &  thp_i,
const detail::InterpData< Scalar > &  wfr_i,
const detail::InterpData< Scalar > &  gfr_i,
const detail::InterpData< Scalar > &  alq_i 
)
static

Helper function which interpolates data using the indices etc. given in the inputs.

◆ intersectWithIPR()

template<class Scalar >
static std::optional< std::pair< Scalar, Scalar > > Opm::VFPHelpers< Scalar >::intersectWithIPR ( const VFPProdTable &  table,
const Scalar  thp,
const Scalar  wfr,
const Scalar  gfr,
const Scalar  alq,
const Scalar  ipr_a,
const Scalar  ipr_b,
const std::function< Scalar(const Scalar)> &  adjust_bhp 
)
static

Get (flo, bhp) at largest occuring stable vfp/ipr-intersection if it exists


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