35#ifndef NEKTAR_SOLVERS_COMPRESSIBLEFLOWSOLVER_MISC_REDLICHKWONGEOS
36#define NEKTAR_SOLVERS_COMPRESSIBLEFLOWSOLVER_MISC_REDLICHKWONGEOS
80 const vec_t &e)
override final;
86 const vec_t &e)
override final;
109 template <
class T,
typename =
typename std::enable_if<
110 std::is_floating_point<T>::value ||
118 template <
class T,
typename =
typename std::enable_if<
119 std::is_floating_point<T>::value ||
123 return log(1.0 +
m_b * rho);
126 template <
class T,
typename =
typename std::enable_if<
127 std::is_floating_point<T>::value ||
146 unsigned int maxIter = 100;
147 unsigned int cnt = 0;
148 while (
abs(residual) > tol && cnt < maxIter)
150 T f = sqrtT * sqrtT * sqrtT +
A * sqrtT + B;
151 T df = 3 * sqrtT * sqrtT +
A;
158 std::cout <<
"Newton-Raphson in RedlichKwongEoS::v_GetTemperature "
161 << maxIter <<
" iterations (residual = " << residual
166 return sqrtT * sqrtT;
169 template <
class T,
typename =
typename std::enable_if<
170 std::is_floating_point<T>::value ||
175 T oneOrho = 1.0 / rho;
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...
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
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.
RedlichKwongEoS(const LibUtilities::SessionReaderSharedPtr &pSession)
static EquationOfStateSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession)
Creates an instance of this class.
virtual NekDouble v_GetRhoFromPT(const NekDouble &rho, const NekDouble &p) override final
virtual NekDouble v_GetDPDe_rho(const NekDouble &rho, const NekDouble &e) override final
virtual NekDouble v_GetDPDrho_e(const NekDouble &rho, const NekDouble &e) override final
virtual NekDouble v_GetEFromRhoP(const NekDouble &rho, const NekDouble &p) override final
virtual NekDouble v_GetEntropy(const NekDouble &rho, const NekDouble &e) override final
T GetPressureKernel(const T &rho, const T &e)
virtual NekDouble v_GetPressure(const NekDouble &rho, const NekDouble &e) override final
virtual NekDouble v_GetTemperature(const NekDouble &rho, const NekDouble &e) override final
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 > abs(scalarT< T > in)
scalarT< T > log(scalarT< T > in)
scalarT< T > sqrt(scalarT< T > in)