00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00027 #ifndef VAN_GENUCHTEN_PARAMS_HPP
00028 #define VAN_GENUCHTEN_PARAMS_HPP
00029
00030 #include <cassert>
00031
00032 #include <opm/material/common/EnsureFinalized.hpp>
00033
00034 namespace Opm {
00045 template<class TraitsT>
00046 class VanGenuchtenParams : public EnsureFinalized
00047 {
00048 typedef typename TraitsT::Scalar Scalar;
00049
00050 public:
00051 using EnsureFinalized :: finalize;
00052
00053 typedef TraitsT Traits;
00054
00055 VanGenuchtenParams()
00056 {
00057 }
00058
00059 VanGenuchtenParams(Scalar alphaParam, Scalar nParam)
00060 {
00061 setVgAlpha(alphaParam);
00062 setVgN(nParam);
00063 finalize();
00064 }
00065
00070 Scalar vgAlpha() const
00071 { EnsureFinalized::check(); return vgAlpha_; }
00072
00077 void setVgAlpha(Scalar v)
00078 { vgAlpha_ = v; }
00079
00084 Scalar vgM() const
00085 { EnsureFinalized::check(); return vgM_; }
00086
00093 void setVgM(Scalar m)
00094 { vgM_ = m; vgN_ = 1/(1 - vgM_); }
00095
00100 Scalar vgN() const
00101 { EnsureFinalized::check(); return vgN_; }
00102
00109 void setVgN(Scalar n)
00110 { vgN_ = n; vgM_ = 1 - 1/vgN_; }
00111
00112 private:
00113 Scalar vgAlpha_;
00114 Scalar vgM_;
00115 Scalar vgN_;
00116 };
00117 }
00118
00119 #endif