![]() |
Particles and Nuclei Sub-Library: Version 0.909
|
Fermion with finite-temperature thermodynamics [abstract base]. More...
#include <fermion.h>
This is an abstract base for the computation of finite-temperature fermionic statistics. Different children (e.g. eff_fermion and rel_fermion) use different techniques to computing the momentum integrations.
Because massless fermions at finite temperature are much simpler, there are separate member functions included in this class to handle them. The functions massless_calc_density() and massless_calc_mu() compute the thermodynamics of massless fermions at finite temperature given the density or the chemical potentials. The functions massless_pair_density() and massless_pair_mu() perform the same task, but automatically include antiparticles.
The function massless_calc_density() uses a root object to solve for the chemical potential as a function of the density. The default is an object of type cern_mroot_root. The function massless_pair_density() does not need to use the root object because of the simplification afforded by the inclusion of antiparticles.
Public Member Functions | |
fermion_T (double mass=0, double dof=0) | |
Create a fermion with mass mass and degeneracy dof . | |
virtual int | calc_mu (double temper)=0 |
Calculate properties as function of chemical potential. | |
virtual int | calc_density (double temper)=0 |
Calculate properties as function of density. | |
virtual int | pair_mu (double temper)=0 |
Calculate properties with antiparticles as function of chemical potential. | |
virtual int | pair_density (double temper)=0 |
Calculate properties with antiparticles as function of density. | |
int | set_massless_root (root< funct > &rp) |
Set the solver for use in massless_calc_density() | |
virtual const char * | type () |
Return string denoting type ("fermion_T") | |
virtual double | calibrate (int verbose=0, std::string fname="") |
Test the thermodynamics of calc_density() and calc_mu() | |
Massless fermions | |
virtual int | massless_calc_mu (double temper) |
Finite temperature massless fermions. | |
virtual int | massless_calc_density (double temper) |
Finite temperature massless fermions. | |
int | massless_pair_mu (double temper) |
Finite temperature massless fermions and antifermions. | |
int | massless_pair_density (double temper) |
Finite temperature massless fermions and antifermions. | |
Data Fields | |
cern_mroot_root< funct > | def_massless_root |
The default solver for massless_calc_density() |
int fermion_T::massless_pair_density | ( | double | temper | ) |
In the cases and
, expansions are used instead of the exact formulas to avoid loss of precision.
In particular, using the parameter
and defining the expression
we can write the chemical potential as
These expressions, however, do not work well when is very large or very small, so series expansions are used whenever
or
. For small
,
and for large ,
This approach works to within about 1 part in , and is tested in
fermion_ts.cpp
.
virtual double fermion_T::calibrate | ( | int | verbose = 0 , |
std::string | fname = "" |
||
) | [virtual] |
This compares the approximation to the exact results over a grid with ,
, and
, where
using calc_density() and calc_mu(), with both inc_rest_mass taking both values
true
and false
.
The verbose
parameter controls the amount of output, and fname
is the filename for the file fermion_cal.dat
.
We default to a solver of type cern_mroot_root here since we don't have a bracket or a derivative.
Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).