Class fermion_mag_zerot (o2scl)¶
-
class
o2scl
::
fermion_mag_zerot
: public o2scl::fermion_zerot_tl<double>¶ Thermodynamics of fermions in a magnetic field at zero temperature.
The discussion below uses the notation of [Broderick00].
Using the notation of Broderick00, the effective mass of a fermion in a magnetic field is
\[ \tilde{m}^2 = m^2 + 2 \left( n + \frac{1}{2} - \frac{q \sigma}{2 |q|} \right) |q| B \]where \( m \) is the bare mass, \( 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, 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 \]- 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.
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.Public Types
-
typedef boost::numeric::ublas::vector<double>
ubvector
¶
Public Functions
-
fermion_mag_zerot
()¶ Create a fermion with mass
mass
and degeneracydof
.
-
~fermion_mag_zerot
()¶
-
void
calc_mu_zerot_mag
(fermion &f, double qB, double kappa = 0.0)¶ Thermodynamics in a magnetic field using the chemical potential.
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.
-
void
calc_density_zerot_mag
(fermion &f, double qB, double kappa = 0.0)¶ Thermodynamics in a magnetic field using the density.
-
void
set_density_root
(mroot<> &rp)¶ Set the solver for use in calculating the chemical potential from the density.
-
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
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()