Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
dumux-repositories
dumux
Commits
6543a017
Commit
6543a017
authored
Sep 24, 2020
by
Timo Koch
Browse files
[material][2p] Move thermalconductivity laws to their own folder
parent
2df2f565
Changes
8
Hide whitespace changes
Inline
Side-by-side
dumux/material/fluidmatrixinteractions/2p/CMakeLists.txt
View file @
6543a017
add_subdirectory
(
thermalconductivity
)
install
(
FILES
brookscorey.hh
brookscoreyparams.hh
...
...
dumux/material/fluidmatrixinteractions/2p/thermalconductivity/CMakeLists.txt
0 → 100644
View file @
6543a017
install
(
FILES
johansen.hh
simplefluidlumping.hh
somerton.hh
DESTINATION
${
CMAKE_INSTALL_INCLUDEDIR
}
/dumux/material/fluidmatrixinteractions/2p/thermalconductivity
)
dumux/material/fluidmatrixinteractions/2p/thermalconductivity/johansen.hh
0 → 100644
View file @
6543a017
// -*- 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
dumux/material/fluidmatrixinteractions/2p/thermalconductivity/simplefluidlumping.hh
0 → 100644
View file @
6543a017
// -*- 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
dumux/material/fluidmatrixinteractions/2p/thermalconductivity/somerton.hh
0 → 100644
View file @
6543a017
// -*- 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
dumux/material/fluidmatrixinteractions/2p/thermalconductivityjohansen.hh
View file @
6543a017
// -*- 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 <
cmat
h>
#
include <algorithm>
#include <
dumux/material/fluidmatrixinteractions/2p/thermalconductivity/johansen.h
h>
#
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
dumux/material/fluidmatrixinteractions/2p/thermalconductivitysimplefluidlumping.hh
View file @
6543a017
// -*- 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.h
h>
#
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
dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh
View file @
6543a017
// -*- 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. *