triqs.mesh.meshes.MeshCycLat

class triqs.mesh.meshes.MeshCycLat

Bases: object

Cyclic 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

dims

Get the number of unit cells in each of the three dimensions.

lattice

Get the underlying Bravais lattice.

mesh_hash

Get the hash value of the mesh.

units

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.

copy

Get a copy of a mesh (for Python bindings).

copy_from

Copy one mesh into another (for Python bindings).

index_modulo

Map an arbitrary index \(\tilde{\mathbf{n}}\) to the unique index \(\mathbf{n}\) in the supercell.

is_index_valid

Check if an index \(\mathbf{n}\) is valid, i.e. corresponds to a unit cell/lattice point in the.

to_data_index

Map an index \(\mathbf{n}\) to its corresponding data index \(d(\mathbf{n})\).

to_index

Map a data index \(d \in \{0, 1, \ldots, N-1\}\) to the corresponding index \(\mathbf{n}(d)\)

to_value

Map an index \(\mathbf{n}\) to its corresponding lattice point \(\mathbf{R}^{\mathbf{n}}\).

values

Get the values of all mesh points in a mesh.