Line data Source code
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 :
8 : namespace Model {
9 : namespace Gas {
10 :
11 : namespace EOS {
12 :
13 : class CPG
14 : {
15 : public:
16 : static constexpr const char* name = "cpg";
17 :
18 : public:
19 8 : static void Parse(CPG & /*value*/, IO::ParmParse & /*pp*/) {}
20 :
21 : public:
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 125784200 : double P = (E - 0.5*(momentumx*momentumx + momentumy*momentumy)/density) * (gas.gamma(Tguess, X, i, j, k) - 1.0);
28 125784200 : double T = P / density / gas.R(X, i, j, k);
29 125784200 : 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 22248 : 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 125784200 : 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 22248 : double P = density * R * T;
51 22248 : double rhoE = P / (gamma - 1.0);
52 22248 : double E = rhoE + 0.5*(momentumx*momentumx + momentumy*momentumy)/density;
53 22248 : return E;
54 : }
55 :
56 : }; // class CPG
57 :
58 : } // namespace EOS
59 : } // namespace Gas
60 : } // namespace Model
61 :
62 : #endif
63 :
|