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_LINEAR_MATERIAL_PARAMS_HPP
00028 #define OPM_LINEAR_MATERIAL_PARAMS_HPP
00029
00030 #include <cassert>
00031
00032 #include <opm/material/common/EnsureFinalized.hpp>
00033
00034 namespace Opm {
00035
00040 template<class TraitsT>
00041 class LinearMaterialParams : public EnsureFinalized
00042 {
00043 enum { numPhases = TraitsT::numPhases };
00044
00045 typedef typename TraitsT::Scalar Scalar;
00046
00047 public:
00048 using EnsureFinalized :: finalize;
00049
00050 typedef TraitsT Traits;
00051
00057 LinearMaterialParams()
00058 {
00059 for (unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
00060 setPcMinSat(phaseIdx, 0.0);
00061 setPcMaxSat(phaseIdx, 0.0);
00062 }
00063 }
00064
00070 Scalar pcMinSat(unsigned phaseIdx) const
00071 { EnsureFinalized::check();return pcMinSat_[phaseIdx]; }
00072
00078 void setPcMinSat(unsigned phaseIdx, Scalar val)
00079 { pcMinSat_[phaseIdx] = val; }
00080
00086 Scalar pcMaxSat(unsigned phaseIdx) const
00087 { EnsureFinalized::check(); return pcMaxSat_[phaseIdx]; }
00088
00094 void setPcMaxSat(unsigned phaseIdx, Scalar val)
00095 { pcMaxSat_[phaseIdx] = val; }
00096
00097 private:
00098 Scalar pcMaxSat_[numPhases];
00099 Scalar pcMinSat_[numPhases];
00100 };
00101 }
00102
00103 #endif