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_EPS_TWO_PHASE_LAW_PARAMS_HPP
00028 #define OPM_ECL_EPS_TWO_PHASE_LAW_PARAMS_HPP
00029
00030 #include "EclEpsConfig.hpp"
00031 #include "EclEpsScalingPoints.hpp"
00032
00033 #if HAVE_OPM_PARSER
00034 #include <opm/parser/eclipse/Deck/Deck.hpp>
00035 #include <opm/parser/eclipse/EclipseState/EclipseState.hpp>
00036 #endif
00037
00038 #include <string>
00039 #include <memory>
00040 #include <cassert>
00041 #include <algorithm>
00042
00043 #include <opm/material/common/EnsureFinalized.hpp>
00044
00045 namespace Opm {
00052 template <class EffLawT>
00053 class EclEpsTwoPhaseLawParams : public EnsureFinalized
00054 {
00055 typedef typename EffLawT::Params EffLawParams;
00056 typedef typename EffLawParams::Traits::Scalar Scalar;
00057
00058 public:
00059 typedef typename EffLawParams::Traits Traits;
00060 typedef Opm::EclEpsScalingPoints<Scalar> ScalingPoints;
00061
00062 EclEpsTwoPhaseLawParams()
00063 {
00064 }
00065
00070 void finalize()
00071 {
00072 #ifndef NDEBUG
00073 assert(config_);
00074 if (config_->enableSatScaling()) {
00075 assert(unscaledPoints_);
00076 }
00077 assert(effectiveLawParams_);
00078 #endif
00079 EnsureFinalized :: finalize();
00080 }
00081
00085 void setConfig(std::shared_ptr<EclEpsConfig> value)
00086 { config_ = value; }
00087
00091 const EclEpsConfig& config() const
00092 { return *config_; }
00093
00097 void setUnscaledPoints(std::shared_ptr<ScalingPoints> value)
00098 { unscaledPoints_ = value; }
00099
00103 const ScalingPoints& unscaledPoints() const
00104 { return *unscaledPoints_; }
00105
00109 void setScaledPoints(std::shared_ptr<ScalingPoints> value)
00110 { scaledPoints_ = *value; }
00111
00115 const ScalingPoints& scaledPoints() const
00116 { return scaledPoints_; }
00117
00121 ScalingPoints& scaledPoints()
00122 { return scaledPoints_; }
00123
00127 void setEffectiveLawParams(std::shared_ptr<EffLawParams> value)
00128 { effectiveLawParams_ = value; }
00129
00133 const EffLawParams& effectiveLawParams() const
00134 { return *effectiveLawParams_; }
00135
00136 private:
00137 std::shared_ptr<EffLawParams> effectiveLawParams_;
00138
00139 std::shared_ptr<EclEpsConfig> config_;
00140 std::shared_ptr<ScalingPoints> unscaledPoints_;
00141 ScalingPoints scaledPoints_;
00142 };
00143
00144 }
00145
00146 #endif