Public Member Functions | Public Attributes | Protected Attributes | Private Member Functions | List of all members
o2scl::fermion_nonrel_tl< inte_t, fp_t > Class Template Reference

Nonrelativistic fermion class. More...

#include <fermion_nonrel.h>

Inheritance diagram for o2scl::fermion_nonrel_tl< inte_t, fp_t >:
o2scl::fermion_thermo_tl< double > o2scl::fermion_zerot_tl< double >

Detailed Description

template<class inte_t = class fermion_nr_integ_gsl, class fp_t = double>
class o2scl::fermion_nonrel_tl< inte_t, fp_t >

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 pg. 164.

The functions pair_density() and pair_mu() have not been implemented and just call the error handler.

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.
Idea for Future:
Implement o2scl::fermion_nonrel_tl::pair_density() and o2scl::fermion_nonrel_tl::pair_mu(). [AWS, 1/23/19: it is not entirely clear to me that antiparticles will be useful.]
Idea for 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.

Definition at line 88 of file fermion_nonrel.h.

Public Member Functions

 fermion_nonrel_tl ()
 Create a nonrelativistic fermion with mass 'm' and degeneracy 'g'.
 
virtual void calc_mu_zerot (fermion &f)
 Zero temperature fermions.
 
virtual void calc_density_zerot (fermion &f)
 Zero temperature fermions.
 
virtual void calc_mu (fermion &f, fp_t temper)
 Calculate properties as function of chemical potential.
 
virtual int calc_density (fermion &f, fp_t temper)
 Calculate properties as function of density. More...
 
virtual void pair_mu (fermion &f, fp_t temper)
 Compute thermodynamics with antiparticles at fixed chemical potential (unimplemented)
 
virtual int pair_density (fermion &f, fp_t temper)
 Compute thermodynamics with antiparticles at fixed density (unimplemented)
 
virtual void nu_from_n (fermion &f, fp_t temper)
 Calculate effective chemical potential from density.
 
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_nonrel")
 
fp_t solve_fun (fp_t x, fp_t nog, fp_t msT)
 Function to compute chemical potential from density. More...
 
- Public Member Functions inherited from o2scl::fermion_thermo_tl< double >
bool calc_mu_ndeg_tlate (fermion_t &f, double temper, double prec, bool inc_antip)
 Calculate thermodynamic properties from the chemical potential using a nondegenerate expansion.
 
bool calc_mu_deg_tlate (fermion_t &f, double temper, double prec)
 Calculate thermodynamic properties from the chemical potential using a degenerate expansion.
 
virtual bool calc_mu_ndeg (fermion &f, double temper, double prec=1.0e-18, bool inc_antip=false)
 Non-degenerate expansion for fermions. More...
 
virtual bool calc_mu_deg (fermion &f, double temper, double prec=1.0e-18)
 Degenerate expansion for fermions. More...
 
virtual void calc_mu (fermion &f, double temper)=0
 Calculate properties as function of chemical potential.
 
virtual int calc_density (fermion &f, double temper)=0
 Calculate properties as function of density. More...
 
virtual void pair_mu (fermion &f, double temper)=0
 Calculate properties with antiparticles as function of chemical potential.
 
virtual int pair_density (fermion &f, double temper)=0
 Calculate properties with antiparticles as function of density. More...
 
virtual void massless_calc_mu (fermion &f, double temper)
 Finite temperature massless fermions.
 
virtual void massless_calc_density (fermion &f, double temper)
 Finite temperature massless fermions.
 
virtual void massless_pair_mu (fermion &f, double temper)
 Finite temperature massless fermions and antifermions.
 
virtual void massless_pair_density (fermion &f, double temper)
 Finite temperature massless fermions and antifermions. More...
 
void set_massless_root (root<> &rp)
 Set the solver for use in massless_calc_density()
 
void ndeg_terms (size_t j, double tt, double xx, double m, bool inc_rest_mass, bool inc_antip, double &pterm, double &nterm, double &enterm)
 Compute a term in the nondegenerate expansion.
 
- Public Member Functions inherited from o2scl::fermion_zerot_tl< double >
void kf_from_density (fermion_tl< double > &f)
 Calculate the Fermi momentum from the density. More...
 
void energy_density_zerot (fermion_tl< double > &f)
 Energy density at T=0 from o2scl::fermion_tl::kf and o2scl::part_tl::ms. More...
 
void pressure_zerot (fermion_tl< double > &f)
 Pressure at T=0 from o2scl::fermion_tl::kf and o2scl::part_tl::ms. More...
 

Public Attributes

inte_t integ
 Object for Fermi-Dirac integrals.
 
root_cern def_density_root
 The default solver for calc_density().
 
- Public Attributes inherited from o2scl::fermion_thermo_tl< double >
root_cern def_massless_root
 The default solver for massless_calc_density() More...
 

Protected Attributes

rootdensity_root
 Solver to compute chemical potential from density.
 
- Protected Attributes inherited from o2scl::fermion_thermo_tl< double >
rootmassless_root
 A pointer to the solver for massless fermions.
 
- Protected Attributes inherited from o2scl::fermion_zerot_tl< double >
double pi
 Desc.
 
double pi2
 Desc.
 

Private Member Functions

 fermion_nonrel_tl (const fermion_nonrel_tl &)
 
fermion_nonrel_tloperator= (const fermion_nonrel_tl &)
 

Additional Inherited Members

- Protected Member Functions inherited from o2scl::fermion_thermo_tl< double >
double massless_solve_fun (double x, fermion &f, double temper)
 Solve for the chemical potential for massless fermions.
 

Member Function Documentation

◆ calc_density()

template<class inte_t = class fermion_nr_integ_gsl, class fp_t = double>
virtual int o2scl::fermion_nonrel_tl< inte_t, fp_t >::calc_density ( fermion f,
fp_t  temper 
)
inlinevirtual

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 $).

Definition at line 222 of file fermion_nonrel.h.

◆ solve_fun()

template<class inte_t = class fermion_nr_integ_gsl, class fp_t = double>
fp_t o2scl::fermion_nonrel_tl< inte_t, fp_t >::solve_fun ( fp_t  x,
fp_t  nog,
fp_t  msT 
)
inline

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

Definition at line 416 of file fermion_nonrel.h.


The documentation for this class was generated from the following file:

Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).