Thermal-FIST 1.5
Package for hadron resonance gas model applications
Loading...
Searching...
No Matches
ThermalModelCanonical.h
Go to the documentation of this file.
1/*
2 * Thermal-FIST package
3 *
4 * Copyright (c) 2015-2019 Volodymyr Vovchenko
5 *
6 * GNU General Public License (GPLv3 or later)
7 */
8#ifndef THERMALMODELCANONICAL_H
9#define THERMALMODELCANONICAL_H
10
11#include <map>
12
13
15
16namespace thermalfist {
17
24 {
25 int B;
26 int Q;
27 int S;
28 int C;
29
38 QuantumNumbers(int iB = 0, int iQ = 0, int iS = 0, int iC = 0) :
39 B(iB), Q(iQ), S(iS), C(iC) { }
40 const bool operator < (const QuantumNumbers &r) const {
41 if (B != r.B)
42 return (B < r.B);
43 else if (Q != r.Q)
44 return (Q < r.Q);
45 else if (S != r.S)
46 return (S < r.S);
47 else
48 return (C < r.C);
49 }
50 };
51
65 public ThermalModelBase
66 {
67 public:
75
80 virtual ~ThermalModelCanonical(void);
81
91 virtual void CalculateQuantumNumbersRange(bool computeFluctuations = false);
92
107 virtual void CalculatePartitionFunctions(double Vc = -1.);
108
121 virtual bool IsParticleCanonical(const ThermalParticle &part);
122
130 virtual void ConserveBaryonCharge(bool conserve = true) { m_BCE = static_cast<int>(conserve); }
131
139 virtual void ConserveElectricCharge(bool conserve = true) { m_QCE = static_cast<int>(conserve); }
140
148 virtual void ConserveStrangeness(bool conserve = true) { m_SCE = static_cast<int>(conserve); }
149
157 virtual void ConserveCharm(bool conserve = true) { m_CCE = static_cast<int>(conserve); }
158
159 virtual bool IsConservedChargeCanonical(ConservedCharge::Name charge) const;
160
167 virtual double GetGCEDensity(int i) const;
168
175
184
185
186 // Override functions begin
187
189
190 virtual void SetStatistics(bool stats);
191
192 virtual void FixParameters();
193
194 virtual void FixParametersNoReset();
195
196 virtual void CalculatePrimordialDensities();
197
198 virtual void ValidateCalculation();
199
200 virtual double ParticleScaledVariance(int part);
201
203
210 virtual void CalculateFluctuations();
211
212 virtual double CalculateEnergyDensity();
213
214 virtual double CalculatePressure();
215
216 virtual double CalculateEntropyDensity();
217
218 virtual double CalculateEnergyDensityDerivativeT() { throw std::runtime_error("CalculateEnergyDensityDerivativeT not implemented"); return 0.; } // Not implemented
219
229 virtual double ParticleScalarDensity(int /*part*/) { return 0.; }
230
231 // Override functions end
232
233 private:
235
242 void PrepareModelGCE();
243
244 void CleanModelGCE();
246
247 protected:
248
255 std::vector<QuantumNumbers> m_QNvec;
256
262 std::map<QuantumNumbers, int> m_QNMap;
263
271 std::vector<double> m_Corr;
272
282 std::vector<double> m_PartialZ;
283
291
292 int m_BMAX;
293 int m_QMAX;
294 int m_SMAX;
295 int m_CMAX;
297
298 double m_MultExp;
300
303
304 int m_BCE;
305 int m_QCE;
306 int m_SCE;
307 int m_CCE;
308
313 };
314
315} // namespace thermalfist
316
317#endif
map< string, double > params
ThermalModelBase(ThermalParticleSystem *TPS, const ThermalModelParameters &params=ThermalModelParameters())
Construct a new ThermalModelBase object.
virtual void ConserveCharm(bool conserve=true)
Specifies whether the charm charge is treated canonically.
std::map< QuantumNumbers, int > m_QNMap
Maps QuantumNumbers combinations to a 1-dimensional index.
double m_MultExpBanalyt
Exponential multiplier for analytical baryon fugacity calculations.
int m_IntegrationIterationsMultiplier
A multiplier to increase the number of iterations during the numerical integration used to calculate ...
virtual double ParticleScalarDensity(int)
Returns the scalar density of a particle species.
int IntegrationIterationsMultiplier() const
The multiplier of the number of iterations in the numerical integration.
std::vector< double > m_PartialZ
The computed canonical partition function.
int m_QCE
Flag indicating if electric charge is conserved canonically.
virtual void ConserveStrangeness(bool conserve=true)
Specifies whether the strangeness charge is treated canonically.
void ChangeTPS(ThermalParticleSystem *TPS)
Change the particle list.
virtual void CalculateTwoParticleCorrelations()
Computes the fluctuations and correlations of the primordial particle numbers.
int m_CCE
Flag indicating if charm is conserved canonically.
virtual void CalculateFluctuations()
Computes the fluctuation observables.
double m_MultExp
Exponential multiplier for canonical partition function calculations.
virtual double ParticleScaledVariance(int part)
std::vector< QuantumNumbers > m_QNvec
A set of QuantumNumbers combinations for which it is necessary to compute the canonical partition fun...
std::vector< double > m_Corr
A vector of chemical factors.
virtual double GetGCEDensity(int i) const
Density of particle species i in the grand-canonical ensemble.
virtual bool IsParticleCanonical(const ThermalParticle &part)
Determines whether the specified ThermalParticle is treat canonically or grand-canonically in the pre...
virtual void CalculatePartitionFunctions(double Vc=-1.)
Calculates all necessary canonical partition functions.
virtual ~ThermalModelCanonical(void)
Destroy the ThermalModelCanonical object.
void SetIntegrationIterationsMultiplier(int multiplier)
Assigns the multiplier of the number of iterations in the numerical integration.
virtual void CalculateQuantumNumbersRange(bool computeFluctuations=false)
Calculates the range of quantum numbers values for which it is necessary to compute the canonical par...
virtual void FixParametersNoReset()
Method which actually implements ConstrainChemicalPotentialsNoReset() (for backward compatibility).
int m_BCE
Flag indicating if baryon charge is conserved canonically.
ThermalModelIdeal * m_modelgce
Pointer to a ThermalModelIdeal object used for GCE calculations.
virtual void ValidateCalculation()
Checks whether issues have occured during the calculation of particle densities in the CalculateDensi...
virtual bool IsConservedChargeCanonical(ConservedCharge::Name charge) const
bool m_Banalyt
Flag indicating whether the analytical calculation of baryon fugacity is used.
int m_SCE
Flag indicating if strangeness is conserved canonically.
virtual void FixParameters()
Method which actually implements ConstrainChemicalPotentials() (for backward compatibility).
virtual void ConserveElectricCharge(bool conserve=true)
Specifies whether the electric charge is treated canonically.
virtual void CalculatePrimordialDensities()
Calculates the primordial densities of all species.
ThermalModelCanonical(ThermalParticleSystem *TPS, const ThermalModelParameters &params=ThermalModelParameters())
Construct a new ThermalModelCanonical object.
virtual void ConserveBaryonCharge(bool conserve=true)
Specifies whether the baryon number is treated canonically.
Class implementing the Ideal HRG model.
Class containing all information about a particle specie.
Class containing the particle list.
The main namespace where all classes and functions of the Thermal-FIST library reside.
Definition CosmicEoS.h:9
Name
Set of all conserved charges considered.
QuantumNumbers(int iB=0, int iQ=0, int iS=0, int iC=0)
Construct a new QuantumNumbers object.
const bool operator<(const QuantumNumbers &r) const
Structure containing all thermal parameters of the model.