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_DNAPL_HPP
00028 #define OPM_DNAPL_HPP
00029
00030 #include "Component.hpp"
00031
00032 #include <opm/material/IdealGas.hpp>
00033 #include <opm/material/common/MathToolbox.hpp>
00034
00035 namespace Opm {
00046 template <class Scalar>
00047 class DNAPL : public Component<Scalar, DNAPL<Scalar> >
00048 {
00049 public:
00053 static const char* name()
00054 { return "DNAPL"; }
00055
00059 static bool gasIsIdeal()
00060 { return true; }
00061
00065 static bool gasIsCompressible()
00066 { return true; }
00067
00071 static bool liquidIsCompressible()
00072 { return false; }
00073
00077 static Scalar molarMass()
00078 {
00079 return 131.39e-3;
00080 }
00081
00088 template <class Evaluation>
00089 static Evaluation vaporPressure(const Evaluation& )
00090 {
00091 return 3900;
00092 }
00093
00100 template <class Evaluation>
00101 static Evaluation gasDensity(const Evaluation& temperature, const Evaluation& pressure)
00102 {
00103 return IdealGas<Scalar>::density(Evaluation(molarMass()),
00104 temperature,
00105 pressure);
00106 }
00107
00114 template <class Evaluation>
00115 static Evaluation liquidDensity(const Evaluation& , const Evaluation& )
00116 {
00117 return 1460.0;
00118 }
00119
00126 template <class Evaluation>
00127 static Evaluation liquidViscosity(const Evaluation& , const Evaluation& )
00128 {
00129 return 5.7e-4;
00130 }
00131
00138 template <class Evaluation>
00139 static Evaluation liquidEnthalpy(const Evaluation& temperature, const Evaluation& )
00140 {
00141 return 120.0/molarMass() * temperature;
00142 }
00143
00152 template <class Evaluation>
00153 static Evaluation liquidThermalConductivity(const Evaluation& , const Evaluation& )
00154 {
00155 return 0.3;
00156 }
00157 };
00158
00159 }
00160
00161 #endif