#include <sn_fermion.h>
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. Typical choices are Gauss-Legendre integration for the degenerate regime and Gauss-Laguerre integration for the non-degenerate regime. The upper limit on the degenerate integration is given by the solution of
which is
where .
In the non-degenerate regime, we make the substitution to ensure that the variable of integration does not have units.
Uncertainties are given in unc.
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 = byparts)
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
The dsdT integration doesn't work well if the system is very degenerate. When method is byparts, the integral involves a large cancellation between the regions from and
. Switching to method=direct and setting the lower limit to
, may help, but recent testing on this gave negative values for dsdT. For very degenerate systems, an expansion is probably better than trying to perform the integration.
Definition at line 225 of file sn_fermion.h.
Method of computing derivatives | |
int | method |
Method (default is byparts). | |
static const int | direct = 1 |
In the form containing ![]() | |
static const int | byparts = 2 |
Integrate by parts. | |
Public Member Functions | |
sn_fermion (double m=0.0, double g=0.0) | |
Create a fermion with mass m and degeneracy g . | |
virtual int | calc_mu (const double temper) |
Calculate properties as function of chemical potential. | |
virtual int | calc_density (const double temper) |
Calculate properties as function of density. | |
virtual int | pair_mu (const double temper) |
Calculate properties with antiparticles as function of chemical potential. | |
virtual int | pair_density (const double temper) |
Calculate properties with antiparticles as function of density. | |
virtual int | nu_from_n (const double temper) |
Calculate effective chemical potential from density. | |
int | set_inte (inte< void *, funct< void * > > &unit, inte< void *, funct< void * > > &udit) |
Set inte objects. | |
int | set_density_root (root< void *, funct< void * > > &rp) |
Set the solver for use in calculating the chemical potential from the density. | |
virtual const char * | type () |
Return string denoting type ("sn_fermion"). | |
Data Fields | |
double | deg_limit |
The critical degeneracy at which to switch integration techniques (default 2.0). | |
double | flimit |
The limit for the Fermi functions (default 20.0). | |
deriv_fermion | unc |
Storage for the most recently calculated uncertainties. | |
gsl_inte_qagiu< void *, funct< void * > > | def_nit |
The default integrator for the non-degenerate regime. | |
gsl_inte_qag< void *, funct< void * > > | def_dit |
The default integrator for the degenerate regime. | |
cern_mroot_root < void *, funct < void * > > | def_density_root |
The default solver for npen_density() and pair_density(). |
Set inte objects.
The first integrator is used for non-degenerate integration and should integrate from 0 to (like gsl_inte_qagiu). The second integrator is for the degenerate case, and should integrate between two finite values.
double flimit |
The limit for the Fermi functions (default 20.0).
sn_fermion will ignore corrections smaller than about .
Definition at line 244 of file sn_fermion.h.
Documentation generated with Doxygen and provided under the GNU Free Documentation License. See License Information for details.
Project hosting provided by
,
O2scl Sourceforge Project Page