thermalconductivitysomerton.hh 5.68 KB
 Klaus Mosthaf committed Jan 24, 2013 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 // -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- // vi: set et ts=4 sw=4 sts=4: /***************************************************************************** * See the file COPYING for full copying permissions. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * *****************************************************************************/ /*! * \file * * \brief Relation for the saturation-dependent effective thermal conductivity */ #ifndef THERMALCONDUCTIVITY_SOMERTON_HH #define THERMALCONDUCTIVITY_SOMERTON_HH #include namespace Dumux {  Bernd Flemisch committed Sep 05, 2014 31   Thomas Fetzer committed Mar 23, 2015 32 struct SomertonIndices  Bernd Flemisch committed Sep 05, 2014 33 34 35 36 37 { static const int wPhaseIdx = 0; static const int nPhaseIdx = 1; };  Klaus Mosthaf committed Jan 24, 2013 38 39 40 41 42 43 44 /*! * \ingroup fluidmatrixinteractionslaws * * \brief Relation for the saturation-dependent effective thermal conductivity * * The Somerton method computes the thermal conductivity of dry and the wet soil material * and uses a root function of the wetting saturation to compute the  Klaus Mosthaf committed Mar 06, 2013 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63  * effective thermal conductivity for a two-phase fluidsystem. The individual thermal * conductivities are calculated as geometric mean of the thermal conductivity of the porous * material and of the respective fluid phase. * * The material law is: * \f[ \lambda_\text{eff} = \lambda_{\text{dry}} + \sqrt{(S_w)} \left(\lambda_\text{wet} - \lambda_\text{dry}\right) \f] * * with * \f[ \lambda_\text{wet} = \lambda_{solid}^{\left(1-\phi\right)}*\lambda_w^\phi \f] * and * * \f[ \lambda_\text{dry} = \lambda_{solid}^{\left(1-\phi\right)}*\lambda_n^\phi. \f] *  Klaus Mosthaf committed Jan 24, 2013 64  */  Thomas Fetzer committed Mar 23, 2015 65 template  Klaus Mosthaf committed Jan 24, 2013 66 67 68 69 class ThermalConductivitySomerton { public: /*!  Bernd Flemisch committed Sep 05, 2014 70  * \brief effective thermal conductivity \f$[W/(m K)]\f$ after Somerton (1974)  Klaus Mosthaf committed Jan 24, 2013 71  *  Bernd Flemisch committed Sep 05, 2014 72 73 74 75 76  * \param volVars volume variables * \param spatialParams spatial parameters * \param element element (to be passed to spatialParams) * \param fvGeometry fvGeometry (to be passed to spatialParams) * \param scvIdx scvIdx (to be passed to spatialParams)  Klaus Mosthaf committed Jan 24, 2013 77  *  Bernd Flemisch committed Sep 05, 2014 78  * \return effective thermal conductivity \f$[W/(m K)]\f$ after Somerton (1974)  Klaus Mosthaf committed Mar 06, 2013 79 80 81 82 83 84  * * This gives an interpolation of the effective thermal conductivities of a porous medium * filled with the non-wetting phase and a porous medium filled with the wetting phase. * These two effective conductivities are computed as geometric mean of the solid and the * fluid conductivities and interpolated with the square root of the wetting saturation. * See f.e. Ebigbo, A.: Thermal Effects of Carbon Dioxide Sequestration in the Subsurface, Diploma thesis.  Klaus Mosthaf committed Jan 24, 2013 85  */  Bernd Flemisch committed Sep 05, 2014 86 87 88 89 90 91 92 93  template static Scalar effectiveThermalConductivity(const VolumeVariables& volVars, const SpatialParams& spatialParams, const Element& element, const FVGeometry& fvGeometry, int scvIdx) { Scalar sw = volVars.saturation(Indices::wPhaseIdx);  Bernd Flemisch committed Jan 16, 2015 94 95 96  Scalar lambdaW = volVars.fluidThermalConductivity(Indices::wPhaseIdx); Scalar lambdaN = volVars.fluidThermalConductivity(Indices::nPhaseIdx); Scalar lambdaSolid = volVars.solidThermalConductivity();  Bernd Flemisch committed Sep 05, 2014 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112  Scalar porosity = volVars.porosity(); return effectiveThermalConductivity(sw, lambdaW, lambdaN, lambdaSolid, porosity); } /*! * \brief effective thermal conductivity \f$[W/(m K)]\f$ after Somerton (1974) * * \param sw The saturation of the wetting phase * \param lambdaW the thermal conductivity of the wetting phase * \param lambdaN the thermal conductivity of the non-wetting phase * \param lambdaSolid the thermal conductivity of the solid phase * \param porosity The porosity * * \return effective thermal conductivity \f$[W/(m K)]\f$ after Somerton (1974) */  Bernd Flemisch committed May 29, 2013 113  static Scalar effectiveThermalConductivity(const Scalar sw,  Klaus Mosthaf committed Jan 24, 2013 114  const Scalar lambdaW,  Bernd Flemisch committed Feb 26, 2013 115  const Scalar lambdaN,  Klaus Mosthaf committed Jan 24, 2013 116  const Scalar lambdaSolid,  Thomas Fetzer committed Mar 23, 2015 117 118  const Scalar porosity, const Scalar rhoSolid = 0.0 /*unused*/)  Klaus Mosthaf committed Jan 24, 2013 119  {  Bernd Flemisch committed May 29, 2013 120  const Scalar satW = std::max(0.0, sw);  Bernd Flemisch committed Sep 05, 2014 121  // geometric mean  Klaus Mosthaf committed Jan 24, 2013 122  const Scalar lSat = std::pow(lambdaSolid, (1.0 - porosity)) * std::pow(lambdaW, porosity);  Klaus Mosthaf committed Mar 06, 2013 123  const Scalar lDry = std::pow(lambdaSolid, (1.0 - porosity)) * std::pow(lambdaN, porosity);  Klaus Mosthaf committed Jan 24, 2013 124   Klaus Mosthaf committed Mar 06, 2013 125  return lDry + std::sqrt(satW) * (lSat - lDry);  Klaus Mosthaf committed Jan 24, 2013 126 127 128 129  } }; } #endif