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 EquationOfState::operator=(pt);
172 CpCoeffs_ = pt.CpCoeffs_;
173 hCoeffs_ = pt.hCoeffs_;
174 sCoeffs_ = pt.sCoeffs_;
178 template<
class EquationOfState,
int PolySize>
184 scalar Y1 = this->
Y();
186 EquationOfState::operator+=(pt);
188 if (
mag(this->
Y()) > SMALL)
191 const scalar Y2 = pt.Y()/this->
Y();
193 Hf_ = Y1*Hf_ + Y2*pt.Hf_;
194 Sf_ = Y1*Sf_ + Y2*pt.Sf_;
195 CpCoeffs_ = Y1*CpCoeffs_ + Y2*pt.CpCoeffs_;
196 hCoeffs_ = Y1*hCoeffs_ + Y2*pt.hCoeffs_;
197 sCoeffs_ = Y1*sCoeffs_ + Y2*pt.sCoeffs_;
202 template<
class EquationOfState,
int PolySize>
208 EquationOfState::operator*=(
s);
214 template<
class EquationOfState,
int PolySize>
221 EquationOfState eofs = pt1;
224 if (
mag(eofs.Y()) < SMALL)
237 const scalar Y1 = pt1.Y()/eofs.Y();
238 const scalar Y2 = pt2.Y()/eofs.Y();
240 return hPolynomialThermo<EquationOfState, PolySize>
243 Y1*pt1.Hf_ + Y2*pt2.Hf_,
244 Y1*pt1.Sf_ + Y2*pt2.Sf_,
245 Y1*pt1.CpCoeffs_ + Y2*pt2.CpCoeffs_,
246 Y1*pt1.hCoeffs_ + Y2*pt2.hCoeffs_,
247 Y1*pt1.sCoeffs_ + Y2*pt2.sCoeffs_
253 template<
class EquationOfState,
int PolySize>
257 const hPolynomialThermo<EquationOfState, PolySize>& pt
260 return hPolynomialThermo<EquationOfState, PolySize>
262 s*
static_cast<const EquationOfState&
>(pt),
272 template<
class EquationOfState,
int PolySize>
275 const hPolynomialThermo<EquationOfState, PolySize>& pt1,
276 const hPolynomialThermo<EquationOfState, PolySize>& pt2
281 static_cast<const EquationOfState&
>(pt1)
282 ==
static_cast<const EquationOfState&
>(pt2)
285 const scalar Y1 = pt1.Y()/eofs.Y();
286 const scalar Y2 = pt2.Y()/eofs.Y();
288 return hPolynomialThermo<EquationOfState, PolySize>
291 Y2*pt2.Hf_ - Y1*pt1.Hf_,
292 Y2*pt2.Sf_ - Y1*pt1.Sf_,
293 Y2*pt2.CpCoeffs_ - Y1*pt1.CpCoeffs_,
294 Y2*pt2.hCoeffs_ - Y1*pt1.hCoeffs_,
295 Y2*pt2.sCoeffs_ - Y1*pt1.sCoeffs_