Additional symmetries
Former-commit-id: dce9d43c0bfbce7166e6365f40591fbf5f9b4873
This commit is contained in:
parent
a2e61ad67a
commit
6f66ddc845
|
@ -53,7 +53,7 @@ class SVWFPointGroupInfo: # only for point groups, coz in svwf_rep() I use I_tyt
|
||||||
self.svwf_rep_gen_func = svwf_rep_gen_func
|
self.svwf_rep_gen_func = svwf_rep_gen_func
|
||||||
self.irreps = dict()
|
self.irreps = dict()
|
||||||
for irrepname, irrepgens in irrepgens_dict.items():
|
for irrepname, irrepgens in irrepgens_dict.items():
|
||||||
is1d = isinstance(irrepgens[0], int)
|
is1d = isinstance(irrepgens[0], (int,float,complex))
|
||||||
irrepdim = 1 if is1d else irrepgens[0].shape[0]
|
irrepdim = 1 if is1d else irrepgens[0].shape[0]
|
||||||
self.irreps[irrepname] = generate_grouprep(self.permgroup,
|
self.irreps[irrepname] = generate_grouprep(self.permgroup,
|
||||||
1 if is1d else np.eye(irrepdim),
|
1 if is1d else np.eye(irrepdim),
|
||||||
|
@ -495,6 +495,24 @@ point_group_info = { # representation info of some useful point groups
|
||||||
qpms.IRot3.identity(),
|
qpms.IRot3.identity(),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
'C2' : SVWFPointGroupInfo('C2',
|
||||||
|
# permutation group generators
|
||||||
|
(Permutation(0,1), # 180 deg rotation around z axis
|
||||||
|
),
|
||||||
|
# dictionary with irrep generators
|
||||||
|
{
|
||||||
|
# Bradley, Cracknell p. 57;
|
||||||
|
'A': (1,),
|
||||||
|
'B': (-1,),
|
||||||
|
},
|
||||||
|
# function that generates a tuple with svwf representation generators
|
||||||
|
lambda lMax : (qpms.zrotN_tyty(2, lMax),),
|
||||||
|
# quaternion rep generators
|
||||||
|
rep3d_gens = (
|
||||||
|
qpms.IRot3.zrotN(2),
|
||||||
|
)
|
||||||
|
|
||||||
|
),
|
||||||
'C2v' : SVWFPointGroupInfo('C2v',
|
'C2v' : SVWFPointGroupInfo('C2v',
|
||||||
# permutation group generators
|
# permutation group generators
|
||||||
(Permutation(0,1, size=4)(2,3), # x -> - x mirror operation (i.e. yz mirror plane)
|
(Permutation(0,1, size=4)(2,3), # x -> - x mirror operation (i.e. yz mirror plane)
|
||||||
|
@ -546,6 +564,24 @@ point_group_info = { # representation info of some useful point groups
|
||||||
qpms.IRot3.zflip(),
|
qpms.IRot3.zflip(),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
'C4' : SVWFPointGroupInfo('C4',
|
||||||
|
# permutation group generators
|
||||||
|
(Permutation(0,1,2,3, size=4),), #C4 rotation
|
||||||
|
# dictionary with irrep generators
|
||||||
|
{
|
||||||
|
# Bradley, Cracknell p. 58
|
||||||
|
'A': (1,),
|
||||||
|
'B': (-1,),
|
||||||
|
'1E': (-1j,),
|
||||||
|
'2E': (1j,),
|
||||||
|
},
|
||||||
|
# function that generates a tuple with svwf representation generators
|
||||||
|
lambda lMax : (qpms.zrotN_tyty(4, lMax), ),
|
||||||
|
# quaternion rep generators
|
||||||
|
rep3d_gens = (
|
||||||
|
qpms.IRot3.zrotN(4),
|
||||||
|
)
|
||||||
|
),
|
||||||
'C4v' : SVWFPointGroupInfo('C4v',
|
'C4v' : SVWFPointGroupInfo('C4v',
|
||||||
# permutation group generators
|
# permutation group generators
|
||||||
(Permutation(0,1,2,3, size=4), #C4 rotation
|
(Permutation(0,1,2,3, size=4), #C4 rotation
|
||||||
|
@ -621,4 +657,41 @@ point_group_info = { # representation info of some useful point groups
|
||||||
qpms.IRot3.zflip(),
|
qpms.IRot3.zflip(),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
'x_and_z_flip': SVWFPointGroupInfo(
|
||||||
|
'x_and_z_flip',
|
||||||
|
(
|
||||||
|
Permutation(0,1, size=4), # x -> -x mirror op
|
||||||
|
Permutation(2,3, size=4), # z -> -z mirror op
|
||||||
|
),
|
||||||
|
{
|
||||||
|
"P'": (1, 1),
|
||||||
|
"R'": (-1, 1),
|
||||||
|
"P''": (-1,-1),
|
||||||
|
"R''": (1, -1),
|
||||||
|
},
|
||||||
|
lambda lMax : (qpms.xflip_tyty(lMax), qpms.zflip_tyty(lMax)),
|
||||||
|
rep3d_gens = (
|
||||||
|
qpms.IRot3.xflip(),
|
||||||
|
qpms.IRot3.zflip(),
|
||||||
|
)
|
||||||
|
|
||||||
|
),
|
||||||
|
'y_and_z_flip': SVWFPointGroupInfo(
|
||||||
|
'y_and_z_flip',
|
||||||
|
(
|
||||||
|
Permutation(0,1, size=4), # y -> -y mirror op
|
||||||
|
Permutation(2,3, size=4), # z -> -z mirror op
|
||||||
|
),
|
||||||
|
{
|
||||||
|
"P'": (1, 1),
|
||||||
|
"R'": (-1, 1),
|
||||||
|
"P''": (-1,-1),
|
||||||
|
"R''": (1, -1),
|
||||||
|
},
|
||||||
|
lambda lMax : (qpms.yflip_tyty(lMax), qpms.zflip_tyty(lMax)),
|
||||||
|
rep3d_gens = (
|
||||||
|
qpms.IRot3.yflip(),
|
||||||
|
qpms.IRot3.zflip(),
|
||||||
|
)
|
||||||
|
),
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
from qpms.symmetries import point_group_info
|
from qpms.symmetries import point_group_info
|
||||||
|
|
||||||
codestring = "#include <qpms/groups.h>\n"
|
codestring = "#include <qpms/groups.h>\n"
|
||||||
for name, info in point_group_info.items():
|
for name in sorted(point_group_info.keys()):
|
||||||
|
info = point_group_info[name]
|
||||||
codestring += 'const qpms_finite_group_t QPMS_FINITE_GROUP_%s = ' %name
|
codestring += 'const qpms_finite_group_t QPMS_FINITE_GROUP_%s = ' %name
|
||||||
codestring += info.generate_c_source()
|
codestring += info.generate_c_source()
|
||||||
codestring += ";\n\n"
|
codestring += ";\n\n"
|
||||||
|
|
|
@ -1,4 +1,42 @@
|
||||||
#include "staticgroups.h"
|
#include <qpms/groups.h>
|
||||||
|
const qpms_finite_group_t QPMS_FINITE_GROUP_C2 = {
|
||||||
|
"C2", // name
|
||||||
|
2, // order
|
||||||
|
0, // idi
|
||||||
|
(qpms_gmi_t[]) { // mt
|
||||||
|
0, 1,
|
||||||
|
1, 0,
|
||||||
|
},
|
||||||
|
(qpms_gmi_t[]) { // invi
|
||||||
|
0, 1
|
||||||
|
},
|
||||||
|
(qpms_gmi_t[]) {1}, // gens
|
||||||
|
1, // ngens
|
||||||
|
(qpms_permutation_t[]){ // permrep
|
||||||
|
"(1)",
|
||||||
|
"(0 1)",
|
||||||
|
},
|
||||||
|
NULL, // elemlabels
|
||||||
|
2, // permrep_nelem
|
||||||
|
(qpms_irot3_t[]) { // rep3d
|
||||||
|
{{1.0+0.0*I, 0.0+0.0*I}, 1},
|
||||||
|
{{6.123233995736766e-17+1.0*I, 0.0+0.0*I}, 1},
|
||||||
|
},
|
||||||
|
2, // nirreps
|
||||||
|
(struct qpms_finite_group_irrep_t[]) { // irreps
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"B", //name
|
||||||
|
(complex double []) {1, -1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"A", //name
|
||||||
|
(complex double []) {1, 1} // m
|
||||||
|
},
|
||||||
|
} // end of irreps
|
||||||
|
};
|
||||||
|
|
||||||
const qpms_finite_group_t QPMS_FINITE_GROUP_C2v = {
|
const qpms_finite_group_t QPMS_FINITE_GROUP_C2v = {
|
||||||
"C2v", // name
|
"C2v", // name
|
||||||
4, // order
|
4, // order
|
||||||
|
@ -35,6 +73,11 @@ const qpms_finite_group_t QPMS_FINITE_GROUP_C2v = {
|
||||||
"A1", //name
|
"A1", //name
|
||||||
(complex double []) {1, 1, 1, 1} // m
|
(complex double []) {1, 1, 1, 1} // m
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"A2", //name
|
||||||
|
(complex double []) {1, -1, 1, -1} // m
|
||||||
|
},
|
||||||
{
|
{
|
||||||
1, // dim
|
1, // dim
|
||||||
"B2", //name
|
"B2", //name
|
||||||
|
@ -45,10 +88,241 @@ const qpms_finite_group_t QPMS_FINITE_GROUP_C2v = {
|
||||||
"B1", //name
|
"B1", //name
|
||||||
(complex double []) {1, 1, -1, -1} // m
|
(complex double []) {1, 1, -1, -1} // m
|
||||||
},
|
},
|
||||||
|
} // end of irreps
|
||||||
|
};
|
||||||
|
|
||||||
|
const qpms_finite_group_t QPMS_FINITE_GROUP_C4 = {
|
||||||
|
"C4", // name
|
||||||
|
4, // order
|
||||||
|
0, // idi
|
||||||
|
(qpms_gmi_t[]) { // mt
|
||||||
|
0, 1, 2, 3,
|
||||||
|
1, 2, 3, 0,
|
||||||
|
2, 3, 0, 1,
|
||||||
|
3, 0, 1, 2,
|
||||||
|
},
|
||||||
|
(qpms_gmi_t[]) { // invi
|
||||||
|
0, 3, 2, 1
|
||||||
|
},
|
||||||
|
(qpms_gmi_t[]) {1}, // gens
|
||||||
|
1, // ngens
|
||||||
|
(qpms_permutation_t[]){ // permrep
|
||||||
|
"(3)",
|
||||||
|
"(0 1 2 3)",
|
||||||
|
"(0 2)(1 3)",
|
||||||
|
"(0 3 2 1)",
|
||||||
|
},
|
||||||
|
NULL, // elemlabels
|
||||||
|
4, // permrep_nelem
|
||||||
|
(qpms_irot3_t[]) { // rep3d
|
||||||
|
{{1.0+0.0*I, 0.0+0.0*I}, 1},
|
||||||
|
{{0.7071067811865476+0.7071067811865475*I, 0.0+0.0*I}, 1},
|
||||||
|
{{2.220446049250313e-16+1.0*I, 0.0+0.0*I}, 1},
|
||||||
|
{{-0.7071067811865474+0.7071067811865477*I, 0.0+0.0*I}, 1},
|
||||||
|
},
|
||||||
|
4, // nirreps
|
||||||
|
(struct qpms_finite_group_irrep_t[]) { // irreps
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"B", //name
|
||||||
|
(complex double []) {1, -1, 1, -1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"2E", //name
|
||||||
|
(complex double []) {1, 1j, (-1+0j), (-0-1j)} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"A", //name
|
||||||
|
(complex double []) {1, 1, 1, 1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"1E", //name
|
||||||
|
(complex double []) {1, -1j, (-1+0j), 1j} // m
|
||||||
|
},
|
||||||
|
} // end of irreps
|
||||||
|
};
|
||||||
|
|
||||||
|
const qpms_finite_group_t QPMS_FINITE_GROUP_C4v = {
|
||||||
|
"C4v", // name
|
||||||
|
8, // order
|
||||||
|
0, // idi
|
||||||
|
(qpms_gmi_t[]) { // mt
|
||||||
|
0, 1, 2, 3, 4, 5, 6, 7,
|
||||||
|
1, 2, 3, 0, 7, 4, 5, 6,
|
||||||
|
2, 3, 0, 1, 6, 7, 4, 5,
|
||||||
|
3, 0, 1, 2, 5, 6, 7, 4,
|
||||||
|
4, 5, 6, 7, 0, 1, 2, 3,
|
||||||
|
5, 6, 7, 4, 3, 0, 1, 2,
|
||||||
|
6, 7, 4, 5, 2, 3, 0, 1,
|
||||||
|
7, 4, 5, 6, 1, 2, 3, 0,
|
||||||
|
},
|
||||||
|
(qpms_gmi_t[]) { // invi
|
||||||
|
0, 3, 2, 1, 4, 5, 6, 7
|
||||||
|
},
|
||||||
|
(qpms_gmi_t[]) {1, 7}, // gens
|
||||||
|
2, // ngens
|
||||||
|
(qpms_permutation_t[]){ // permrep
|
||||||
|
"(3)",
|
||||||
|
"(0 1 2 3)",
|
||||||
|
"(0 2)(1 3)",
|
||||||
|
"(0 3 2 1)",
|
||||||
|
"(3)(0 2)",
|
||||||
|
"(0 3)(1 2)",
|
||||||
|
"(1 3)",
|
||||||
|
"(0 1)(2 3)",
|
||||||
|
},
|
||||||
|
NULL, // elemlabels
|
||||||
|
4, // permrep_nelem
|
||||||
|
(qpms_irot3_t[]) { // rep3d
|
||||||
|
{{1.0+0.0*I, 0.0+0.0*I}, 1},
|
||||||
|
{{0.7071067811865476+0.7071067811865475*I, 0.0+0.0*I}, 1},
|
||||||
|
{{2.220446049250313e-16+1.0*I, 0.0+0.0*I}, 1},
|
||||||
|
{{-0.7071067811865474+0.7071067811865477*I, 0.0+0.0*I}, 1},
|
||||||
|
{{0.0+0.0*I, 0.7071067811865477-0.7071067811865474*I}, -1},
|
||||||
|
{{0.0+0.0*I, 1.0+2.220446049250313e-16*I}, -1},
|
||||||
|
{{0.0+0.0*I, 0.7071067811865475+0.7071067811865476*I}, -1},
|
||||||
|
{{0.0+0.0*I, 0.0+1.0*I}, -1},
|
||||||
|
},
|
||||||
|
5, // nirreps
|
||||||
|
(struct qpms_finite_group_irrep_t[]) { // irreps
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"A1", //name
|
||||||
|
(complex double []) {1, 1, 1, 1, 1, 1, 1, 1} // m
|
||||||
|
},
|
||||||
{
|
{
|
||||||
1, // dim
|
1, // dim
|
||||||
"A2", //name
|
"A2", //name
|
||||||
(complex double []) {1, -1, 1, -1} // m
|
(complex double []) {1, 1, 1, 1, -1, -1, -1, -1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
2, // dim
|
||||||
|
"E", //name
|
||||||
|
(complex double []) {
|
||||||
|
// (3)
|
||||||
|
1.0, 0.0,
|
||||||
|
0.0, 1.0,
|
||||||
|
// (0 1 2 3)
|
||||||
|
0.0, -1.0,
|
||||||
|
1.0, 0.0,
|
||||||
|
// (0 2)(1 3)
|
||||||
|
-1.0, 0.0,
|
||||||
|
0.0, -1.0,
|
||||||
|
// (0 3 2 1)
|
||||||
|
0.0, 1.0,
|
||||||
|
-1.0, 0.0,
|
||||||
|
// (3)(0 2)
|
||||||
|
0.0, 1.0,
|
||||||
|
1.0, 0.0,
|
||||||
|
// (0 3)(1 2)
|
||||||
|
1.0, 0.0,
|
||||||
|
0.0, -1.0,
|
||||||
|
// (1 3)
|
||||||
|
0.0, -1.0,
|
||||||
|
-1.0, 0.0,
|
||||||
|
// (0 1)(2 3)
|
||||||
|
-1.0, 0.0,
|
||||||
|
0.0, 1.0,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"B2", //name
|
||||||
|
(complex double []) {1, -1, 1, -1, 1, -1, 1, -1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"B1", //name
|
||||||
|
(complex double []) {1, -1, 1, -1, -1, 1, -1, 1} // m
|
||||||
|
},
|
||||||
|
} // end of irreps
|
||||||
|
};
|
||||||
|
|
||||||
|
const qpms_finite_group_t QPMS_FINITE_GROUP_D2h = {
|
||||||
|
"D2h", // name
|
||||||
|
8, // order
|
||||||
|
0, // idi
|
||||||
|
(qpms_gmi_t[]) { // mt
|
||||||
|
0, 1, 2, 3, 4, 5, 6, 7,
|
||||||
|
1, 0, 3, 2, 5, 4, 7, 6,
|
||||||
|
2, 3, 0, 1, 6, 7, 4, 5,
|
||||||
|
3, 2, 1, 0, 7, 6, 5, 4,
|
||||||
|
4, 5, 6, 7, 0, 1, 2, 3,
|
||||||
|
5, 4, 7, 6, 1, 0, 3, 2,
|
||||||
|
6, 7, 4, 5, 2, 3, 0, 1,
|
||||||
|
7, 6, 5, 4, 3, 2, 1, 0,
|
||||||
|
},
|
||||||
|
(qpms_gmi_t[]) { // invi
|
||||||
|
0, 1, 2, 3, 4, 5, 6, 7
|
||||||
|
},
|
||||||
|
(qpms_gmi_t[]) {1, 3, 7}, // gens
|
||||||
|
3, // ngens
|
||||||
|
(qpms_permutation_t[]){ // permrep
|
||||||
|
"(5)",
|
||||||
|
"(5)(0 1)(2 3)",
|
||||||
|
"(5)(0 2)(1 3)",
|
||||||
|
"(5)(0 3)(1 2)",
|
||||||
|
"(0 3)(1 2)(4 5)",
|
||||||
|
"(0 2)(1 3)(4 5)",
|
||||||
|
"(0 1)(2 3)(4 5)",
|
||||||
|
"(4 5)",
|
||||||
|
},
|
||||||
|
NULL, // elemlabels
|
||||||
|
6, // permrep_nelem
|
||||||
|
(qpms_irot3_t[]) { // rep3d
|
||||||
|
{{1.0+0.0*I, 0.0+0.0*I}, 1},
|
||||||
|
{{0.0+0.0*I, 0.0+1.0*I}, -1},
|
||||||
|
{{0.0+1.0*I, 0.0+0.0*I}, 1},
|
||||||
|
{{0.0+0.0*I, 1.0+0.0*I}, -1},
|
||||||
|
{{0.0+0.0*I, 0.0+1.0*I}, 1},
|
||||||
|
{{-1.0+0.0*I, 0.0+0.0*I}, -1},
|
||||||
|
{{0.0+0.0*I, -1.0+0.0*I}, 1},
|
||||||
|
{{0.0+1.0*I, 0.0+0.0*I}, -1},
|
||||||
|
},
|
||||||
|
8, // nirreps
|
||||||
|
(struct qpms_finite_group_irrep_t[]) { // irreps
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"A2\'", //name
|
||||||
|
(complex double []) {1, -1, 1, -1, -1, 1, -1, 1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"B1\'", //name
|
||||||
|
(complex double []) {1, 1, -1, -1, -1, -1, 1, 1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"A2\'\'", //name
|
||||||
|
(complex double []) {1, 1, 1, 1, -1, -1, -1, -1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"B2\'", //name
|
||||||
|
(complex double []) {1, -1, -1, 1, 1, -1, -1, 1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"A1\'", //name
|
||||||
|
(complex double []) {1, 1, 1, 1, 1, 1, 1, 1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"A1\'\'", //name
|
||||||
|
(complex double []) {1, -1, 1, -1, 1, -1, 1, -1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"B2\'\'", //name
|
||||||
|
(complex double []) {1, 1, -1, -1, 1, 1, -1, -1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"B1\'\'", //name
|
||||||
|
(complex double []) {1, -1, -1, 1, -1, 1, 1, -1} // m
|
||||||
},
|
},
|
||||||
} // end of irreps
|
} // end of irreps
|
||||||
};
|
};
|
||||||
|
@ -108,6 +382,11 @@ const qpms_finite_group_t QPMS_FINITE_GROUP_D3h = {
|
||||||
},
|
},
|
||||||
6, // nirreps
|
6, // nirreps
|
||||||
(struct qpms_finite_group_irrep_t[]) { // irreps
|
(struct qpms_finite_group_irrep_t[]) { // irreps
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"A2\'", //name
|
||||||
|
(complex double []) {1, 1, 1, -1, -1, -1, -1, -1, -1, 1, 1, 1} // m
|
||||||
|
},
|
||||||
{
|
{
|
||||||
2, // dim
|
2, // dim
|
||||||
"E\'", //name
|
"E\'", //name
|
||||||
|
@ -150,6 +429,21 @@ const qpms_finite_group_t QPMS_FINITE_GROUP_D3h = {
|
||||||
0.0, 0.9999999999999996,
|
0.0, 0.9999999999999996,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"A2\'\'", //name
|
||||||
|
(complex double []) {1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"A1\'", //name
|
||||||
|
(complex double []) {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"A1\'\'", //name
|
||||||
|
(complex double []) {1, 1, 1, -1, -1, -1, 1, 1, 1, -1, -1, -1} // m
|
||||||
|
},
|
||||||
{
|
{
|
||||||
2, // dim
|
2, // dim
|
||||||
"E\'\'", //name
|
"E\'\'", //name
|
||||||
|
@ -192,26 +486,6 @@ const qpms_finite_group_t QPMS_FINITE_GROUP_D3h = {
|
||||||
0.0, -0.9999999999999996,
|
0.0, -0.9999999999999996,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
1, // dim
|
|
||||||
"A2\'", //name
|
|
||||||
(complex double []) {1, 1, 1, -1, -1, -1, -1, -1, -1, 1, 1, 1} // m
|
|
||||||
},
|
|
||||||
{
|
|
||||||
1, // dim
|
|
||||||
"A1\'\'", //name
|
|
||||||
(complex double []) {1, 1, 1, -1, -1, -1, 1, 1, 1, -1, -1, -1} // m
|
|
||||||
},
|
|
||||||
{
|
|
||||||
1, // dim
|
|
||||||
"A1\'", //name
|
|
||||||
(complex double []) {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} // m
|
|
||||||
},
|
|
||||||
{
|
|
||||||
1, // dim
|
|
||||||
"A2\'\'", //name
|
|
||||||
(complex double []) {1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1} // m
|
|
||||||
},
|
|
||||||
} // end of irreps
|
} // end of irreps
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -284,8 +558,13 @@ const qpms_finite_group_t QPMS_FINITE_GROUP_D4h = {
|
||||||
(struct qpms_finite_group_irrep_t[]) { // irreps
|
(struct qpms_finite_group_irrep_t[]) { // irreps
|
||||||
{
|
{
|
||||||
1, // dim
|
1, // dim
|
||||||
"B1\'\'", //name
|
"A2\'", //name
|
||||||
(complex double []) {1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1} // m
|
(complex double []) {1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"B1\'", //name
|
||||||
|
(complex double []) {1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, -1, -1, 1, -1, 1} // m
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
2, // dim
|
2, // dim
|
||||||
|
@ -341,6 +620,36 @@ const qpms_finite_group_t QPMS_FINITE_GROUP_D4h = {
|
||||||
0.0, 1.0,
|
0.0, 1.0,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"A2\'\'", //name
|
||||||
|
(complex double []) {1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"B2\'", //name
|
||||||
|
(complex double []) {1, -1, 1, -1, 1, -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, 1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"A1\'", //name
|
||||||
|
(complex double []) {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"A1\'\'", //name
|
||||||
|
(complex double []) {1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"B2\'\'", //name
|
||||||
|
(complex double []) {1, -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, 1, 1, -1, 1, -1} // m
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"B1\'\'", //name
|
||||||
|
(complex double []) {1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1} // m
|
||||||
|
},
|
||||||
{
|
{
|
||||||
2, // dim
|
2, // dim
|
||||||
"E\'\'", //name
|
"E\'\'", //name
|
||||||
|
@ -395,41 +704,6 @@ const qpms_finite_group_t QPMS_FINITE_GROUP_D4h = {
|
||||||
0.0, -1.0,
|
0.0, -1.0,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
1, // dim
|
|
||||||
"B1\'", //name
|
|
||||||
(complex double []) {1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, -1, -1, 1, -1, 1} // m
|
|
||||||
},
|
|
||||||
{
|
|
||||||
1, // dim
|
|
||||||
"A2\'\'", //name
|
|
||||||
(complex double []) {1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1} // m
|
|
||||||
},
|
|
||||||
{
|
|
||||||
1, // dim
|
|
||||||
"B2\'", //name
|
|
||||||
(complex double []) {1, -1, 1, -1, 1, -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, 1} // m
|
|
||||||
},
|
|
||||||
{
|
|
||||||
1, // dim
|
|
||||||
"A1\'\'", //name
|
|
||||||
(complex double []) {1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1} // m
|
|
||||||
},
|
|
||||||
{
|
|
||||||
1, // dim
|
|
||||||
"A2\'", //name
|
|
||||||
(complex double []) {1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1} // m
|
|
||||||
},
|
|
||||||
{
|
|
||||||
1, // dim
|
|
||||||
"B2\'\'", //name
|
|
||||||
(complex double []) {1, -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, 1, 1, -1, 1, -1} // m
|
|
||||||
},
|
|
||||||
{
|
|
||||||
1, // dim
|
|
||||||
"A1\'", //name
|
|
||||||
(complex double []) {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} // m
|
|
||||||
},
|
|
||||||
} // end of irreps
|
} // end of irreps
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -463,184 +737,110 @@ const qpms_finite_group_t QPMS_FINITE_GROUP_trivial_g = {
|
||||||
} // end of irreps
|
} // end of irreps
|
||||||
};
|
};
|
||||||
|
|
||||||
const qpms_finite_group_t QPMS_FINITE_GROUP_C4v = {
|
const qpms_finite_group_t QPMS_FINITE_GROUP_x_and_z_flip = {
|
||||||
"C4v", // name
|
"x_and_z_flip", // name
|
||||||
8, // order
|
4, // order
|
||||||
0, // idi
|
0, // idi
|
||||||
(qpms_gmi_t[]) { // mt
|
(qpms_gmi_t[]) { // mt
|
||||||
0, 1, 2, 3, 4, 5, 6, 7,
|
0, 1, 2, 3,
|
||||||
1, 2, 3, 0, 7, 4, 5, 6,
|
1, 0, 3, 2,
|
||||||
2, 3, 0, 1, 6, 7, 4, 5,
|
2, 3, 0, 1,
|
||||||
3, 0, 1, 2, 5, 6, 7, 4,
|
3, 2, 1, 0,
|
||||||
4, 5, 6, 7, 0, 1, 2, 3,
|
|
||||||
5, 6, 7, 4, 3, 0, 1, 2,
|
|
||||||
6, 7, 4, 5, 2, 3, 0, 1,
|
|
||||||
7, 4, 5, 6, 1, 2, 3, 0,
|
|
||||||
},
|
},
|
||||||
(qpms_gmi_t[]) { // invi
|
(qpms_gmi_t[]) { // invi
|
||||||
0, 3, 2, 1, 4, 5, 6, 7
|
0, 1, 2, 3
|
||||||
},
|
},
|
||||||
(qpms_gmi_t[]) {1, 7}, // gens
|
(qpms_gmi_t[]) {1, 3}, // gens
|
||||||
2, // ngens
|
2, // ngens
|
||||||
(qpms_permutation_t[]){ // permrep
|
(qpms_permutation_t[]){ // permrep
|
||||||
"(3)",
|
"(3)",
|
||||||
"(0 1 2 3)",
|
"(3)(0 1)",
|
||||||
"(0 2)(1 3)",
|
|
||||||
"(0 3 2 1)",
|
|
||||||
"(3)(0 2)",
|
|
||||||
"(0 3)(1 2)",
|
|
||||||
"(1 3)",
|
|
||||||
"(0 1)(2 3)",
|
"(0 1)(2 3)",
|
||||||
|
"(2 3)",
|
||||||
},
|
},
|
||||||
NULL, // elemlabels
|
NULL, // elemlabels
|
||||||
4, // permrep_nelem
|
4, // permrep_nelem
|
||||||
(qpms_irot3_t[]) { // rep3d
|
(qpms_irot3_t[]) { // rep3d
|
||||||
{{1.0+0.0*I, 0.0+0.0*I}, 1},
|
{{1.0+0.0*I, 0.0+0.0*I}, 1},
|
||||||
{{0.7071067811865476+0.7071067811865475*I, 0.0+0.0*I}, 1},
|
|
||||||
{{2.220446049250313e-16+1.0*I, 0.0+0.0*I}, 1},
|
|
||||||
{{-0.7071067811865474+0.7071067811865477*I, 0.0+0.0*I}, 1},
|
|
||||||
{{0.0+0.0*I, 0.7071067811865477-0.7071067811865474*I}, -1},
|
|
||||||
{{0.0+0.0*I, 1.0+2.220446049250313e-16*I}, -1},
|
|
||||||
{{0.0+0.0*I, 0.7071067811865475+0.7071067811865476*I}, -1},
|
|
||||||
{{0.0+0.0*I, 0.0+1.0*I}, -1},
|
{{0.0+0.0*I, 0.0+1.0*I}, -1},
|
||||||
},
|
|
||||||
5, // nirreps
|
|
||||||
(struct qpms_finite_group_irrep_t[]) { // irreps
|
|
||||||
{
|
|
||||||
2, // dim
|
|
||||||
"E", //name
|
|
||||||
(complex double []) {
|
|
||||||
// (3)
|
|
||||||
1.0, 0.0,
|
|
||||||
0.0, 1.0,
|
|
||||||
// (0 1 2 3)
|
|
||||||
0.0, -1.0,
|
|
||||||
1.0, 0.0,
|
|
||||||
// (0 2)(1 3)
|
|
||||||
-1.0, 0.0,
|
|
||||||
0.0, -1.0,
|
|
||||||
// (0 3 2 1)
|
|
||||||
0.0, 1.0,
|
|
||||||
-1.0, 0.0,
|
|
||||||
// (3)(0 2)
|
|
||||||
0.0, 1.0,
|
|
||||||
1.0, 0.0,
|
|
||||||
// (0 3)(1 2)
|
|
||||||
1.0, 0.0,
|
|
||||||
0.0, -1.0,
|
|
||||||
// (1 3)
|
|
||||||
0.0, -1.0,
|
|
||||||
-1.0, 0.0,
|
|
||||||
// (0 1)(2 3)
|
|
||||||
-1.0, 0.0,
|
|
||||||
0.0, 1.0,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
1, // dim
|
|
||||||
"A1", //name
|
|
||||||
(complex double []) {1, 1, 1, 1, 1, 1, 1, 1} // m
|
|
||||||
},
|
|
||||||
{
|
|
||||||
1, // dim
|
|
||||||
"B2", //name
|
|
||||||
(complex double []) {1, -1, 1, -1, 1, -1, 1, -1} // m
|
|
||||||
},
|
|
||||||
{
|
|
||||||
1, // dim
|
|
||||||
"B1", //name
|
|
||||||
(complex double []) {1, -1, 1, -1, -1, 1, -1, 1} // m
|
|
||||||
},
|
|
||||||
{
|
|
||||||
1, // dim
|
|
||||||
"A2", //name
|
|
||||||
(complex double []) {1, 1, 1, 1, -1, -1, -1, -1} // m
|
|
||||||
},
|
|
||||||
} // end of irreps
|
|
||||||
};
|
|
||||||
|
|
||||||
const qpms_finite_group_t QPMS_FINITE_GROUP_D2h = {
|
|
||||||
"D2h", // name
|
|
||||||
8, // order
|
|
||||||
0, // idi
|
|
||||||
(qpms_gmi_t[]) { // mt
|
|
||||||
0, 1, 2, 3, 4, 5, 6, 7,
|
|
||||||
1, 0, 3, 2, 5, 4, 7, 6,
|
|
||||||
2, 3, 0, 1, 6, 7, 4, 5,
|
|
||||||
3, 2, 1, 0, 7, 6, 5, 4,
|
|
||||||
4, 5, 6, 7, 0, 1, 2, 3,
|
|
||||||
5, 4, 7, 6, 1, 0, 3, 2,
|
|
||||||
6, 7, 4, 5, 2, 3, 0, 1,
|
|
||||||
7, 6, 5, 4, 3, 2, 1, 0,
|
|
||||||
},
|
|
||||||
(qpms_gmi_t[]) { // invi
|
|
||||||
0, 1, 2, 3, 4, 5, 6, 7
|
|
||||||
},
|
|
||||||
(qpms_gmi_t[]) {1, 3, 7}, // gens
|
|
||||||
3, // ngens
|
|
||||||
(qpms_permutation_t[]){ // permrep
|
|
||||||
"(5)",
|
|
||||||
"(5)(0 1)(2 3)",
|
|
||||||
"(5)(0 2)(1 3)",
|
|
||||||
"(5)(0 3)(1 2)",
|
|
||||||
"(0 3)(1 2)(4 5)",
|
|
||||||
"(0 2)(1 3)(4 5)",
|
|
||||||
"(0 1)(2 3)(4 5)",
|
|
||||||
"(4 5)",
|
|
||||||
},
|
|
||||||
NULL, // elemlabels
|
|
||||||
6, // permrep_nelem
|
|
||||||
(qpms_irot3_t[]) { // rep3d
|
|
||||||
{{1.0+0.0*I, 0.0+0.0*I}, 1},
|
|
||||||
{{0.0+0.0*I, 0.0+1.0*I}, -1},
|
|
||||||
{{0.0+1.0*I, 0.0+0.0*I}, 1},
|
|
||||||
{{0.0+0.0*I, 1.0+0.0*I}, -1},
|
|
||||||
{{0.0+0.0*I, 0.0+1.0*I}, 1},
|
|
||||||
{{-1.0+0.0*I, 0.0+0.0*I}, -1},
|
|
||||||
{{0.0+0.0*I, -1.0+0.0*I}, 1},
|
{{0.0+0.0*I, -1.0+0.0*I}, 1},
|
||||||
{{0.0+1.0*I, 0.0+0.0*I}, -1},
|
{{0.0+1.0*I, 0.0+0.0*I}, -1},
|
||||||
},
|
},
|
||||||
8, // nirreps
|
4, // nirreps
|
||||||
(struct qpms_finite_group_irrep_t[]) { // irreps
|
(struct qpms_finite_group_irrep_t[]) { // irreps
|
||||||
{
|
{
|
||||||
1, // dim
|
1, // dim
|
||||||
"B1\'\'", //name
|
"P\'\'", //name
|
||||||
(complex double []) {1, -1, -1, 1, -1, 1, 1, -1} // m
|
(complex double []) {1, -1, 1, -1} // m
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
1, // dim
|
1, // dim
|
||||||
"A2\'\'", //name
|
"P\'", //name
|
||||||
(complex double []) {1, 1, 1, 1, -1, -1, -1, -1} // m
|
(complex double []) {1, 1, 1, 1} // m
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
1, // dim
|
1, // dim
|
||||||
"B1\'", //name
|
"R\'\'", //name
|
||||||
(complex double []) {1, 1, -1, -1, -1, -1, 1, 1} // m
|
(complex double []) {1, 1, -1, -1} // m
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
1, // dim
|
1, // dim
|
||||||
"A2\'", //name
|
"R\'", //name
|
||||||
(complex double []) {1, -1, 1, -1, -1, 1, -1, 1} // m
|
(complex double []) {1, -1, -1, 1} // m
|
||||||
|
},
|
||||||
|
} // end of irreps
|
||||||
|
};
|
||||||
|
|
||||||
|
const qpms_finite_group_t QPMS_FINITE_GROUP_y_and_z_flip = {
|
||||||
|
"y_and_z_flip", // name
|
||||||
|
4, // order
|
||||||
|
0, // idi
|
||||||
|
(qpms_gmi_t[]) { // mt
|
||||||
|
0, 1, 2, 3,
|
||||||
|
1, 0, 3, 2,
|
||||||
|
2, 3, 0, 1,
|
||||||
|
3, 2, 1, 0,
|
||||||
|
},
|
||||||
|
(qpms_gmi_t[]) { // invi
|
||||||
|
0, 1, 2, 3
|
||||||
|
},
|
||||||
|
(qpms_gmi_t[]) {1, 3}, // gens
|
||||||
|
2, // ngens
|
||||||
|
(qpms_permutation_t[]){ // permrep
|
||||||
|
"(3)",
|
||||||
|
"(3)(0 1)",
|
||||||
|
"(0 1)(2 3)",
|
||||||
|
"(2 3)",
|
||||||
|
},
|
||||||
|
NULL, // elemlabels
|
||||||
|
4, // permrep_nelem
|
||||||
|
(qpms_irot3_t[]) { // rep3d
|
||||||
|
{{1.0+0.0*I, 0.0+0.0*I}, 1},
|
||||||
|
{{0.0+0.0*I, 1.0+0.0*I}, -1},
|
||||||
|
{{0.0+0.0*I, 0.0+1.0*I}, 1},
|
||||||
|
{{0.0+1.0*I, 0.0+0.0*I}, -1},
|
||||||
|
},
|
||||||
|
4, // nirreps
|
||||||
|
(struct qpms_finite_group_irrep_t[]) { // irreps
|
||||||
|
{
|
||||||
|
1, // dim
|
||||||
|
"P\'\'", //name
|
||||||
|
(complex double []) {1, -1, 1, -1} // m
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
1, // dim
|
1, // dim
|
||||||
"A1\'\'", //name
|
"P\'", //name
|
||||||
(complex double []) {1, -1, 1, -1, 1, -1, 1, -1} // m
|
(complex double []) {1, 1, 1, 1} // m
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
1, // dim
|
1, // dim
|
||||||
"B2\'", //name
|
"R\'\'", //name
|
||||||
(complex double []) {1, -1, -1, 1, 1, -1, -1, 1} // m
|
(complex double []) {1, 1, -1, -1} // m
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
1, // dim
|
1, // dim
|
||||||
"B2\'\'", //name
|
"R\'", //name
|
||||||
(complex double []) {1, 1, -1, -1, 1, 1, -1, -1} // m
|
(complex double []) {1, -1, -1, 1} // m
|
||||||
},
|
|
||||||
{
|
|
||||||
1, // dim
|
|
||||||
"A1\'", //name
|
|
||||||
(complex double []) {1, 1, 1, 1, 1, 1, 1, 1} // m
|
|
||||||
},
|
},
|
||||||
} // end of irreps
|
} // end of irreps
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
#ifndef STATICGROUPS_H
|
#ifndef STATICGROUPS_H
|
||||||
#define STATICGROUPS_H
|
#define STATICGROUPS_H
|
||||||
#include <qpms/groups.h>
|
#include <qpms/groups.h>
|
||||||
|
extern const qpms_finite_group_t QPMS_FINITE_GROUP_C2;
|
||||||
extern const qpms_finite_group_t QPMS_FINITE_GROUP_C2v;
|
extern const qpms_finite_group_t QPMS_FINITE_GROUP_C2v;
|
||||||
extern const qpms_finite_group_t QPMS_FINITE_GROUP_trivial_g;
|
extern const qpms_finite_group_t QPMS_FINITE_GROUP_trivial_g;
|
||||||
|
extern const qpms_finite_group_t QPMS_FINITE_GROUP_C4;
|
||||||
extern const qpms_finite_group_t QPMS_FINITE_GROUP_C4v;
|
extern const qpms_finite_group_t QPMS_FINITE_GROUP_C4v;
|
||||||
extern const qpms_finite_group_t QPMS_FINITE_GROUP_D3h;
|
extern const qpms_finite_group_t QPMS_FINITE_GROUP_D3h;
|
||||||
extern const qpms_finite_group_t QPMS_FINITE_GROUP_D2h;
|
extern const qpms_finite_group_t QPMS_FINITE_GROUP_D2h;
|
||||||
extern const qpms_finite_group_t QPMS_FINITE_GROUP_D4h;
|
extern const qpms_finite_group_t QPMS_FINITE_GROUP_D4h;
|
||||||
|
extern const qpms_finite_group_t QPMS_FINITE_GROUP_x_and_z_flip;
|
||||||
|
extern const qpms_finite_group_t QPMS_FINITE_GROUP_y_and_z_flip;
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue