Equation of state for a relativistic fermion. More...
#include <fermion_deriv_rel.h>
This implements an equation of state for a relativistic fermion using direct integration. After subtracting the rest mass from the chemical potentials, the distribution function is
where is the momentum,
is the effective chemical potential,
is the rest mass, and
is the effective mass. For later use, we define
. The degeneracy parameter is
For greater than deg_limit (degenerate regime), a finite interval integrator is used and for
less than deg_limit (non-degenerate regime), an integrator over the interval from
is used. The upper limit on the degenerate integration is given by the value of the momentum
which is the solution of
which is
where .
For the entropy integration, we set the lower limit to
since the only contribution to the entropy is at the Fermi surface.
In the non-degenerate regime, we make the substitution to help ensure that the variable of integration scales properly.
Uncertainties are given in unc.
Evaluation of the derivatives
The relevant derivatives of the distribution function are
We also need the derivative of the entropy integrand w.r.t. the distribution function, which is
where the entropy density is
The derivatives can be integrated directly (method = direct) or they may be converted to integrals over the distribution function through an integration by parts (method = by_parts)
using the distribution function for and 0 and
as the limits, we have
as long as vanishes at
. Rewriting,
as long as vanishes at
.
Explicit forms
1) The derivative of the density wrt the chemical potential
Using we get
2) The derivative of the density wrt the temperature
Using we get
3) The derivative of the entropy wrt the chemical potential
This verifies the Maxwell relation
4) The derivative of the entropy wrt the temperature
Using
5) The derivative of the density wrt the effective mass
Using we get
Definition at line 261 of file fermion_deriv_rel.h.
Public Member Functions | |
fermion_deriv_rel () | |
Create a fermion with mass m and degeneracy g . | |
virtual int | calc_mu (fermion_deriv &f, double temper) |
Calculate properties as function of chemical potential. | |
virtual int | calc_density (fermion_deriv &f, double temper) |
Calculate properties as function of density. | |
virtual int | pair_mu (fermion_deriv &f, double temper) |
Calculate properties with antiparticles as function of chemical potential. | |
virtual int | pair_density (fermion_deriv &f, double temper) |
Calculate properties with antiparticles as function of density. | |
virtual int | nu_from_n (fermion_deriv &f, double temper) |
Calculate effective chemical potential from density. | |
void | set_inte (inte<> &unit, inte<> &udit) |
Set inte objects. More... | |
void | set_density_root (root<> &rp) |
Set the solver for use in calculating the chemical potential from the density. | |
virtual const char * | type () |
Return string denoting type ("fermion_deriv_rel") | |
double | deriv_calibrate (fermion_deriv &f, int verbose, std::string fname="") |
Calibrate with more accurate tabulated results. More... | |
![]() | |
virtual bool | calc_mu_deg (fermion_deriv &f, double temper, double prec) |
Calculate properties as a function of chemical potential using a degenerate expansion. More... | |
virtual bool | calc_mu_ndeg (fermion_deriv &f, double temper, double prec, bool inc_antip=false) |
Calculate properties as a function of chemical potential using a nondegenerate expansion. More... | |
Public Attributes | |
double | exp_limit |
Limit of arguments of exponentials for Fermi functions (default 200.0) | |
double | deg_limit |
The critical degeneracy at which to switch integration techniques (default 2.0) | |
double | upper_limit_fac |
The limit for the Fermi functions (default 20.0) More... | |
fermion_deriv | unc |
Storage for the most recently calculated uncertainties. | |
bool | err_nonconv |
If true, call the error handler when convergence fails (default true) | |
inte_qagiu_gsl | def_nit |
The default integrator for the non-degenerate regime. | |
inte_qag_gsl | def_dit |
The default integrator for the degenerate regime. | |
root_cern | def_density_root |
The default solver for npen_density() and pair_density() | |
Protected Member Functions | |
double | solve_fun (double x, fermion_deriv &f, double T) |
Solve for the chemical potential from the density for calc_density() | |
double | pair_fun (double x, fermion_deriv &f, double T) |
Solve for the chemical potential from the density for pair_density() | |
The integrands, as a function of \f$ u=k/T \f$, for | |
non-degenerate integrals | |
double | density_fun (double u, fermion_deriv &f, double T) |
double | energy_fun (double u, fermion_deriv &f, double T) |
double | entropy_fun (double u, fermion_deriv &f, double T) |
double | density_T_fun (double k, fermion_deriv &f, double T) |
double | density_mu_fun (double k, fermion_deriv &f, double T) |
double | entropy_T_fun (double k, fermion_deriv &f, double T) |
double | density_ms_fun (double k, fermion_deriv &f, double T) |
The integrands, as a function of momentum, for the | |
degenerate integrals | |
double | deg_density_fun (double u, fermion_deriv &f, double T) |
double | deg_energy_fun (double u, fermion_deriv &f, double T) |
double | deg_entropy_fun (double u, fermion_deriv &f, double T) |
double | deg_density_T_fun (double k, fermion_deriv &f, double T) |
double | deg_density_mu_fun (double k, fermion_deriv &f, double T) |
double | deg_entropy_T_fun (double k, fermion_deriv &f, double T) |
double | deg_density_ms_fun (double k, fermion_deriv &f, double T) |
Protected Attributes | |
int | intl_method |
The internal integration method. | |
inte * | nit |
The integrator for non-degenerate fermions. | |
inte * | dit |
The integrator for degenerate fermions. | |
root * | density_root |
The solver for calc_density() and pair_density() | |
Method of computing derivatives | |
int | method |
Method (default is automatic) | |
static const int | automatic =0 |
Automatically choose method. | |
static const int | direct =1 |
In the form containing ![]() | |
static const int | by_parts =2 |
Integrate by parts. | |
double o2scl::fermion_deriv_rel::deriv_calibrate | ( | fermion_deriv & | f, |
int | verbose, | ||
std::string | fname = "" |
||
) |
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.o2
.
The first integrator is used for non-degenerate integration and should integrate from 0 to (like o2scl::inte_qagiu_gsl). The second integrator is for the degenerate case, and should integrate between two finite values.
double o2scl::fermion_deriv_rel::upper_limit_fac |
fermion_deriv_rel will ignore corrections smaller than about .
Definition at line 285 of file fermion_deriv_rel.h.
Documentation generated with Doxygen. Provided under the
GNU Free Documentation License (see License Information).