Add phaseUsage() method to BlackoilPropertiesInterface.

Also implement method in derived classes.
This commit is contained in:
Atgeirr Flø Rasmussen
2013-05-13 16:20:00 +02:00
parent 40fe2abf04
commit d312f760e1
7 changed files with 52 additions and 0 deletions

View File

@@ -83,6 +83,12 @@ namespace Opm
return pvt_.numPhases();
}
/// \return Object describing the active phases.
PhaseUsage BlackoilPropertiesBasic::phaseUsage() const
{
return pvt_.phaseUsage();
}
/// \param[in] n Number of data points.
/// \param[in] p Array of n pressure values.
/// \param[in] z Array of nP surface volume values.

View File

@@ -73,6 +73,9 @@ namespace Opm
/// \return P, the number of phases (also the number of components).
virtual int numPhases() const;
/// \return Object describing the active phases.
virtual PhaseUsage phaseUsage() const;
/// \param[in] n Number of data points.
/// \param[in] p Array of n pressure values.
/// \param[in] z Array of nP surface volume values.

View File

@@ -147,6 +147,12 @@ namespace Opm
return pvt_.numPhases();
}
/// \return Object describing the active phases.
PhaseUsage BlackoilPropertiesFromDeck::phaseUsage() const
{
return pvt_.phaseUsage();
}
/// \param[in] n Number of data points.
/// \param[in] p Array of n pressure values.
/// \param[in] z Array of nP surface volume values.

View File

@@ -89,6 +89,9 @@ namespace Opm
/// \return P, the number of phases (also the number of components).
virtual int numPhases() const;
/// \return Object describing the active phases.
virtual PhaseUsage phaseUsage() const;
/// \param[in] n Number of data points.
/// \param[in] p Array of n pressure values.
/// \param[in] z Array of nP surface volume values.

View File

@@ -23,6 +23,8 @@
namespace Opm
{
class PhaseUsage;
/// Abstract base class for blackoil fluid and reservoir properties.
/// Supports variable number of spatial dimensions, called D.
/// Supports variable number of phases, but assumes that
@@ -59,6 +61,9 @@ namespace Opm
/// \return P, the number of phases (also the number of components).
virtual int numPhases() const = 0;
/// \return Object describing the active phases.
virtual PhaseUsage phaseUsage() const = 0;
/// \param[in] n Number of data points.
/// \param[in] p Array of n pressure values.
/// \param[in] z Array of nP surface volume values.

View File

@@ -85,6 +85,30 @@ namespace Opm
return density_.size();
}
PhaseUsage PvtPropertiesBasic::phaseUsage() const
{
PhaseUsage pu;
pu.num_phases = numPhases();
if (pu.num_phases == 2) {
// Might just as well assume water-oil.
pu.phase_used[BlackoilPhases::Aqua] = true;
pu.phase_used[BlackoilPhases::Liquid] = true;
pu.phase_used[BlackoilPhases::Vapour] = false;
pu.phase_pos[BlackoilPhases::Aqua] = 0;
pu.phase_pos[BlackoilPhases::Liquid] = 1;
pu.phase_pos[BlackoilPhases::Vapour] = 1; // Unused.
} else {
ASSERT(pu.num_phases == 3);
pu.phase_used[BlackoilPhases::Aqua] = true;
pu.phase_used[BlackoilPhases::Liquid] = true;
pu.phase_used[BlackoilPhases::Vapour] = true;
pu.phase_pos[BlackoilPhases::Aqua] = 0;
pu.phase_pos[BlackoilPhases::Liquid] = 1;
pu.phase_pos[BlackoilPhases::Vapour] = 2;
}
return pu;
}
void PvtPropertiesBasic::mu(const int n,

View File

@@ -21,6 +21,8 @@
#define OPM_PVTPROPERTIESBASIC_HEADER_INCLUDED
#include <opm/core/utility/parameters/ParameterGroup.hpp>
#include <opm/core/props/BlackoilPhases.hpp>
#include <vector>
namespace Opm
{
@@ -53,6 +55,9 @@ namespace Opm
/// Number of active phases.
int numPhases() const;
/// \return Object describing the active phases.
PhaseUsage phaseUsage() const;
/// Densities of stock components at surface conditions.
/// \return Array of size numPhases().
const double* surfaceDensities() const;