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 ()
 
NekDouble GetTemperature (const NekDouble &rho, const NekDouble &e)
 Calculate the temperature. More...
 
NekDouble GetPressure (const NekDouble &rho, const NekDouble &e)
 Calculate the pressure. More...
 
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...
 
virtual NekDouble v_GetTemperature (const NekDouble &rho, const NekDouble &e)=0
 
virtual NekDouble v_GetPressure (const NekDouble &rho, const NekDouble &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
 

Detailed Description

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

Definition at line 62 of file EquationOfState.h.

Constructor & Destructor Documentation

◆ ~EquationOfState()

virtual Nektar::EquationOfState::~EquationOfState ( )
inlinevirtual

◆ EquationOfState()

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

Constructor.

Definition at line 47 of file EquationOfState.cpp.

49 {
50  pSession->LoadParameter("Gamma", m_gamma, 1.4);
51  pSession->LoadParameter("GasConstant", m_gasConstant, 287.058);
52 }

Member Function Documentation

◆ GetDPDe_rho()

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

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

Definition at line 81 of file EquationOfState.cpp.

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

82 {
83  return v_GetDPDe_rho(rho, e);
84 }
virtual NekDouble v_GetDPDe_rho(const NekDouble &rho, const NekDouble &e)=0

◆ GetDPDrho_e()

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

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

Definition at line 76 of file EquationOfState.cpp.

Referenced by ~EquationOfState().

77 {
78  return v_GetDPDrho_e(rho, e);
79 }
virtual NekDouble v_GetDPDrho_e(const NekDouble &rho, const NekDouble &e)=0

◆ GetEFromRhoP()

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

Obtain the internal energy from rho and P.

Definition at line 86 of file EquationOfState.cpp.

Referenced by ~EquationOfState().

88 {
89  return v_GetEFromRhoP(rho, p);
90 }
virtual NekDouble v_GetEFromRhoP(const NekDouble &rho, const NekDouble &p)=0

◆ GetEntropy()

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

Calculate the entropy.

Definition at line 71 of file EquationOfState.cpp.

Referenced by ~EquationOfState().

72 {
73  return v_GetEntropy(rho, e);
74 }
virtual NekDouble v_GetEntropy(const NekDouble &rho, const NekDouble &e)=0

◆ GetPressure()

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

Calculate the pressure.

Definition at line 60 of file EquationOfState.cpp.

Referenced by ~EquationOfState().

61 {
62  return v_GetPressure(rho, e);
63 }
virtual NekDouble v_GetPressure(const NekDouble &rho, const NekDouble &e)=0

◆ GetRhoFromPT()

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

Obtain the density from P and T.

Definition at line 92 of file EquationOfState.cpp.

Referenced by ~EquationOfState().

93 {
94  return v_GetRhoFromPT(p, T);
95 }
virtual NekDouble v_GetRhoFromPT(const NekDouble &rho, const NekDouble &p)=0

◆ GetSoundSpeed()

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

Calculate the sound speed.

Definition at line 65 of file EquationOfState.cpp.

Referenced by ~EquationOfState().

67 {
68  return v_GetSoundSpeed(rho, e);
69 }
virtual NekDouble v_GetSoundSpeed(const NekDouble &rho, const NekDouble &e)

◆ GetTemperature()

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

◆ 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()

virtual NekDouble Nektar::EquationOfState::v_GetPressure ( const NekDouble rho,
const NekDouble 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 99 of file EquationOfState.cpp.

References CellMLToNektar.cellml_metadata::p.

101 {
102  NekDouble p = GetPressure(rho, e);
103  NekDouble dpde = GetDPDe_rho(rho, e);
104  NekDouble dpdrho = GetDPDrho_e(rho, e);
105 
106  NekDouble enthalpy = e + p / rho;
107 
108  NekDouble chi = dpdrho - e / rho * dpde;
109  NekDouble kappa = dpde / rho;
110 
111  return sqrt(chi + kappa * enthalpy);
112 }
NekDouble GetDPDe_rho(const NekDouble &rho, const NekDouble &e)
Calculate the partial derivative of P(rho,e) with respect to e.
NekDouble GetDPDrho_e(const NekDouble &rho, const NekDouble &e)
Calculate the partial derivative of P(rho,e) with respect to rho.
double NekDouble
NekDouble GetPressure(const NekDouble &rho, const NekDouble &e)
Calculate the pressure.

◆ v_GetTemperature()

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

Member Data Documentation

◆ m_gamma

NekDouble Nektar::EquationOfState::m_gamma
protected

◆ m_gasConstant

NekDouble Nektar::EquationOfState::m_gasConstant
protected