principia_materia.translation_group.lattice_ftg module
- class principia_materia.translation_group.lattice_ftg.LatticeFTG(vec, supa, pg=None, strict_symmetry=True, tol=1e-06)
- Bases: - Lattice- A finite translation group (i.e. supercell) of the primitive lattice with point symmetry. - Parameters:
- vec (array of float, shape(dim, dim)) – The lattice vectors, in row convention. 
- supa (array of int, shape(dim, dim)) – Super lattice matrix. 
- pg (str or a PointGroup object) – The point group of the lattice. 
- strict_symmetry (bool, optional, default to True) – If True, lattice points must rotate into a point that also fits in the cell. 
- tol (float, optional, default to 1.0E-6) – Tolerance threshold. 
 
 - copy()
- Return a copy of the object. - Returns:
- new – A copy of the object itself. 
- Return type:
 
 - find_irreducible_lattice_points()
- Find the irreducible set of lattice points under the given symmetry. - rotated_lattice_points
- Dictionary of how what each lattice points rotate into for each group operation. (Indices) - Type:
- dict with str as keys and array of int as values 
 
 - irreducible_lattice_points_trans
- The name of the operation takes the lattice points at its index to one of the irreducible lattice points. - Type:
- array of str, shape(multiplicity) 
 
 - irreducible_lattice_points_index_map
- The corresponding irreducible lattice point index in the lattice point list for each lattice point. - Type:
- array of int, shape(multiplicity) 
 
 - irreducible_lattice_points_index
- Index of irreducible lattice points in the lattice points list. - Type:
- array of int, shape(nilp) 
 
 - irreducible_lattice_points_map
- The corresponding irreducible lattice point index in the irreducible lattice point list for each lattice point. - Type:
- array of int, shape(multiplicity) 
 
 - irreducible_lattice_points_mult
- The multiplicity of each irreducible lattice point. - Type:
- array of int, shape(nilp) 
 
 - irreducible_lattice_points
- The list of irreducible lattice point. - Type:
- array of array of int, shape(nilp, dim) 
 
 - \* nilp=number of irreducible lattice points
 
 - get_index(points)
- Find the index of a given lattice point or a list of lattice points. - The algorithm is descrived in method - create_mesh. For each lattice point, instead of using the ordinary indexing of a list, this algorithm only has the time complexity of O(1), which is much more efficient when used.- In order to compute the index, the a tranformation matrix \(\textrm{H}_p\) and an index weight vector \(\textrm{IW}\) \[ \begin{align}\begin{aligned}& H_{p, (j, i)} = H^{-1}_{(j, i)} \times H_{(i, i)} \forall i \in [1, d], j \in [1, i)\\& \textrm{IW}_{i} = \prod_{j=1}^{i} H_{(j, j)}\end{aligned}\end{align} \]- Then the index of any given point in the supercell can be computed directly: \[& \textrm{index}_{t} = ((t \cdot L + \textrm{floor}(t \cdot L \cdot H_p)) \mod \textrm{diag}(H)) \cdot \textrm{IW}\]- Parameters:
- points (array of integers, shape(dim) or shape(N, dim)) – Points to compute indices. 
 
 - property invsupa
- The inverse of the supercell matrix. 
 - property multiplicity
- The multiplicity of the supercell. 
 - set_lattice_points()
- Find t-points that fit in the supercell. 
 - set_lattice_points_diagonal()
- Find the lattice points that fit in the given diagonal supercell. - Same as set_lattice_points_generic, except for diagonal supercells it can be simplified. 
 - set_lattice_points_generic()
- Find the lattice points that fit in the given supercell. - It uses the algorithm implemented in - get_lattice_pointsfunction (described in Phys. Rev. B 100, 014303 (2019)). And meanwhile, prepares the matrices to determine the index of each lattice point using the inverse operation of the above metioned function.- lattice_points
- Lattice points of the super cell (i.e. FTG). - Type:
- array of int, shape(self.multiplicity, 3) 
 
 
 - property supa
- The supercell matrix. 
 - property supa_is_diagonal
- Whether the supercell is a diagonal matrix. 
 - to_dict()
- Return a dictionary containing key information about the LatticeFTG object. 
 
- principia_materia.translation_group.lattice_ftg.get_lattice_ftg_io_wrapper(title='LatticeFTG')
- YAML data wrapper for LatticeFTG class. 
- principia_materia.translation_group.lattice_ftg.get_lattice_points(supa, decimals=6)
- Find t-points using Hermite Normal Form (HNF) of the \(S_BZ\). - The algorithm is described in paper: - We can decompose the supercell matrix into its HNF: 
 \[ \begin{align}\begin{aligned}& S_BZ = HL^{-1}\\& S_BZ^{-1} = LH^{-1}\end{aligned}\end{align} \]- Then we have the condition of the t-points that fit in the supercell: 
 \[ \begin{align}\begin{aligned}& 0 <= t S_BZ^{-1} e_j < 1\\& 0 <= t L H^{-1} e_j < 1\end{aligned}\end{align} \]- If we let \(t' = tL\), we can rewrite the condition 
 \[0 <= t' H^{-1} e_j < 1\]- , and we can solve for \(t'\) and recover \(t\) afterwards: \[t = t' L^{-1}\]- Parameters:
- supa (array of int, shape(dim, dim)) – Supercell matrix. 
- decimals (int, optional, default to 6) – The decimal points to round