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_THREE_PHASE_PARKER_VAN_GENUCHTEN_PARAMS_HPP
00028 #define OPM_THREE_PHASE_PARKER_VAN_GENUCHTEN_PARAMS_HPP
00029
00030 #include <opm/common/utility/platform_dependent/disable_warnings.h>
00031 #include <dune/common/fvector.hh>
00032 #include <opm/common/utility/platform_dependent/reenable_warnings.h>
00033
00034 #include <opm/common/Valgrind.hpp>
00035
00036 #include <opm/common/ErrorMacros.hpp>
00037 #include <opm/common/Exceptions.hpp>
00038
00039 #include <opm/material/common/EnsureFinalized.hpp>
00040
00041 #include <cassert>
00042
00043 namespace Opm {
00054 template<class TraitsT>
00055 class ThreePhaseParkerVanGenuchtenParams : public EnsureFinalized
00056 {
00057 public:
00058 using EnsureFinalized :: finalize;
00059
00060 typedef TraitsT Traits;
00061 typedef typename Traits::Scalar Scalar;
00062
00063 ThreePhaseParkerVanGenuchtenParams()
00064 {
00065 betaNW_ = 1.0;
00066 betaGN_ = 1.0;
00067 }
00068
00073 Scalar vgAlpha() const
00074 { EnsureFinalized::check(); return vgAlpha_; }
00075
00080 void setVgAlpha(Scalar v)
00081 { vgAlpha_ = v; }
00082
00087 Scalar vgM() const
00088 { EnsureFinalized::check(); return vgM_; }
00089
00096 void setVgM(Scalar m)
00097 { vgM_ = m; vgN_ = 1/(1 - vgM_); }
00098
00103 Scalar vgN() const
00104 { EnsureFinalized::check(); return vgN_; }
00105
00112 void setVgN(Scalar n)
00113 { vgN_ = n; vgM_ = 1 - 1/vgN_; }
00114
00118 Scalar Swr() const
00119 { EnsureFinalized::check(); return Swr_; }
00120
00124 void setSwr(Scalar input)
00125 { Swr_ = input; }
00126
00130 Scalar Snr() const
00131 { EnsureFinalized::check(); return Snr_; }
00132
00136 void setSnr(Scalar input)
00137 { Snr_ = input; }
00138
00142 Scalar Sgr() const
00143 { EnsureFinalized::check(); return Sgr_; }
00144
00148 void setSgr(Scalar input)
00149 { Sgr_ = input; }
00150
00151 Scalar Swrx() const
00152 { EnsureFinalized::check(); return Swrx_; }
00153
00157 void setSwrx(Scalar input)
00158 { Swrx_ = input; }
00159
00163 void setBetaNW(Scalar input)
00164 { betaNW_ = input; }
00165
00166 void setBetaGN(Scalar input)
00167 { betaGN_ = input; }
00168
00172 Scalar betaNW() const
00173 { EnsureFinalized::check(); return betaNW_; }
00174
00175 Scalar betaGN() const
00176 { EnsureFinalized::check(); return betaGN_; }
00177
00181 void setkrRegardsSnr(bool input)
00182 { krRegardsSnr_ = input; }
00186 bool krRegardsSnr() const
00187 { EnsureFinalized::check(); return krRegardsSnr_; }
00188
00189 void checkDefined() const
00190 {
00191 Valgrind::CheckDefined(vgAlpha_);
00192 Valgrind::CheckDefined(vgM_);
00193 Valgrind::CheckDefined(vgN_);
00194 Valgrind::CheckDefined(Swr_);
00195 Valgrind::CheckDefined(Snr_);
00196 Valgrind::CheckDefined(Sgr_);
00197 Valgrind::CheckDefined(Swrx_);
00198 Valgrind::CheckDefined(betaNW_);
00199 Valgrind::CheckDefined(betaGN_);
00200 Valgrind::CheckDefined(krRegardsSnr_);
00201 }
00202
00203 private:
00204 Scalar vgAlpha_;
00205 Scalar vgM_;
00206 Scalar vgN_;
00207 Scalar Swr_;
00208 Scalar Snr_;
00209 Scalar Sgr_;
00210 Scalar Swrx_;
00211
00212 Scalar betaNW_;
00213 Scalar betaGN_;
00214
00215 bool krRegardsSnr_ ;
00216 };
00217 }
00218
00219 #endif