Class fermion_nonrel_tl (o2scl)

O2scl : Class List

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 void calc_mu_zerot(fermion_t &f)

Zero temperature fermions.

inline virtual void calc_density_zerot(fermion_t &f)

Zero temperature fermions.

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”)

inline fp_t solve_fun(fp_t x, fp_t nog, fp_t msT)

Function to compute chemical potential from density.

Variable nog is the target baryon density divided by the spin degeneracy, and msT is the effective mass times the temperature.

Public Members

root_cern def_density_root

The default solver for calc_density().

bool verify_ti

If true, verify the thermodynamic identity.

Protected Attributes

root *density_root

Solver to compute chemical potential from density.

Private Functions

fermion_nonrel_tl(const fermion_nonrel_tl&)
fermion_nonrel_tl &operator=(const fermion_nonrel_tl&)