Class fermion_nonrel_tl (o2scl)¶
-
template<class fermion_t = fermion_tl<double>, class fd_inte_t = fermi_dirac_integ_gsl, class be_inte_t = bessel_K_exp_integ_gsl, class root_t = root_cern<>, class func_t = funct, class fp_t = double>
class fermion_nonrel_tl : public o2scl::fermion_thermo_tl<fermion_tl<double>, fermi_dirac_integ_gsl, bessel_K_exp_integ_gsl, root_cern<>, funct, double>¶ Nonrelativistic fermion class.
The effective mass computed by this class and stored in part_tl::ms is the Landau mass, not the Dirac mass, as computed by o2scl::fermion_rel_tl .
This class works with both true and false values for either part_tl::non_interacting or part_tl::inc_rest_mass.
Pressure is computed with
\[ P = 2 \varepsilon/3 \]and entropy density with\[ s = \frac{5 \varepsilon}{3 T} - \frac{n \mu}{T} \]These relations can be verified with an integration by parts. See, e.g. [Callen85] pg. 403 or [Landau80].
The functions pair_density() and pair_mu() have not been implemented and just call the error handler.
Todo
In class fermion_nonrel_tl
Future: Implement ref o2scl::fermion_nonrel_tl::pair_density() and ref o2scl::fermion_nonrel_tl::pair_mu(). [AWS, 1/23/19: it is not entirely clear to me that antiparticles will be useful.]
Future: This could be improved by performing a Chebyshev approximation (for example) to invert the density integral so that we don’t need to use a solver.
Note
The function calc_density() calls the error handler at zero density and finite temperature, because the correct answer implies \( \mu = - \infty \) . At zero density and zero temperature the function calc_density() calls calc_density_zerot() which gives the proper chemical potential of \( mu = m \) without calling the error handler.
Public Functions
-
inline fermion_nonrel_tl()¶
Create a nonrelativistic fermion with mass ‘m’ and degeneracy ‘g’.
-
inline virtual ~fermion_nonrel_tl()¶
-
inline virtual int calc_mu(fermion_t &f, fp_t temper)¶
Calculate properties as function of chemical potential.
-
inline virtual int calc_density(fermion_t &f, fp_t temper)¶
Calculate properties as function of density.
If the density is zero, this function just sets part::mu, part::nu, part::ed, part::pr, and part::en to zero and returns without calling the error handler (even though at zero density and finite temperature, the chemical potentials formally are equal to \( -\infty \)).
-
inline virtual void pair_mu(fermion_t &f, fp_t temper)¶
Compute thermodynamics with antiparticles at fixed chemical potential (unimplemented)
-
inline virtual int pair_density(fermion_t &f, fp_t temper)¶
Compute thermodynamics with antiparticles at fixed density (unimplemented)
-
inline virtual void nu_from_n(fermion_t &f, fp_t temper)¶
Calculate effective chemical potential from density.
-
inline void set_density_root(root<> &rp)¶
Set the solver for use in calculating the chemical potential from the density.
-
inline virtual const char *type()¶
Return string denoting type (“fermion_nonrel”)
Public Members
-
root_cern def_density_root¶
The default solver for calc_density().
-
bool verify_ti¶
If true, verify the thermodynamic identity.
Private Functions
-
fermion_nonrel_tl(const fermion_nonrel_tl&)¶
-
fermion_nonrel_tl &operator=(const fermion_nonrel_tl&)¶