|
TRIQS/TRIQS 4.0.0
Researching Interacting Quantum Systems
|
#include <triqs/lattice/brillouin_zone.hpp>
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. | |
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.
|
explicit |
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.
| bl | Bravais lattice. |
Definition at line 37 of file brillouin_zone.cpp.
|
inline |
Deserialize the Brillouin from a generic archive.
| ar | Archive to deserialize from. |
Definition at line 166 of file brillouin_zone.hpp.
|
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.
| v | Vector \( \mathbf{v} \) to be transformed. |
Definition at line 118 of file brillouin_zone.hpp.
|
inline |
Equal-to comparison operator.
Definition at line 140 of file brillouin_zone.hpp.
|
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}} \).
| v_tilde | Vector \( \tilde{\mathbf{v}} \) in the standard basis. |
Definition at line 132 of file brillouin_zone.hpp.
|
inline |
Serialize the Brillouin zone to a generic archive.
| ar | Archive to serialize to. |
Definition at line 160 of file brillouin_zone.hpp.
|
friend |
Read a triqs::lattice::brillouin_zone from HDF5.
| g | h5::group to be read from. |
| name | Name of the subgroup. |
| bz | Brillouin zone object to be read into. |
Definition at line 49 of file brillouin_zone.cpp.
|
friend |
Write a triqs::lattice::brillouin_zone to HDF5.
| g | h5::group to be written to. |
| name | Name of the subgroup. |
| bz | Brillouin zone object to be written. |
Definition at line 43 of file brillouin_zone.cpp.
|
friend |
Write a triqs::lattice::brillouin_zone to a std::ostream.
| sout | std::ostream object. |
| bz | Brillouin zone to be written. |
Definition at line 149 of file brillouin_zone.hpp.