144 auto POW2(
const T& x)
const -> T{
149 auto POW3(
const T& x)
const -> T{
154 auto POW4(
const T& x)
const -> T{
155 return POW2(x)*POW2(x);
158 const double gamma = 3.0;
159 const std::vector<double> x {
169 2.798291772190376e03,
170 -4.8394220260857657e-2,
172 -3.698000291272493e01,
173 2.084012299434647e01,
174 8.305402124717285e01,
175 -9.574799715203068e02,
176 -1.477746229234994e02,
178 6.398607852471505e01,
179 1.603993673294834e01,
180 6.805916615864377e01,
181 -2.791293578795945e03,
183 -8.116836104958410e03,
184 1.488735559561229e01,
185 -1.059346754655084e04,
186 -1.131607632802822e02,
187 -8.867771540418822e03,
188 -3.986982844450543e01,
189 -4.689270299917261e03,
190 2.593535277438717e02,
191 -2.694523589434903e03,
192 -7.218487631550215e02,
197 template<
typename TTYPE>
198 auto get_ai(
const int i,
const TTYPE& Tstar)
const -> TTYPE{
201 return x[1]*Tstar + x[2]*sqrt(Tstar) + x[3] + x[4]/Tstar + x[5]/POW2(Tstar);
203 return x[6]*Tstar + x[7] + x[8]/Tstar + x[9]/POW2(Tstar);
205 return x[10]*Tstar + x[11] + x[12]/Tstar;
209 return x[14]/Tstar + x[15]/POW2(Tstar);
213 return x[17]/Tstar + x[18]/POW2(Tstar);
215 return x[19]/POW2(Tstar);
222 template<
typename TTYPE>
223 auto get_bi(
const int i,
const TTYPE& Tstar)
const -> TTYPE{
226 return x[20]/POW2(Tstar) + x[21]/POW3(Tstar);
228 return x[22]/POW2(Tstar) + x[23]/POW4(Tstar);
230 return x[24]/POW2(Tstar) + x[25]/POW3(Tstar);
232 return x[26]/POW2(Tstar) + x[27]/POW4(Tstar);
234 return x[28]/POW2(Tstar) + x[29]/POW3(Tstar);
236 return x[30]/POW2(Tstar) + x[31]/POW3(Tstar) + x[32]/POW4(Tstar);
243 template<
typename FTYPE,
typename RHOTYPE>
244 auto get_Gi(
const int i,
const FTYPE& F,
const RHOTYPE& rhostar)
const -> RHOTYPE{
250 return forceeval(-(F*
powi(rhostar, 2*(i-1)) - 2.0*(i-1)*get_Gi(i-1, F, rhostar))/(2.0*gamma));
254 template<
typename TTYPE,
typename RHOTYPE>
255 auto get_alphar(
const TTYPE& Tstar,
const RHOTYPE& rhostar)
const{
256 std::common_type_t<TTYPE, RHOTYPE> summer = 0.0;
257 auto F = exp(-gamma*POW2(rhostar));
258 for (
int i = 1; i <= 8; ++i){
259 summer += get_ai(i, Tstar)*
powi(rhostar, i)/
static_cast<double>(i);
261 for (
int i = 1; i <= 6; ++i){
262 summer += get_bi(i, Tstar)*get_Gi(i, F, rhostar);
270 template<
typename MoleFracType>
271 double R(
const MoleFracType &)
const {
return 1.0; }
273 template<
typename TTYPE,
typename RHOTYPE,
typename MoleFracType>
274 auto alphar(
const TTYPE& Tstar,
const RHOTYPE& rhostar,
const MoleFracType& )
const {
275 return forceeval(get_alphar(Tstar, rhostar)/Tstar);