thermalconductivityjohansen.hh 6.84 KB
 Thomas Fetzer committed Apr 13, 2015 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20  // -*- 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  21  * \ingroup Fluidmatrixinteractions  Thomas Fetzer committed Apr 13, 2015 22 23 24 25 26  * \brief Relation for the saturation-dependent effective thermal conductivity */ #ifndef THERMALCONDUCTIVITY_JOHANSEN_HH #define THERMALCONDUCTIVITY_JOHANSEN_HH  Timo Koch committed Dec 03, 2017 27 #include  Bernd Flemisch committed Dec 22, 2017 28 #include  Thomas Fetzer committed Apr 13, 2015 29 30 31 32 33 34 35 36 37 38 39  namespace Dumux { struct JohansenIndices { static const int wPhaseIdx = 0; static const int nPhaseIdx = 1; }; /*!  40  * \ingroup Fluidmatrixinteractions  Thomas Fetzer committed Apr 13, 2015 41 42  * \brief Relation for the saturation-dependent effective thermal conductivity *  larissa committed Jan 07, 2016 43  * The Johansen method (Johansen 1975 \cite johansen1977 ) computes the thermal conductivity of dry and the  Thomas Fetzer committed Apr 13, 2015 44 45 46 47 48  * wet soil material and uses a root function of the wetting saturation to compute the * 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:  Alexander Kissinger committed Sep 08, 2015 49  * \f$\mathrm{[  Thomas Fetzer committed Apr 13, 2015 50  \lambda_\text{eff} = \lambda_{\text{dry}} + \sqrt{(S_w)} \left(\lambda_\text{wet} - \lambda_\text{dry}\right)  Alexander Kissinger committed Sep 08, 2015 51  }\f$  Thomas Fetzer committed Apr 13, 2015 52 53  * * with  Alexander Kissinger committed Sep 08, 2015 54  * \f$\mathrm{  Thomas Fetzer committed Apr 13, 2015 55  \lambda_\text{wet} = \lambda_{solid}^{\left(1-\phi\right)}*\lambda_w^\phi  Alexander Kissinger committed Sep 08, 2015 56  }\f$  Thomas Fetzer committed Apr 13, 2015 57 58  * and the semi-empirical relation *  Alexander Kissinger committed Sep 08, 2015 59  * \f$\mathrm{  Thomas Fetzer committed Apr 13, 2015 60  \lambda_\text{dry} = \frac{0.135*\rho_s*\phi + 64.7}{\rho_s - 0.947 \rho_s*\phi}.  Alexander Kissinger committed Sep 08, 2015 61  }\f$  Thomas Fetzer committed Apr 13, 2015 62  *  larissa committed Jan 07, 2016 63  * Source: Phdthesis (Johansen1975) Johansen, O. Thermal conductivity of soils Norw. Univ. of Sci. Technol., Trondheim, Norway, 1975 \cite johansen1977  Thomas Fetzer committed Apr 13, 2015 64 65 66 67 68 69  */ template class ThermalConductivityJohansen { public: /*!  larissa committed Jan 07, 2016 70  * \brief Returns the effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Johansen (1975) \cite johansen1977 .  Thomas Fetzer committed Apr 13, 2015 71 72 73 74 75  * * \param volVars volume variables * \param spatialParams spatial parameters * \param element element (to be passed to spatialParams) * \param fvGeometry fvGeometry (to be passed to spatialParams)  Timo Koch committed Jan 31, 2017 76  * \param scv the sub control volume (to be passed to spatialParams)  Thomas Fetzer committed Apr 13, 2015 77  *  larissa committed Jan 07, 2016 78  * \return Effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Johansen (1975) \cite johansen1977
 Thomas Fetzer committed Apr 13, 2015 79 80 81 82 83 84 85 86  * * This formulation is semi-empirical and fitted to quartz sand. * 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 Kersten number.
* Johansen, O. 1975. Thermal conductivity of soils. Ph.D. diss. Norwegian Univ. * of Sci. and Technol., Trondheim. (Draft Transl. 637. 1977. U.S. Army  larissa committed Jan 07, 2016 87  * Corps of Eng., Cold Regions Res. and Eng. Lab., Hanover, NH.) \cite johansen1977  Thomas Fetzer committed Apr 13, 2015 88  */  Timo Koch committed Jan 31, 2017 89  template  Thomas Fetzer committed Apr 13, 2015 90 91 92 93  static Scalar effectiveThermalConductivity(const VolumeVariables& volVars, const SpatialParams& spatialParams, const Element& element, const FVGeometry& fvGeometry,  Timo Koch committed Jan 31, 2017 94  const SubControlVolume& scv)  Thomas Fetzer committed Apr 13, 2015 95  {  Timo Koch committed Jan 31, 2017 96 97 98 99 100 101  const Scalar sw = volVars.saturation(Indices::wPhaseIdx); const Scalar lambdaW = volVars.fluidThermalConductivity(Indices::wPhaseIdx); const Scalar lambdaN = volVars.fluidThermalConductivity(Indices::nPhaseIdx); const Scalar lambdaSolid = volVars.solidThermalConductivity(); const Scalar porosity = volVars.porosity(); const Scalar rhoSolid = volVars.solidDensity();  Thomas Fetzer committed Apr 13, 2015 102 103 104 105 106  return effectiveThermalConductivity(sw, lambdaW, lambdaN, lambdaSolid, porosity, rhoSolid); } /*!  larissa committed Jan 07, 2016 107  * \brief Returns the effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Johansen (1975) \cite johansen1977 .  Thomas Fetzer committed Apr 13, 2015 108  *  Thomas Fetzer committed Jul 09, 2015 109  * \param Sw The saturation of the wetting phase  Christoph Grüninger committed Nov 03, 2015 110 111 112  * \param lambdaW The thermal conductivity of the wetting phase in \f$\mathrm{[W/(m K)]}\f$ * \param lambdaN The thermal conductivity of the non-wetting phase in \f$\mathrm{[W/(m K)]}\f$ * \param lambdaSolid The thermal conductivity of the solid phase in \f$\mathrm{[W/(m K)]}\f$  Thomas Fetzer committed Apr 13, 2015 113  * \param porosity The porosity  Christoph Grüninger committed Nov 03, 2015 114  * \param rhoSolid The density of solid phase in \f$\mathrm{[kg/m^3]}\f$  Thomas Fetzer committed Apr 13, 2015 115  *  larissa committed Jan 07, 2016 116  * \return Effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Johansen (1975) \cite johansen1977  Thomas Fetzer committed Apr 13, 2015 117 118 119 120 121 122 123 124  */ static Scalar effectiveThermalConductivity(const Scalar Sw, const Scalar lambdaW, const Scalar lambdaN, const Scalar lambdaSolid, const Scalar porosity, const Scalar rhoSolid) {  Katharina Heck committed Apr 06, 2017 125 126  using std::max; const Scalar satW = max(0.0, Sw);  Thomas Fetzer committed Apr 13, 2015 127 128 129  const Scalar kappa = 15.6; // fitted to medium quartz sand const Scalar rhoBulk = rhoSolid*porosity;  Christoph Grüninger committed Oct 06, 2016 130  // lambdaSolid^(1-porosity) * lambdaW^porosity =  Katharina Heck committed Apr 06, 2017 131 132 133  using std::pow; const Scalar lSat = lambdaSolid * pow(lambdaW / lambdaSolid, porosity);  Thomas Fetzer committed Apr 13, 2015 134 135 136 137 138 139 140 141  const Scalar lDry = (0.135*rhoBulk + 64.7)/(rhoSolid - 0.947*rhoBulk); const Scalar Ke = (kappa*satW)/(1+(kappa-1)*satW);// Kersten number, equation 13 return lDry + Ke * (lSat - lDry); // equation 14 } }; } #endif