/usr/include/freefoam/specie/specieThermo.H is in libfreefoam-dev 0.1.0+dfsg-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 | /*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
\\/ 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::specieThermo
Description
Basic thermodynamics type based on the use of fitting functions for
cp, h, s obtained from the template argument type thermo. All other
properties are derived from these primitive functions.
SourceFiles
specieThermoI.H
specieThermo.C
\*---------------------------------------------------------------------------*/
#ifndef specieThermo_H
#define specieThermo_H
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// Forward declaration of friend functions and operators
template<class thermo> class specieThermo;
template<class thermo>
inline specieThermo<thermo> operator+
(
const specieThermo<thermo>&,
const specieThermo<thermo>&
);
template<class thermo>
inline specieThermo<thermo> operator-
(
const specieThermo<thermo>&,
const specieThermo<thermo>&
);
template<class thermo>
inline specieThermo<thermo> operator*
(
const scalar,
const specieThermo<thermo>&
);
template<class thermo>
inline specieThermo<thermo> operator==
(
const specieThermo<thermo>&,
const specieThermo<thermo>&
);
template<class thermo>
Ostream& operator<<
(
Ostream&,
const specieThermo<thermo>&
);
/*---------------------------------------------------------------------------*\
Class specieThermo Declaration
\*---------------------------------------------------------------------------*/
template<class thermo>
class specieThermo
:
public thermo
{
// Private data
//- Convergence tolerance of energy -> temperature inversion functions
static const scalar tol_;
//- Max number of iterations in energy->temperature inversion functions
static const int maxIter_;
// Private member functions
//- return the temperature corresponding to the value of the
// thermodynamic property f, given the function f = F(T) and dF(T)/dT
inline scalar T
(
scalar f,
scalar T0,
scalar (specieThermo::*F)(const scalar) const,
scalar (specieThermo::*dFdT)(const scalar) const
) const;
public:
// Constructors
//- construct from components
inline specieThermo(const thermo& sp);
//- Construct from Istream
specieThermo(Istream&);
//- Construct as named copy
inline specieThermo(const word& name, const specieThermo&);
// Member Functions
// Fundamaental properties
// (These functions must be provided in derived types)
// Heat capacity at constant pressure [J/(kmol K)]
//scalar cp(const scalar) const;
// Enthalpy [J/kmol]
//scalar h(const scalar) const;
// Sensible enthalpy [J/kmol]
//scalar hs(const scalar) const;
// Chemical enthalpy [J/kmol]
//scalar hc(const scalar) const;
// Entropy [J/(kmol K)]
//scalar s(const scalar) const;
// Calculate and return derived properties
// (These functions need not provided in derived types)
// Mole specific properties
//- Heat capacity at constant volume [J/(kmol K)]
inline scalar cv(const scalar T) const;
//- gamma = cp/cv []
inline scalar gamma(const scalar T) const;
//- Internal energy [J/kmol]
inline scalar e(const scalar T) const;
//- Sensible internal energy [J/kmol]
inline scalar es(const scalar T) const;
//- Gibbs free energy [J/kmol]
inline scalar g(const scalar T) const;
//- Helmholtz free energy [J/kmol]
inline scalar a(const scalar T) const;
// Mass specific properties
//- Heat capacity at constant pressure [J/(kg K)]
inline scalar Cp(const scalar T) const;
//- Heat capacity at constant volume [J/(kg K)]
inline scalar Cv(const scalar T) const;
//- Enthalpy [J/kg]
inline scalar H(const scalar T) const;
//- Sensible enthalpy [J/kg]
inline scalar Hs(const scalar T) const;
//- Chemical enthalpy [J/kg]
inline scalar Hc() const;
//- Entropy [J/(kg K)]
inline scalar S(const scalar T) const;
//- Internal energy [J/kg]
inline scalar E(const scalar T) const;
//- Gibbs free energy [J/kg]
inline scalar G(const scalar T) const;
//- Helmholtz free energy [J/kg]
inline scalar A(const scalar T) const;
// Equilibrium reaction thermodynamics
//- Equilibrium constant [] i.t.o fugacities
// = PIi(fi/Pstd)^nui
inline scalar K(const scalar T) const;
//- Equilibrium constant [] i.t.o. partial pressures
// = PIi(pi/Pstd)^nui
// For low pressures (where the gas mixture is near perfect) Kp = K
inline scalar Kp(const scalar T) const;
//- Equilibrium constant i.t.o. molar concentration
// = PIi(ci/cstd)^nui
// For low pressures (where the gas mixture is near perfect)
// Kc = Kp(pstd/(RR*T))^nu
inline scalar Kc(const scalar T) const;
//- Equilibrium constant [] i.t.o. mole-fractions
// For low pressures (where the gas mixture is near perfect)
// Kx = Kp(pstd/p)^nui
inline scalar Kx(const scalar T, const scalar p) const;
//- Equilibrium constant [] i.t.o. number of moles
// For low pressures (where the gas mixture is near perfect)
// Kn = Kp(n*pstd/p)^nui where n = number of moles in mixture
inline scalar Kn
(
const scalar T,
const scalar p,
const scalar n
) const;
// Energy->temperature inversion functions
//- Temperature from Enthalpy given an initial temperature T0
inline scalar TH(const scalar H, const scalar T0) const;
//- Temperature from sensible Enthalpy given an initial T0
inline scalar THs(const scalar Hs, const scalar T0) const;
//- Temperature from internal energy given an initial temperature T0
inline scalar TE(const scalar E, const scalar T0) const;
// Member operators
inline void operator+=(const specieThermo&);
inline void operator-=(const specieThermo&);
inline void operator*=(const scalar);
// Friend operators
friend specieThermo operator+ <thermo>
(
const specieThermo&,
const specieThermo&
);
friend specieThermo operator- <thermo>
(
const specieThermo&,
const specieThermo&
);
friend specieThermo operator* <thermo>
(
const scalar s,
const specieThermo&
);
friend specieThermo operator== <thermo>
(
const specieThermo&,
const specieThermo&
);
// Ostream Operator
friend Ostream& operator<< <thermo>
(
Ostream&,
const specieThermo&
);
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#include <specie/specieThermoI.H>
#ifdef NoRepository
# include <specie/specieThermo.C>
#endif
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************ vim: set sw=4 sts=4 et: ************************ //
|