35 #ifndef NEKTAR_SOLVERS_COMPRESSIBLEFLOWSOLVER_MISC_REDLICHKWONGEOS
36 #define NEKTAR_SOLVERS_COMPRESSIBLEFLOWSOLVER_MISC_REDLICHKWONGEOS
100 template <
class T,
typename =
typename std::enable_if<
101 std::is_floating_point<T>::value ||
105 return 1.0 /
sqrt(temp / m_Tc);
109 template <
class T,
typename =
typename std::enable_if<
110 std::is_floating_point<T>::value ||
114 return log(1.0 + m_b * rho);
117 template <
class T,
typename =
typename std::enable_if<
118 std::is_floating_point<T>::value ||
124 T logTerm = LogTerm(rho);
128 T
A = e * (1.0 - m_gamma) / m_gasConstant;
129 T B = -3.0 * m_a / (2.0 * m_b * m_gasConstant) * (m_gamma - 1) *
130 sqrt(m_Tc) * logTerm;
133 T sqrtT =
sqrt(e * (m_gamma - 1) / m_gasConstant);
137 unsigned int maxIter = 100;
138 unsigned int cnt = 0;
139 while (
abs(residual) > tol && cnt < maxIter)
141 T f = sqrtT * sqrtT * sqrtT +
A * sqrtT + B;
142 T df = 3 * sqrtT * sqrtT +
A;
149 std::cout <<
"Newton-Raphson in RedlichKwongEoS::v_GetTemperature "
152 << maxIter <<
" iterations (residual = " << residual
157 return sqrtT * sqrtT;
160 template <
class T,
typename =
typename std::enable_if<
161 std::is_floating_point<T>::value ||
165 T temp = GetTemperatureKernel(rho, e);
166 T oneOrho = 1.0 / rho;
167 T
p = m_gasConstant * temp / (oneOrho - m_b) -
168 m_a * Alpha(temp) / (oneOrho * (oneOrho + m_b));
Encapsulates equations of state allowing us to obtain thermodynamic properties: most relations are in...
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
Redlich-Kwong equation of state: p = RT/(1/rho - b) - a/( sqrt(T / Tc) * (1/rho^2 + b/rho) with a = 0...
T GetTemperatureKernel(const T &rho, const T &e)
static std::string className
Name of the class.
static EquationOfStateSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession)
Creates an instance of this class.
T GetPressureKernel(const T &rho, const T &e)
std::shared_ptr< SessionReader > SessionReaderSharedPtr
The above copyright notice and this permission notice shall be included.
std::shared_ptr< EquationOfState > EquationOfStateSharedPtr
A shared pointer to an equation of state object.
tinysimd::simd< NekDouble > vec_t
scalarT< T > log(scalarT< T > in)
scalarT< T > abs(scalarT< T > in)
scalarT< T > sqrt(scalarT< T > in)