00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00027 #ifndef OPM_ECL_STONE1_MATERIAL_PARAMS_HPP
00028 #define OPM_ECL_STONE1_MATERIAL_PARAMS_HPP
00029
00030 #include <opm/material/common/EnsureFinalized.hpp>
00031
00032 #include <type_traits>
00033 #include <cassert>
00034 #include <memory>
00035
00036 namespace Opm {
00037
00046 template<class Traits, class GasOilLawT, class OilWaterLawT>
00047 class EclStone1MaterialParams : public EnsureFinalized
00048 {
00049 typedef typename Traits::Scalar Scalar;
00050 enum { numPhases = 3 };
00051
00052 public:
00053 typedef typename GasOilLawT::Params GasOilParams;
00054 typedef typename OilWaterLawT::Params OilWaterParams;
00055
00059 EclStone1MaterialParams()
00060 {
00061 }
00062
00066 void finalize()
00067 {
00068 krocw_ = OilWaterLawT::twoPhaseSatKrn(*oilWaterParams_, Swl_);
00069
00070 EnsureFinalized :: finalize();
00071 }
00072
00076 const GasOilParams& gasOilParams() const
00077 { EnsureFinalized::check(); return *gasOilParams_; }
00078
00082 GasOilParams& gasOilParams()
00083 { EnsureFinalized::check(); return *gasOilParams_; }
00084
00088 void setGasOilParams(std::shared_ptr<GasOilParams> val)
00089 { gasOilParams_ = val; }
00090
00094 const OilWaterParams& oilWaterParams() const
00095 { EnsureFinalized::check(); return *oilWaterParams_; }
00096
00100 OilWaterParams& oilWaterParams()
00101 { EnsureFinalized::check(); return *oilWaterParams_; }
00102
00106 void setOilWaterParams(std::shared_ptr<OilWaterParams> val)
00107 { oilWaterParams_ = val; }
00108
00120 void setSwl(Scalar val)
00121 { Swl_ = val; }
00122
00126 Scalar Swl() const
00127 { EnsureFinalized::check(); return Swl_; }
00128
00133 Scalar krocw() const
00134 { EnsureFinalized::check(); return krocw_; }
00135
00139 void setEta(Scalar val)
00140 { eta_ = val; }
00141
00145 Scalar eta() const
00146 { EnsureFinalized::check(); return eta_; }
00147
00148 private:
00149 std::shared_ptr<GasOilParams> gasOilParams_;
00150 std::shared_ptr<OilWaterParams> oilWaterParams_;
00151
00152 Scalar Swl_;
00153 Scalar eta_;
00154 Scalar krocw_;
00155 };
00156 }
00157
00158 #endif