A fluid system which uses the black-oil model assumptions to calculate termodynamically meaningful quantities.
More...
template<template< typename > typename StorageT, template< typename > typename SmartPointerT>
FLUIDSYSTEM_CLASSNAME (const FLUIDSYSTEM_CLASSNAME < Scalar , IndexTraits, StorageT, SmartPointerT > &other)
Default copy constructor.
STATIC_OR_DEVICE 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 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 (SmartPointer< GasPvt > pvtObj)
Set the pressure-volume-saturation (PVT) relations for the gas phase.
STATIC_OR_DEVICE void setOilPvt (SmartPointer< OilPvt > pvtObj)
Set the pressure-volume-saturation (PVT) relations for the oil phase.
STATIC_OR_DEVICE void setWaterPvt (SmartPointer< 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 ()
STATIC_OR_DEVICE std::string_view phaseName (unsigned phaseIdx)
Return the human readable name of a fluid phase.
STATIC_OR_DEVICE bool isLiquid (unsigned phaseIdx)
Return whether a phase is liquid.
STATIC_OR_DEVICE unsigned numActivePhases ()
Returns the number of active fluid phases (i.e., usually three)
STATIC_OR_DEVICE bool phaseIsActive (unsigned phaseIdx)
Returns whether a fluid phase is active.
STATIC_OR_DEVICE unsigned solventComponentIndex (unsigned phaseIdx)
returns the index of "primary" component of a phase (solvent)
STATIC_OR_DEVICE unsigned soluteComponentIndex (unsigned phaseIdx)
returns the index of "secondary" component of a phase (solute)
STATIC_OR_DEVICE std::string_view componentName (unsigned compIdx)
Return the human readable name of a component.
STATIC_OR_DEVICE Scalar molarMass (unsigned compIdx, unsigned regionIdx=0)
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)
Returns true if and only if a fluid phase is assumed to be compressible.
STATIC_OR_DEVICE bool isIdealGas (unsigned)
Returns true if and only if a fluid phase is assumed to be an ideal gas.
STATIC_OR_DEVICE std::size_t numRegions ()
Returns the number of PVT regions which are considered.
STATIC_OR_DEVICE bool enableDissolvedGas ()
Returns whether the fluid system should consider that the gas component can dissolve in the oil phase.
STATIC_OR_DEVICE bool enableDissolvedGasInWater ()
Returns whether the fluid system should consider that the gas component can dissolve in the water phase.
STATIC_OR_DEVICE bool enableVaporizedOil ()
Returns whether the fluid system should consider that the oil component can dissolve in the gas phase.
STATIC_OR_DEVICE bool enableVaporizedWater ()
Returns whether the fluid system should consider that the water component can dissolve in the gas phase.
STATIC_OR_DEVICE bool enableDiffusion ()
Returns whether the fluid system should consider diffusion.
STATIC_OR_DEVICE bool useSaturatedTables ()
Returns whether the saturated tables should be used.
STATIC_OR_DEVICE Scalar referenceDensity (unsigned phaseIdx, unsigned regionIdx)
Returns the density of a fluid phase at surface pressure [kg/m^3].
template<class FluidState , class LhsEval = typename FluidState::Scalar, class ParamCacheEval = LhsEval>
STATIC_OR_DEVICE LhsEval density (const FluidState &fluidState, const ParameterCache< ParamCacheEval > ¶mCache, unsigned phaseIdx)
Calculate the density [kg/m^3] of a fluid phase.
template<class FluidState , class LhsEval = typename FluidState::Scalar, class ParamCacheEval = LhsEval>
STATIC_OR_DEVICE LhsEval fugacityCoefficient (const FluidState &fluidState, const ParameterCache< ParamCacheEval > ¶mCache, unsigned phaseIdx, unsigned compIdx)
Calculate the fugacity coefficient [Pa] of an individual component in a fluid phase.
template<class FluidState , class LhsEval = typename FluidState::Scalar, class ParamCacheEval = LhsEval>
STATIC_OR_DEVICE LhsEval viscosity (const FluidState &fluidState, const ParameterCache< ParamCacheEval > ¶mCache, unsigned phaseIdx)
Calculate the dynamic viscosity of a fluid phase [Pa*s].
template<class FluidState , class LhsEval = typename FluidState::Scalar, 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::Scalar, class ParamCacheEval = LhsEval>
STATIC_OR_DEVICE LhsEval internalEnergy (const FluidState &fluidState, const ParameterCache< ParamCacheEval > ¶mCache, unsigned phaseIdx)
template<class FluidState , class LhsEval = typename FluidState::Scalar>
STATIC_OR_DEVICE LhsEval density (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx)
Calculate the density [kg/m^3] of a fluid phase.
template<class FluidState , class LhsEval = typename FluidState::Scalar>
STATIC_OR_DEVICE LhsEval saturatedDensity (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx)
Compute the density of a saturated fluid phase.
template<class FluidState , class LhsEval = typename FluidState::Scalar>
STATIC_OR_DEVICE LhsEval inverseFormationVolumeFactor (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx)
Returns the formation volume factor of an "undersaturated" fluid phase.
template<class FluidState , class LhsEval = typename FluidState::Scalar>
STATIC_OR_DEVICE LhsEval saturatedInverseFormationVolumeFactor (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx)
Returns the formation volume factor of a "saturated" fluid phase.
template<class FluidState , class LhsEval = typename FluidState::Scalar>
STATIC_OR_DEVICE LhsEval fugacityCoefficient (const FluidState &fluidState, unsigned phaseIdx, unsigned compIdx, unsigned regionIdx)
Calculate the fugacity coefficient [Pa] of an individual component in a fluid phase.
template<class FluidState , class LhsEval = typename FluidState::Scalar>
STATIC_OR_DEVICE LhsEval viscosity (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx)
Calculate the dynamic viscosity of a fluid phase [Pa*s].
template<class FluidState , class LhsEval = typename FluidState::Scalar>
STATIC_OR_DEVICE LhsEval internalEnergy (const FluidState &fluidState, const unsigned phaseIdx, const unsigned regionIdx)
template<class FluidState , class LhsEval = typename FluidState::Scalar>
STATIC_OR_DEVICE LhsEval internalMixingTotalEnergy (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx)
template<class FluidState , class LhsEval = typename FluidState::Scalar>
STATIC_OR_DEVICE LhsEval enthalpy (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx)
Given a phase's composition, temperature, pressure and density, calculate its specific enthalpy [J/kg].
template<class FluidState , class LhsEval = typename FluidState::Scalar>
STATIC_OR_DEVICE LhsEval saturatedVaporizationFactor (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx)
Returns the water vaporization factor of saturated phase.
template<class FluidState , class LhsEval = typename FluidState::Scalar>
STATIC_OR_DEVICE LhsEval saturatedDissolutionFactor (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx, const LhsEval &maxOilSaturation)
Returns the dissolution factor of a saturated fluid phase.
template<class FluidState , class LhsEval = typename FluidState::Scalar>
STATIC_OR_DEVICE LhsEval saturatedDissolutionFactor (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx)
Returns the dissolution factor of a saturated fluid phase.
template<class FluidState , class LhsEval = typename FluidState::Scalar>
STATIC_OR_DEVICE LhsEval bubblePointPressure (const FluidState &fluidState, unsigned regionIdx)
Returns the bubble point pressure $P_b$ using the current Rs.
template<class FluidState , class LhsEval = typename FluidState::Scalar>
STATIC_OR_DEVICE LhsEval dewPointPressure (const FluidState &fluidState, unsigned regionIdx)
Returns the dew point pressure $P_d$ using the current Rv.
template<class FluidState , class LhsEval = typename FluidState::Scalar>
STATIC_OR_DEVICE LhsEval saturationPressure (const FluidState &fluidState, unsigned phaseIdx, unsigned regionIdx)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
Convert a oil mole fraction in the gas phase the corresponding mass fraction.
STATIC_OR_DEVICE const GasPvt & gasPvt ()
Return a reference to the low-level object which calculates the gas phase quantities.
STATIC_OR_DEVICE const OilPvt & oilPvt ()
Return a reference to the low-level object which calculates the oil phase quantities.
STATIC_OR_DEVICE const WaterPvt & waterPvt ()
Return a reference to the low-level object which calculates the water phase quantities.
STATIC_OR_DEVICE Scalar reservoirTemperature (unsigned=0)
Set the temperature of the reservoir.
STATIC_OR_DEVICE void setReservoirTemperature (Scalar value)
Return the temperature of the reservoir.
STATIC_OR_DEVICE short activeToCanonicalPhaseIdx (unsigned activePhaseIdx)
STATIC_OR_DEVICE short canonicalToActivePhaseIdx (unsigned phaseIdx)
STATIC_OR_DEVICE Scalar diffusionCoefficient (unsigned compIdx, unsigned phaseIdx, unsigned regionIdx=0)
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)
template<class FluidState , class LhsEval = typename FluidState::Scalar, class ParamCacheEval = LhsEval>
STATIC_OR_DEVICE LhsEval diffusionCoefficient (const FluidState &fluidState, const ParameterCache< ParamCacheEval > ¶mCache, unsigned phaseIdx, unsigned compIdx)
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 ()
static std::string_view phaseName (unsigned)
Return the human readable name of a fluid phase.
static bool isLiquid (unsigned)
Return whether a phase is liquid.
static bool isIdealMixture (unsigned)
Returns true if and only if a fluid phase is assumed to be an ideal mixture.
static bool isCompressible (unsigned)
Returns true if and only if a fluid phase is assumed to be compressible.
static bool isIdealGas (unsigned)
Returns true if and only if a fluid phase is assumed to be an ideal gas.
static std::string_view componentName (unsigned)
Return the human readable name of a component.
static Scalar molarMass (unsigned)
Return the molar mass of a component in [kg/mol].
static Scalar acentricFactor (unsigned)
Return the acetntric factor of a component.
static void init ()
Initialize the fluid system's static parameters.
template<class FluidState , class LhsEval = typename FluidState::Scalar, class ParamCache >
static LhsEval density (const FluidState &, const ParamCache &, unsigned)
Calculate the density [kg/m^3] of a fluid phase.
template<class FluidState , class LhsEval = typename FluidState::Scalar, class ParamCache >
static LhsEval fugacityCoefficient (const FluidState &, ParamCache &, unsigned, unsigned)
Calculate the fugacity coefficient [Pa] of an individual component in a fluid phase.
template<class FluidState , class LhsEval = typename FluidState::Scalar, class ParamCache >
static LhsEval viscosity (const FluidState &, ParamCache &, unsigned)
Calculate the dynamic viscosity of a fluid phase [Pa*s].
template<class FluidState , class LhsEval = typename FluidState::Scalar, class ParamCache >
static LhsEval diffusionCoefficient (const FluidState &, ParamCache &, unsigned, unsigned)
Calculate the binary molecular diffusion coefficient for a component in a fluid phase [mol^2 * s / (kg*m^3)].
template<class FluidState , class LhsEval = typename FluidState::Scalar, class ParamCache >
static LhsEval enthalpy (const FluidState &, ParamCache &, unsigned)
Given a phase's composition, temperature, pressure and density, calculate its specific enthalpy [J/kg].
template<class FluidState , class LhsEval = typename FluidState::Scalar, class ParamCache >
static LhsEval thermalConductivity (const FluidState &, ParamCache &, unsigned)
Thermal conductivity of a fluid phase [W/(m K)].
template<class FluidState , class LhsEval = typename FluidState::Scalar, class ParamCache >
static LhsEval heatCapacity (const FluidState &, ParamCache &, unsigned)
Specific isobaric heat capacity of a fluid phase [J/kg].
static bool phaseIsActive (unsigned)
Returns whether a fluid phase is active.