Alamo
CPG.H
Go to the documentation of this file.
1#ifndef MODEL_GAS_EOS_CPG_H_
2#define MODEL_GAS_EOS_CPG_H_
3
4#include "IO/ParmParse.H"
5#include "Model/Gas/EOS/EOS.H"
6#include <memory>
7
8namespace Model {
9namespace Gas {
10
11namespace EOS {
12
13class CPG
14{
15public:
16 static constexpr const char* name = "cpg";
17
18public:
19 static void Parse(CPG & /*value*/, IO::ParmParse & /*pp*/) {}
20
21public:
22 template<typename GAS>
23 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
24 double ComputeT(const GAS &gas, double density, double momentumx, double momentumy, double E, double Tguess,
25 Set::Patch<const Set::Scalar>& X, int i, int j, int k, double /*rtol=1e-12*/) const
26 {
27 double P = (E - 0.5*(momentumx*momentumx + momentumy*momentumy)/density) * (gas.gamma(Tguess, X, i, j, k) - 1.0);
28 double T = P / density / gas.R(X, i, j, k);
29 return T;
30 }
31
32 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
33 double ComputeT(double pressure, double density,
34 double R) const
35 {
36 return pressure / density / R;
37 }
38
39 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
40 double ComputeP(double density, double T,
41 double R) const
42 {
43 return density * R * T;
44 }
45
46 AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE
47 double ComputeE(double density, double momentumx, double momentumy, double T,
48 double R, double gamma) const
49 {
50 double P = density * R * T;
51 double rhoE = P / (gamma - 1.0);
52 double E = rhoE + 0.5*(momentumx*momentumx + momentumy*momentumy)/density;
53 return E;
54 }
55
56}; // class CPG
57
58} // namespace EOS
59} // namespace Gas
60} // namespace Model
61
62#endif
63
#define X(name)
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE double ComputeP(double density, double T, double R) const
Definition CPG.H:40
static void Parse(CPG &, IO::ParmParse &)
Definition CPG.H:19
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE double ComputeE(double density, double momentumx, double momentumy, double T, double R, double gamma) const
Definition CPG.H:47
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE double ComputeT(double pressure, double density, double R) const
Definition CPG.H:33
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE double ComputeT(const GAS &gas, double density, double momentumx, double momentumy, double E, double Tguess, Set::Patch< const Set::Scalar > &X, int i, int j, int k, double) const
Definition CPG.H:24
static constexpr const char * name
Definition CPG.H:16
Eigen::Matrix< amrex::Real, AMREX_SPACEDIM, 1 > Vector
Definition Base.H:21