Class fermion_mag_zerot (o2scl)¶
-
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 degeneracydof
.
-
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
-
typedef boost::numeric::ublas::vector<double> ubvector¶