principia_materia.symmetry.cornwell_data module
- class principia_materia.symmetry.cornwell_data.Cornwell_group_matrices
Bases:
object
This class is a simple container holding all of the rotation matrices that are used within the point groups. This information was taken from Appendix C of ‘Group Theory in Physics’ by J.F. Cornwell, 1997 Edition. Everything is input in a human readable form, and then processed into matrices. These matrices can be used in conjunction with the Cornwell character table data.
- D_M = {'E': array([[1., 0.], [0., 1.]]), 'c2e': array([[0., 1.], [1., 0.]]), 'c2f': array([[ 0., -1.], [-1., 0.]]), 'c2x': array([[-1., 0.], [ 0., -1.]]), 'c2y': array([[ 1., 0.], [ 0., -1.]]), 'c2z': array([[-1., 0.], [ 0., 1.]]), 'c4x': array([[ 0., 1.], [-1., 0.]]), 'ci4x': array([[ 0., -1.], [ 1., 0.]])}
- D_M_text = '\n E 1 0 0 1\n c2x -1 0 0 -1 \n c2y 1 0 0 -1\n c2z -1 0 0 1 \n c4x 0 1 -1 0 \n ci4x 0 -1 1 0 \n c2e 0 1 1 0\n c2f 0 -1 -1 0\n '
- D_X = {'E': array([[1., 0.], [0., 1.]]), 'c2a': array([[0., 1.], [1., 0.]]), 'c2b': array([[ 0., -1.], [-1., 0.]]), 'c2x': array([[ 1., 0.], [ 0., -1.]]), 'c2y': array([[-1., 0.], [ 0., 1.]]), 'c2z': array([[-1., 0.], [ 0., -1.]]), 'c4z': array([[ 0., 1.], [-1., 0.]]), 'ci4z': array([[ 0., -1.], [ 1., 0.]])}
- D_X_text = '\n E 1 0 0 1\n c2x 1 0 0 -1\n c2y -1 0 0 1\n c2z -1 0 0 -1 \n c4z 0 1 -1 0 \n ci4z 0 -1 1 0\n c2a 0 1 1 0\n c2b 0 -1 -1 0\n '
- D_p = {'E': array([[1., 0.], [0., 1.]]), 'c2A': array([[ 0.5 , -0.8660254], [-0.8660254, -0.5 ]]), 'c2B': array([[ 0.5 , 0.8660254], [ 0.8660254, -0.5 ]]), 'c2C': array([[ 0.5 , -0.8660254], [-0.8660254, -0.5 ]]), 'c2D': array([[ 0.5 , 0.8660254], [ 0.8660254, -0.5 ]]), 'c2x': array([[-1., 0.], [ 0., 1.]]), 'c2y': array([[-1., 0.], [ 0., 1.]]), 'c2z': array([[1., 0.], [0., 1.]]), 'c3z': array([[-0.5 , 0.8660254], [-0.8660254, -0.5 ]]), 'c6z': array([[-0.5 , -0.8660254], [ 0.8660254, -0.5 ]]), 'ci3z': array([[-0.5 , -0.8660254], [ 0.8660254, -0.5 ]]), 'ci6z': array([[-0.5 , 0.8660254], [-0.8660254, -0.5 ]])}
- D_p_text = '\n E c2z 1 0 0 1\n c6z ci3z -1/2. -3**0.5/2. 3**0.5/2. -1/2.\n ci6z c3z -1/2. 3**0.5/2. -3**0.5/2. -1/2.\n c2x c2y -1 0 0 1\n c2A c2C 1/2. -3**0.5/2. -3**0.5/2. -1/2.\n c2B c2D 1/2. 3**0.5/2. 3**0.5/2. -1/2.\n '
- D_pp = {'E': array([[1., 0.], [0., 1.]]), 'c2A': array([[-0.5 , 0.8660254], [ 0.8660254, 0.5 ]]), 'c2B': array([[-0.5 , -0.8660254], [-0.8660254, 0.5 ]]), 'c2C': array([[ 0.5 , -0.8660254], [-0.8660254, -0.5 ]]), 'c2D': array([[ 0.5 , 0.8660254], [ 0.8660254, -0.5 ]]), 'c2x': array([[ 1., 0.], [ 0., -1.]]), 'c2y': array([[-1., 0.], [ 0., 1.]]), 'c2z': array([[-1., 0.], [ 0., -1.]]), 'c3z': array([[-0.5 , 0.8660254], [-0.8660254, -0.5 ]]), 'c6z': array([[ 0.5 , 0.8660254], [-0.8660254, 0.5 ]]), 'ci3z': array([[-0.5 , -0.8660254], [ 0.8660254, -0.5 ]]), 'ci6z': array([[ 0.5 , -0.8660254], [ 0.8660254, 0.5 ]])}
- D_pp_text = '\n E 1 0 0 1 \n c6z 1/2. 3**0.5/2. -3**0.5/2. 1/2.\n ci6z 1/2. -3**0.5/2. 3**0.5/2. 1/2.\n c3z -1/2. 3**0.5/2. -3**0.5/2. -1/2.\n ci3z -1/2. -3**0.5/2. 3**0.5/2. -1/2.\n c2z -1 0 0 -1\n c2x 1 0 0 -1 \n c2A -1/2. 3**0.5/2. 3**0.5/2. 1/2.\n c2B -1/2. -3**0.5/2. -3**0.5/2. 1/2.\n c2y -1 0 0 1\n c2C 1/2. -3**0.5/2. -3**0.5/2. -1/2.\n c2D 1/2. 3**0.5/2. 3**0.5/2. -1/2.\n '
- Gamma_p = {'E': array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]), 'c2a': array([[ 1., 0., 0.], [ 0., 0., -1.], [ 0., -1., 0.]]), 'c2b': array([[1., 0., 0.], [0., 0., 1.], [0., 1., 0.]]), 'c2c': array([[ 0., -1., 0.], [-1., 0., 0.], [ 0., 0., 1.]]), 'c2d': array([[0., 1., 0.], [1., 0., 0.], [0., 0., 1.]]), 'c2e': array([[ 0., 0., -1.], [ 0., 1., 0.], [-1., 0., 0.]]), 'c2f': array([[0., 0., 1.], [0., 1., 0.], [1., 0., 0.]]), 'c2x': array([[-1., 0., 0.], [ 0., 1., 0.], [ 0., 0., -1.]]), 'c2y': array([[-1., 0., 0.], [ 0., -1., 0.], [ 0., 0., 1.]]), 'c2z': array([[ 1., 0., 0.], [ 0., -1., 0.], [ 0., 0., -1.]]), 'c3al': array([[ 0., -1., 0.], [ 0., 0., 1.], [-1., 0., 0.]]), 'c3be': array([[ 0., 1., 0.], [ 0., 0., -1.], [-1., 0., 0.]]), 'c3de': array([[0., 1., 0.], [0., 0., 1.], [1., 0., 0.]]), 'c3ga': array([[ 0., -1., 0.], [ 0., 0., -1.], [ 1., 0., 0.]]), 'c4x': array([[ 0., 0., 1.], [ 0., -1., 0.], [-1., 0., 0.]]), 'c4y': array([[ 0., -1., 0.], [ 1., 0., 0.], [ 0., 0., -1.]]), 'c4z': array([[-1., 0., 0.], [ 0., 0., -1.], [ 0., 1., 0.]]), 'ci3al': array([[ 0., 0., -1.], [-1., 0., 0.], [ 0., 1., 0.]]), 'ci3be': array([[ 0., 0., -1.], [ 1., 0., 0.], [ 0., -1., 0.]]), 'ci3de': array([[0., 0., 1.], [1., 0., 0.], [0., 1., 0.]]), 'ci3ga': array([[ 0., 0., 1.], [-1., 0., 0.], [ 0., -1., 0.]]), 'ci4x': array([[ 0., 0., -1.], [ 0., -1., 0.], [ 1., 0., 0.]]), 'ci4y': array([[ 0., 1., 0.], [-1., 0., 0.], [ 0., 0., -1.]]), 'ci4z': array([[-1., 0., 0.], [ 0., 0., 1.], [ 0., -1., 0.]])}
- Gamma_p_text = '\n E 1 0 0 0 1 0 0 0 1 \n c2x -1 0 0 0 1 0 0 0 -1 \n c2y -1 0 0 0 -1 0 0 0 1 \n c2z 1 0 0 0 -1 0 0 0 -1 \n c4x 0 0 1 0 -1 0 -1 0 0 \n ci4x 0 0 -1 0 -1 0 1 0 0 \n c4y 0 -1 0 1 0 0 0 0 -1 \n ci4y 0 1 0 -1 0 0 0 0 -1 \n c4z -1 0 0 0 0 -1 0 1 0 \n ci4z -1 0 0 0 0 1 0 -1 0 \n c2a 1 0 0 0 0 -1 0 -1 0 \n c2b 1 0 0 0 0 1 0 1 0 \n c2c 0 -1 0 -1 0 0 0 0 1 \n c2d 0 1 0 1 0 0 0 0 1 \n c2e 0 0 -1 0 1 0 -1 0 0 \n c2f 0 0 1 0 1 0 1 0 0 \n c3al 0 -1 0 0 0 1 -1 0 0 \n c3be 0 1 0 0 0 -1 -1 0 0 \n c3ga 0 -1 0 0 0 -1 1 0 0 \n c3de 0 1 0 0 0 1 1 0 0 \n ci3al 0 0 -1 -1 0 0 0 1 0 \n ci3be 0 0 -1 1 0 0 0 -1 0 \n ci3ga 0 0 1 -1 0 0 0 -1 0 \n ci3de 0 0 1 1 0 0 0 1 0 \n '
- Gamma_pp = {'E': array([[1., 0.], [0., 1.]]), 'c2a': array([[-1., 0.], [ 0., 1.]]), 'c2b': array([[-1., 0.], [ 0., 1.]]), 'c2c': array([[ 0.5 , 0.8660254], [ 0.8660254, -0.5 ]]), 'c2d': array([[ 0.5 , 0.8660254], [ 0.8660254, -0.5 ]]), 'c2e': array([[ 0.5 , -0.8660254], [-0.8660254, -0.5 ]]), 'c2f': array([[ 0.5 , -0.8660254], [-0.8660254, -0.5 ]]), 'c2x': array([[1., 0.], [0., 1.]]), 'c2y': array([[1., 0.], [0., 1.]]), 'c2z': array([[1., 0.], [0., 1.]]), 'c3al': array([[-0.5 , -0.8660254], [ 0.8660254, -0.5 ]]), 'c3be': array([[-0.5 , -0.8660254], [ 0.8660254, -0.5 ]]), 'c3de': array([[-0.5 , -0.8660254], [ 0.8660254, -0.5 ]]), 'c3ga': array([[-0.5 , -0.8660254], [ 0.8660254, -0.5 ]]), 'c4x': array([[ 0.5 , -0.8660254], [-0.8660254, -0.5 ]]), 'c4y': array([[ 0.5 , 0.8660254], [ 0.8660254, -0.5 ]]), 'c4z': array([[-1., 0.], [ 0., 1.]]), 'ci3al': array([[-0.5 , 0.8660254], [-0.8660254, -0.5 ]]), 'ci3be': array([[-0.5 , 0.8660254], [-0.8660254, -0.5 ]]), 'ci3de': array([[-0.5 , 0.8660254], [-0.8660254, -0.5 ]]), 'ci3ga': array([[-0.5 , 0.8660254], [-0.8660254, -0.5 ]]), 'ci4x': array([[ 0.5 , -0.8660254], [-0.8660254, -0.5 ]]), 'ci4y': array([[ 0.5 , 0.8660254], [ 0.8660254, -0.5 ]]), 'ci4z': array([[-1., 0.], [ 0., 1.]])}
- Gamma_pp_text = '\n E c2x c2y c2z 1 0 0 1 \n c3al c3be c3ga c3de -1/2. -3**0.5/2. 3**0.5/2. -1/2.\n ci3al ci3be ci3ga ci3de -1/2. 3**0.5/2. -3**0.5/2. -1/2.\n c4x ci4x c2e c2f 1/2. -3**0.5/2. -3**0.5/2. -1/2.\n c4y ci4y c2c c2d 1/2. 3**0.5/2. 3**0.5/2. -1/2.\n c4z ci4z c2a c2b -1 0 0 1\n '
- R = {'E': array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]), 'I': array([[-1., -0., -0.], [-0., -1., -0.], [-0., -0., -1.]]), 'II': array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]), 'Ic2A': array([[ 0.5 , -0.8660254, -0. ], [-0.8660254, -0.5 , -0. ], [-0. , -0. , 1. ]]), 'Ic2B': array([[ 0.5 , 0.8660254, -0. ], [ 0.8660254, -0.5 , -0. ], [-0. , -0. , 1. ]]), 'Ic2C': array([[-0.5 , 0.8660254, -0. ], [ 0.8660254, 0.5 , -0. ], [-0. , -0. , 1. ]]), 'Ic2D': array([[-0.5 , -0.8660254, -0. ], [-0.8660254, 0.5 , -0. ], [-0. , -0. , 1. ]]), 'Ic2a': array([[-0., -1., -0.], [-1., -0., -0.], [-0., -0., 1.]]), 'Ic2b': array([[-0., 1., -0.], [ 1., -0., -0.], [-0., -0., 1.]]), 'Ic2c': array([[-0., -0., -1.], [-0., 1., -0.], [-1., -0., -0.]]), 'Ic2d': array([[-0., -0., 1.], [-0., 1., -0.], [ 1., -0., -0.]]), 'Ic2e': array([[ 1., -0., -0.], [-0., -0., -1.], [-0., -1., -0.]]), 'Ic2f': array([[ 1., -0., -0.], [-0., -0., 1.], [-0., 1., -0.]]), 'Ic2x': array([[-1., -0., -0.], [-0., 1., -0.], [-0., -0., 1.]]), 'Ic2y': array([[ 1., -0., -0.], [-0., -1., -0.], [-0., -0., 1.]]), 'Ic2z': array([[ 1., -0., -0.], [-0., 1., -0.], [-0., -0., -1.]]), 'Ic3al': array([[-0., -1., -0.], [-0., -0., 1.], [ 1., -0., -0.]]), 'Ic3be': array([[-0., 1., -0.], [-0., -0., 1.], [-1., -0., -0.]]), 'Ic3de': array([[-0., -1., -0.], [-0., -0., -1.], [-1., -0., -0.]]), 'Ic3ga': array([[-0., 1., -0.], [-0., -0., -1.], [ 1., -0., -0.]]), 'Ic3z': array([[ 0.5 , -0.8660254, -0. ], [ 0.8660254, 0.5 , -0. ], [-0. , -0. , -1. ]]), 'Ic4x': array([[-1., -0., -0.], [-0., -0., -1.], [-0., 1., -0.]]), 'Ic4y': array([[-0., -0., 1.], [-0., -1., -0.], [-1., -0., -0.]]), 'Ic4z': array([[-0., -1., -0.], [ 1., -0., -0.], [-0., -0., -1.]]), 'Ic6z': array([[-0.5 , -0.8660254, -0. ], [ 0.8660254, -0.5 , -0. ], [-0. , -0. , -1. ]]), 'Ici3al': array([[-0., -0., 1.], [-1., -0., -0.], [-0., 1., -0.]]), 'Ici3be': array([[-0., -0., -1.], [ 1., -0., -0.], [-0., 1., -0.]]), 'Ici3de': array([[-0., -0., -1.], [-1., -0., -0.], [-0., -1., -0.]]), 'Ici3ga': array([[-0., -0., 1.], [ 1., -0., -0.], [-0., -1., -0.]]), 'Ici3z': array([[ 0.5 , 0.8660254, -0. ], [-0.8660254, 0.5 , -0. ], [-0. , -0. , -1. ]]), 'Ici4x': array([[-1., -0., -0.], [-0., -0., 1.], [-0., -1., -0.]]), 'Ici4y': array([[-0., -0., -1.], [-0., -1., -0.], [ 1., -0., -0.]]), 'Ici4z': array([[-0., 1., -0.], [-1., -0., -0.], [-0., -0., -1.]]), 'Ici6z': array([[-0.5 , 0.8660254, -0. ], [-0.8660254, -0.5 , -0. ], [-0. , -0. , -1. ]]), 'c2A': array([[-0.5 , 0.8660254, 0. ], [ 0.8660254, 0.5 , 0. ], [ 0. , 0. , -1. ]]), 'c2B': array([[-0.5 , -0.8660254, 0. ], [-0.8660254, 0.5 , 0. ], [ 0. , 0. , -1. ]]), 'c2C': array([[ 0.5 , -0.8660254, 0. ], [-0.8660254, -0.5 , 0. ], [ 0. , 0. , -1. ]]), 'c2D': array([[ 0.5 , 0.8660254, 0. ], [ 0.8660254, -0.5 , 0. ], [ 0. , 0. , -1. ]]), 'c2a': array([[ 0., 1., 0.], [ 1., 0., 0.], [ 0., 0., -1.]]), 'c2b': array([[ 0., -1., 0.], [-1., 0., 0.], [ 0., 0., -1.]]), 'c2c': array([[ 0., 0., 1.], [ 0., -1., 0.], [ 1., 0., 0.]]), 'c2d': array([[ 0., 0., -1.], [ 0., -1., 0.], [-1., 0., 0.]]), 'c2e': array([[-1., 0., 0.], [ 0., 0., 1.], [ 0., 1., 0.]]), 'c2f': array([[-1., 0., 0.], [ 0., 0., -1.], [ 0., -1., 0.]]), 'c2x': array([[ 1., 0., 0.], [ 0., -1., 0.], [ 0., 0., -1.]]), 'c2y': array([[-1., 0., 0.], [ 0., 1., 0.], [ 0., 0., -1.]]), 'c2z': array([[-1., 0., 0.], [ 0., -1., 0.], [ 0., 0., 1.]]), 'c3al': array([[ 0., 1., 0.], [ 0., 0., -1.], [-1., 0., 0.]]), 'c3be': array([[ 0., -1., 0.], [ 0., 0., -1.], [ 1., 0., 0.]]), 'c3de': array([[0., 1., 0.], [0., 0., 1.], [1., 0., 0.]]), 'c3ga': array([[ 0., -1., 0.], [ 0., 0., 1.], [-1., 0., 0.]]), 'c3z': array([[-0.5 , 0.8660254, 0. ], [-0.8660254, -0.5 , 0. ], [ 0. , 0. , 1. ]]), 'c4x': array([[ 1., 0., 0.], [ 0., 0., 1.], [ 0., -1., 0.]]), 'c4y': array([[ 0., 0., -1.], [ 0., 1., 0.], [ 1., 0., 0.]]), 'c4z': array([[ 0., 1., 0.], [-1., 0., 0.], [ 0., 0., 1.]]), 'c6z': array([[ 0.5 , 0.8660254, 0. ], [-0.8660254, 0.5 , 0. ], [ 0. , 0. , 1. ]]), 'ci3al': array([[ 0., 0., -1.], [ 1., 0., 0.], [ 0., -1., 0.]]), 'ci3be': array([[ 0., 0., 1.], [-1., 0., 0.], [ 0., -1., 0.]]), 'ci3de': array([[0., 0., 1.], [1., 0., 0.], [0., 1., 0.]]), 'ci3ga': array([[ 0., 0., -1.], [-1., 0., 0.], [ 0., 1., 0.]]), 'ci3z': array([[-0.5 , -0.8660254, 0. ], [ 0.8660254, -0.5 , 0. ], [ 0. , 0. , 1. ]]), 'ci4x': array([[ 1., 0., 0.], [ 0., 0., -1.], [ 0., 1., 0.]]), 'ci4y': array([[ 0., 0., 1.], [ 0., 1., 0.], [-1., 0., 0.]]), 'ci4z': array([[ 0., -1., 0.], [ 1., 0., 0.], [ 0., 0., 1.]]), 'ci6z': array([[ 0.5 , -0.8660254, 0. ], [ 0.8660254, 0.5 , 0. ], [ 0. , 0. , 1. ]])}
- R_text = '\n E 1 0 0 0 1 0 0 0 1\n c2x 1 0 0 0 -1 0 0 0 -1\n c2y -1 0 0 0 1 0 0 0 -1\n c2z -1 0 0 0 -1 0 0 0 1\n c4x 1 0 0 0 0 1 0 -1 0\n ci4x 1 0 0 0 0 -1 0 1 0\n c4y 0 0 -1 0 1 0 1 0 0\n ci4y 0 0 1 0 1 0 -1 0 0\n c4z 0 1 0 -1 0 0 0 0 1\n ci4z 0 -1 0 1 0 0 0 0 1\n c2a 0 1 0 1 0 0 0 0 -1\n c2b 0 -1 0 -1 0 0 0 0 -1\n c2c 0 0 1 0 -1 0 1 0 0\n c2d 0 0 -1 0 -1 0 -1 0 0\n c2e -1 0 0 0 0 1 0 1 0\n c2f -1 0 0 0 0 -1 0 -1 0\n c3al 0 1 0 0 0 -1 -1 0 0\n c3be 0 -1 0 0 0 -1 1 0 0\n c3ga 0 -1 0 0 0 1 -1 0 0\n c3de 0 1 0 0 0 1 1 0 0\n ci3al 0 0 -1 1 0 0 0 -1 0 \n ci3be 0 0 1 -1 0 0 0 -1 0\n ci3ga 0 0 -1 -1 0 0 0 1 0 \n ci3de 0 0 1 1 0 0 0 1 0 \n c3z -1/2. 3**0.5/2. 0 -3**0.5/2. -1/2. 0 0 0 1\n ci3z -1/2. -3**0.5/2. 0 3**0.5/2. -1/2. 0 0 0 1\n c6z 1/2. 3**0.5/2. 0 -3**0.5/2. 1/2. 0 0 0 1\n ci6z 1/2. -3**0.5/2. 0 3**0.5/2. 1/2. 0 0 0 1\n c2A -1/2. 3**0.5/2. 0 3**0.5/2. 1/2. 0 0 0 -1\n c2B -1/2. -3**0.5/2. 0 -3**0.5/2. 1/2. 0 0 0 -1\n c2C 1/2. -3**0.5/2. 0 -3**0.5/2. -1/2. 0 0 0 -1\n c2D 1/2. 3**0.5/2. 0 3**0.5/2. -1/2. 0 0 0 -1\n '
- S = {'E': array([[1., 0.], [0., 1.]]), 'c2c': array([[0., 1.], [1., 0.]]), 'c2d': array([[ 0., -1.], [-1., 0.]]), 'c2x': array([[ 1., 0.], [ 0., -1.]]), 'c2y': array([[-1., 0.], [ 0., -1.]]), 'c2z': array([[-1., 0.], [ 0., 1.]]), 'c4y': array([[ 0., -1.], [ 1., 0.]]), 'ci4y': array([[ 0., 1.], [-1., 0.]])}
- S_text = '\n E 1 0 0 1 \n c2y -1 0 0 -1\n c2c 0 1 1 0\n c2d 0 -1 -1 0\n c4y 0 -1 1 0\n ci4y 0 1 -1 0 \n c2x 1 0 0 -1\n c2z -1 0 0 1\n '
- i = 'c2D'
- ii = ['c2z', '-1', '0', '0', '1']
- jj = ['c2B', 'c2D']
- kk = ['1/2.', '3**0.5/2.', '3**0.5/2.', '-1/2.']
- class principia_materia.symmetry.cornwell_data.Cornwell_point_group(pgn)
Bases:
object
This class is a simple container holding all of the information on the crystallographic point groups. This information was taken from Appendix C of ‘Group Theory in Physics’ by J.F. Cornwell, 1997 Edition. Information includes the classes, character tables, irrep matrices, and subgroups. When combined with the information from Cornwell_group_matrices, these classes can be used to instantiate the point group class.
- get_mirror_notation()
This method provides a dictionary to map between Cornwell notation and mirror plane notation.
- parse_data()
- parse_irrep_matr()
This method will parse the input for the irrep matrices. This is basically just encoding what is given in the Appendix of Cornwell. We store all the necessary matrices in Cornwell_group_matrices, but we need to know which ones to take and whether or not we should mutliply by -1. A have created the following syntax: Eg | c 1 Gamma_pp | I 1 Gamma_pp T1g | c 1 R | I 1 R
First we have the irrep, then we have either one or two (two in this case) 3-tuple sets of info. The first item ‘c’ tells us that this is the proper rotations, we should use matrices Gamma_pp from Cornwell, and we should multiply by the prefactor of ‘1’. The same logic applies to the next set of info which corresponds to the improper rotations.