00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef OPM_BLACKOILMODELENUMS_HEADER_INCLUDED
00021 #define OPM_BLACKOILMODELENUMS_HEADER_INCLUDED
00022
00023 #include <opm/core/props/BlackoilPhases.hpp>
00024
00025 #include <array>
00026 #include <vector>
00027
00028 namespace Opm
00029 {
00030
00031 constexpr const auto Water = BlackoilPhases::Aqua;
00032 constexpr const auto Oil = BlackoilPhases::Liquid;
00033 constexpr const auto Gas = BlackoilPhases::Vapour;
00034 constexpr const auto MaxNumPhases = BlackoilPhases::MaxNumPhases;
00035
00036 enum PrimalVariables {
00037 Sg = 0,
00038 RS = 1,
00039 RV = 2
00040 };
00041
00042 enum CanonicalVariablePositions {
00043 Pressure = 0,
00044 Sw = 1,
00045 Xvar = 2,
00046 Qs = 3,
00047 Bhp = 4,
00048 Next
00049 };
00050
00051 struct FIPDataEnums {
00052
00053 enum FipId {
00054 FIP_AQUA = Opm::Water,
00055 FIP_LIQUID = Opm::Oil,
00056 FIP_VAPOUR = Opm::Gas,
00057 FIP_DISSOLVED_GAS = 3,
00058 FIP_VAPORIZED_OIL = 4,
00059 FIP_PV = 5,
00060 FIP_WEIGHTED_PRESSURE = 6
00061 };
00062
00063 static const int fipValues = FIP_WEIGHTED_PRESSURE + 1 ;
00064 };
00065
00066 class FIPData : public FIPDataEnums
00067 {
00068 public:
00069 typedef std::vector<double> VectorType;
00070
00071 using FIPDataEnums :: FipId;
00072 using FIPDataEnums :: fipValues ;
00073 std::array< VectorType, fipValues> fip;
00074
00075
00076 FIPData() {}
00077
00078
00079 template <class V>
00080 explicit FIPData( const std::array< V, fipValues>& otherFip )
00081 {
00082
00083 for( int i=0; i<fipValues; ++i ) {
00084 fip[ i ] = VectorType(otherFip[ i ].data(), otherFip[ i ].data() + otherFip[ i ].size() );
00085 }
00086 }
00087 };
00088
00089 }
00090
00091 #endif // OPM_BLACKOILMODELENUMS_HEADER_INCLUDED