Skip to content

Boltzmann

boltzmann

FermiSurface(theta, fermi_wavevector, effective_mass, relaxation_time, c_axis_length)

Class to represent a Fermi surface and compute conductivity.

Examples:

>>> import quantalyze as qz
>>> theta = np.linspace(0, 2*np.pi, 100)
>>> fermi_wavevector = np.ones_like(theta) * 1e10  # Example Fermi wavevector
>>> effective_mass = np.ones_like(theta) * electron_mass  # Example effective mass
>>> relaxation_time = np.ones_like(theta) * 1e-14  # Example relaxation time
>>> c_axis_length = 1e-9  # Example c-axis length
>>>  
>>> fermi_surface = qz.FermiSurface(theta, fermi_wavevector, effective_mass, relaxation_time, c_axis_length)
>>> magnetic_field = 1.0  # Example magnetic field in Tesla
>>> sxx, sxy, syx, syy = fermi_surface.calculate_conductivity(magnetic_field)
>>> rxx = sxx / (sxx * syy - sxy * syx)
Source code in src/quantalyze/beta/boltzmann.py
285
286
287
288
289
290
291
292
293
294
295
296
297
def __init__(
    self,
    theta,
    fermi_wavevector,
    effective_mass,
    relaxation_time,
    c_axis_length,
    ):
    self.theta = theta
    self.fermi_wavevector = fermi_wavevector
    self.effective_mass = effective_mass
    self.relaxation_time = relaxation_time
    self.c_axis_length = c_axis_length

calculate_conductivity(magnetic_field, start_phi=1e-09, end_phi=2 * np.pi, phi_points=250, exponent_points=150)

Calculate the conductivity tensor components for the Fermi surface given a magnetic field.

Parameters:

Name Type Description Default
magnetic_field

Magnetic field strength (in Tesla).

required
start_phi

Start of phi integration (in radians).

1e-09
end_phi

End of phi integration (in radians).

2 * pi
phi_points

Number of points for phi integration.

250
exponent_points

Number of points for exponent integration.

150

Returns:

Type Description

sxx, sxy, syx, syy: Conductivity tensor components.

Source code in src/quantalyze/beta/boltzmann.py
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
def calculate_conductivity(
    self,
    magnetic_field,
    start_phi=1e-9, # start of phi integration
    end_phi=2*np.pi, # end of phi integration
    phi_points=250, # number of points for phi integration
    exponent_points=150, # number of points for exponent integration
):
    """
    Calculate the conductivity tensor components for the Fermi surface given a magnetic field.

    Args:
        magnetic_field: Magnetic field strength (in Tesla).
        start_phi: Start of phi integration (in radians).
        end_phi: End of phi integration (in radians).
        phi_points: Number of points for phi integration.
        exponent_points: Number of points for exponent integration.

    Returns:
        sxx, sxy, syx, syy: Conductivity tensor components.
    """
    return _compute_conductivity_from_arrays(
        self.theta,
        self.fermi_wavevector,
        self.effective_mass,
        self.relaxation_time,
        self.c_axis_length,
        magnetic_field=magnetic_field,
        start_phi=start_phi,
        end_phi=end_phi,
        phi_points=phi_points,
        exponent_points=exponent_points,
    )

calculate_normal_vectors()

Calculate the normal vectors to the Fermi surface at each theta value.

Source code in src/quantalyze/beta/boltzmann.py
385
386
387
388
389
390
391
392
def calculate_normal_vectors(self):
    """
    Calculate the normal vectors to the Fermi surface at each theta value.
    """
    zeta = _calculate_zeta_array(self.theta, self.fermi_wavevector)
    normal_x = np.cos(self.theta - zeta)
    normal_y = np.sin(self.theta - zeta)
    return normal_x, normal_y

carrier_density()

Calculate the carrier density based on the Fermi volume.

Source code in src/quantalyze/beta/boltzmann.py
378
379
380
381
382
def carrier_density(self):
    """
    Calculate the carrier density based on the Fermi volume.
    """
    return self.fermi_volume() / (2 * np.pi)**3 * 2

cylotron_frequency(magnetic_field)

Compute the local cyclotron frequency for a given magnetic field at each theta value.

Source code in src/quantalyze/beta/boltzmann.py
321
322
323
324
325
def cylotron_frequency(self, magnetic_field):
    """
    Compute the local cyclotron frequency for a given magnetic field at each theta value.
    """
    return ELEMENTARY_CHARGE * magnetic_field / self.effective_mass

fermi_area()

Compute the area of the Fermi surface in k-space by integrating the Fermi wavevector over theta.

Source code in src/quantalyze/beta/boltzmann.py
363
364
365
366
367
def fermi_area(self):
    """
    Compute the area of the Fermi surface in k-space by integrating the Fermi wavevector over theta.
    """
    return self._integrate_fermi_wavevector()

fermi_volume()

Calculate the volume of the Fermi surface in k-space by integrating the Fermi wavevector and multiplying by the reciprocal lattice vector.

Source code in src/quantalyze/beta/boltzmann.py
370
371
372
373
374
375
def fermi_volume(self):
    """
    Calculate the volume of the Fermi surface in k-space by integrating the Fermi wavevector 
    and multiplying by the reciprocal lattice vector.
    """
    return self._integrate_fermi_wavevector() * self.reciprocal_lattice_vector()

fermi_wavevector_x()

Compute the x-component of the Fermi wavevector for each theta value.

Source code in src/quantalyze/beta/boltzmann.py
300
301
302
303
304
def fermi_wavevector_x(self):
    """
    Compute the x-component of the Fermi wavevector for each theta value.
    """
    return self.fermi_wavevector * np.cos(self.theta)

fermi_wavevector_y()

Compute the y-component of the Fermi wavevector for each theta value.

Source code in src/quantalyze/beta/boltzmann.py
307
308
309
310
311
def fermi_wavevector_y(self):
    """
    Compute the y-component of the Fermi wavevector for each theta value.
    """
    return self.fermi_wavevector * np.sin(self.theta)

mean_free_path()

Calculate the mean free path of electrons on the Fermi surface.

Source code in src/quantalyze/beta/boltzmann.py
335
336
337
338
339
def mean_free_path(self):
    """
    Calculate the mean free path of electrons on the Fermi surface.
    """
    return HBAR * self.fermi_wavevector * self.relaxation_time / self.effective_mass

omega_c_tau(magnetic_field)

Compute the product of the cyclotron frequency and relaxation time for a given magnetic field at each theta value.

Source code in src/quantalyze/beta/boltzmann.py
328
329
330
331
332
def omega_c_tau(self, magnetic_field):
    """
    Compute the product of the cyclotron frequency and relaxation time for a given magnetic field at each theta value.
    """
    return self.cylotron_frequency(magnetic_field) * self.relaxation_time

reciprocal_lattice_vector()

Compute the reciprocal c-axis lattice vector.

Source code in src/quantalyze/beta/boltzmann.py
314
315
316
317
318
def reciprocal_lattice_vector(self):
    """
    Compute the reciprocal c-axis lattice vector.
    """
    return 2 * np.pi / self.c_axis_length