Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Get the irreducible representations for a space-group represented on non-standard basis. #101

Open
hongyi-zhao opened this issue Aug 11, 2023 · 5 comments

Comments

@hongyi-zhao
Copy link

See my following example:

gap> SGGenSet227me;
[ [ [ 0, -1, 0, 1/2 ], [ 0, 0, -1, 1/2 ], [ -1, 0, 0, 1/2 ], [ 0, 0, 0, 1 ] ], [ [ -15/4, 29/4, -15/4, -15/16 ], [ -33/8, 55/8, -25/8, -25/32 ], 
      [ -25/8, 55/8, -33/8, -41/32 ], [ 0, 0, 0, 1 ] ] ]
gap> S1:=SpaceGroupOnLeftIT(3,227);
SpaceGroupOnLeftIT(3,227,'2')
gap> S2:=AffineCrystGroupOnLeft(SGGenSet227me);
<matrix group with 2 generators>
gap> conj:=AffineIsomorphismSpaceGroups(S2, S1);
[ [ 5/2, 3, 5/2, -5 ], [ 5/2, 5/2, 3, -21/4 ], [ 3, 5/2, 5/2, -5 ], [ 0, 0, 0, 1 ] ]
gap> S2^(conj^-1)=S1;
true

Here, S1 is the 3d space group 227 given in ITA, then how can I use your package to compute the irreducible representations of S2?

Regards,
Zhao

@hongyi-zhao hongyi-zhao changed the title Get the irreducible representations for space-group represented on non-standard basis. Get the irreducible representations for a space-group represented on non-standard basis. Aug 11, 2023
@lan496
Copy link
Member

lan496 commented Aug 16, 2023

When you have symmetry operations in a non-standard basis, I think spgrep.get_spacegroup_irreps_from_primitive_symmetry can compute irreps for the space group.

@hongyi-zhao
Copy link
Author

hongyi-zhao commented Aug 17, 2023

If I understand correctly, the above method first converts the given representation onto a primitive cell and then computes all irreducible representations of it up to an arbitrary unitary transformation. If so, the resulting irrep is corresponding to the primitive cell, instead of the initial space group representation. Any more hints/comments will be helpful.

By the way, could you give an example using the generators I provided above to do the corresponding computation?

@lan496
Copy link
Member

lan496 commented Aug 18, 2023

The above function does not rely on a primitive cell.
For generators, it will be easy to tabulate symmetry operations from given generators. Then, the tabulated symmetry operations can be passed to the function.

@hongyi-zhao
Copy link
Author

hongyi-zhao commented Aug 18, 2023

The above function does not rely on a primitive cell.

Then, what's the implication of primitive_symmetry used in the function name?

For generators, it will be easy to tabulate symmetry operations from given generators. Then, the tabulated symmetry operations can be passed to the function.

It is still difficult for me to figure out the concrete computation steps with your package. Any more hints will be grateful.

@lan496
Copy link
Member

lan496 commented Aug 23, 2023

Then, what's the implication of primitive_symmetry used in the function name?

"primitive" indicates rotations and translations are based on a primitive basis.

It is still difficult for me to figure out the concrete computation steps with your package. Any more hints will be grateful.

Sorry, I do not have a concrete snippet for this purpose.
The following code will be shown how to generate group from generators.

from queue import Queue

def traverse(
    generators: list[Operation],
) -> list[Operation]:
    """
    Generate all coset operations
    """
    coset = set()
    que = Queue()  # type: ignore
    identity = generators[0].identity(ndim=3)
    que.put(identity)

    while not que.empty():
        g = que.get()
        if g in coset:
            continue
        coset.add(g)

        for h in generators:
            gh = remainder1_symmetry_operation(g * h)
            que.put(gh)

    return ret

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants