**Dániel Varjas**
(9c60c330)
*
at
17 Oct 15:03
*

minor fixes after migrating from notebook

**Dániel Varjas**
(964e7ebb)
*
at
06 Oct 13:45
*

add lattice basis algorithm

Looking at eqn 3.15, we don't really need to keep track of all the barred group elements, as they only differ from the unbarred ones in a minus sign in both representations, which cancel from the product (as long as we can make sure that we don't randomly mix barred and unbarred in the two representations). It seems easy to modify the behaviour of `generate_group`

(I haven't tested its current behaviour) such that for a given set of generators it always outputs the same combinations in the generated group. (e.g if we have `C_2x`

and `C_2y`

on the input, we always get `C_2x * C_2y = C_2z`

in the generated group, and not `C_2y * C_2x`

, which would be the barred `C_2z`

.) This could be achieved by making sure the sets of group elements are ordered internally in `generate_group`

. This way you could generate the two representations starting from generators that you know correspond to the same group elements, and the generated group would also contain the same elements with only one copy of each barred-unbarred pair.

Thank you for pointing this out, indeed the random complex phases in the symmetry representations often cause some inconvenience, and we have been thinking of some solution to this for a while (in the `pg_representations`

branch).

The easiest way to deal with this would be to perform a phase fixing on the unitary parts of the symmetry, such that they form a consistent representation, with the random phases it is technically only a projective representation. Then one could demand the unitary parts to also match when testing equality of the group elements, this way double group representations could also be treated, as the barred and unbarred operators would now count as distinct. I wonder, would this be enough for your purposes? I'm not that well versed in double groups, is there any situation where it really matters which operator is barred and which is unbarred, or is this an arbitrary label just to tell the two apart?

**Dániel Varjas**
(83ab80d5)
*
at
27 Sep 15:47
*

add work on irrep finding

**Dániel Varjas**
(479a912d)
*
at
26 Sep 12:09
*

add proper treatment for 0 and higher than 3 dimensional rotations ...

**Dániel Varjas**
(00306a28)
*
at
23 Sep 12:52
*

add proper treatment for 0 and higher than 3 dimensional rotations ...

**Dániel Varjas**
(027b8e10)
*
at
23 Sep 11:46
*

add proper treatment for -1 and higher than 3 dimensional rotations...

**Dániel Varjas**
(9ecf1241)
*
at
23 Sep 11:25
*

add human readable printing for nonhermitian symmetries

The solution for the question of gauge-like symmetries is the following:

We want to find all families of unitaries `U = exp(i ϕ L)`

such that `U H(α) U^+ = H(α')`

where `α'`

is some new set of parameter values. Because of the continuous group structure, the transformation `α → α'`

must take the form of a rotation in parameter space `α' = exp(i ϕ M) α`

for some matrix `M`

(if the components of the Hamiltonian are all normalized, `M`

is hermitian). Substituting this into the original equation and differentiating we get `L H(α) - H(α) L = H(Mα)`

. This is linear in `α`

, so solving simultaneously for all components of `α`

guarantees that it is true for all `α`

. In the end, the problem is very similar to finding continuous rotation symmetries of `k.p`

Hamiltonians, except that now the parameter space takes the role of k-space.

normalize scalar U to array, parse strings through sympy, convert U to numpy array.

closes #7