Nektar++
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Nektar::EquationOfState Class Referenceabstract

Encapsulates equations of state allowing us to obtain thermodynamic properties: most relations are in the form X(rho,e) More...

#include <EquationOfState.h>

Inheritance diagram for Nektar::EquationOfState:
[legend]

Public Member Functions

virtual ~EquationOfState ()=default
 
NekDouble GetTemperature (const NekDouble &rho, const NekDouble &e)
 Calculate the temperature. More...
 
vec_t GetTemperature (const vec_t &rho, const vec_t &e)
 
NekDouble GetPressure (const NekDouble &rho, const NekDouble &e)
 Calculate the pressure. More...
 
vec_t GetPressure (const vec_t &rho, const vec_t &e)
 
NekDouble GetSoundSpeed (const NekDouble &rho, const NekDouble &e)
 Calculate the sound speed. More...
 
NekDouble GetEntropy (const NekDouble &rho, const NekDouble &e)
 Calculate the entropy. More...
 
NekDouble GetDPDrho_e (const NekDouble &rho, const NekDouble &e)
 Calculate the partial derivative of P(rho,e) with respect to rho. More...
 
NekDouble GetDPDe_rho (const NekDouble &rho, const NekDouble &e)
 Calculate the partial derivative of P(rho,e) with respect to e. More...
 
NekDouble GetEFromRhoP (const NekDouble &rho, const NekDouble &p)
 Obtain the internal energy from rho and P. More...
 
NekDouble GetRhoFromPT (const NekDouble &p, const NekDouble &T)
 Obtain the density from P and T. More...
 

Protected Member Functions

 EquationOfState (const LibUtilities::SessionReaderSharedPtr &pSession)
 Constructor. More...
 
 EquationOfState (const NekDouble &gamma, const NekDouble &gasConstant)
 Programmatic Constructor. More...
 
virtual NekDouble v_GetTemperature (const NekDouble &rho, const NekDouble &e)=0
 
virtual vec_t v_GetTemperature (const vec_t &rho, const vec_t &e)=0
 
virtual NekDouble v_GetPressure (const NekDouble &rho, const NekDouble &e)=0
 
virtual vec_t v_GetPressure (const vec_t &rho, const vec_t &e)=0
 
virtual NekDouble v_GetSoundSpeed (const NekDouble &rho, const NekDouble &e)
 
virtual NekDouble v_GetEntropy (const NekDouble &rho, const NekDouble &e)=0
 
virtual NekDouble v_GetDPDrho_e (const NekDouble &rho, const NekDouble &e)=0
 
virtual NekDouble v_GetDPDe_rho (const NekDouble &rho, const NekDouble &e)=0
 
virtual NekDouble v_GetEFromRhoP (const NekDouble &rho, const NekDouble &p)=0
 
virtual NekDouble v_GetRhoFromPT (const NekDouble &rho, const NekDouble &p)=0
 

Protected Attributes

NekDouble m_gamma
 
NekDouble m_gasConstant
 
NekDouble m_gammaMone
 
NekDouble m_gammaMoneOgasConst
 

Detailed Description

Encapsulates equations of state allowing us to obtain thermodynamic properties: most relations are in the form X(rho,e)

Definition at line 67 of file EquationOfState.h.

Constructor & Destructor Documentation

◆ ~EquationOfState()

virtual Nektar::EquationOfState::~EquationOfState ( )
virtualdefault

◆ EquationOfState() [1/2]

Nektar::EquationOfState::EquationOfState ( const LibUtilities::SessionReaderSharedPtr pSession)
protected

Constructor.

Definition at line 45 of file EquationOfState.cpp.

47{
48 pSession->LoadParameter("Gamma", m_gamma, 1.4);
49 pSession->LoadParameter("GasConstant", m_gasConstant, 287.058);
50
51 m_gammaMone = m_gamma - 1.0;
53}

References m_gamma, m_gammaMone, m_gammaMoneOgasConst, and m_gasConstant.

◆ EquationOfState() [2/2]

Nektar::EquationOfState::EquationOfState ( const NekDouble gamma,
const NekDouble gasConstant 
)
protected

Programmatic Constructor.

Definition at line 55 of file EquationOfState.cpp.

57 : m_gamma{gamma}, m_gasConstant{gasConstant}
58{
59}

Member Function Documentation

◆ GetDPDe_rho()

NekDouble Nektar::EquationOfState::GetDPDe_rho ( const NekDouble rho,
const NekDouble e 
)
inline

Calculate the partial derivative of P(rho,e) with respect to e.

Definition at line 113 of file EquationOfState.h.

114 {
115 return v_GetDPDe_rho(rho, e);
116 }
virtual NekDouble v_GetDPDe_rho(const NekDouble &rho, const NekDouble &e)=0

References v_GetDPDe_rho().

Referenced by Nektar::PengRobinsonEoS::v_GetDPDrho_e(), Nektar::RedlichKwongEoS::v_GetDPDrho_e(), and v_GetSoundSpeed().

◆ GetDPDrho_e()

NekDouble Nektar::EquationOfState::GetDPDrho_e ( const NekDouble rho,
const NekDouble e 
)
inline

Calculate the partial derivative of P(rho,e) with respect to rho.

Definition at line 107 of file EquationOfState.h.

108 {
109 return v_GetDPDrho_e(rho, e);
110 }
virtual NekDouble v_GetDPDrho_e(const NekDouble &rho, const NekDouble &e)=0

References v_GetDPDrho_e().

Referenced by v_GetSoundSpeed().

◆ GetEFromRhoP()

NekDouble Nektar::EquationOfState::GetEFromRhoP ( const NekDouble rho,
const NekDouble p 
)
inline

Obtain the internal energy from rho and P.

Definition at line 119 of file EquationOfState.h.

120 {
121 return v_GetEFromRhoP(rho, p);
122 }
virtual NekDouble v_GetEFromRhoP(const NekDouble &rho, const NekDouble &p)=0

References CellMLToNektar.cellml_metadata::p, and v_GetEFromRhoP().

◆ GetEntropy()

NekDouble Nektar::EquationOfState::GetEntropy ( const NekDouble rho,
const NekDouble e 
)
inline

Calculate the entropy.

Definition at line 101 of file EquationOfState.h.

102 {
103 return v_GetEntropy(rho, e);
104 }
virtual NekDouble v_GetEntropy(const NekDouble &rho, const NekDouble &e)=0

References v_GetEntropy().

◆ GetPressure() [1/2]

NekDouble Nektar::EquationOfState::GetPressure ( const NekDouble rho,
const NekDouble e 
)
inline

Calculate the pressure.

Definition at line 84 of file EquationOfState.h.

85 {
86 return v_GetPressure(rho, e);
87 }
virtual NekDouble v_GetPressure(const NekDouble &rho, const NekDouble &e)=0

References v_GetPressure().

Referenced by v_GetSoundSpeed().

◆ GetPressure() [2/2]

vec_t Nektar::EquationOfState::GetPressure ( const vec_t rho,
const vec_t e 
)
inline

Definition at line 89 of file EquationOfState.h.

90 {
91 return v_GetPressure(rho, e);
92 }

References v_GetPressure().

◆ GetRhoFromPT()

NekDouble Nektar::EquationOfState::GetRhoFromPT ( const NekDouble p,
const NekDouble T 
)
inline

Obtain the density from P and T.

Definition at line 125 of file EquationOfState.h.

126 {
127 return v_GetRhoFromPT(p, T);
128 }
virtual NekDouble v_GetRhoFromPT(const NekDouble &rho, const NekDouble &p)=0

References CellMLToNektar.cellml_metadata::p, and v_GetRhoFromPT().

◆ GetSoundSpeed()

NekDouble Nektar::EquationOfState::GetSoundSpeed ( const NekDouble rho,
const NekDouble e 
)
inline

Calculate the sound speed.

Definition at line 95 of file EquationOfState.h.

96 {
97 return v_GetSoundSpeed(rho, e);
98 }
virtual NekDouble v_GetSoundSpeed(const NekDouble &rho, const NekDouble &e)

References v_GetSoundSpeed().

◆ GetTemperature() [1/2]

NekDouble Nektar::EquationOfState::GetTemperature ( const NekDouble rho,
const NekDouble e 
)
inline

◆ GetTemperature() [2/2]

vec_t Nektar::EquationOfState::GetTemperature ( const vec_t rho,
const vec_t e 
)
inline

Definition at line 78 of file EquationOfState.h.

79 {
80 return v_GetTemperature(rho, e);
81 }

References v_GetTemperature().

◆ v_GetDPDe_rho()

virtual NekDouble Nektar::EquationOfState::v_GetDPDe_rho ( const NekDouble rho,
const NekDouble e 
)
protectedpure virtual

◆ v_GetDPDrho_e()

virtual NekDouble Nektar::EquationOfState::v_GetDPDrho_e ( const NekDouble rho,
const NekDouble e 
)
protectedpure virtual

◆ v_GetEFromRhoP()

virtual NekDouble Nektar::EquationOfState::v_GetEFromRhoP ( const NekDouble rho,
const NekDouble p 
)
protectedpure virtual

◆ v_GetEntropy()

virtual NekDouble Nektar::EquationOfState::v_GetEntropy ( const NekDouble rho,
const NekDouble e 
)
protectedpure virtual

◆ v_GetPressure() [1/2]

virtual NekDouble Nektar::EquationOfState::v_GetPressure ( const NekDouble rho,
const NekDouble e 
)
protectedpure virtual

◆ v_GetPressure() [2/2]

virtual vec_t Nektar::EquationOfState::v_GetPressure ( const vec_t rho,
const vec_t e 
)
protectedpure virtual

◆ v_GetRhoFromPT()

virtual NekDouble Nektar::EquationOfState::v_GetRhoFromPT ( const NekDouble rho,
const NekDouble p 
)
protectedpure virtual

◆ v_GetSoundSpeed()

NekDouble Nektar::EquationOfState::v_GetSoundSpeed ( const NekDouble rho,
const NekDouble e 
)
protectedvirtual

Reimplemented in Nektar::IdealGasEoS.

Definition at line 63 of file EquationOfState.cpp.

65{
66 NekDouble p = GetPressure(rho, e);
67 NekDouble dpde = GetDPDe_rho(rho, e);
68 NekDouble dpdrho = GetDPDrho_e(rho, e);
69
70 NekDouble enthalpy = e + p / rho;
71
72 NekDouble chi = dpdrho - e / rho * dpde;
73 NekDouble kappa = dpde / rho;
74
75 return std::sqrt(chi + kappa * enthalpy);
76}
NekDouble GetPressure(const NekDouble &rho, const NekDouble &e)
Calculate the pressure.
NekDouble GetDPDrho_e(const NekDouble &rho, const NekDouble &e)
Calculate the partial derivative of P(rho,e) with respect to rho.
NekDouble GetDPDe_rho(const NekDouble &rho, const NekDouble &e)
Calculate the partial derivative of P(rho,e) with respect to e.
double NekDouble
scalarT< T > sqrt(scalarT< T > in)
Definition: scalar.hpp:285

References GetDPDe_rho(), GetDPDrho_e(), GetPressure(), CellMLToNektar.cellml_metadata::p, and tinysimd::sqrt().

Referenced by GetSoundSpeed().

◆ v_GetTemperature() [1/2]

virtual NekDouble Nektar::EquationOfState::v_GetTemperature ( const NekDouble rho,
const NekDouble e 
)
protectedpure virtual

◆ v_GetTemperature() [2/2]

virtual vec_t Nektar::EquationOfState::v_GetTemperature ( const vec_t rho,
const vec_t e 
)
protectedpure virtual

Member Data Documentation

◆ m_gamma

NekDouble Nektar::EquationOfState::m_gamma
protected

◆ m_gammaMone

NekDouble Nektar::EquationOfState::m_gammaMone
protected

Definition at line 133 of file EquationOfState.h.

Referenced by EquationOfState(), and Nektar::IdealGasEoS::GetPressureKernel().

◆ m_gammaMoneOgasConst

NekDouble Nektar::EquationOfState::m_gammaMoneOgasConst
protected

◆ m_gasConstant

NekDouble Nektar::EquationOfState::m_gasConstant
protected