triqs.mesh.meshes.MeshCycLat
- class triqs.mesh.meshes.MeshCycLat
Bases:
objectCyclic lattice mesh type for Bravais lattices with Born-von Karman periodic boundary conditions.
A cyclic lattice mesh is defined by an underlying Bravais lattice and the number of unit cells in each of the three dimensions, \(N_1\), \(N_2\) and \(N_3\), which define the supercell and the periodic boundary conditions (PBC) \(f(\mathbf{R}^{\mathbf{n}}) = f(\mathbf{R}^{\mathbf{n}} + \mathbf{T}^{\mathbf{m}})\). Here, \(\mathbf{T}^{\mathbf{m}} = \sum_{i=1}^3 \mathbf{a}_i N_i m_i = \tilde{\mathbf{A}} \mathbf{m}\) is a supercell translation vector, \(\mathbf{a}_i\) is a Bravais lattice basis vector in direction \(i\) and \(\mathbf{m} = (m_1, m_2, m_3)\) with \(m_i \in \mathbb{Z}\).
It has the following properties:
Each mesh point is identified by
a unique index in the supercell \(\mathbf{n} = (n_1, n_2, n_3)\), where \(0 \leq n_i < N_i\), and
an infinite set of indices due to the periodic boundary conditions, i.e. \(\{ \tilde{\mathbf{n}} = \mathbf{n} + \mathbf{N} \mathbf{m} : \mathbf{N} \mathbf{m} = (N_1 m_1, N_2 m_2, N_3 m_3) \in \mathbb{Z}^3 \}\).
The size of the mesh is \(N = N_1 \, N_2 \, N_3\), i.e. the total number of unit cells in the supercell.
An index \(\mathbf{n}\) is mapped to the corresponding data index \(d\) by the function \(d(\mathbf{n}) = n_3 + N_3 (n_2 + N_2 n_1) = n_3 + n_2 N_3 + n_1 N_2 N_3\). The inverse map is \(\mathbf{n}(d) = (\lfloor d / s_1 \rfloor, \lfloor (d \mod s_1) / s_2 \rfloor, (d \mod s_1) \mod s_2 )\), where \(s_1 = N_2 N_3\) and \(s_2 = N_3\).
An index \(\mathbf{n}\) is mapped to the corresponding value (lattice point) \(\mathbf{R}(\mathbf{n}) \equiv \mathbf{R}^{\mathbf{n}} = \sum_{i=1}^3 \mathbf{a}_i n_i = \mathbf{A} \mathbf{n}\), where \(\mathbf{a}_i\) is the Bravais lattice basis vectors in direction \(i\). The inverse map is then \(\mathbf{n}(\mathbf{R}^{\mathbf{n}}) = \mathbf{A}^{-1} \mathbf{R}^{\mathbf{n}} = \mathbf{n}\).
Green’s function containers that are based on a cyclic lattice mesh store the function values at the discrete lattice points \(\mathbf{R}^{\mathbf{n}}\), i.e. \(f_{\mathbf{n}} = f(\mathbf{R}^{\mathbf{n}})\). Because of the PBC, the container only has to store values for indices with \(0 \leq n_i < N_i\). To evaluate the function at an arbitrary lattice point, it is first mapped to the supercell using the PBC and then the corresponding function value is returned.
Dispatched C++ constructor(s).
[1] (bl: BravaisLattice, dims: [int, len = 3]) [2] (bl: BravaisLattice, L: int) [3] (L1: int = 1, L2: int = 1, L3: int = 1)
[1] Construct a cyclic lattice mesh on a Bravais lattice with the given supercell dimensions.
[2] Construct a cyclic lattice mesh on a Bravais lattice with a cubic supercell.
[3] Construct a cyclic lattice mesh on a cubic Bravais lattice with \(a = 1\) and the given supercell dimensions.
- Parameters:
- blBravaisLattice
Bravais lattice object representing the underlying Bravais lattice.
- dims[int, len = 3]
Number of unit cells in the supercell along each of the three dimensions, i.e. \((N_1, N_2, N_3)\) .
- Lint
Number of unit cells in the supercell along each of the three dimensions.
- L1int
Number of unit cells in the supercell along the first dimension.
- L2int
Number of unit cells in the supercell along the second dimension.
- L3int
Number of unit cells in the supercell along the third dimension.
Attributes
Get the number of unit cells in each of the three dimensions.
Get the underlying Bravais lattice.
Get the hash value of the mesh.
Get the matrix \(\mathbf{A}^T\) containing the basis vectors of the Bravais lattice in its rows.
Methods
__call__(*args, **kwargs)Call self as a function.
Get a copy of a mesh (for Python bindings).
Copy one mesh into another (for Python bindings).
Map an arbitrary index \(\tilde{\mathbf{n}}\) to the unique index \(\mathbf{n}\) in the supercell.
Check if an index \(\mathbf{n}\) is valid, i.e. corresponds to a unit cell/lattice point in the.
Map an index \(\mathbf{n}\) to its corresponding data index \(d(\mathbf{n})\).
Map a data index \(d \in \{0, 1, \ldots, N-1\}\) to the corresponding index \(\mathbf{n}(d)\)
Map an index \(\mathbf{n}\) to its corresponding lattice point \(\mathbf{R}^{\mathbf{n}}\).
Get the values of all mesh points in a mesh.