@@ -38,26 +38,29 @@ using namespace eos_base;
38
38
class CarnahanStarling : public EosBase <CarnahanStarling> {
39
39
public:
40
40
CarnahanStarling () = default ;
41
- PORTABLE_INLINE_FUNCTION CarnahanStarling (Real gm1, Real Cv, Real bb, Real qq)
41
+ PORTABLE_INLINE_FUNCTION
42
+ CarnahanStarling (Real gm1, Real Cv, Real bb, Real qq,
43
+ const MeanAtomicProperties &AZbar = MeanAtomicProperties())
42
44
: _Cv(Cv), _gm1(gm1), _bb(bb), _qq(qq), _T0(ROOM_TEMPERATURE),
43
45
_P0 (ATMOSPHERIC_PRESSURE), _qp(0.0 ),
44
46
_rho0(DensityFromPressureTemperature(_P0, _T0)), _vol0(robust::ratio(1.0 , _rho0)),
45
47
_sie0(Cv * _T0 + qq),
46
48
_bmod0(_rho0 * Cv * _T0 *
47
49
(PartialRhoZedFromDensity(_rho0) +
48
50
ZedFromDensity(_rho0) * ZedFromDensity(_rho0) * gm1)),
49
- _dpde0(_rho0 * ZedFromDensity (_rho0) * gm1) {
51
+ _dpde0(_rho0 * ZedFromDensity (_rho0) * gm1), _AZbar(AZbar) {
50
52
CheckParams ();
51
53
}
52
- PORTABLE_INLINE_FUNCTION CarnahanStarling (Real gm1, Real Cv, Real bb, Real qq, Real qp,
53
- Real T0, Real P0)
54
+ PORTABLE_INLINE_FUNCTION
55
+ CarnahanStarling (Real gm1, Real Cv, Real bb, Real qq, Real qp, Real T0, Real P0,
56
+ const MeanAtomicProperties &AZbar = MeanAtomicProperties())
54
57
: _Cv(Cv), _gm1(gm1), _bb(bb), _qq(qq), _T0(T0), _P0(P0), _qp(qp),
55
58
_rho0(DensityFromPressureTemperature(P0, T0)), _vol0(robust::ratio(1.0 , _rho0)),
56
59
_sie0(Cv * T0 + qq),
57
60
_bmod0(_rho0 * Cv * T0 *
58
61
(PartialRhoZedFromDensity(_rho0) +
59
62
ZedFromDensity(_rho0) * ZedFromDensity(_rho0) * gm1)),
60
- _dpde0(_rho0 * ZedFromDensity (_rho0) * gm1) {
63
+ _dpde0(_rho0 * ZedFromDensity (_rho0) * gm1), _AZbar(AZbar) {
61
64
CheckParams ();
62
65
}
63
66
CarnahanStarling GetOnDevice () { return *this ; }
@@ -247,12 +250,18 @@ class CarnahanStarling : public EosBase<CarnahanStarling> {
247
250
static std::string EosType () { return std::string (" CarnahanStarling" ); }
248
251
static std::string EosPyType () { return EosType (); }
249
252
253
+ PORTABLE_INLINE_FUNCTION
254
+ Real MeanAtomicMass () const { return _AZbar.Abar ; }
255
+ PORTABLE_INLINE_FUNCTION
256
+ Real MeanAtomicNumber () const { return _AZbar.Zbar ; }
257
+
250
258
private:
251
259
Real _Cv, _gm1, _bb, _qq;
252
260
// optional reference state variables
253
261
Real _T0, _P0, _qp;
254
262
// reference values
255
263
Real _rho0, _vol0, _sie0, _bmod0, _dpde0;
264
+ MeanAtomicProperties _AZbar;
256
265
// static constexpr const Real _T0 = ROOM_TEMPERATURE;
257
266
// static constexpr const Real _P0 = ATMOSPHERIC_PRESSURE;
258
267
static constexpr const unsigned long _preferred_input =
0 commit comments