Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
thermophysicalModels/specie/transport: Added WLF transport model
Description Transport package using the Williams-Landel-Ferry model. Templated into a given thermodynamics package (needed for thermal conductivity). Dynamic viscosity [kg/m.s] \f[ \mu = \mu_0 \exp \left(\frac{-C_1 ( T - T_r )}{C_2 + T - T_r}\right) \f] References: \verbatim Williams, M. L., Landel, R. F., & Ferry, J. D. (1955). The temperature dependence of relaxation mechanisms in amorphous polymers and other glass-forming liquids. Journal of the American Chemical society, 77(14), 3701-3707. \endverbatim
- Loading branch information
Henry Weller
committed
Oct 4, 2018
1 parent
a752083
commit 7977181
Showing
4 changed files
with
537 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
92 changes: 92 additions & 0 deletions
92
src/thermophysicalModels/specie/transport/WLF/WLFTransport.C
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
/*---------------------------------------------------------------------------*\ | ||
========= | | ||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox | ||
\\ / O peration | Website: https://openfoam.org | ||
\\ / A nd | Copyright (C) 2018 OpenFOAM Foundation | ||
\\/ M anipulation | | ||
------------------------------------------------------------------------------- | ||
License | ||
This file is part of OpenFOAM. | ||
OpenFOAM 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. | ||
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>. | ||
\*---------------------------------------------------------------------------*/ | ||
|
||
#include "WLFTransport.H" | ||
#include "IOstreams.H" | ||
|
||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // | ||
|
||
template<class Thermo> | ||
Foam::scalar Foam::WLFTransport<Thermo>::readCoeff | ||
( | ||
const word& coeffName, | ||
const dictionary& dict | ||
) | ||
{ | ||
return readScalar(dict.subDict("transport").lookup(coeffName)); | ||
} | ||
|
||
|
||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // | ||
|
||
template<class Thermo> | ||
Foam::WLFTransport<Thermo>::WLFTransport(const dictionary& dict) | ||
: | ||
Thermo(dict), | ||
mu0_(readCoeff("mu0", dict)), | ||
Tr_(readCoeff("Tr", dict)), | ||
C1_(readCoeff("C1", dict)), | ||
C2_(readCoeff("C2", dict)), | ||
rPr_(1.0/readScalar(dict.subDict("transport").lookup("Pr"))) | ||
{} | ||
|
||
|
||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // | ||
|
||
template<class Thermo> | ||
void Foam::WLFTransport<Thermo>::write(Ostream& os) const | ||
{ | ||
os << this->specie::name() << endl | ||
<< token::BEGIN_BLOCK << incrIndent << nl; | ||
|
||
Thermo::write(os); | ||
|
||
dictionary dict("transport"); | ||
dict.add("mu0", mu0_); | ||
dict.add("Tr", Tr_); | ||
dict.add("C1", C1_); | ||
dict.add("C2", C2_); | ||
dict.add("Pr", 1.0/rPr_); | ||
|
||
os << indent << dict.dictName() << dict | ||
<< decrIndent << token::END_BLOCK << nl; | ||
} | ||
|
||
|
||
// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // | ||
|
||
template<class Thermo> | ||
Foam::Ostream& Foam::operator<< | ||
( | ||
Ostream& os, | ||
const WLFTransport<Thermo>& wlft | ||
) | ||
{ | ||
wlft.write(os); | ||
return os; | ||
} | ||
|
||
|
||
// ************************************************************************* // |
210 changes: 210 additions & 0 deletions
210
src/thermophysicalModels/specie/transport/WLF/WLFTransport.H
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,210 @@ | ||
/*---------------------------------------------------------------------------*\ | ||
========= | | ||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox | ||
\\ / O peration | Website: https://openfoam.org | ||
\\ / A nd | Copyright (C) 2018 OpenFOAM Foundation | ||
\\/ M anipulation | | ||
------------------------------------------------------------------------------- | ||
License | ||
This file is part of OpenFOAM. | ||
OpenFOAM 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. | ||
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>. | ||
Class | ||
Foam::WLFTransport | ||
Description | ||
Transport package using the Williams-Landel-Ferry model. | ||
Templated into a given thermodynamics package (needed for thermal | ||
conductivity). | ||
Dynamic viscosity [kg/m.s] | ||
\f[ | ||
\mu = \mu_0 \exp \left(\frac{-C_1 ( T - T_r )}{C_2 + T - T_r}\right) | ||
\f] | ||
References: | ||
\verbatim | ||
Williams, M. L., Landel, R. F., & Ferry, J. D. (1955). | ||
The temperature dependence of relaxation mechanisms | ||
in amorphous polymers and other glass-forming liquids. | ||
Journal of the American Chemical society, 77(14), 3701-3707. | ||
\endverbatim | ||
SourceFiles | ||
WLFTransportI.H | ||
WLFTransport.C | ||
\*---------------------------------------------------------------------------*/ | ||
|
||
#ifndef WLFTransport_H | ||
#define WLFTransport_H | ||
|
||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // | ||
|
||
namespace Foam | ||
{ | ||
|
||
// Forward declaration of friend functions and operators | ||
|
||
template<class Thermo> class WLFTransport; | ||
|
||
template<class Thermo> | ||
inline WLFTransport<Thermo> operator+ | ||
( | ||
const WLFTransport<Thermo>&, | ||
const WLFTransport<Thermo>& | ||
); | ||
|
||
template<class Thermo> | ||
inline WLFTransport<Thermo> operator* | ||
( | ||
const scalar, | ||
const WLFTransport<Thermo>& | ||
); | ||
|
||
template<class Thermo> | ||
Ostream& operator<< | ||
( | ||
Ostream&, | ||
const WLFTransport<Thermo>& | ||
); | ||
|
||
|
||
/*---------------------------------------------------------------------------*\ | ||
Class WLFTransport Declaration | ||
\*---------------------------------------------------------------------------*/ | ||
|
||
template<class Thermo> | ||
class WLFTransport | ||
: | ||
public Thermo | ||
{ | ||
// Private data | ||
|
||
//- Dynamic viscosity at the reference temperature [Pa.s] | ||
scalar mu0_; | ||
|
||
//- Reference temperature [T] | ||
scalar Tr_; | ||
|
||
//- WLF coefficient 1 [] | ||
scalar C1_; | ||
|
||
//- WLF coefficient 2 [T] | ||
scalar C2_; | ||
|
||
//- Reciprocal Prandtl Number [] | ||
scalar rPr_; | ||
|
||
|
||
// Private Member Functions | ||
|
||
//- Read coefficient from dictionary | ||
scalar readCoeff(const word& coeffName, const dictionary& dict); | ||
|
||
|
||
public: | ||
|
||
// Constructors | ||
|
||
//- Construct as named copy | ||
inline WLFTransport(const word&, const WLFTransport&); | ||
|
||
//- Construct from dictionary | ||
WLFTransport(const dictionary& dict); | ||
|
||
//- Construct and return a clone | ||
inline autoPtr<WLFTransport> clone() const; | ||
|
||
// Selector from dictionary | ||
inline static autoPtr<WLFTransport> New(const dictionary& dict); | ||
|
||
|
||
// Member functions | ||
|
||
//- Return the instantiated type name | ||
static word typeName() | ||
{ | ||
return "WLF<" + Thermo::typeName() + '>'; | ||
} | ||
|
||
//- Dynamic viscosity [kg/ms] | ||
inline scalar mu(const scalar p, const scalar T) const; | ||
|
||
//- Thermal conductivity [W/mK] | ||
inline scalar kappa(const scalar p, const scalar T) const; | ||
|
||
//- Thermal diffusivity of enthalpy [kg/ms] | ||
inline scalar alphah(const scalar p, const scalar T) const; | ||
|
||
// Species diffusivity | ||
// inline scalar D(const scalar p, const scalar T) const; | ||
|
||
//- Write to Ostream | ||
void write(Ostream& os) const; | ||
|
||
|
||
// Member operators | ||
|
||
inline void operator=(const WLFTransport&); | ||
|
||
inline void operator+=(const WLFTransport&); | ||
|
||
inline void operator*=(const scalar); | ||
|
||
|
||
// Friend operators | ||
|
||
friend WLFTransport operator+ <Thermo> | ||
( | ||
const WLFTransport&, | ||
const WLFTransport& | ||
); | ||
|
||
friend WLFTransport operator* <Thermo> | ||
( | ||
const scalar, | ||
const WLFTransport& | ||
); | ||
|
||
|
||
// Ostream Operator | ||
|
||
friend Ostream& operator<< <Thermo> | ||
( | ||
Ostream&, | ||
const WLFTransport& | ||
); | ||
}; | ||
|
||
|
||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // | ||
|
||
} // End namespace Foam | ||
|
||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // | ||
|
||
#include "WLFTransportI.H" | ||
|
||
#ifdef NoRepository | ||
#include "WLFTransport.C" | ||
#endif | ||
|
||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // | ||
|
||
#endif | ||
|
||
// ************************************************************************* // |
Oops, something went wrong.