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

WyckoffPositionsByStabilizer can return positions with larger stabilizers #52

Open
bfield1 opened this issue Apr 26, 2024 · 0 comments
Open

Comments

@bfield1
Copy link
Contributor

bfield1 commented Apr 26, 2024

WyckoffPositionsByStabilizer can return Wyckoff positions with stabilizers which are supergroups of the given stabilizers, if the basis matches.

Consider the space group P4,

gap> S := SpaceGroupIT(3,75);;

It has four Wyckoff positions. Two with site symmetry C4, one with site symmetry C2, and the general position. The three special positions have a general z coordinate (that is, their basis is [[0,0,1]]).

gap> WyckoffPositions(S);
[ < Wyckoff position, point group 2, translation := [ 0, 0, 0 ], 
    basis := [ [ 0, 0, 1 ] ] >
    , < Wyckoff position, point group 2, translation := [ 0, 1/2, 0 ], 
    basis := [ [ 0, 0, 1 ] ] >
    , < Wyckoff position, point group 2, translation := [ 1/2, 1/2, 0 ], 
    basis := [ [ 0, 0, 1 ] ] >
    , < Wyckoff position, point group 1, translation := [ 0, 0, 0 ], 
    basis := [ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] >
     ]

Peculiarly, these three special Wyckoff positions are labelled by GAP as having the same point group (2). Inspecting the PointGroup of the WyckoffStabilizers reveals that they have different point groups. (The C2 Wyckoff position is the 2nd one. The 1st and 3rd ones have C4.)

Let us now consider the point group C2, which is a subgroup of the point group of P4.

gap> sub := Group([[[-1,0,0],[0,-1,0],[0,0,1]]]);;
gap> IsSubgroup(PointGroup(S), sub);
true

If we call WyckoffPositionsByStabilizer, I expect to get just the single Wyckoff position with C2 site symmetry. Instead, I get all three special Wyckoff positions.

gap> WyckoffPositionsByStabilizer(S, sub);
[ < Wyckoff position, point group 1, translation := [ 0, 0, 0 ], 
    basis := [ [ 0, 0, 1 ] ] >
    , < Wyckoff position, point group 1, translation := [ 0, 1/2, 0 ], 
    basis := [ [ 0, 0, 1 ] ] >
    , < Wyckoff position, point group 1, translation := [ 1/2, 1/2, 0 ], 
    basis := [ [ 0, 0, 1 ] ] >
     ]

C2 is a subgroup of C4, but is not equal to it.
If we try the converse situation, with the target stabilizer as C4, then we only get two Wyckoff positions, as expected.

This only happens if the basis is the same. If we test, for example, space group P4/m (SpaceGroupIT(3,83)), we can see how conflating subgroup-supergroup site symmetry groups only occurs for the same basis.

I do not think this is intended behaviour. The documentation says it identifies Wyckoff positions with equal stabilizers, this subgroup matching doesn't occur across bases, and WyckoffPositions also mislabels the point groups as being the same (hinting at a deeper problem in the algorithms, although WyckoffPositions and WyckoffPositionsByStabilizers call different algorithms for dimensions less than 6).

If this is actually intended behaviour, fine. I'm not using this function in any of my workflows; I just noticed it while testing some stuff. But I thought you should know.

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

1 participant