diff --git a/dumux/material/fluidmatrixinteractions/2p/CMakeLists.txt b/dumux/material/fluidmatrixinteractions/2p/CMakeLists.txt index 6f6255385f4bac08ca179727e6946cdd8cdfe876..d2a4aacc9616dfdca638ab2e6b651cffb0814625 100644 --- a/dumux/material/fluidmatrixinteractions/2p/CMakeLists.txt +++ b/dumux/material/fluidmatrixinteractions/2p/CMakeLists.txt @@ -1,3 +1,5 @@ +add_subdirectory(thermalconductivity) + install(FILES brookscorey.hh brookscoreyparams.hh diff --git a/dumux/material/fluidmatrixinteractions/2p/thermalconductivity/CMakeLists.txt b/dumux/material/fluidmatrixinteractions/2p/thermalconductivity/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..34760f6ec3b11689fca85b771a8d413d05ccbbb0 --- /dev/null +++ b/dumux/material/fluidmatrixinteractions/2p/thermalconductivity/CMakeLists.txt @@ -0,0 +1,5 @@ +install(FILES +johansen.hh +simplefluidlumping.hh +somerton.hh +DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/material/fluidmatrixinteractions/2p/thermalconductivity) diff --git a/dumux/material/fluidmatrixinteractions/2p/thermalconductivity/johansen.hh b/dumux/material/fluidmatrixinteractions/2p/thermalconductivity/johansen.hh new file mode 100644 index 0000000000000000000000000000000000000000..be4be1f51be2486d57579e946c98d6647cabd5cd --- /dev/null +++ b/dumux/material/fluidmatrixinteractions/2p/thermalconductivity/johansen.hh @@ -0,0 +1,129 @@ + // -*- 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 3 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 <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * \ingroup Fluidmatrixinteractions + * \brief Relation for the saturation-dependent effective thermal conductivity + */ +#ifndef DUMUX_MATERIAL_FLUIDMATRIX_THERMALCONDUCTIVITY_JOHANSEN_HH +#define DUMUX_MATERIAL_FLUIDMATRIX_THERMALCONDUCTIVITY_JOHANSEN_HH + +#include <cmath> +#include <algorithm> + +namespace Dumux { + +/*! + * \ingroup Fluidmatrixinteractions + * \brief Relation for the saturation-dependent effective thermal conductivity + * + * The Johansen method (Johansen 1975 \cite johansen1977 ) computes the thermal conductivity of dry and the + * 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: + * \f$\mathrm{[ + \lambda_\text{eff} = \lambda_{\text{dry}} + \sqrt{(S_w)} \left(\lambda_\text{wet} - \lambda_\text{dry}\right) + }\f$ + * + * with + * \f$\mathrm{ + \lambda_\text{wet} = \lambda_{solid}^{\left(1-\phi\right)}*\lambda_w^\phi + }\f$ + * and the semi-empirical relation + * + * \f$\mathrm{ + \lambda_\text{dry} = \frac{0.135*\rho_s*\phi + 64.7}{\rho_s - 0.947 \rho_s*\phi}. + }\f$ + * + * Source: Phdthesis (Johansen1975) Johansen, O. Thermal conductivity of soils Norw. Univ. of Sci. Technol., Trondheim, Norway, 1975 \cite johansen1977 + */ +template<class Scalar> +class ThermalConductivityJohansen +{ +public: + /*! + * \brief Returns the effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Johansen (1975) \cite johansen1977 . + * + * \param volVars volume variables + * \return Effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Johansen (1975) \cite johansen1977 <BR> + * + * 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.<br> + * Johansen, O. 1975. Thermal conductivity of soils. Ph.D. diss. Norwegian Univ. + * of Sci. and Technol., Trondheim. (Draft Transl. 637. 1977. U.S. Army + * Corps of Eng., Cold Regions Res. and Eng. Lab., Hanover, NH.) \cite johansen1977 + */ + template<class VolumeVariables> + static Scalar effectiveThermalConductivity(const VolumeVariables& volVars) + { + using FluidSystem = typename VolumeVariables::FluidSystem; + static_assert(FluidSystem::numPhases == 2, "ThermalConductivitySomerton only works for two-phase fluid systems!"); + // TODO: there should be an assertion that the indices are correct and 0 is actually the wetting phase! + + const Scalar sw = volVars.saturation(volVars.wettingPhase()); + const Scalar lambdaW = volVars.fluidThermalConductivity(volVars.wettingPhase()); + const Scalar lambdaN = volVars.fluidThermalConductivity(1-volVars.wettingPhase()); + const Scalar lambdaSolid = volVars.solidThermalConductivity(); + const Scalar porosity = volVars.porosity(); + const Scalar rhoSolid = volVars.solidDensity(); + + return effectiveThermalConductivity_(sw, lambdaW, lambdaN, lambdaSolid, porosity, rhoSolid); + } + +private: + /*! + * \brief Returns the effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Johansen (1975) \cite johansen1977 . + * + * \param Sw The saturation of the wetting phase + * \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$ + * \param porosity The porosity + * \param rhoSolid The density of solid phase in \f$\mathrm{[kg/m^3]}\f$ + * + * \return Effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Johansen (1975) \cite johansen1977 + */ + static Scalar effectiveThermalConductivity_(const Scalar Sw, + const Scalar lambdaW, + const Scalar lambdaN, + const Scalar lambdaSolid, + const Scalar porosity, + const Scalar rhoSolid) + { + using std::max; + const Scalar satW = max<Scalar>(0.0, Sw); + + const Scalar kappa = 15.6; // fitted to medium quartz sand + const Scalar rhoBulk = rhoSolid*porosity; + + using std::pow; + const Scalar lSat = lambdaSolid * pow(lambdaW / lambdaSolid, porosity); + 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 + } +}; +} // end namespace Dumux +#endif diff --git a/dumux/material/fluidmatrixinteractions/2p/thermalconductivity/simplefluidlumping.hh b/dumux/material/fluidmatrixinteractions/2p/thermalconductivity/simplefluidlumping.hh new file mode 100644 index 0000000000000000000000000000000000000000..3580e2a5a3cedfd8d4962b88875973787f7c1735 --- /dev/null +++ b/dumux/material/fluidmatrixinteractions/2p/thermalconductivity/simplefluidlumping.hh @@ -0,0 +1,84 @@ +// -*- 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 3 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 <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * \ingroup Fluidmatrixinteractions + * \brief Relation for the saturation-dependent effective thermal conductivity + */ +#ifndef DUMUX_MATERIAL_FLUIDMATRIX_THERMALCONDUCTIVITY_SIMPLE_FLUID_LUMPING_HH +#define DUMUX_MATERIAL_FLUIDMATRIX_THERMALCONDUCTIVITY_SIMPLE_FLUID_LUMPING_HH + +#include <assert.h> +#include <algorithm> + +namespace Dumux { + +/*! + * \ingroup Fluidmatrixinteractions + * \brief Relation for the saturation-dependent effective thermal conductivity + */ +template<class Scalar> +class ThermalConductivitySimpleFluidLumping +{ +public: + /*! + * \brief Effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ + * + * \param volVars volume variables + * \return effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ + */ + template<class VolumeVariables> + static Scalar effectiveThermalConductivity(const VolumeVariables& volVars) + { + using FluidSystem = typename VolumeVariables::FluidSystem; + const Scalar sw = volVars.saturation(FluidSystem::phase0Idx); + const Scalar lambdaW = volVars.fluidThermalConductivity(FluidSystem::phase0Idx); + const Scalar lambdaN = volVars.fluidThermalConductivity(FluidSystem::phase1Idx); + const Scalar lambdaSolid = volVars.solidThermalConductivity(); + const Scalar porosity = volVars.porosity(); + + return effectiveThermalConductivity_(sw, lambdaW, lambdaN, lambdaSolid, porosity); + } + +private: + /*! + * \brief Returns the effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$. + * + * \param sw The saturation of the wetting phase + * \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$ + * \param porosity The porosity + * + * \return Effective thermal conductivity of the fluid phases + */ + static Scalar effectiveThermalConductivity_(const Scalar sw, + const Scalar lambdaW, + const Scalar lambdaN, + const Scalar lambdaSolid, + const Scalar porosity) + { + // Franz Lindner / Shi & Wang 2011 + using std::max; + const Scalar satW = max<Scalar>(0.0, sw); + return porosity * ( (1. - satW) * lambdaN + satW * lambdaW ) + (1.0 - porosity) * lambdaSolid ; ; // arithmetic + } +}; +} // end namespace Dumux +#endif diff --git a/dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh b/dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh new file mode 100644 index 0000000000000000000000000000000000000000..33e0d94a02face78b6f3cf75cc99b079c28e09cd --- /dev/null +++ b/dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh @@ -0,0 +1,128 @@ +// -*- 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 3 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 <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * \ingroup Fluidmatrixinteractions + * \brief Relation for the saturation-dependent effective thermal conductivity + */ +#ifndef DUMUX_MATERIAL_FLUIDMATRIX_THERMALCONDUCTIVITY_SOMERTON_HH +#define DUMUX_MATERIAL_FLUIDMATRIX_THERMALCONDUCTIVITY_SOMERTON_HH + +#include <algorithm> +#include <cmath> + +namespace Dumux { + +/*! + * \ingroup Fluidmatrixinteractions + * \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 + * 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$\mathrm{ + \lambda_\text{eff} = \lambda_{\text{dry}} + \sqrt{(S_w)} \left(\lambda_\text{wet} - \lambda_\text{dry}\right) + }\f$ + * + * with + * \f$\mathrm{ + \lambda_\text{wet} = \lambda_{solid}^{\left(1-\phi\right)}*\lambda_w^\phi + }\f$ + * and + * + * \f$\mathrm{ + \lambda_\text{dry} = \lambda_{solid}^{\left(1-\phi\right)}*\lambda_n^\phi. + }\f$ + * + */ +template<class Scalar> +class ThermalConductivitySomerton +{ +public: + /*! + * \brief effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Somerton (1974) \cite somerton1974 <BR> + * + * \param volVars volume variables + * \return effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Somerton (1974) \cite somerton1974 <BR> + * + * 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 \cite ebigbo2005 . + */ + template<class VolumeVariables> + static Scalar effectiveThermalConductivity(const VolumeVariables& volVars) + { + using FluidSystem = typename VolumeVariables::FluidSystem; + static_assert(FluidSystem::numPhases == 2, "ThermalConductivitySomerton only works for two-phase fluid systems!"); + static_assert((FluidSystem::isGas(0) && !FluidSystem::isGas(1)) || (!FluidSystem::isGas(0) && FluidSystem::isGas(1)), + "ThermalConductivitySomerton only works if one phase is gaseous and one is liquid!"); + + constexpr int liquidPhaseIdx = FluidSystem::isGas(0) ? 1 : 0; + constexpr int gasPhaseIdx = FluidSystem::isGas(0) ? 0 : 1; + + const Scalar satLiquid = volVars.saturation(liquidPhaseIdx); + const Scalar lambdaLiquid = volVars.fluidThermalConductivity(liquidPhaseIdx); + const Scalar lambdaGas = volVars.fluidThermalConductivity(gasPhaseIdx); + const Scalar lambdaSolid = volVars.solidThermalConductivity(); + const Scalar porosity = volVars.porosity(); + + return effectiveThermalConductivity_(satLiquid, lambdaLiquid, lambdaGas, lambdaSolid, porosity); + } + +private: + /*! + * \brief effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Somerton (1974) \cite somerton1974 <BR> + * + * \param satLiquid The saturation of the liquid phase + * \param lambdaLiquid The thermal conductivity of the liquid phase in \f$\mathrm{[W/(m K)]}\f$ + * \param lambdaGas The thermal conductivity of the gas phase in \f$\mathrm{[W/(m K)]}\f$ + * \param lambdaSolid The thermal conductivity of the solid phase in \f$\mathrm{[W/(m K)]}\f$ + * \param porosity The porosity + * \param rhoSolid The density of solid phase in \f$\mathrm{[kg/m^3]}\f$ + * + * \return effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Somerton (1974) \cite somerton1974 + */ + static Scalar effectiveThermalConductivity_(const Scalar satLiquid, + const Scalar lambdaLiquid, + const Scalar lambdaGas, + const Scalar lambdaSolid, + const Scalar porosity, + const Scalar rhoSolid = 0.0 /*unused*/) + { + using std::max; + using std::pow; + using std::sqrt; + const Scalar satLiquidPhysical = max<Scalar>(0.0, satLiquid); + // geometric mean, using ls^(1-p)*l^p = ls*(l/ls)^p + const Scalar lSat = lambdaSolid * pow(lambdaLiquid / lambdaSolid, porosity); + const Scalar lDry = lambdaSolid * pow(lambdaGas / lambdaSolid, porosity); + + return lDry + sqrt(satLiquidPhysical) * (lSat - lDry); + } +}; + +} // end namespace Dumux + +#endif diff --git a/dumux/material/fluidmatrixinteractions/2p/thermalconductivityjohansen.hh b/dumux/material/fluidmatrixinteractions/2p/thermalconductivityjohansen.hh index aa52a5f3220de87e21e72dc2cd62f6c0a9ddd281..763df214aabd72fc4ba76d07f4cac793f716b489 100644 --- a/dumux/material/fluidmatrixinteractions/2p/thermalconductivityjohansen.hh +++ b/dumux/material/fluidmatrixinteractions/2p/thermalconductivityjohansen.hh @@ -1,129 +1,7 @@ - // -*- 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 3 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 <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \ingroup Fluidmatrixinteractions - * \brief Relation for the saturation-dependent effective thermal conductivity - */ #ifndef DUMUX_MATERIAL_THERMALCONDUCTIVITY_JOHANSEN_HH #define DUMUX_MATERIAL_THERMALCONDUCTIVITY_JOHANSEN_HH -#include <cmath> -#include <algorithm> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/johansen.hh> +#warning "This header has been moved (will be removed after 3.3). Use thermalconductivity/johansen.hh" -namespace Dumux { - -/*! - * \ingroup Fluidmatrixinteractions - * \brief Relation for the saturation-dependent effective thermal conductivity - * - * The Johansen method (Johansen 1975 \cite johansen1977 ) computes the thermal conductivity of dry and the - * 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: - * \f$\mathrm{[ - \lambda_\text{eff} = \lambda_{\text{dry}} + \sqrt{(S_w)} \left(\lambda_\text{wet} - \lambda_\text{dry}\right) - }\f$ - * - * with - * \f$\mathrm{ - \lambda_\text{wet} = \lambda_{solid}^{\left(1-\phi\right)}*\lambda_w^\phi - }\f$ - * and the semi-empirical relation - * - * \f$\mathrm{ - \lambda_\text{dry} = \frac{0.135*\rho_s*\phi + 64.7}{\rho_s - 0.947 \rho_s*\phi}. - }\f$ - * - * Source: Phdthesis (Johansen1975) Johansen, O. Thermal conductivity of soils Norw. Univ. of Sci. Technol., Trondheim, Norway, 1975 \cite johansen1977 - */ -template<class Scalar> -class ThermalConductivityJohansen -{ -public: - /*! - * \brief Returns the effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Johansen (1975) \cite johansen1977 . - * - * \param volVars volume variables - * \return Effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Johansen (1975) \cite johansen1977 <BR> - * - * 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.<br> - * Johansen, O. 1975. Thermal conductivity of soils. Ph.D. diss. Norwegian Univ. - * of Sci. and Technol., Trondheim. (Draft Transl. 637. 1977. U.S. Army - * Corps of Eng., Cold Regions Res. and Eng. Lab., Hanover, NH.) \cite johansen1977 - */ - template<class VolumeVariables> - static Scalar effectiveThermalConductivity(const VolumeVariables& volVars) - { - using FluidSystem = typename VolumeVariables::FluidSystem; - static_assert(FluidSystem::numPhases == 2, "ThermalConductivitySomerton only works for two-phase fluid systems!"); - // TODO: there should be an assertion that the indices are correct and 0 is actually the wetting phase! - - const Scalar sw = volVars.saturation(volVars.wettingPhase()); - const Scalar lambdaW = volVars.fluidThermalConductivity(volVars.wettingPhase()); - const Scalar lambdaN = volVars.fluidThermalConductivity(1-volVars.wettingPhase()); - const Scalar lambdaSolid = volVars.solidThermalConductivity(); - const Scalar porosity = volVars.porosity(); - const Scalar rhoSolid = volVars.solidDensity(); - - return effectiveThermalConductivity_(sw, lambdaW, lambdaN, lambdaSolid, porosity, rhoSolid); - } - -private: - /*! - * \brief Returns the effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Johansen (1975) \cite johansen1977 . - * - * \param Sw The saturation of the wetting phase - * \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$ - * \param porosity The porosity - * \param rhoSolid The density of solid phase in \f$\mathrm{[kg/m^3]}\f$ - * - * \return Effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Johansen (1975) \cite johansen1977 - */ - static Scalar effectiveThermalConductivity_(const Scalar Sw, - const Scalar lambdaW, - const Scalar lambdaN, - const Scalar lambdaSolid, - const Scalar porosity, - const Scalar rhoSolid) - { - using std::max; - const Scalar satW = max<Scalar>(0.0, Sw); - - const Scalar kappa = 15.6; // fitted to medium quartz sand - const Scalar rhoBulk = rhoSolid*porosity; - - using std::pow; - const Scalar lSat = lambdaSolid * pow(lambdaW / lambdaSolid, porosity); - 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 - } -}; -} // end namespace Dumux #endif diff --git a/dumux/material/fluidmatrixinteractions/2p/thermalconductivitysimplefluidlumping.hh b/dumux/material/fluidmatrixinteractions/2p/thermalconductivitysimplefluidlumping.hh index b24dbc2a9e2f82ecb5eab148bafc5f1ac380ab5e..da2fd545e119ad332c647e42b0b9e3cfdc8024ad 100644 --- a/dumux/material/fluidmatrixinteractions/2p/thermalconductivitysimplefluidlumping.hh +++ b/dumux/material/fluidmatrixinteractions/2p/thermalconductivitysimplefluidlumping.hh @@ -1,84 +1,7 @@ -// -*- 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 3 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 <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \ingroup Fluidmatrixinteractions - * \brief Relation for the saturation-dependent effective thermal conductivity - */ #ifndef DUMUX_MATERIAL_THERMALCONDUCTIVITY_SIMPLE_FLUID_LUMPING_HH #define DUMUX_MATERIAL_THERMALCONDUCTIVITY_SIMPLE_FLUID_LUMPING_HH -#include <assert.h> -#include <algorithm> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/simplefluidlumping.hh> +#warning "This header has been moved (will be removed after 3.3). Use thermalconductivity/simplefluidlumping.hh" -namespace Dumux { - -/*! - * \ingroup Fluidmatrixinteractions - * \brief Relation for the saturation-dependent effective thermal conductivity - */ -template<class Scalar> -class ThermalConductivitySimpleFluidLumping -{ -public: - /*! - * \brief Effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ - * - * \param volVars volume variables - * \return effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ - */ - template<class VolumeVariables> - static Scalar effectiveThermalConductivity(const VolumeVariables& volVars) - { - using FluidSystem = typename VolumeVariables::FluidSystem; - const Scalar sw = volVars.saturation(FluidSystem::phase0Idx); - const Scalar lambdaW = volVars.fluidThermalConductivity(FluidSystem::phase0Idx); - const Scalar lambdaN = volVars.fluidThermalConductivity(FluidSystem::phase1Idx); - const Scalar lambdaSolid = volVars.solidThermalConductivity(); - const Scalar porosity = volVars.porosity(); - - return effectiveThermalConductivity_(sw, lambdaW, lambdaN, lambdaSolid, porosity); - } - -private: - /*! - * \brief Returns the effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$. - * - * \param sw The saturation of the wetting phase - * \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$ - * \param porosity The porosity - * - * \return Effective thermal conductivity of the fluid phases - */ - static Scalar effectiveThermalConductivity_(const Scalar sw, - const Scalar lambdaW, - const Scalar lambdaN, - const Scalar lambdaSolid, - const Scalar porosity) - { - // Franz Lindner / Shi & Wang 2011 - using std::max; - const Scalar satW = max<Scalar>(0.0, sw); - return porosity * ( (1. - satW) * lambdaN + satW * lambdaW ) + (1.0 - porosity) * lambdaSolid ; ; // arithmetic - } -}; -} // end namespace Dumux #endif diff --git a/dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh b/dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh index 438103c2b4d6f39a7a638f0d715035aebc7fa18a..f6551f574779686ad225774cf5daa9ac087c1fa8 100644 --- a/dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh +++ b/dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh @@ -1,128 +1,7 @@ -// -*- 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 3 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 <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \ingroup Fluidmatrixinteractions - * \brief Relation for the saturation-dependent effective thermal conductivity - */ #ifndef DUMUX_MATERIAL_THERMALCONDUCTIVITY_SOMERTON_HH #define DUMUX_MATERIAL_THERMALCONDUCTIVITY_SOMERTON_HH -#include <algorithm> -#include <cmath> - -namespace Dumux { - -/*! - * \ingroup Fluidmatrixinteractions - * \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 - * 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$\mathrm{ - \lambda_\text{eff} = \lambda_{\text{dry}} + \sqrt{(S_w)} \left(\lambda_\text{wet} - \lambda_\text{dry}\right) - }\f$ - * - * with - * \f$\mathrm{ - \lambda_\text{wet} = \lambda_{solid}^{\left(1-\phi\right)}*\lambda_w^\phi - }\f$ - * and - * - * \f$\mathrm{ - \lambda_\text{dry} = \lambda_{solid}^{\left(1-\phi\right)}*\lambda_n^\phi. - }\f$ - * - */ -template<class Scalar> -class ThermalConductivitySomerton -{ -public: - /*! - * \brief effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Somerton (1974) \cite somerton1974 <BR> - * - * \param volVars volume variables - * \return effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Somerton (1974) \cite somerton1974 <BR> - * - * 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 \cite ebigbo2005 . - */ - template<class VolumeVariables> - static Scalar effectiveThermalConductivity(const VolumeVariables& volVars) - { - using FluidSystem = typename VolumeVariables::FluidSystem; - static_assert(FluidSystem::numPhases == 2, "ThermalConductivitySomerton only works for two-phase fluid systems!"); - static_assert((FluidSystem::isGas(0) && !FluidSystem::isGas(1)) || (!FluidSystem::isGas(0) && FluidSystem::isGas(1)), - "ThermalConductivitySomerton only works if one phase is gaseous and one is liquid!"); - - constexpr int liquidPhaseIdx = FluidSystem::isGas(0) ? 1 : 0; - constexpr int gasPhaseIdx = FluidSystem::isGas(0) ? 0 : 1; - - const Scalar satLiquid = volVars.saturation(liquidPhaseIdx); - const Scalar lambdaLiquid = volVars.fluidThermalConductivity(liquidPhaseIdx); - const Scalar lambdaGas = volVars.fluidThermalConductivity(gasPhaseIdx); - const Scalar lambdaSolid = volVars.solidThermalConductivity(); - const Scalar porosity = volVars.porosity(); - - return effectiveThermalConductivity_(satLiquid, lambdaLiquid, lambdaGas, lambdaSolid, porosity); - } - -private: - /*! - * \brief effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Somerton (1974) \cite somerton1974 <BR> - * - * \param satLiquid The saturation of the liquid phase - * \param lambdaLiquid The thermal conductivity of the liquid phase in \f$\mathrm{[W/(m K)]}\f$ - * \param lambdaGas The thermal conductivity of the gas phase in \f$\mathrm{[W/(m K)]}\f$ - * \param lambdaSolid The thermal conductivity of the solid phase in \f$\mathrm{[W/(m K)]}\f$ - * \param porosity The porosity - * \param rhoSolid The density of solid phase in \f$\mathrm{[kg/m^3]}\f$ - * - * \return effective thermal conductivity \f$\mathrm{[W/(m K)]}\f$ after Somerton (1974) \cite somerton1974 - */ - static Scalar effectiveThermalConductivity_(const Scalar satLiquid, - const Scalar lambdaLiquid, - const Scalar lambdaGas, - const Scalar lambdaSolid, - const Scalar porosity, - const Scalar rhoSolid = 0.0 /*unused*/) - { - using std::max; - using std::pow; - using std::sqrt; - const Scalar satLiquidPhysical = max<Scalar>(0.0, satLiquid); - // geometric mean, using ls^(1-p)*l^p = ls*(l/ls)^p - const Scalar lSat = lambdaSolid * pow(lambdaLiquid / lambdaSolid, porosity); - const Scalar lDry = lambdaSolid * pow(lambdaGas / lambdaSolid, porosity); - - return lDry + sqrt(satLiquidPhysical) * (lSat - lDry); - } -}; - -} // end namespace Dumux +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh> +#warning "This header has been moved (will be removed after 3.3). Use thermalconductivity/somerton.hh" #endif diff --git a/dumux/porousmediumflow/2p/model.hh b/dumux/porousmediumflow/2p/model.hh index 65483bf6d787200b485df35d26b5a92cf0b087bb..998a20ad33c04be53eb55834db5a42ffcda23fa1 100644 --- a/dumux/porousmediumflow/2p/model.hh +++ b/dumux/porousmediumflow/2p/model.hh @@ -59,7 +59,7 @@ #include <dumux/common/properties.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh> #include <dumux/material/fluidstates/immiscible.hh> #include <dumux/material/spatialparams/fv.hh> diff --git a/dumux/porousmediumflow/2p1c/model.hh b/dumux/porousmediumflow/2p1c/model.hh index c8d71eb778e5826a144655ff10940e60e247b334..83055d422496cde562b14bf37160e1ae4df5f2af 100644 --- a/dumux/porousmediumflow/2p1c/model.hh +++ b/dumux/porousmediumflow/2p1c/model.hh @@ -61,7 +61,7 @@ #include <dumux/common/properties.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh> #include <dumux/material/fluidstates/compositional.hh> #include <dumux/porousmediumflow/properties.hh> diff --git a/dumux/porousmediumflow/2p2c/model.hh b/dumux/porousmediumflow/2p2c/model.hh index 6df10bc75b613d07f28dc7f2724f7afc3d54c248..8fc4795243e0bba55c7317dfa5e61f457cd1ab02 100644 --- a/dumux/porousmediumflow/2p2c/model.hh +++ b/dumux/porousmediumflow/2p2c/model.hh @@ -89,8 +89,8 @@ #include <dumux/porousmediumflow/nonisothermal/iofields.hh> #include <dumux/porousmediumflow/nonequilibrium/model.hh> #include <dumux/porousmediumflow/nonequilibrium/volumevariables.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysimplefluidlumping.hh> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/simplefluidlumping.hh> #include "volumevariables.hh" diff --git a/dumux/porousmediumflow/2pnc/model.hh b/dumux/porousmediumflow/2pnc/model.hh index 76370c2118944c1196e97fe8779174dcc840e734..8dad8844b521c5bceb73c35845ed804b893f947d 100644 --- a/dumux/porousmediumflow/2pnc/model.hh +++ b/dumux/porousmediumflow/2pnc/model.hh @@ -91,7 +91,7 @@ #include <dumux/material/spatialparams/fv.hh> #include <dumux/material/fluidmatrixinteractions/diffusivitymillingtonquirk.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh> #include <dumux/porousmediumflow/properties.hh> #include <dumux/porousmediumflow/compositional/localresidual.hh> diff --git a/dumux/porousmediumflow/2pncmin/model.hh b/dumux/porousmediumflow/2pncmin/model.hh index 164a5dc8cf737aafe3afa607972a8dfb5f82ebb4..0d837f2aa1aa160beecedb3a33e2bd2559d58110 100644 --- a/dumux/porousmediumflow/2pncmin/model.hh +++ b/dumux/porousmediumflow/2pncmin/model.hh @@ -103,7 +103,7 @@ #include <dumux/porousmediumflow/nonisothermal/indices.hh> #include <dumux/porousmediumflow/nonisothermal/iofields.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh> namespace Dumux { namespace Properties { diff --git a/dumux/porousmediumflow/mpnc/model.hh b/dumux/porousmediumflow/mpnc/model.hh index 0f3e397778bb4ff7af057e7215b97e054d0a2650..2a8b52cbf8aa1fc52e4bf71744640c3d28334792 100644 --- a/dumux/porousmediumflow/mpnc/model.hh +++ b/dumux/porousmediumflow/mpnc/model.hh @@ -102,8 +102,8 @@ #include <dumux/material/fluidstates/compositional.hh> #include <dumux/material/spatialparams/fv.hh> #include <dumux/material/fluidmatrixinteractions/diffusivitymillingtonquirk.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysimplefluidlumping.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/simplefluidlumping.hh> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh> #include <dumux/porousmediumflow/properties.hh> #include <dumux/porousmediumflow/compositional/localresidual.hh> diff --git a/dumux/porousmediumflow/richards/model.hh b/dumux/porousmediumflow/richards/model.hh index 6449bdf0ebabfacd59e8513a7336f6fed4f57cd3..884fc9632231dfedc29b858c1cafb5785c238745 100644 --- a/dumux/porousmediumflow/richards/model.hh +++ b/dumux/porousmediumflow/richards/model.hh @@ -97,7 +97,7 @@ #include <dumux/porousmediumflow/immiscible/localresidual.hh> #include <dumux/porousmediumflow/compositional/switchableprimaryvariables.hh> #include <dumux/material/fluidmatrixinteractions/diffusivitymillingtonquirk.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh> #include <dumux/material/spatialparams/fv.hh> #include <dumux/material/components/simpleh2o.hh> #include <dumux/material/fluidsystems/h2oair.hh> diff --git a/test/material/fluidmatrixinteractions/2p/test_thermalconductivity.cc b/test/material/fluidmatrixinteractions/2p/test_thermalconductivity.cc index 15abace0508c74c343cd87cad571ca939ef03024..59e677062d0e343ade7ca420cf216ecdc554fc29 100644 --- a/test/material/fluidmatrixinteractions/2p/test_thermalconductivity.cc +++ b/test/material/fluidmatrixinteractions/2p/test_thermalconductivity.cc @@ -27,8 +27,8 @@ #include <dumux/io/gnuplotinterface.hh> #include <dumux/io/plotthermalconductivitymodel.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivityjohansen.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/johansen.hh> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh> #include <dumux/material/fluidsystems/h2on2.hh> diff --git a/test/multidomain/boundary/stokesdarcy/1p2c_2p2c/spatialparams.hh b/test/multidomain/boundary/stokesdarcy/1p2c_2p2c/spatialparams.hh index 670788f6dc9b4986c833668b64ba7de450aafb91..8e63965ff1a793835d8146d719eaad63612dbc42 100644 --- a/test/multidomain/boundary/stokesdarcy/1p2c_2p2c/spatialparams.hh +++ b/test/multidomain/boundary/stokesdarcy/1p2c_2p2c/spatialparams.hh @@ -28,7 +28,7 @@ #include <dumux/material/spatialparams/fv.hh> #include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> #include <dumux/material/fluidmatrixinteractions/2p/regularizedvangenuchten.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh> namespace Dumux { diff --git a/test/multidomain/boundary/stokesdarcy/1p_2p/spatialparams.hh b/test/multidomain/boundary/stokesdarcy/1p_2p/spatialparams.hh index 46405bb904498ccd18168c06e4e1321d835c809a..e78d2f634a5a35572fda371dd76a476d8fea2c55 100644 --- a/test/multidomain/boundary/stokesdarcy/1p_2p/spatialparams.hh +++ b/test/multidomain/boundary/stokesdarcy/1p_2p/spatialparams.hh @@ -28,7 +28,7 @@ #include <dumux/material/spatialparams/fv.hh> #include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> #include <dumux/material/fluidmatrixinteractions/2p/regularizedvangenuchten.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh> namespace Dumux { diff --git a/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh b/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh index 34a04be27e18ce5d577b20b2aa8a528c8b500256..de62ede286634ebebfa5fb76dd99d2471a8dbc5c 100644 --- a/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh +++ b/test/porousmediumflow/mpnc/implicit/thermalnonequilibrium/problem.hh @@ -44,7 +44,7 @@ #include <dumux/material/solidsystems/compositionalsolidphase.hh> #include <dumux/material/components/constant.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysimplefluidlumping.hh> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/simplefluidlumping.hh> #include <dumux/material/constraintsolvers/computefromreferencephase.hh> #include "spatialparams.hh" diff --git a/test/porousmediumflow/richards/implicit/nonisothermal/conduction/problem.hh b/test/porousmediumflow/richards/implicit/nonisothermal/conduction/problem.hh index 5032c98908df39356d53e33c753d9834607c36b0..206e39407769f0e333ce19516437245e3c4f238e 100644 --- a/test/porousmediumflow/richards/implicit/nonisothermal/conduction/problem.hh +++ b/test/porousmediumflow/richards/implicit/nonisothermal/conduction/problem.hh @@ -37,7 +37,7 @@ #include <dumux/porousmediumflow/problem.hh> #include <dumux/porousmediumflow/richards/model.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh> #include <dumux/material/fluidsystems/h2on2.hh> #include "../spatialparams.hh" diff --git a/test/porousmediumflow/richards/implicit/nonisothermal/convection/problem.hh b/test/porousmediumflow/richards/implicit/nonisothermal/convection/problem.hh index 276c9ad5af16460ae20d41ca901a9c8b75d8e84e..639272dd0991c720ea04fa8e40f153f207c203e0 100644 --- a/test/porousmediumflow/richards/implicit/nonisothermal/convection/problem.hh +++ b/test/porousmediumflow/richards/implicit/nonisothermal/convection/problem.hh @@ -38,7 +38,7 @@ #include <dumux/porousmediumflow/problem.hh> #include <dumux/porousmediumflow/richards/model.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh> #include <dumux/material/fluidsystems/h2on2.hh> #include "../spatialparams.hh" diff --git a/test/porousmediumflow/richards/implicit/nonisothermal/evaporation/problem.hh b/test/porousmediumflow/richards/implicit/nonisothermal/evaporation/problem.hh index a0c30f88956c17807f3354314709a6cef6387429..1a4f1f23431f8adefc166e8b65fa209f26009a75 100644 --- a/test/porousmediumflow/richards/implicit/nonisothermal/evaporation/problem.hh +++ b/test/porousmediumflow/richards/implicit/nonisothermal/evaporation/problem.hh @@ -37,7 +37,7 @@ #include <dumux/porousmediumflow/problem.hh> #include <dumux/porousmediumflow/richards/model.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh> +#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh> #include <dumux/material/fluidsystems/h2on2.hh> #include "../spatialparams.hh"