-
Notifications
You must be signed in to change notification settings - Fork 117
Description
As @atztogo clarified (#209 (comment)), spacegroup.c:num_axis_choices_ortho
gives the number of axis choices with preserving a Hall symbol. This number is used to "sort" three axes.
Lines 231 to 251 in dbc88b8
/* n_l : the index of L(g) in N_\epsilon(g) of SPG No.16-74 */ | |
/* See ITA: Affine normalizer or highest symmetry Euclidean normalizer */ | |
/* Previous implementation below was not correct for 67, 68, 73, 74, */ | |
/* Cmma, Ccca, Ibca, Imma */ | |
/* 6 / ((Number of hall symbols of each spg-type) / x) */ | |
/* where x=1 and x=2 with without and with centring. */ | |
/* 6, 2, 2, 6, 2, */ | |
/* 2, 6, 6, 6, 2, 1, 2, 1, 1, 1, */ | |
/* 1, 2, 1, 2, 2, 1, 2, 1, 1, 1, */ | |
/* 1, 2, 2, 2, 2, 1, 6, 6, 2, 2, */ | |
/* 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, */ | |
/* 3, 1, 1, 1, 2, 2, 1, 1, 6, 6, */ | |
/* 6, 2, 3, 1 */ | |
static int num_axis_choices_ortho[59] = { | |
6, 2, 2, 6, 2, /* 16-20 */ | |
2, 6, 6, 6, 2, 1, 2, 1, 1, 1, /* 21-30 */ | |
1, 2, 1, 2, 2, 1, 2, 1, 1, 1, /* 31-40 */ | |
1, 2, 2, 2, 2, 1, 6, 6, 2, 2, /* 41-50 */ | |
1, 1, 1, 1, 2, 2, 1, 2, 2, 1, /* 51-60 */ | |
3, 1, 1, 1, 2, 2, 2, 2, 6, 6, /* 61-70 */ | |
6, 2, 6, 2}; /* 71-74 */ |
I have also confirmed spacegroup.c:num_axis_choices_ortho
with the list of Hall symbols for orthorhombic space groups. Here is my understanding of the conventions for axis choices. Let num_free_axes = num_axis_choices_ortho[spacegroup_type.number - 16]
. num_free_axes
determines how to permute axes of the orthorhombic space group.
(Updated: initial wrong description for num_free_axes==1
and num_free_axes==6
are corrected.)
num_free_axes==1
: The axis choices give six Hall symbols. No freedom to permute axes.num_free_axes==2
: The axis choices give three Hall symbols. Each pair of axis choices {abc, ba-c}, {cab, -cba}, and {bca, a-cb} gives the same space groups, respectively. Spglib imposes a'<b' in the new coordinate systems.num_free_axes==3
: The axis choices give two Hall symbols. Each triplet of axis choices {abc, bca, cab} and {ba-c, a-cb, -cba} give the same space groups, respectively. Spglib imposes a'<b' and a'<c'.num_free_axes==6
: All axis choices give the same Hall symbol. Spglib imposes a' < b' < c'.
If I understand correctly, num_free_axes = 6 / (number of unique axis choices)
. For example, Pban (No. 50) has three Hall symbols: 50:1, 50:2, 50:1cab, 50:2cab, 50:1bca, and 50:2bca. Then, num_free_axes = 6 / 3 = 2
.
If this behavior is expected, the index of Affine normalizers (currently used) does not necessarily give the number of unique axis choices. For example, the index of Imma (No. 74) is two, "x,y,z" and "y+1/4,x-1/4,z+1/4". However, because "y,x,-z" does not belong to the Affine normalizer, axis choice ba-c gives a different Hall symbol.
Thus, I think the index in spacegroup.c:num_axis_choices_ortho
for the following two orthorhombic space groups should be corrected:
- Ibca (No. 73): Current 6 -> Proposed 3
- Two unique axis choices in ITB
- Imma (No. 74): Current 2 -> Proposed 1
- Six unique axis choices in ITB
@atztogo Does it make sense? Also, why Cmma (67), Ccca(68), Ibca(73), and Imma(74) are specially treated, giovannipizzi/seekpath#57 (comment) ?
Note: ITB gives different Hall symbols for identical space groups for the following two orthorhombic space groups:
- Cmme (No. 67): Six distinct axis choices in ITB, but actually some of them are identical (e.g. 68:1 and 68:1ba-c). In fact, the previous ITA in the fifth edition labeled it as Cmma.
- Ccce (No. 68): Same as Cmme. Previously Ccca.