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_SPLINE_TWO_PHASE_MATERIAL_PARAMS_HPP
00028 #define OPM_SPLINE_TWO_PHASE_MATERIAL_PARAMS_HPP
00029
00030 #include <opm/material/common/Spline.hpp>
00031 #include <opm/material/common/EnsureFinalized.hpp>
00032
00033 #include <vector>
00034 #include <cassert>
00035
00036 namespace Opm {
00043 template<class TraitsT>
00044 class SplineTwoPhaseMaterialParams : public EnsureFinalized
00045 {
00046 typedef typename TraitsT::Scalar Scalar;
00047 public:
00048 using EnsureFinalized :: finalize;
00049
00050 public:
00051 typedef std::vector<Scalar> SamplePoints;
00052 typedef Opm::Spline<Scalar> Spline;
00053 typedef typename Spline::SplineType SplineType;
00054
00055 typedef TraitsT Traits;
00056
00057 SplineTwoPhaseMaterialParams()
00058 {
00059 }
00060
00066 const Spline& pcnwSpline() const
00067 { EnsureFinalized::check(); return pcwnSpline_; }
00068
00074 void setPcnwSamples(const SamplePoints& SwSamplePoints,
00075 const SamplePoints& pcnwSamplePoints,
00076 SplineType splineType = Spline::Monotonic)
00077 {
00078 assert(SwSamplePoints.size() == pcnwSamplePoints.size());
00079 pcwnSpline_.setXYContainers(SwSamplePoints, pcnwSamplePoints, splineType);
00080 }
00081
00088 const Spline& krwSpline() const
00089 { EnsureFinalized::check(); return krwSpline_; }
00090
00097 void setKrwSamples(const SamplePoints& SwSamplePoints,
00098 const SamplePoints& krwSamplePoints,
00099 SplineType splineType = Spline::Monotonic)
00100 {
00101 assert(SwSamplePoints.size() == krwSamplePoints.size());
00102 krwSpline_.setXYContainers(SwSamplePoints, krwSamplePoints, splineType);
00103 }
00104
00111 const Spline& krnSpline() const
00112 { EnsureFinalized::check(); return krnSpline_; }
00113
00120 void setKrnSamples(const SamplePoints& SwSamplePoints,
00121 const SamplePoints& krnSamplePoints,
00122 SplineType splineType = Spline::Monotonic)
00123 {
00124 assert(SwSamplePoints.size() == krnSamplePoints.size());
00125 krnSpline_.setXYContainers(SwSamplePoints, krnSamplePoints, splineType);
00126 }
00127
00128 private:
00129 Spline SwSpline_;
00130 Spline pcwnSpline_;
00131 Spline krwSpline_;
00132 Spline krnSpline_;
00133 };
00134 }
00135
00136 #endif