Skip to content

Commit 65a68ce

Browse files
committed
fused macro, as suggested by Adam
1 parent 703cfec commit 65a68ce

File tree

3 files changed

+37
-34
lines changed

3 files changed

+37
-34
lines changed

singularity-eos/eos/eos_base.hpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,12 @@ char *StrCat(char *destination, const char *source) {
185185
const { \
186186
NAME(IN1, IN2, OUT, num, std::forward<LambdaIndexer>(lambdas)); \
187187
}
188+
// This one does both BlahFromDensityTemperature and
189+
// BlahFromDensityInternalEnergy at once. Not always useful. But
190+
// frequently is.
191+
#define SG_EOS_VEC_FOR(OUTNAME) \
192+
SG_EOS_VEC_2IN_1OUT(OUTNAME##FromDensityTemperature, rhos, temperatures, OUTNAME##s) \
193+
SG_EOS_VEC_2IN_1OUT(OUTNAME##FromDensityInternalEnergy, rhos, sies, OUTNAME##s)
188194

189195
class Factor {
190196
Real value_ = 1.0;
@@ -372,8 +378,7 @@ class EosBase {
372378
// Vector member functions
373379
SG_EOS_VEC_2IN_1OUT(TemperatureFromDensityInternalEnergy, rhos, sies, temperatures)
374380
SG_EOS_VEC_2IN_1OUT(InternalEnergyFromDensityTemperature, rhos, temperatures, sies)
375-
SG_EOS_VEC_2IN_1OUT(PressureFromDensityTemperature, rhos, temperatures, pressures)
376-
SG_EOS_VEC_2IN_1OUT(PressureFromDensityInternalEnergy, rhos, sies, pressures)
381+
SG_EOS_VEC_FOR(Pressure)
377382

378383
/// This is sort of what the SG_EOS_VEC would concretize too, though
379384
/// it has fewer arguments.
@@ -406,16 +411,11 @@ class EosBase {
406411
}
407412
///
408413

409-
SG_EOS_VEC_2IN_1OUT(EntropyFromDensityTemperature, rhos, temperatures, entropies)
410-
SG_EOS_VEC_2IN_1OUT(EntropyFromDensityInternalEnergy, rhos, sies, entropies)
411-
SG_EOS_VEC_2IN_1OUT(SpecificHeatFromDensityTemperature, rhos, temperatures, cvs)
412-
SG_EOS_VEC_2IN_1OUT(SpecificHeatFromDensityInternalEnergy, rhos, sies, cvs)
413-
SG_EOS_VEC_2IN_1OUT(BulkModulusFromDensityTemperature, rhos, temperatures, bmods)
414-
SG_EOS_VEC_2IN_1OUT(BulkModulusFromDensityInternalEnergy, rhos, sies, bmods)
415-
SG_EOS_VEC_2IN_1OUT(GruneisenParamFromDensityTemperature, rhos, temperatures, gm1s)
416-
SG_EOS_VEC_2IN_1OUT(GruneisenParamFromDensityInternalEnergy, rhos, sies, gm1s)
417-
SG_EOS_VEC_2IN_1OUT(GibbsFreeEnergyFromDensityTemperature, rhos, Ts, Gs)
418-
SG_EOS_VEC_2IN_1OUT(GibbsFreeEnergyFromDensityInternalEnergy, rhos, sies, Gs)
414+
SG_EOS_VEC_FOR(Entropy)
415+
SG_EOS_VEC_FOR(SpecificHeat)
416+
SG_EOS_VEC_FOR(BulkModulus)
417+
SG_EOS_VEC_FOR(GruneisenParam)
418+
SG_EOS_VEC_FOR(GibbsFreeEnergy)
419419

420420
template <typename RealIndexer, typename LambdaIndexer>
421421
inline void FillEos(RealIndexer &&rhos, RealIndexer &&temps, RealIndexer &&energies,
@@ -754,6 +754,7 @@ class EosBase {
754754
} // namespace eos_base
755755
} // namespace singularity
756756

757+
#undef SG_EOS_VEC_FOR
757758
#undef SG_EOS_VEC_2IN_1OUT
758759
#undef SG_MEMBER_FUNC_NAME
759760
#endif

singularity-eos/eos/eos_eospac.hpp

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,10 @@ inline void SetUpOutputScalingOption(EOS_INTEGER options[], EOS_REAL values[],
154154
std::forward<ConstRealIndexer>(IN1), std::forward<ConstRealIndexer>(IN2), \
155155
std::forward<RealIndexer>(OUT), num, std::forward<LambdaIndexer>(lambdas)); \
156156
}
157+
// Does fromdensitytemperature and fromdensityinternalenergy at once
158+
#define SG_EOSPAC_VEC_FOR(OUTNAME) \
159+
SG_EOSPAC_VEC_2IN_1OUT(OUTNAME##FromDensityTemperature, rhos, temps, OUTNAME##s) \
160+
SG_EOSPAC_VEC_2IN_1OUT(OUTNAME##FromDensityInternalEnergy, rhos, sies, OUTNAME##s)
157161

158162
// TODO(@adempsey): Add mass fractions + better multiphase support
159163
class EOSPAC : public EosBase<EOSPAC> {
@@ -282,8 +286,8 @@ class EOSPAC : public EosBase<EOSPAC> {
282286
using EosBase<EOSPAC>::is_raw_pointer;
283287
SG_EOSPAC_VEC_2IN_1OUT(TemperatureFromDensityInternalEnergy, rhos, sies, temperatures)
284288
SG_EOSPAC_VEC_2IN_1OUT(InternalEnergyFromDensityTemperature, rhos, temperatures, sies)
285-
SG_EOSPAC_VEC_2IN_1OUT(PressureFromDensityTemperature, rhos, temperatures, pressures)
286-
SG_EOSPAC_VEC_2IN_1OUT(PressureFromDensityInternalEnergy, rhos, sies, pressures)
289+
SG_EOSPAC_VEC_FOR(Pressure)
290+
287291
template <typename RealIndexer, typename ConstRealIndexer, typename LambdaIndexer>
288292
inline void MinInternalEnergyFromDensity(ConstRealIndexer &&rhos, RealIndexer &&sies,
289293
const int num, LambdaIndexer &&lambdas) const {
@@ -297,14 +301,11 @@ class EOSPAC : public EosBase<EOSPAC> {
297301
PORTABLE_WARN("EOSPAC type mismatch will cause significant performance degradation");
298302
EosBase<EOSPAC>::MinInternalEnergyFromDensity(rhos, sies, num, lambdas);
299303
}
300-
SG_EOSPAC_VEC_2IN_1OUT(EntropyFromDensityTemperature, rhos, temperatures, entropies)
301-
SG_EOSPAC_VEC_2IN_1OUT(EntropyFromDensityInternalEnergy, rhos, sies, entropies)
302-
SG_EOSPAC_VEC_2IN_1OUT(SpecificHeatFromDensityTemperature, rhos, temperatures, cvs)
303-
SG_EOSPAC_VEC_2IN_1OUT(SpecificHeatFromDensityInternalEnergy, rhos, sies, cvs)
304-
SG_EOSPAC_VEC_2IN_1OUT(BulkModulusFromDensityTemperature, rhos, temperatures, bmods)
305-
SG_EOSPAC_VEC_2IN_1OUT(BulkModulusFromDensityInternalEnergy, rhos, sies, bmods)
306-
SG_EOSPAC_VEC_2IN_1OUT(GruneisenParamFromDensityTemperature, rhos, temperatures, gm1s)
307-
SG_EOSPAC_VEC_2IN_1OUT(GruneisenParamFromDensityInternalEnergy, rhos, sies, gm1s)
304+
305+
SG_EOSPAC_VEC_FOR(Entropy)
306+
SG_EOSPAC_VEC_FOR(SpecificHeat)
307+
SG_EOSPAC_VEC_FOR(BulkModulus)
308+
SG_EOSPAC_VEC_FOR(GruneisenParam)
308309

309310
// TODO(JMM): Add performant Gibbs Free Energy
310311
using EosBase<EOSPAC>::FillEos;

singularity-eos/eos/eos_variant.hpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,12 @@ struct NullIndexer {
9494
}, \
9595
eos_); \
9696
}
97+
// This one does both FromDensityTemperature and
98+
// FromDensityInternalEnergy at once. Not always useful, but
99+
// frequently is.
100+
#define SG_VARIANT_VEC_FOR(OUTNAME) \
101+
SG_VARIANT_VEC_2IN_1OUT(OUTNAME##FromDensityTemperature, rhos, temps, OUTNAME##s) \
102+
SG_VARIANT_VEC_2IN_1OUT(OUTNAME##FromDensityInternalEnergy, rhos, sies, OUTNAME##s)
97103

98104
template <typename... EOSs>
99105
class Variant {
@@ -489,8 +495,7 @@ class Variant {
489495
*/
490496
SG_VARIANT_VEC_2IN_1OUT(TemperatureFromDensityInternalEnergy, rhos, sies, temperatures)
491497
SG_VARIANT_VEC_2IN_1OUT(InternalEnergyFromDensityTemperature, rhos, temperatures, sies)
492-
SG_VARIANT_VEC_2IN_1OUT(PressureFromDensityTemperature, rhos, temperatures, pressures)
493-
SG_VARIANT_VEC_2IN_1OUT(PressureFromDensityInternalEnergy, rhos, sies, pressures)
498+
SG_VARIANT_VEC_FOR(Pressure)
494499

495500
/// This is sort of what the SG_VARIANT_VEC would concretize too, though
496501
/// it has fewer arguments.
@@ -537,16 +542,11 @@ class Variant {
537542
}
538543
///
539544

540-
SG_VARIANT_VEC_2IN_1OUT(EntropyFromDensityTemperature, rhos, temperatures, entropies)
541-
SG_VARIANT_VEC_2IN_1OUT(EntropyFromDensityInternalEnergy, rhos, sies, entropies)
542-
SG_VARIANT_VEC_2IN_1OUT(GibbsFreeEnergyFromDensityTemperature, rhos, temperatures, Gs)
543-
SG_VARIANT_VEC_2IN_1OUT(GibbsFreeEnergyFromDensityInternalEnergy, rhos, sies, Gs)
544-
SG_VARIANT_VEC_2IN_1OUT(SpecificHeatFromDensityTemperature, rhos, temperatures, cvs)
545-
SG_VARIANT_VEC_2IN_1OUT(SpecificHeatFromDensityInternalEnergy, rhos, sies, cvs)
546-
SG_VARIANT_VEC_2IN_1OUT(BulkModulusFromDensityTemperature, rhos, temperatures, bmods)
547-
SG_VARIANT_VEC_2IN_1OUT(BulkModulusFromDensityInternalEnergy, rhos, sies, bmods)
548-
SG_VARIANT_VEC_2IN_1OUT(GruneisenParamFromDensityTemperature, rhos, temperatures, gm1s)
549-
SG_VARIANT_VEC_2IN_1OUT(GruneisenParamFromDensityInternalEnergy, rhos, sies, gm1s)
545+
SG_VARIANT_VEC_FOR(Entropy)
546+
SG_VARIANT_VEC_FOR(GibbsFreeEnergy)
547+
SG_VARIANT_VEC_FOR(SpecificHeat)
548+
SG_VARIANT_VEC_FOR(BulkModulus)
549+
SG_VARIANT_VEC_FOR(GruneisenParam)
550550
SG_VARIANT_VEC_2IN_1OUT(InternalEnergyFromDensityPressure, rhos, Ps, sies)
551551

552552
template <typename RealIndexer>
@@ -738,5 +738,6 @@ class Variant {
738738
};
739739
} // namespace singularity
740740

741+
#undef SG_VARIANT_VEC_FOR
741742
#undef SG_VARIANT_VEC_2IN_1OUT
742743
#endif // EOS_VARIANT_HPP

0 commit comments

Comments
 (0)