32 template<
class EquationOfState,
int PolySize>
35 const EquationOfState& pt,
38 const Polynomial<PolySize>& CpCoeffs,
39 const typename Polynomial<PolySize>::intPolyType& hCoeffs,
40 const Polynomial<PolySize>& sCoeffs
54 template<
class EquationOfState,
int PolySize>
61 EquationOfState(
name, pt),
64 CpCoeffs_(pt.CpCoeffs_),
65 hCoeffs_(pt.hCoeffs_),
72 template<
class EquationOfState,
int PolySize>
82 template<
class EquationOfState,
int PolySize>
85 const scalar
p,
const scalar
T
92 template<
class EquationOfState,
int PolySize>
95 const scalar
p,
const scalar
T
102 template<
class EquationOfState,
int PolySize>
105 const scalar
p,
const scalar
T
108 return Ha(
p,
T) - Hc();
112 template<
class EquationOfState,
int PolySize>
120 template<
class EquationOfState,
int PolySize>
127 return sCoeffs_.value(
T) + EquationOfState::S(
p,
T);
131 template<
class EquationOfState,
int PolySize>
140 hCoeffs_.derivative(
T)
141 -
T*sCoeffs_.derivative(
T)
147 template<
class EquationOfState,
int PolySize>
156 CpCoeffs_.derivative(
T)
162 template<
class EquationOfState,
int PolySize>
168 scalar Y1 = this->
Y();
170 EquationOfState::operator+=(pt);
172 if (
mag(this->
Y()) > SMALL)
175 const scalar Y2 = pt.Y()/this->
Y();
177 Hf_ = Y1*Hf_ + Y2*pt.Hf_;
178 Sf_ = Y1*Sf_ + Y2*pt.Sf_;
179 CpCoeffs_ = Y1*CpCoeffs_ + Y2*pt.CpCoeffs_;
180 hCoeffs_ = Y1*hCoeffs_ + Y2*pt.hCoeffs_;
181 sCoeffs_ = Y1*sCoeffs_ + Y2*pt.sCoeffs_;
186 template<
class EquationOfState,
int PolySize>
192 EquationOfState::operator*=(
s);
198 template<
class EquationOfState,
int PolySize>
205 EquationOfState eofs = pt1;
208 if (
mag(eofs.Y()) < SMALL)
221 const scalar Y1 = pt1.Y()/eofs.Y();
222 const scalar Y2 = pt2.Y()/eofs.Y();
224 return hPolynomialThermo<EquationOfState, PolySize>
227 Y1*pt1.Hf_ + Y2*pt2.Hf_,
228 Y1*pt1.Sf_ + Y2*pt2.Sf_,
229 Y1*pt1.CpCoeffs_ + Y2*pt2.CpCoeffs_,
230 Y1*pt1.hCoeffs_ + Y2*pt2.hCoeffs_,
231 Y1*pt1.sCoeffs_ + Y2*pt2.sCoeffs_
237 template<
class EquationOfState,
int PolySize>
241 const hPolynomialThermo<EquationOfState, PolySize>& pt
244 return hPolynomialThermo<EquationOfState, PolySize>
246 s*
static_cast<const EquationOfState&
>(pt),
256 template<
class EquationOfState,
int PolySize>
259 const hPolynomialThermo<EquationOfState, PolySize>& pt1,
260 const hPolynomialThermo<EquationOfState, PolySize>& pt2
265 static_cast<const EquationOfState&
>(pt1)
266 ==
static_cast<const EquationOfState&
>(pt2)
269 const scalar Y1 = pt1.Y()/eofs.Y();
270 const scalar Y2 = pt2.Y()/eofs.Y();
272 return hPolynomialThermo<EquationOfState, PolySize>
275 Y2*pt2.Hf_ - Y1*pt1.Hf_,
276 Y2*pt2.Sf_ - Y1*pt1.Sf_,
277 Y2*pt2.CpCoeffs_ - Y1*pt1.CpCoeffs_,
278 Y2*pt2.hCoeffs_ - Y1*pt1.hCoeffs_,
279 Y2*pt2.sCoeffs_ - Y1*pt1.sCoeffs_