... | ... | @@ -182,10 +182,6 @@ class System: |
|
|
# the number of orbitals on each site.
|
|
|
ndarray[int, ndim=2] site_families
|
|
|
|
|
|
# An array of symmetry group elements. Each symmetry group element
|
|
|
# is represented as a 1D array of integers.
|
|
|
ndarray[int, ndim=2] symmetry_elements
|
|
|
|
|
|
# An array of pairs (i, j). These are organized into chunks which
|
|
|
# have a homogeneous pair of site families.
|
|
|
ndarray[int, ndim=2] hoppings
|
... | ... | @@ -195,8 +191,8 @@ class System: |
|
|
ndarray[int, ndim=1] chunks
|
|
|
|
|
|
# An array of blocks. A block has the format (sym, fam1, fam2, chunk, conj)
|
|
|
# where `sym` is an index into the `symmetry_elements` array, `fam1` and
|
|
|
# `fam2` are indices into the `site_families`, `chunk` is an index
|
|
|
# where `sym` is an integer that corresponds to a symmetry group element,
|
|
|
#`fam1` and `fam2` are indices into the `site_families`, `chunk` is an index
|
|
|
# into `chunks`, and `conj` is a boolean flag that indicates that the
|
|
|
# complex conjugate should be calculated (this allows efficient storage
|
|
|
# for Hermitian Hamiltonians).
|
... | ... | @@ -211,10 +207,13 @@ class System: |
|
|
# to construct the Hamiltonian corresponding to a symmetry group element
|
|
|
def hamiltonian(int symmetry_element):
|
|
|
...
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
Note that the low-level system doesn't have to know *anything at all* about
|
|
|
symmetries. The *meaning* of the symmetry group elements (which are just
|
|
|
represented by an integer in the above format) is entirely up to the
|
|
|
implementations to define.
|
|
|
|
|
|
|
|
|
## C API
|
|
|
In addition to the new low-level format, systems in Kwant-2 should have a C API.
|
... | ... | |