kwant.lattice.TranslationalSymmetry

class kwant.lattice.TranslationalSymmetry(*periods)[source]

Bases: kwant.system.Symmetry

A translational symmetry defined in real space.

An alias exists for this common name: kwant.TranslationalSymmetry.

Group elements of this symmetry are integer tuples of appropriate length.

Parameters
p0, p1, p2, …sequences of real numbers

The symmetry periods in real space.

Notes

This symmetry automatically chooses the fundamental domain for each new SiteFamily it encounters. If this site family does not correspond to a Bravais lattice, or if it does not have a commensurate period, an error is produced. A certain flexibility in choice of the fundamental domain can be achieved by calling manually the add_site_family method and providing it the other_vectors parameter.

The fundamental domain for hoppings are all hoppings (a, b) with site a in fundamental domain of sites.

Methods

act(element, a, b=None)[source]

Act with symmetry group element(s) on site(s) or hopping(s).

Parameters
elementtuple or sequence of tuples

Group element(s) with which to act on the provided site(s) or hopping(s)

a, bSite or SiteArray

If Site then element is a single tuple, if SiteArray then element is a single tuple or a sequence of tuples. If only a is provided then element acts on the site(s) of a. If b is also provided then element acts on the hopping(s) (a, b).

add_site_family(fam, other_vectors=None)[source]

Select a fundamental domain for site family and cache associated data.

Parameters
famSiteFamily

the site family which has to be processed. Be sure to delete the previously processed site families from site_family_data if you want to modify the cache.

other_vectors2d array-like of integers

Bravais lattice vectors used to complement the periods in forming a basis. The fundamental domain consists of all the lattice sites for which the zero coefficients corresponding to the symmetry periods in the basis formed by the symmetry periods and other_vectors. If an insufficient number of other_vectors is provided to form a basis, the missing ones are selected automatically.

Raises
KeyError

If fam is already stored in site_family_data.

ValueError

If lattice fam is incompatible with given periods.

has_subgroup(other)[source]

Test whether self has the subgroup other

or, in other words, whether other is a subgroup of self. The reason why this is the abstract method (and not is_subgroup) is that in general it’s not possible for a subgroup to know its supergroups.

in_fd(site)[source]

Tell whether site lies within the fundamental domain.

Parameters
siteSite or SiteArray
Returns
in_fdbool or sequence of bool

single bool if site is a Site, or a sequence of bool if site is a SiteArray. In the latter case we return whether each site in the SiteArray is in the fundamental domain.

reversed()[source]

Return a reversed copy of the symmetry.

The resulting symmetry has all the period vectors opposite to the original and an identical fundamental domain.

subgroup(*generators)[source]

Return the subgroup generated by a sequence of group elements.

Parameters
*generators: sequence of int

Each generator must have length self.num_directions.

to_fd(a, b=None)[source]

Map a site or hopping to the fundamental domain.

Parameters
a, bSite or SiteArray
If ``b`` is None, return a site equivalent to ``a`` within the
fundamental domain. Otherwise, return a hopping equivalent to ``(a,
b)`` but where the first element belongs to the fundamental domain.
Equivalent to `self.act(-self.which(a), a, b)`.
which(site)[source]

Calculate the domain of the site.

Parameters
siteSite or SiteArray
Returns
group_elementtuple or sequence of tuples

A single tuple if site is a Site, or a sequence of tuples if site is a SiteArray. The group element(s) whose action on a certain site(s) from the fundamental domain will result in the given site.

Attributes

num_directions[source]

Previous topic

3.3. kwant.lattice – Bravais lattices

Next topic

kwant.lattice.general

This Page