Skip to content

C2v symmetry operations has the mirror plane around the wrong axis #562

Closed

Description

@argerlt

I need a sanity check on this please. Looking at ITOC and "Structure of Materials" (DeGraef 2012), I believe the symmetry group C2v in orix is incorrect:

>>> C2v
Symmetry (4,) mm2
[[ 1.  0.  0.  0.]
 [ 0.  1.  0.  0.]
 [ 0.  0.  0.  1.]
 [ 0.  0. -1.  0.]]

This is generated using Symmetry.from_generators(C2x,Csz) (2-fold around x, mirror around z, which creates mirror around y)

I think it should be generated instead with Symmetry.from_generators(C2z,Csx), so the 2-fold is around the z axis, as is the ITOC standard.

Symmetry (4,) mm2
[[1. 0. 0. 0.]
 [0. 0. 0. 1.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]]

(note in both, the last two operators are improper, and thus mirrors.)

ITOC page below for reference. Note how in the following snippet, the first set of vectors do not match ITOC, but the second do

from orix.quaternion.symmetry import C2z, C2x, Csx, Csz, Symmetry
from orix.vector import Vector3d

v = Vector3d([1,2,3])
Symmetry.from_generators(C2z,Csx)*v
Out[90]: 
Vector3d (4,)
[[ 1.  2.  3.]
 [-1. -2.  3.]
 [-1.  2.  3.]
 [ 1. -2.  3.]]

C2v*v
Out[91]: 
Vector3d (4,)
[[ 1.  2.  3.]
 [ 1. -2. -3.]
 [ 1.  2. -3.]
 [ 1. -2.  3.]]

I can take care of this if it is a mistake, I just want someone to check me before I accidentially waste time on a misunderstanding
Thank you.
Image

Activity

  1. CSSFrancis commented on Jul 2, 2025

    @CSSFrancis
    Member

    @maclariz or @hakonanes any chance you can comment on this? @argerlt have you checked the other symmetries as well? Is this something that we could hardcode a sanity check using ITOC?

  2. argerlt commented on Jul 2, 2025

    @argerlt
    CollaboratorAuthor

    have you checked the other symmetries as well?

    Yes, I did go though and check all the point groups, line by line, with a physical copy of ITOC volA next to me. C2v is the only PG I found whose elements didn't match up with ITOC.

    As a final exhaustive check, as part of #563, I wrote code to proceedurally generate all 32 stereographic plots, and they do, in fact, match ITOC, which seems about as close to verification as we can get.

    Is this something that we could hardcode a sanity check using ITOC?

    The only additional check I can think of would be to check that the highest order inversion/rotoinversion is always around z. Other than that, we do have hard-coded checks, it's just this one in particular was check with a flipped axes assumption.

  3. CSSFrancis commented on Jul 2, 2025

    @CSSFrancis
    Member

    @argerlt That seems good enough for me :) Thanks for doing that! It's tedious work, I think I owe you a beer after that :)

  4. added this to the v0.14.0 milestone on Jul 3, 2025
  5. changed the title [-]`orix.quaternion.symmetry.C2v` has the mirror plane around the wrong axis[/-] [+]C2v symmetry operations has the mirror plane around the wrong axis[/+] on Jul 3, 2025
  6. hakonanes commented on Jul 3, 2025

    @hakonanes
    Member

    Good catch, @argerlt.

    The vector (1, 2, 3) rotated with the four symmetry operations correspond to 2mm, so 211, i.e. a two-fold rotation around x, as you say:

    (x, y, -z)
    (x, -y, z)
    (x, -y, -z)
    (x, y, z)

  7. hakonanes commented on Jul 13, 2025

    @hakonanes
    Member

    How the symmetry operations of a point group rotate a vector with unique components (x, y, z) is actually a good test. We should consider add some of these.

  8. removed this from the v0.14.0 milestone on Oct 1, 2025
  9. hakonanes commented on Nov 4, 2025

    @hakonanes
    Member

    This should be fixed in #601.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions