A fluid system which uses the black-oil model assumptions to calculate termodynamically meaningful quantities.
More...
template<template< typename > typename StorageT>
FLUIDSYSTEM_CLASSNAME (const FLUIDSYSTEM_CLASSNAME< Scalar , IndexTraits, StorageT > &other)
Default copy constructor.
FLUIDSYSTEM_CLASSNAME (Scalar _surfacePressure_, Scalar _surfaceTemperature_, Scalar _reservoirTemperature_, const GasPvt &_gasPvt_, const OilPvt &_oilPvt_, const WaterPvt &_waterPvt_, bool _enableDissolvedGas_, bool _enableDissolvedGasInWater_, bool _enableVaporizedOil_, bool _enableVaporizedWater_, bool _enableConstantRs_, bool _enableDiffusion_, Storage< std::array< Scalar , 3 > > &&_referenceDensity_, Storage< std::array< Scalar , 3 > > &&_molarMass_, Storage< std::array< Scalar , 3 *3 > > &&_diffusionCoefficients_, const PhaseUsageInfo < IndexTraits > &_phaseUsageInfo_, bool _isInitialized_, bool _useSaturatedTables_, bool _enthalpy_eq_energy_)
STATIC_OR_NOTHING void initFromState (const EclipseState &eclState, const Schedule &schedule)
Initialize the fluid system using an ECL deck object.
STATIC_OR_NOTHING void initBegin (std::size_t numPvtRegions)
Begin the initialization of the black oil fluid system.
STATIC_OR_DEVICE void setEnableDissolvedGas (bool yesno)
Specify whether the fluid system should consider that the gas component can dissolve in the oil phase.
STATIC_OR_DEVICE void setEnableVaporizedOil (bool yesno)
Specify whether the fluid system should consider that the oil component can dissolve in the gas phase.
STATIC_OR_DEVICE void setEnableVaporizedWater (bool yesno)
Specify whether the fluid system should consider that the water component can dissolve in the gas phase.
STATIC_OR_DEVICE void setEnableDissolvedGasInWater (bool yesno)
Specify whether the fluid system should consider that the gas component can dissolve in the water phase.
STATIC_OR_DEVICE void setEnableConstantRs (bool yesno)
Specify whether the fluid system should use constant Rs tables.
STATIC_OR_DEVICE void setEnableDiffusion (bool yesno)
Specify whether the fluid system should consider diffusion.
STATIC_OR_DEVICE void setUseSaturatedTables (bool yesno)
Specify whether the saturated tables should be used.
STATIC_OR_DEVICE void setGasPvt (std::shared_ptr< GasPvt > pvtObj)
Set the pressure-volume-saturation (PVT) relations for the gas phase.
STATIC_OR_DEVICE void setOilPvt (std::shared_ptr< OilPvt > pvtObj)
Set the pressure-volume-saturation (PVT) relations for the oil phase.
STATIC_OR_DEVICE void setWaterPvt (std::shared_ptr< WaterPvt > pvtObj)
Set the pressure-volume-saturation (PVT) relations for the water phase.
STATIC_OR_DEVICE void setVapPars (const Scalar par1, const Scalar par2)
STATIC_OR_DEVICE void setReferenceDensities (Scalar rhoOil, Scalar rhoWater, Scalar rhoGas, unsigned regionIdx)
Initialize the values of the reference densities.
STATIC_OR_DEVICE void initEnd ()
Finish initializing the black oil fluid system.
STATIC_OR_DEVICE bool isInitialized () NOTHING_OR_CONST
STATIC_OR_NOTHING std::string_view phaseName (unsigned phaseIdx) NOTHING_OR_CONST
Return the human readable name of a fluid phase.
STATIC_OR_DEVICE bool isLiquid (unsigned phaseIdx) NOTHING_OR_CONST
Return whether a phase is liquid.
STATIC_OR_DEVICE const PhaseUsageInfo < IndexTraits > & phaseUsage () NOTHING_OR_CONST
Returns a const reference to PhaseUsageInfo .
STATIC_OR_DEVICE unsigned numActivePhases () NOTHING_OR_CONST
Returns the number of active fluid phases (i.e., usually three).
STATIC_OR_DEVICE bool phaseIsActive (unsigned phaseIdx) NOTHING_OR_CONST
Returns whether a fluid phase is active.
STATIC_OR_DEVICE unsigned solventComponentIndex (unsigned phaseIdx) NOTHING_OR_CONST
returns the index of "primary" component of a phase (solvent)
STATIC_OR_DEVICE unsigned soluteComponentIndex (unsigned phaseIdx) NOTHING_OR_CONST
returns the index of "secondary" component of a phase (solute)
STATIC_OR_NOTHING std::string_view componentName (unsigned compIdx) NOTHING_OR_CONST
Return the human readable name of a component.
STATIC_OR_DEVICE Scalar molarMass (unsigned compIdx, unsigned regionIdx=0) NOTHING_OR_CONST
Return the molar mass of a component in [kg/mol].
STATIC_OR_DEVICE bool isIdealMixture (unsigned)
Returns true if and only if a fluid phase is assumed to be an ideal mixture.
STATIC_OR_DEVICE bool isCompressible (unsigned) NOTHING_OR_CONST
Returns true if and only if a fluid phase is assumed to be compressible.
STATIC_OR_DEVICE bool isIdealGas (unsigned) NOTHING_OR_CONST
Returns true if and only if a fluid phase is assumed to be an ideal gas.
STATIC_OR_DEVICE std::size_t numRegions () NOTHING_OR_CONST
Returns the number of PVT regions which are considered.
STATIC_OR_DEVICE bool enableDissolvedGas () NOTHING_OR_CONST
Returns whether the fluid system should consider that the gas component can dissolve in the oil phase.
STATIC_OR_DEVICE bool enableDissolvedGasInWater () NOTHING_OR_CONST
Returns whether the fluid system should consider that the gas component can dissolve in the water phase.
STATIC_OR_DEVICE bool enableVaporizedOil () NOTHING_OR_CONST
Returns whether the fluid system should consider that the oil component can dissolve in the gas phase.
STATIC_OR_DEVICE bool enableVaporizedWater () NOTHING_OR_CONST
Returns whether the fluid system should consider that the water component can dissolve in the gas phase.
STATIC_OR_DEVICE bool enableConstantRs () NOTHING_OR_CONST
Returns whether constant Rs tables should be used.
STATIC_OR_DEVICE bool enableDiffusion () NOTHING_OR_CONST
Returns whether the fluid system should consider diffusion.
STATIC_OR_DEVICE bool useSaturatedTables () NOTHING_OR_CONST
Returns whether the saturated tables should be used.
STATIC_OR_DEVICE Scalar referenceDensity (unsigned phaseIdx, unsigned regionIdx) NOTHING_OR_CONST
Returns the density of a fluid phase at surface pressure [kg/m^3].
template<class FluidState, class LhsEval = typename FluidState::ValueType, class ParamCacheEval = LhsEval>
STATIC_OR_DEVICE LhsEval density (const FluidState &fluidState, const ParameterCache< ParamCacheEval > ¶mCache, unsigned phaseIdx) NOTHING_OR_CONST
Calculate the density [kg/m^3] of a fluid phase.
template<class FluidState, class LhsEval = typename FluidState::ValueType, class ParamCacheEval = LhsEval>
STATIC_OR_DEVICE LhsEval fugacityCoefficient (const FluidState &fluidState, const ParameterCache< ParamCacheEval > ¶mCache, unsigned phaseIdx, unsigned compIdx) NOTHING_OR_CONST
Calculate the fugacity coefficient [Pa] of an individual component in a fluid phase.
template<class FluidState, class LhsEval = typename FluidState::ValueType, class ParamCacheEval = LhsEval>
STATIC_OR_DEVICE LhsEval viscosity (const FluidState &fluidState, const ParameterCache< ParamCacheEval > ¶mCache, unsigned phaseIdx) NOTHING_OR_CONST
Calculate the dynamic viscosity of a fluid phase [Pa*s].
template<class FluidState, class LhsEval = typename FluidState::ValueType, class ParamCacheEval = LhsEval>
STATIC_OR_DEVICE LhsEval enthalpy (const FluidState &fluidState, const ParameterCache< ParamCacheEval > ¶mCache, unsigned phaseIdx)
Given a phase's composition, temperature, pressure and density, calculate its specific enthalpy [J/kg].
template<class FluidState, class LhsEval = typename FluidState::ValueType, class ParamCacheEval = LhsEval>
STATIC_OR_DEVICE LhsEval internalEnergy (const FluidState &fluidState, const ParameterCache< ParamCacheEval > ¶mCache, unsigned phaseIdx) NOTHING_OR_CONST
template<class FluidState, class LhsEval = typename FluidState::ValueType>
STATIC_OR_DEVICE LhsEval density (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx) NOTHING_OR_CONST
Calculate the density [kg/m^3] of a fluid phase.
template<class FluidState, class LhsEval = typename FluidState::ValueType>
STATIC_OR_DEVICE LhsEval saturatedDensity (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx) NOTHING_OR_CONST
Compute the density of a saturated fluid phase.
template<class FluidState, class LhsEval = typename FluidState::ValueType>
STATIC_OR_DEVICE LhsEval inverseFormationVolumeFactor (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx) NOTHING_OR_CONST
Returns the formation volume factor of an "undersaturated" fluid phase.
template<class FluidState, class LhsEval = typename FluidState::ValueType>
STATIC_OR_DEVICE std::pair< LhsEval, LhsEval > inverseFormationVolumeFactorAndViscosity (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx)
template<class FluidState, class LhsEval = typename FluidState::ValueType>
STATIC_OR_DEVICE LhsEval saturatedInverseFormationVolumeFactor (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx) NOTHING_OR_CONST
Returns the formation volume factor of a "saturated" fluid phase.
template<class FluidState, class LhsEval = typename FluidState::ValueType>
STATIC_OR_DEVICE LhsEval fugacityCoefficient (const FluidState &fluidState, unsigned phaseIdx, unsigned compIdx, unsigned regionIdx) NOTHING_OR_CONST
Calculate the fugacity coefficient [Pa] of an individual component in a fluid phase.
template<class FluidState, class LhsEval = typename FluidState::ValueType>
STATIC_OR_DEVICE LhsEval viscosity (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx) NOTHING_OR_CONST
Calculate the dynamic viscosity of a fluid phase [Pa*s].
template<class FluidState, class LhsEval = typename FluidState::ValueType>
STATIC_OR_DEVICE LhsEval internalEnergy (const FluidState &fluidState, const unsigned phaseIdx, const unsigned regionIdx) NOTHING_OR_CONST
template<class FluidState, class LhsEval = typename FluidState::ValueType>
STATIC_OR_DEVICE LhsEval internalMixingTotalEnergy (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx) NOTHING_OR_CONST
template<class FluidState, class LhsEval = typename FluidState::ValueType>
STATIC_OR_DEVICE LhsEval enthalpy (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx) NOTHING_OR_CONST
Given a phase's composition, temperature, pressure and density, calculate its specific enthalpy [J/kg].
template<class FluidState, class LhsEval = typename FluidState::ValueType>
STATIC_OR_DEVICE LhsEval saturatedVaporizationFactor (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx) NOTHING_OR_CONST
Returns the water vaporization factor of saturated phase.
template<class FluidState, class LhsEval = typename FluidState::ValueType>
STATIC_OR_DEVICE LhsEval saturatedDissolutionFactor (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx, const LhsEval &maxOilSaturation) NOTHING_OR_CONST
Returns the dissolution factor of a saturated fluid phase.
template<class FluidState, class LhsEval = typename FluidState::ValueType>
STATIC_OR_DEVICE LhsEval saturatedDissolutionFactor (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx) NOTHING_OR_CONST
Returns the dissolution factor of a saturated fluid phase.
template<class FluidState, class LhsEval = typename FluidState::ValueType>
STATIC_OR_DEVICE LhsEval bubblePointPressure (const FluidState &fluidState, unsigned regionIdx) NOTHING_OR_CONST
Returns the bubble point pressure $P_b$ using the current Rs.
template<class FluidState, class LhsEval = typename FluidState::ValueType>
STATIC_OR_DEVICE LhsEval dewPointPressure (const FluidState &fluidState, unsigned regionIdx) NOTHING_OR_CONST
Returns the dew point pressure $P_d$ using the current Rv.
template<class FluidState, class LhsEval = typename FluidState::ValueType>
STATIC_OR_DEVICE LhsEval saturationPressure (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx) NOTHING_OR_CONST
Returns the saturation pressure of a given phase [Pa] depending on its composition.
template<class LhsEval>
STATIC_OR_DEVICE LhsEval convertXoGToRs (const LhsEval &XoG, unsigned regionIdx) NOTHING_OR_CONST
Convert the mass fraction of the gas component in the oil phase to the corresponding gas dissolution factor.
template<class LhsEval>
STATIC_OR_DEVICE LhsEval convertXwGToRsw (const LhsEval &XwG, unsigned regionIdx) NOTHING_OR_CONST
Convert the mass fraction of the gas component in the water phase to the corresponding gas dissolution factor.
template<class LhsEval>
STATIC_OR_DEVICE LhsEval convertXgOToRv (const LhsEval &XgO, unsigned regionIdx) NOTHING_OR_CONST
Convert the mass fraction of the oil component in the gas phase to the corresponding oil vaporization factor.
template<class LhsEval>
STATIC_OR_DEVICE LhsEval convertXgWToRvw (const LhsEval &XgW, unsigned regionIdx) NOTHING_OR_CONST
Convert the mass fraction of the water component in the gas phase to the corresponding water vaporization factor.
template<class LhsEval>
STATIC_OR_DEVICE LhsEval convertRsToXoG (const LhsEval &Rs, unsigned regionIdx) NOTHING_OR_CONST
Convert a gas dissolution factor to the the corresponding mass fraction of the gas component in the oil phase.
template<class LhsEval>
STATIC_OR_DEVICE LhsEval convertRswToXwG (const LhsEval &Rsw, unsigned regionIdx) NOTHING_OR_CONST
Convert a gas dissolution factor to the the corresponding mass fraction of the gas component in the water phase.
template<class LhsEval>
STATIC_OR_DEVICE LhsEval convertRvToXgO (const LhsEval &Rv, unsigned regionIdx) NOTHING_OR_CONST
Convert an oil vaporization factor to the corresponding mass fraction of the oil component in the gas phase.
template<class LhsEval>
STATIC_OR_DEVICE LhsEval convertRvwToXgW (const LhsEval &Rvw, unsigned regionIdx) NOTHING_OR_CONST
Convert an water vaporization factor to the corresponding mass fraction of the water component in the gas phase.
template<class LhsEval>
STATIC_OR_DEVICE LhsEval convertXgWToxgW (const LhsEval &XgW, unsigned regionIdx) NOTHING_OR_CONST
Convert a water mass fraction in the gas phase the corresponding mole fraction.
template<class LhsEval>
STATIC_OR_DEVICE LhsEval convertXwGToxwG (const LhsEval &XwG, unsigned regionIdx) NOTHING_OR_CONST
Convert a gas mass fraction in the water phase the corresponding mole fraction.
template<class LhsEval>
STATIC_OR_DEVICE LhsEval convertXoGToxoG (const LhsEval &XoG, unsigned regionIdx) NOTHING_OR_CONST
Convert a gas mass fraction in the oil phase the corresponding mole fraction.
template<class LhsEval>
STATIC_OR_DEVICE LhsEval convertxoGToXoG (const LhsEval &xoG, unsigned regionIdx) NOTHING_OR_CONST
Convert a gas mole fraction in the oil phase the corresponding mass fraction.
template<class LhsEval>
STATIC_OR_DEVICE LhsEval convertXgOToxgO (const LhsEval &XgO, unsigned regionIdx) NOTHING_OR_CONST
Convert a oil mass fraction in the gas phase the corresponding mole fraction.
template<class LhsEval>
STATIC_OR_DEVICE LhsEval convertxgOToXgO (const LhsEval &xgO, unsigned regionIdx) NOTHING_OR_CONST
Convert a oil mole fraction in the gas phase the corresponding mass fraction.
STATIC_OR_DEVICE const GasPvt & gasPvt () NOTHING_OR_CONST
Return a reference to the low-level object which calculates the gas phase quantities.
STATIC_OR_DEVICE const OilPvt & oilPvt () NOTHING_OR_CONST
Return a reference to the low-level object which calculates the oil phase quantities.
STATIC_OR_DEVICE const WaterPvt & waterPvt () NOTHING_OR_CONST
Return a reference to the low-level object which calculates the water phase quantities.
STATIC_OR_DEVICE Scalar reservoirTemperature (unsigned=0) NOTHING_OR_CONST
Set the temperature of the reservoir.
STATIC_OR_DEVICE void setReservoirTemperature (Scalar value) NOTHING_OR_CONST
Return the temperature of the reservoir.
STATIC_OR_DEVICE short activeToCanonicalPhaseIdx (unsigned activePhaseIdx) NOTHING_OR_CONST
STATIC_OR_DEVICE short canonicalToActivePhaseIdx (unsigned phaseIdx) NOTHING_OR_CONST
STATIC_OR_DEVICE short activeToCanonicalCompIdx (unsigned activeCompIdx) NOTHING_OR_CONST
STATIC_OR_DEVICE short canonicalToActiveCompIdx (unsigned compIdx) NOTHING_OR_CONST
STATIC_OR_DEVICE short activePhaseToActiveCompIdx (unsigned activePhaseIdx) NOTHING_OR_CONST
STATIC_OR_DEVICE short activeCompToActivePhaseIdx (unsigned activeCompIdx) NOTHING_OR_CONST
STATIC_OR_DEVICE Scalar diffusionCoefficient (unsigned compIdx, unsigned phaseIdx, unsigned regionIdx=0) NOTHING_OR_CONST
Calculate the binary molecular diffusion coefficient for a component in a fluid phase [mol^2 * s / (kg*m^3)].
STATIC_OR_DEVICE void setDiffusionCoefficient (Scalar coefficient, unsigned compIdx, unsigned phaseIdx, unsigned regionIdx=0) NOTHING_OR_CONST
template<class FluidState, class LhsEval = typename FluidState::ValueType, class ParamCacheEval = LhsEval>
STATIC_OR_DEVICE LhsEval diffusionCoefficient (const FluidState &fluidState, const ParameterCache< ParamCacheEval > ¶mCache, unsigned phaseIdx, unsigned compIdx) NOTHING_OR_CONST
Calculate the binary molecular diffusion coefficient for a component in a fluid phase [mol^2 * s / (kg*m^3)].
STATIC_OR_DEVICE void setEnergyEqualEnthalpy (bool enthalpy_eq_energy)
STATIC_OR_DEVICE bool enthalpyEqualEnergy () NOTHING_OR_CONST