30 template<
class EquationOfState,
int PolySize>
33 const EquationOfState& pt,
36 const Polynomial<PolySize>& CpPoly,
37 const typename Polynomial<PolySize>::intPolyType& hPoly,
38 const Polynomial<PolySize>& sPoly
44 CpPolynomial_(CpPoly),
52 template<
class EquationOfState,
int PolySize>
61 CpPolynomial_(pt.CpPolynomial_),
62 hPolynomial_(pt.hPolynomial_),
63 sPolynomial_(pt.sPolynomial_)
67 template<
class EquationOfState,
int PolySize>
74 EquationOfState(name, pt),
77 CpPolynomial_(pt.CpPolynomial_),
78 hPolynomial_(pt.hPolynomial_),
79 sPolynomial_(pt.sPolynomial_)
85 template<
class EquationOfState,
int PolySize>
91 return CpPolynomial_.evaluate(T);
95 template<
class EquationOfState,
int PolySize>
101 return hPolynomial_.evaluate(T);
105 template<
class EquationOfState,
int PolySize>
115 template<
class EquationOfState,
int PolySize>
123 template<
class EquationOfState,
int PolySize>
129 return sPolynomial_.evaluate(T);
135 template<
class EquationOfState,
int PolySize>
142 EquationOfState::operator=(pt);
146 CpPolynomial_ = pt.CpPolynomial_;
147 hPolynomial_ = pt.hPolynomial_;
148 sPolynomial_ = pt.sPolynomial_;
154 template<
class EquationOfState,
int PolySize>
155 inline void Foam::hPolynomialThermo<EquationOfState, PolySize>::operator+=
160 scalar molr1 = this->nMoles();
162 EquationOfState::operator+=(pt);
164 molr1 /= this->nMoles();
165 scalar molr2 = pt.nMoles()/this->nMoles();
167 Hf_ = molr1*Hf_ + molr2*pt.Hf_;
168 Sf_ = molr1*Sf_ + molr2*pt.Sf_;
169 CpPolynomial_ = molr1*CpPolynomial_ + molr2*pt.CpPolynomial_;
170 hPolynomial_ = molr1*hPolynomial_ + molr2*pt.hPolynomial_;
171 sPolynomial_ = molr1*sPolynomial_ + molr2*pt.sPolynomial_;
175 template<
class EquationOfState,
int PolySize>
176 inline void Foam::hPolynomialThermo<EquationOfState, PolySize>::operator-=
181 scalar molr1 = this->nMoles();
183 EquationOfState::operator-=(pt);
185 molr1 /= this->nMoles();
186 scalar molr2 = pt.nMoles()/this->nMoles();
188 Hf_ = molr1*Hf_ - molr2*pt.Hf_;
189 Sf_ = molr1*Sf_ - molr2*pt.Sf_;
190 CpPolynomial_ = molr1*CpPolynomial_ - molr2*pt.CpPolynomial_;
191 hPolynomial_ = molr1*hPolynomial_ - molr2*pt.hPolynomial_;
192 sPolynomial_ = molr1*sPolynomial_ - molr2*pt.sPolynomial_;
196 template<
class EquationOfState,
int PolySize>
197 inline void Foam::hPolynomialThermo<EquationOfState, PolySize>::operator*=
202 EquationOfState::operator*=(s);
208 template<
class EquationOfState,
int PolySize>
215 EquationOfState eofs = pt1;
218 scalar molr1 = pt1.nMoles()/eofs.nMoles();
219 scalar molr2 = pt2.nMoles()/eofs.nMoles();
224 molr1*pt1.Hf_ + molr2*pt2.Hf_,
225 molr1*pt1.Sf_ + molr2*pt2.Sf_,
226 molr1*pt1.CpPolynomial_ + molr2*pt2.CpPolynomial_,
227 molr1*pt1.hPolynomial_ + molr2*pt2.hPolynomial_,
228 molr1*pt1.sPolynomial_ + molr2*pt2.sPolynomial_
233 template<
class EquationOfState,
int PolySize>
240 EquationOfState eofs = pt1;
243 scalar molr1 = pt1.nMoles()/eofs.nMoles();
244 scalar molr2 = pt2.nMoles()/eofs.nMoles();
249 molr1*pt1.Hf_ - molr2*pt2.Hf_,
250 molr1*pt1.Sf_ - molr2*pt2.Sf_,
251 molr1*pt1.CpPolynomial_ - molr2*pt2.CpPolynomial_,
252 molr1*pt1.hPolynomial_ - molr2*pt2.hPolynomial_,
253 molr1*pt1.sPolynomial_ - molr2*pt2.sPolynomial_
258 template<
class EquationOfState,
int PolySize>
267 s*
static_cast<const EquationOfState&
>(pt),
277 template<
class EquationOfState,
int PolySize>