Class fermion_mag_zerot (o2scl)

O2scl : Class List

class fermion_mag_zerot : public o2scl::fermion_rel_tl<fermion_t, fd_inte_t, be_inte_t, inte_t, density_root_t, root_t, func_t, fp_t>

Thermodynamics of fermions in a magnetic field at zero temperature.

Following [Broderick00], We define the magnetic effective mass of a fermion in a magnetic field as

\[ \tilde{m}^2 = m^{*2} + 2 \left( n + \frac{1}{2} - \frac{q \sigma}{2 |q|} \right) |q| B \]
where \( m^{*} \) is the effective mass which includes interactions unrelated to the magnetic field, \( q \) is the charge, and \( \sigma \) is the z-component of the spin along the axis of the magnetic field (for spin 1/2 fermions, for example, \( \sigma_z \) is either +1 or -1).

The Fermi momentum and the chemical potential are related in the usual way

\[ k_{F,\sigma}^2 = \mu^2 - \tilde{m}_{\sigma}^2 \]

The density is then given by

\[ n = \frac{|q| B}{2 \pi^2} \sum_{\sigma} \sum_{n=0}^{n_{\mathrm{max},\sigma}} k_{F,\sigma} \]
where \( n_{\mathrm{max},\sigma} \) is the integer value of \( n \) for which the next largest integer makes \( \mu < \tilde{m} \). The value of \( n_{\mathrm{max}} \) is stored internally in this class as an integer (nmax_dn and nmax_up), and if there are no integers for which \( \mu < \tilde{m} \), then the corresponding integer will be -1, to indicate that no terms in the sum are present. For any fermion, at least one Landau level is always filled for at least one of the spin states at every density.

When the number of Landau levels for \( \sigma=1 \) is larger than sum_limit, the B=0 result is given.

Units:

It is useful to think of the magnetic field as typically being multiplied by the electron charge, so if magnetic field is measured in Gauss, then for a 1 Gauss field in “Gaussian” units,

\[ e B = 1.5~\times~10^{-19}~\mathrm{fm}^{-2} \]
This conversion factor is given in o2scl_const::ec_gauss_fm2 . See the documentation of that quantity for a brief comparison of various E&M unit systems.

Note

This only works for spin 1/2 particles at the moment, so the discussion below assumes this is the case.

Note

The function calc_density_zerot_mag() will fail if the density is small enough.

Public Types

typedef boost::numeric::ublas::vector<double> ubvector

Public Functions

inline fermion_mag_zerot()

Create a fermion with mass mass and degeneracy dof.

inline virtual ~fermion_mag_zerot()
virtual void calc_mu_zerot_mag(fermion &f, double qB, double kappa = 0.0)

Thermodynamics in a magnetic field as a function of the chemical potential at zero temperature.

The parameter qB is the charge (in units of the positron charge) times the magnetic field strength. Thus, for example, qB should be negative for electrons.

virtual void calc_density_zerot_mag(fermion &f, double qB, double kappa = 0.0)

Thermodynamics in a magnetic field as a function of the density at zero temperature.

virtual int calc_mu_mag(fermion &f, double T, double qB, double kappa = 0.0)

Thermodynamics in a magnetic field as a function of the chemical potential at finite temperature.

The parameter qB is the charge (in units of the positron charge) times the magnetic field strength. Thus, for example, qB should be negative for electrons.

inline virtual int calc_density_mag(fermion &f, double T, double qB, double kappa = 0.0)

Thermodynamics in a magnetic field as a function of the density at zero temperature.

inline void set_density_root(mroot<> &rp)

Set the solver for use in calculating the chemical potential from the density.

inline virtual const char *type()

Return string denoting type (“fermion_mag_zerot”)

Public Members

int nmax_up

Maximum Landau level for spin up particles (default 0)

int nmax_dn

Maximum Landau level for spin down particles (default 0)

int sum_limit

Limit on the sum (default \( 10^{6} \))

mroot_hybrids def_density_root

The default solver for calc_density().

Protected Functions

int solve_fun(size_t nv, const ubvector &x, ubvector &y, fermion &f)

Function to compute chemical potential from density.

Protected Attributes

mroot *density_root

Solver to compute chemical potential from density.

double qBt

The charge times the magnetic field in \( \mathrm{fm}^{-2} \).

double kt

The anomalous magnetic moment.

double dent

The target density, set by calc_density_zerot_mag()