TRIQS/TRIQS 4.0.0
Researching Interacting Quantum Systems
Loading...
Searching...
No Matches
triqs::mesh::brillouin_zone

#include <triqs/lattice/brillouin_zone.hpp>

Detailed Description

A Brillouin zone class.

Bring triqs::lattice::brillouin_zone into the triqs::mesh namespace.

A Brillouin zone is the primitive unit cell in reciprocal space. It is defined by the set of reciprocal lattice basis vectors \( \{ \mathbf{b}_1, \dots, \mathbf{b}_d \} \), which satisfy

\[ \mathbf{b}_i \cdot \mathbf{a}_j = 2 \pi \delta_{ij} \; , \]

where \( \{ \mathbf{a}_1, \dots, \mathbf{a}_d \} \) are the basis vectors of the Bravais lattice in real space.

In matrix notation, we can write this as a system of linear equations \( A^T B = 2 \pi I \), where \( A = \big( \mathbf{a}_1 \cdots \mathbf{a}_d \big) \) and \( B = \big( \mathbf{b}_1 \cdots \mathbf{b}_d \big) \) are the matrices containing the basis vectors as their columns and \( I \) is the identity matrix.

Definition at line 62 of file brillouin_zone.hpp.

Public Types

using value_t = k_t
 Value type of a Brillouin Zone.

Public Member Functions

 brillouin_zone ()
 Construct a Brillouin zone for a simple cubic lattice with lattice constant \( a = 1 \).
 brillouin_zone (bravais_lattice bl)
 Construct a Brillouin zone for a given Bravais lattice.
bool contains (k_t const &) const
 Check if a given vector \( \mathbf{k} \) is part of the domain.
void deserialize (auto &ar)
 Deserialize the Brillouin from a generic archive.
auto const & lattice () const
 Get the underlying Bravais lattice.
template<typename K>
k_t lattice_to_real_coordinates (K const &v) const
 Transform a vector \( \mathbf{v} \) from the reciprocal lattice basis \( \{ \mathbf{b}_1, \dots, \mathbf{b}_d \} \) to the standard basis \( \{ \mathbf{e}_1, \dots, \mathbf{e}_d \} \).
auto ndim () const
 Get the number of dimensions of the underlying Bravais lattice.
 operator bravais_lattice () const
 Conversion to the underlying triqs::lattice::bravais_lattice object.
bool operator== (brillouin_zone const &bz) const
 Equal-to comparison operator.
template<typename K>
k_t real_to_lattice_coordinates (K const &v_tilde) const
 Transform a vector \( \tilde{\mathbf{v}} \) from the standard basis \( \{ \mathbf{e}_1, \dots, \mathbf{e}_d \} \) to the reciprocal lattice basis \( \{ \mathbf{b}_1, \dots, \mathbf{b}_d \} \).
matrix_t const & reciprocal_matrix () const
 Get the matrix \( B^T \) containing the reciprocal basis vectors as its rows.
matrix_t const & reciprocal_matrix_inv () const
 Get the inverse matrix \( \left( B^T \right)^{-1} \).
void serialize (auto &ar) const
 Serialize the Brillouin zone to a generic archive.
matrix_t const & units () const
 Get the matrix \( B^T \) containing the reciprocal basis vectors as its rows.

Static Public Member Functions

static std::string hdf5_format ()
 Get the HDF5 format tag.

Friends

void h5_read (h5::group g, std::string const &name, brillouin_zone &bz)
 Read a triqs::lattice::brillouin_zone from HDF5.
void h5_write (h5::group g, std::string const &name, brillouin_zone const &bz)
 Write a triqs::lattice::brillouin_zone to HDF5.
std::ostream & operator<< (std::ostream &sout, brillouin_zone const &bz)
 Write a triqs::lattice::brillouin_zone to a std::ostream.

Constructor & Destructor Documentation

◆ brillouin_zone() [1/2]

Construct a Brillouin zone for a simple cubic lattice with lattice constant \( a = 1 \).

The reciprocal basis vectors defining the BZ are given by \( B = 2 \pi I \), where \( I \) is the \( 3 \times 3 \) identity matrix.

Definition at line 72 of file brillouin_zone.hpp.

◆ brillouin_zone() [2/2]

Construct a Brillouin zone for a given Bravais lattice.

The reciprocal basis vectors defining the BZ are given by \( B = 2 \pi \left( A^T \right)^{-1} \), where \( A \) is the matrix containing the basis vectors of the given Bravais lattice as its columns.

Parameters
blBravais lattice.

Definition at line 37 of file brillouin_zone.cpp.

Member Function Documentation

◆ deserialize()

Deserialize the Brillouin from a generic archive.

Parameters
arArchive to deserialize from.

Definition at line 166 of file brillouin_zone.hpp.

◆ lattice_to_real_coordinates()

template<typename K>
k_t triqs::lattice::brillouin_zone::lattice_to_real_coordinates ( K const & v) const
inlinenodiscard

Transform a vector \( \mathbf{v} \) from the reciprocal lattice basis \( \{ \mathbf{b}_1, \dots, \mathbf{b}_d \} \) to the standard basis \( \{ \mathbf{e}_1, \dots, \mathbf{e}_d \} \).

The transformed vector is given by

\[ \tilde{\mathbf{v}} = \sum_{i=1}^{d} \mathbf{b}_i v_i = B \mathbf{v} \; , \]

where \( B \) is the matrix with the reciprocal lattice basis vectors as its columns.

Parameters
vVector \( \mathbf{v} \) to be transformed.
Returns
Vector \( \tilde{\mathbf{v}} \) in the standard basis.

Definition at line 118 of file brillouin_zone.hpp.

◆ operator==()

bool triqs::lattice::brillouin_zone::operator== ( brillouin_zone const & bz) const
inline

Equal-to comparison operator.

Returns
True, if the underlying Bravais lattice and the reciprocal basis vectors are equal.

Definition at line 140 of file brillouin_zone.hpp.

◆ real_to_lattice_coordinates()

template<typename K>
k_t triqs::lattice::brillouin_zone::real_to_lattice_coordinates ( K const & v_tilde) const
inlinenodiscard

Transform a vector \( \tilde{\mathbf{v}} \) from the standard basis \( \{ \mathbf{e}_1, \dots, \mathbf{e}_d \} \) to the reciprocal lattice basis \( \{ \mathbf{b}_1, \dots, \mathbf{b}_d \} \).

This is the inverse transformation of lattice_to_real_coordinates(). The transformed vector is therefore given by \( \mathbf{v} = B^{-1} \tilde{\mathbf{v}} \).

Parameters
v_tildeVector \( \tilde{\mathbf{v}} \) in the standard basis.
Returns
Vector \( \mathbf{v} \) in the lattice basis.

Definition at line 132 of file brillouin_zone.hpp.

◆ serialize()

void triqs::lattice::brillouin_zone::serialize ( auto & ar) const
inline

Serialize the Brillouin zone to a generic archive.

Parameters
arArchive to serialize to.

Definition at line 160 of file brillouin_zone.hpp.

◆ h5_read

void h5_read ( h5::group g,
std::string const & name,
brillouin_zone & bz )
friend

Read a triqs::lattice::brillouin_zone from HDF5.

Parameters
gh5::group to be read from.
nameName of the subgroup.
bzBrillouin zone object to be read into.

Definition at line 49 of file brillouin_zone.cpp.

◆ h5_write

void h5_write ( h5::group g,
std::string const & name,
brillouin_zone const & bz )
friend

Write a triqs::lattice::brillouin_zone to HDF5.

Parameters
gh5::group to be written to.
nameName of the subgroup.
bzBrillouin zone object to be written.

Definition at line 43 of file brillouin_zone.cpp.

◆ operator<<

std::ostream & operator<< ( std::ostream & sout,
brillouin_zone const & bz )
friend

Write a triqs::lattice::brillouin_zone to a std::ostream.

Parameters
soutstd::ostream object.
bzBrillouin zone to be written.
Returns
Reference to std::ostream object.

Definition at line 149 of file brillouin_zone.hpp.


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