Files
sics/sginfo.h
koennecke 91d4af0541 - Adapted indenation to new agreed upon system
- Added support for second generation scriptcontext based counter
2009-02-13 09:00:03 +00:00

1774 lines
42 KiB
C

/*
Space Group Info's (c) 1994-96 Ralf W. Grosse-Kunstleve
*/
#ifndef SGINFO_H__
#define SGINFO_H__
#ifndef SGCLIB_C__
extern
const char *SgError;
#ifdef SGCOREDEF__
extern
char SgErrorBuffer[128];
#endif
#else
const char *SgError = NULL;
char SgErrorBuffer[128];
#endif
#define STBF 12 /* Seitz Matrix Translation Base Factor */
#define CRBF 12 /* Change of Basis Matrix Rotation Base Factor */
#define CTBF 72 /* Change of Basis Matrix Translation Base Factor */
/* CAUTION: (CTBF / STBF) has to be an INTEGER */
typedef struct {
int Code;
int nTrVector;
int *TrVector;
} T_LatticeInfo;
typedef union {
struct {
int R[9], T[3];
} s;
int a[12];
} T_RTMx;
typedef struct {
int EigenVector[3];
int Order;
int Inverse;
int RefAxis;
int DirCode;
} T_RotMxInfo;
typedef struct {
const char *HallSymbol;
int SgNumber;
const char *Extension;
const char *SgLabels;
} T_TabSgName;
#define MaxLenHallSymbol 39
typedef struct {
int GenOption;
int Centric;
int InversionOffOrigin;
const T_LatticeInfo *LatticeInfo;
int StatusLatticeTr;
int OriginShift[3];
int nList;
int MaxList;
T_RTMx *ListSeitzMx;
T_RotMxInfo *ListRotMxInfo;
int OrderL;
int OrderP;
int XtalSystem;
int UniqueRefAxis;
int UniqueDirCode;
int ExtraInfo;
int PointGroup;
int nGenerator;
int Generator_iList[4];
char HallSymbol[MaxLenHallSymbol + 1];
const T_TabSgName *TabSgName;
const int *CCMx_LP;
int n_si_Vector;
int si_Vector[9];
int si_Modulus[3];
} T_SgInfo;
/* T_Sginfo.GenOption: 0 = full group generation
1 = trusted:
set Centric/InversionOffOrigin/LatticeInfo only
-1 = no group generation
T_Sginfo.Centric: 0 = acentric
1 = inversion in list
-1 = inversion removed from list
T_Sginfo.StatusLatticeTr: 0 = removed from list
1 = all translation vectors in list
-1 = some translation vectors could be
missing in list
*/
typedef struct {
int M; /* Multiplicity */
int N; /* Number of equivalent hkl to follow */
int h[24]; /* If hkl == 000 M = N = 1 */
int k[24]; /* If hkl != 000 M = 2 * N */
int l[24]; /* List of hkl does not contain friedel mates */
int TH[24]; /* Phase shift relative to h[0], k[0], l[0] */
} T_Eq_hkl;
#define EI_Unknown 0
#define EI_Enantiomorphic 1
#define EI_Obverse 2
#define EI_Reverse 3
#ifndef SGCLIB_C__
extern
const char *EI_Name[];
#else
const char *EI_Name[] = {
"Unknown",
"Enantiomorphic",
"Obverse",
"Reverse"
};
#endif
#define XS_Unknown 0
#define XS_Triclinic 1
#define XS_Monoclinic 2
#define XS_Orthorhombic 3
#define XS_Tetragonal 4
#define XS_Trigonal 5
#define XS_Hexagonal 6
#define XS_Cubic 7
#ifndef SGCLIB_C__
extern
const char *XS_Name[];
#else
const char *XS_Name[] = {
"Unknown",
"Triclinic",
"Monoclinic",
"Orthorhombic",
"Tetragonal",
"Trigonal",
"Hexagonal",
"Cubic"
};
#endif
#define Make_PG_Code( i, p, l) (((i) * 33 + (p)) * 12 + (l))
#define PG_Unknown Make_PG_Code( 0, 0, 0)
#define PG_1 Make_PG_Code( 1, 1, 1)
#define PG_1b Make_PG_Code( 2, 2, 1)
#define PG_2 Make_PG_Code( 3, 3, 2)
#define PG_m Make_PG_Code( 4, 4, 2)
#define PG_2_m Make_PG_Code( 5, 5, 2)
#define PG_222 Make_PG_Code( 6, 6, 3)
#define PG_mm2 Make_PG_Code( 7, 7, 3)
#define PG_mmm Make_PG_Code( 8, 8, 3)
#define PG_4 Make_PG_Code( 9, 9, 4)
#define PG_4b Make_PG_Code(10, 10, 4)
#define PG_4_m Make_PG_Code(11, 11, 4)
#define PG_422 Make_PG_Code(12, 12, 5)
#define PG_4mm Make_PG_Code(13, 13, 5)
#define PG_4b2m Make_PG_Code(14, 14, 5)
#define PG_4bm2 Make_PG_Code(15, 14, 5)
#define PG_4_mmm Make_PG_Code(16, 15, 5)
#define PG_3 Make_PG_Code(17, 16, 6)
#define PG_3b Make_PG_Code(18, 17, 6)
#define PG_321 Make_PG_Code(19, 18, 7)
#define PG_312 Make_PG_Code(20, 18, 7)
#define PG_32 Make_PG_Code(21, 18, 7)
#define PG_3m1 Make_PG_Code(22, 19, 7)
#define PG_31m Make_PG_Code(23, 19, 7)
#define PG_3m Make_PG_Code(24, 19, 7)
#define PG_3bm1 Make_PG_Code(25, 20, 7)
#define PG_3b1m Make_PG_Code(26, 20, 7)
#define PG_3bm Make_PG_Code(27, 20, 7)
#define PG_6 Make_PG_Code(28, 21, 8)
#define PG_6b Make_PG_Code(29, 22, 8)
#define PG_6_m Make_PG_Code(30, 23, 8)
#define PG_622 Make_PG_Code(31, 24, 9)
#define PG_6mm Make_PG_Code(32, 25, 9)
#define PG_6bm2 Make_PG_Code(33, 26, 9)
#define PG_6b2m Make_PG_Code(34, 26, 9)
#define PG_6_mmm Make_PG_Code(35, 27, 9)
#define PG_23 Make_PG_Code(36, 28, 10)
#define PG_m3b Make_PG_Code(37, 29, 10)
#define PG_432 Make_PG_Code(38, 30, 11)
#define PG_4b3m Make_PG_Code(39, 31, 11)
#define PG_m3bm Make_PG_Code(40, 32, 11)
#define PG_Index(PG_Code) ((PG_Code) / (33 * 12))
#define PG_Number(PG_Code) (((PG_Code) / 12) % 33)
#define LG_Number(PG_Code) ((PG_Code) % (33 * 12))
#ifndef SGCLIB_C__
extern
const int LG_Code_of_PG_Index[];
#else
const int LG_Code_of_PG_Index[] = {
PG_Unknown,
PG_1b,
PG_1b,
PG_2_m,
PG_2_m,
PG_2_m,
PG_mmm,
PG_mmm,
PG_mmm,
PG_4_m,
PG_4_m,
PG_4_m,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_3b,
PG_3b,
PG_3bm1,
PG_3b1m,
PG_3bm,
PG_3bm1,
PG_3b1m,
PG_3bm,
PG_3bm1,
PG_3b1m,
PG_3bm,
PG_6_m,
PG_6_m,
PG_6_m,
PG_6_mmm,
PG_6_mmm,
PG_6_mmm,
PG_6_mmm,
PG_6_mmm,
PG_m3b,
PG_m3b,
PG_m3bm,
PG_m3bm,
PG_m3bm
};
#endif /* SGCLIB_C__ */
#ifndef SGCLIB_C__
extern
const char *PG_Names[];
#else
const char *PG_Names[] = {
"Unknown",
"1",
"-1",
"2",
"m",
"2/m",
"222",
"mm2",
"mmm",
"4",
"-4",
"4/m",
"422",
"4mm",
"-42m",
"-4m2",
"4/mmm",
"3",
"-3",
"321",
"312",
"32",
"3m1",
"31m",
"3m",
"-3m1",
"-31m",
"-3m",
"6",
"-6",
"6/m",
"622",
"6mm",
"-6m2",
"-62m",
"6/mmm",
"23",
"m-3",
"432",
"-43m",
"m-3m"
};
#endif /* SGCLIB_C__ */
#ifndef SGCLIB_C__
#ifdef SGCOREDEF__
extern const T_LatticeInfo LI_P[];
extern const T_LatticeInfo LI_A[];
extern const T_LatticeInfo LI_B[];
extern const T_LatticeInfo LI_C[];
extern const T_LatticeInfo LI_I[];
extern const T_LatticeInfo LI_R[];
extern const T_LatticeInfo LI_S[];
extern const T_LatticeInfo LI_T[];
extern const T_LatticeInfo LI_F[];
#endif
#else
#define T(i) ((i) * (STBF / 12))
static int LTr_P[] = { T(0), T(0), T(0)
};
const T_LatticeInfo LI_P[] = { {'P', 1, LTr_P}
};
static int LTr_A[] = { T(0), T(0), T(0),
T(0), T(6), T(6)
};
const T_LatticeInfo LI_A[] = { {'A', 2, LTr_A}
};
static int LTr_B[] = { T(0), T(0), T(0),
T(6), T(0), T(6)
};
const T_LatticeInfo LI_B[] = { {'B', 2, LTr_B}
};
static int LTr_C[] = { T(0), T(0), T(0),
T(6), T(6), T(0)
};
const T_LatticeInfo LI_C[] = { {'C', 2, LTr_C}
};
static int LTr_I[] = { T(0), T(0), T(0),
T(6), T(6), T(6)
};
const T_LatticeInfo LI_I[] = { {'I', 2, LTr_I}
};
static int LTr_R[] = { T(0), T(0), T(0),
T(8), T(4), T(4),
T(4), T(8), T(8)
};
const T_LatticeInfo LI_R[] = { {'R', 3, LTr_R}
};
static int LTr_S[] = { T(0), T(0), T(0),
T(4), T(4), T(8),
T(8), T(8), T(4)
};
const T_LatticeInfo LI_S[] = { {'S', 3, LTr_S}
};
static int LTr_T[] = { T(0), T(0), T(0),
T(4), T(8), T(4),
T(8), T(4), T(8)
};
const T_LatticeInfo LI_T[] = { {'T', 3, LTr_T}
};
static int LTr_F[] = { T(0), T(0), T(0),
T(0), T(6), T(6),
T(6), T(0), T(6),
T(6), T(6), T(0)
};
const T_LatticeInfo LI_F[] = { {'F', 4, LTr_F}
};
#undef T
#endif /* SGCLIB_C__ */
/*
lattice code
R S T
unique axis
3z obv - rev
3y rev obv -
3x - rev obv
*/
#ifndef SGCLIB_C__
#ifdef SGCOREDEF__
extern
const int CCMx_PP[];
extern
const int CCMx_AP[];
extern
const int CCMx_BP[];
extern
const int CCMx_CP[];
extern
const int CCMx_IP[];
extern
const int CCMx_RP_z[];
extern
const int CCMx_SP_y[];
extern
const int CCMx_TP_x[];
extern
const int CCMx_TP_z[];
extern
const int CCMx_RP_y[];
extern
const int CCMx_SP_x[];
extern
const int CCMx_FI_z[];
extern
const int CCMx_FI_y[];
extern
const int CCMx_FI_x[];
extern
const int CCMx_FP[];
#endif
#else
const int CCMx_PP[] = { 1, 0, 0, /* Change of Basis Matrices */
0, 1, 0, /* (coordinate transformations) */
0, 0, 1
};
const int CCMx_AP[] = { -1, 0, 0,
0, -1, 1,
0, 1, 1
};
const int CCMx_BP[] = { -1, 0, 1,
0, -1, 0,
1, 0, 1
};
const int CCMx_CP[] = { 1, 1, 0,
1, -1, 0,
0, 0, -1
};
const int CCMx_IP[] = { 0, 1, 1,
1, 0, 1,
1, 1, 0
};
const int CCMx_RP_z[] = { 1, 0, 1,
-1, 1, 1,
0, -1, 1
};
const int CCMx_SP_y[] = { 1, 1, -1,
-1, 1, 0,
0, 1, 1
};
const int CCMx_TP_x[] = { 1, 0, -1,
1, 1, 0,
1, -1, 1
};
const int CCMx_TP_z[] = { -1, 0, 1,
1, -1, 1,
0, 1, 1
};
const int CCMx_RP_y[] = { -1, 1, 1,
1, 1, 0,
0, 1, -1
};
const int CCMx_SP_x[] = { 1, 0, 1,
1, -1, 0,
1, 1, -1
};
const int CCMx_FI_z[] = { 1, 1, 0,
-1, 1, 0,
0, 0, 1
};
const int CCMx_FI_y[] = { 1, 0, -1,
0, 1, 0,
1, 0, 1
};
const int CCMx_FI_x[] = { 1, 0, 0,
0, 1, 1,
0, -1, 1
};
const int CCMx_FP[] = { -1, 1, 1,
1, -1, 1,
1, 1, -1
};
#endif /* SGCLIB_C__ */
#if defined(SGCLIB_C__) || defined(SGCOREDEF__)
typedef struct {
int Order;
int EigenVector[3];
int DirCode;
int RMx[9];
} T_TabXtalRotMx;
#endif
#ifndef SGCLIB_C__
#ifdef SGCOREDEF__
extern
const T_TabXtalRotMx TabXtalRotMx[];
#endif
#else
const T_TabXtalRotMx TabXtalRotMx[] = {
/* # EigenVector DirCode */
{ /* [ 0] */ 1, {0, 0, 0}, '.', /* CAUTION: */
{1, 0, 0, /* Reorganizing this table */
0, 1, 0, /* affects RMx_????? below. */
0, 0, 1}
},
{ /* [ 1] */ 2, {0, 0, 1}, '=',
{-1, 0, 0,
0, -1, 0,
0, 0, 1}
},
{ /* [ 2] */ 2, {1, 0, 0}, '=', /* hexagonal */
{1, -1, 0,
0, -1, 0,
0, 0, -1}
},
{ /* [ 3] */ 2, {0, 1, 0}, '=', /* hexagonal */
{-1, 0, 0,
-1, 1, 0,
0, 0, -1}
},
{ /* [ 4] */ 2, {1, 1, 0}, '"',
{0, 1, 0,
1, 0, 0,
0, 0, -1}
},
{ /* [ 5] */ 2, {1, -1, 0}, '\'',
{0, -1, 0,
-1, 0, 0,
0, 0, -1}
},
{ /* [ 6] */ 2, {2, 1, 0}, '|', /* hexagonal */
{1, 0, 0,
1, -1, 0,
0, 0, -1}
},
{ /* [ 7] */ 2, {1, 2, 0}, '\\', /* hexagonal */
{-1, 1, 0,
0, 1, 0,
0, 0, -1}
},
{ /* [ 8] */ 3, {0, 0, 1}, '=',
{0, -1, 0,
1, -1, 0,
0, 0, 1}
},
{ /* [ 9] */ 3, {1, 1, 1}, '*',
{0, 0, 1,
1, 0, 0,
0, 1, 0}
},
{ /* [10] */ 4, {0, 0, 1}, '=',
{0, -1, 0,
1, 0, 0,
0, 0, 1}
},
{ /* [11] */ 6, {0, 0, 1}, '=',
{1, -1, 0,
1, 0, 0,
0, 0, 1}
},
{0, {0, 0, 0}, 0,
{0, 0, 0,
0, 0, 0,
0, 0, 0}
}
};
#endif /* SGCLIB_C__ */
#ifndef SGCLIB_C__
#ifdef SGCOREDEF__
extern
const int *RMx_1_000;
extern
const int *RMx_2_001;
extern
const int *RMx_2_110;
extern
const int *RMx_3_001;
extern
const int *RMx_3_111;
extern
const int RMx_3i111[];
extern
const int *RMx_4_001;
extern
const int RMx_4i001[];
#endif
#else
const int *RMx_1_000 = TabXtalRotMx[0].RMx;
const int *RMx_2_001 = TabXtalRotMx[1].RMx;
const int *RMx_2_110 = TabXtalRotMx[4].RMx;
const int *RMx_3_001 = TabXtalRotMx[8].RMx;
const int *RMx_3_111 = TabXtalRotMx[9].RMx;
const int RMx_3i111[] = {
0, 1, 0,
0, 0, 1,
1, 0, 0
};
const int *RMx_4_001 = TabXtalRotMx[10].RMx;
const int RMx_4i001[] = {
0, 1, 0,
-1, 0, 0,
0, 0, 1
};
#endif /* SGCLIB_C__ */
#ifndef SGCLIB_C__
#ifdef SGCOREDEF__
extern
const int HallTranslations[];
#endif
#else
#define T(i) ((i) * (STBF / 12))
const int HallTranslations[] = {
'n', T(6), T(6), T(6),
'a', T(6), T(0), T(0),
'b', T(0), T(6), T(0),
'c', T(0), T(0), T(6),
'd', T(3), T(3), T(3),
'u', T(3), T(0), T(0),
'v', T(0), T(3), T(0),
'w', T(0), T(0), T(3),
0
};
#undef T
#endif
#ifndef SGCLIB_C__
#ifdef SGCOREDEF__
extern
const int VolAPointGroups[];
#endif
#else
const int VolAPointGroups[] = {
PG_Unknown,
PG_1,
PG_1b,
PG_2,
PG_2,
PG_2,
PG_m,
PG_m,
PG_m,
PG_m,
PG_2_m,
PG_2_m,
PG_2_m,
PG_2_m,
PG_2_m,
PG_2_m,
PG_222,
PG_222,
PG_222,
PG_222,
PG_222,
PG_222,
PG_222,
PG_222,
PG_222,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mm2,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_mmm,
PG_4,
PG_4,
PG_4,
PG_4,
PG_4,
PG_4,
PG_4b,
PG_4b,
PG_4_m,
PG_4_m,
PG_4_m,
PG_4_m,
PG_4_m,
PG_4_m,
PG_422,
PG_422,
PG_422,
PG_422,
PG_422,
PG_422,
PG_422,
PG_422,
PG_422,
PG_422,
PG_4mm,
PG_4mm,
PG_4mm,
PG_4mm,
PG_4mm,
PG_4mm,
PG_4mm,
PG_4mm,
PG_4mm,
PG_4mm,
PG_4mm,
PG_4mm,
PG_4b2m,
PG_4b2m,
PG_4b2m,
PG_4b2m,
PG_4bm2,
PG_4bm2,
PG_4bm2,
PG_4bm2,
PG_4bm2,
PG_4bm2,
PG_4b2m,
PG_4b2m,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_4_mmm,
PG_3,
PG_3,
PG_3,
PG_3,
PG_3b,
PG_3b,
PG_312,
PG_321,
PG_312,
PG_321,
PG_312,
PG_321,
PG_32,
PG_3m1,
PG_31m,
PG_3m1,
PG_31m,
PG_3m,
PG_3m,
PG_3b1m,
PG_3b1m,
PG_3bm1,
PG_3bm1,
PG_3bm,
PG_3bm,
PG_6,
PG_6,
PG_6,
PG_6,
PG_6,
PG_6,
PG_6b,
PG_6_m,
PG_6_m,
PG_622,
PG_622,
PG_622,
PG_622,
PG_622,
PG_622,
PG_6mm,
PG_6mm,
PG_6mm,
PG_6mm,
PG_6bm2,
PG_6bm2,
PG_6b2m,
PG_6b2m,
PG_6_mmm,
PG_6_mmm,
PG_6_mmm,
PG_6_mmm,
PG_23,
PG_23,
PG_23,
PG_23,
PG_23,
PG_m3b,
PG_m3b,
PG_m3b,
PG_m3b,
PG_m3b,
PG_m3b,
PG_m3b,
PG_432,
PG_432,
PG_432,
PG_432,
PG_432,
PG_432,
PG_432,
PG_432,
PG_4b3m,
PG_4b3m,
PG_4b3m,
PG_4b3m,
PG_4b3m,
PG_4b3m,
PG_m3bm,
PG_m3bm,
PG_m3bm,
PG_m3bm,
PG_m3bm,
PG_m3bm,
PG_m3bm,
PG_m3bm,
PG_m3bm,
PG_m3bm
};
#endif /* SGCLIB_C__ */
#ifndef SGCLIB_C__
#ifdef SGCOREDEF__
extern
const char *SchoenfliesSymbols[];
#endif
#else
const char *SchoenfliesSymbols[] = {
NULL,
"C1^1",
"Ci^1",
"C2^1",
"C2^2",
"C2^3",
"Cs^1",
"Cs^2",
"Cs^3",
"Cs^4",
"C2h^1",
"C2h^2",
"C2h^3",
"C2h^4",
"C2h^5",
"C2h^6",
"D2^1",
"D2^2",
"D2^3",
"D2^4",
"D2^5",
"D2^6",
"D2^7",
"D2^8",
"D2^9",
"C2v^1",
"C2v^2",
"C2v^3",
"C2v^4",
"C2v^5",
"C2v^6",
"C2v^7",
"C2v^8",
"C2v^9",
"C2v^10",
"C2v^11",
"C2v^12",
"C2v^13",
"C2v^14",
"C2v^15",
"C2v^16",
"C2v^17",
"C2v^18",
"C2v^19",
"C2v^20",
"C2v^21",
"C2v^22",
"D2h^1",
"D2h^2",
"D2h^3",
"D2h^4",
"D2h^5",
"D2h^6",
"D2h^7",
"D2h^8",
"D2h^9",
"D2h^10",
"D2h^11",
"D2h^12",
"D2h^13",
"D2h^14",
"D2h^15",
"D2h^16",
"D2h^17",
"D2h^18",
"D2h^19",
"D2h^20",
"D2h^21",
"D2h^22",
"D2h^23",
"D2h^24",
"D2h^25",
"D2h^26",
"D2h^27",
"D2h^28",
"C4^1",
"C4^2",
"C4^3",
"C4^4",
"C4^5",
"C4^6",
"S4^1",
"S4^2",
"C4h^1",
"C4h^2",
"C4h^3",
"C4h^4",
"C4h^5",
"C4h^6",
"D4^1",
"D4^2",
"D4^3",
"D4^4",
"D4^5",
"D4^6",
"D4^7",
"D4^8",
"D4^9",
"D4^10",
"C4v^1",
"C4v^2",
"C4v^3",
"C4v^4",
"C4v^5",
"C4v^6",
"C4v^7",
"C4v^8",
"C4v^9",
"C4v^10",
"C4v^11",
"C4v^12",
"D2d^1",
"D2d^2",
"D2d^3",
"D2d^4",
"D2d^5",
"D2d^6",
"D2d^7",
"D2d^8",
"D2d^9",
"D2d^10",
"D2d^11",
"D2d^12",
"D4h^1",
"D4h^2",
"D4h^3",
"D4h^4",
"D4h^5",
"D4h^6",
"D4h^7",
"D4h^8",
"D4h^9",
"D4h^10",
"D4h^11",
"D4h^12",
"D4h^13",
"D4h^14",
"D4h^15",
"D4h^16",
"D4h^17",
"D4h^18",
"D4h^19",
"D4h^20",
"C3^1",
"C3^2",
"C3^3",
"C3^4",
"C3i^1",
"C3i^2",
"D3^1",
"D3^2",
"D3^3",
"D3^4",
"D3^5",
"D3^6",
"D3^7",
"C3v^1",
"C3v^2",
"C3v^3",
"C3v^4",
"C3v^5",
"C3v^6",
"D3d^1",
"D3d^2",
"D3d^3",
"D3d^4",
"D3d^5",
"D3d^6",
"C6^1",
"C6^2",
"C6^3",
"C6^4",
"C6^5",
"C6^6",
"C3h^1",
"C6h^1",
"C6h^2",
"D6^1",
"D6^2",
"D6^3",
"D6^4",
"D6^5",
"D6^6",
"C6v^1",
"C6v^2",
"C6v^3",
"C6v^4",
"D3h^1",
"D3h^2",
"D3h^3",
"D3h^4",
"D6h^1",
"D6h^2",
"D6h^3",
"D6h^4",
"T^1",
"T^2",
"T^3",
"T^4",
"T^5",
"Th^1",
"Th^2",
"Th^3",
"Th^4",
"Th^5",
"Th^6",
"Th^7",
"O^1",
"O^2",
"O^3",
"O^4",
"O^5",
"O^6",
"O^7",
"O^8",
"Td^1",
"Td^2",
"Td^3",
"Td^4",
"Td^5",
"Td^6",
"Oh^1",
"Oh^2",
"Oh^3",
"Oh^4",
"Oh^5",
"Oh^6",
"Oh^7",
"Oh^8",
"Oh^9",
"Oh^10"
};
#endif /* SGCLIB_C__ */
#ifndef SGCLIB_C__
#ifdef SGCOREDEF__
extern
const T_TabSgName TabSgName[];
#endif
#else
const T_TabSgName TabSgName[] = {
{" P 1", 1, "", "P_1"},
{"-P 1", 2, "", "P_-1"},
{" P 2y", 3, "b", "P_2 = P_1_2_1"},
{" P 2", 3, "c", "P_2 = P_1_1_2"},
{" P 2x", 3, "a", "P_2 = P_2_1_1"},
{" P 2yb", 4, "b", "P_21 = P_1_21_1"},
{" P 2c", 4, "c", "P_21 = P_1_1_21"},
{" P 2xa", 4, "a", "P_21 = P_21_1_1"},
{" C 2y", 5, "b1", "C_2 = C_1_2_1"},
{" A 2y", 5, "b2", "C_2 = A_1_2_1"},
{" I 2y", 5, "b3", "C_2 = I_1_2_1"},
{" A 2", 5, "c1", "C_2 = A_1_1_2"},
{" B 2", 5, "c2", "C_2 = B_1_1_2 = B_2"},
{" I 2", 5, "c3", "C_2 = I_1_1_2"},
{" B 2x", 5, "a1", "C_2 = B_2_1_1"},
{" C 2x", 5, "a2", "C_2 = C_2_1_1"},
{" I 2x", 5, "a3", "C_2 = I_2_1_1"},
{" P -2y", 6, "b", "P_m = P_1_m_1"},
{" P -2", 6, "c", "P_m = P_1_1_m"},
{" P -2x", 6, "a", "P_m = P_m_1_1"},
{" P -2yc", 7, "b1", "P_c = P_1_c_1"},
{" P -2yac", 7, "b2", "P_c = P_1_n_1"},
{" P -2ya", 7, "b3", "P_c = P_1_a_1"},
{" P -2a", 7, "c1", "P_c = P_1_1_a"},
{" P -2ab", 7, "c2", "P_c = P_1_1_n"},
{" P -2b", 7, "c3", "P_c = P_1_1_b = P_b"},
{" P -2xb", 7, "a1", "P_c = P_b_1_1"},
{" P -2xbc", 7, "a2", "P_c = P_n_1_1"},
{" P -2xc", 7, "a3", "P_c = P_c_1_1"},
{" C -2y", 8, "b1", "C_m = C_1_m_1"},
{" A -2y", 8, "b2", "C_m = A_1_m_1"},
{" I -2y", 8, "b3", "C_m = I_1_m_1"},
{" A -2", 8, "c1", "C_m = A_1_1_m"},
{" B -2", 8, "c2", "C_m = B_1_1_m = B_m"},
{" I -2", 8, "c3", "C_m = I_1_1_m"},
{" B -2x", 8, "a1", "C_m = B_m_1_1"},
{" C -2x", 8, "a2", "C_m = C_m_1_1"},
{" I -2x", 8, "a3", "C_m = I_m_1_1"},
{" C -2yc", 9, "b1", "C_c = C_1_c_1"},
{" A -2yac", 9, "b2", "C_c = A_1_n_1"},
{" I -2ya", 9, "b3", "C_c = I_1_a_1"},
{" A -2ya", 9, "-b1", "C_c = A_1_a_1"},
{" C -2ybc", 9, "-b2", "C_c = C_1_n_1"},
{" I -2yc", 9, "-b3", "C_c = I_1_c_1"},
{" A -2a", 9, "c1", "C_c = A_1_1_a"},
{" B -2bc", 9, "c2", "C_c = B_1_1_n"},
{" I -2b", 9, "c3", "C_c = I_1_1_b"},
{" B -2b", 9, "-c1", "C_c = B_1_1_b = B_b"},
{" A -2ac", 9, "-c2", "C_c = A_1_1_n"},
{" I -2a", 9, "-c3", "C_c = I_1_1_a"},
{" B -2xb", 9, "a1", "C_c = B_b_1_1"},
{" C -2xbc", 9, "a2", "C_c = C_n_1_1"},
{" I -2xc", 9, "a3", "C_c = I_c_1_1"},
{" C -2xc", 9, "-a1", "C_c = C_c_1_1"},
{" B -2xbc", 9, "-a2", "C_c = B_n_1_1"},
{" I -2xb", 9, "-a3", "C_c = I_b_1_1"},
{"-P 2y", 10, "b", "P_2/m = P_1_2/m_1"},
{"-P 2", 10, "c", "P_2/m = P_1_1_2/m"},
{"-P 2x", 10, "a", "P_2/m = P_2/m_1_1"},
{"-P 2yb", 11, "b", "P_21/m = P_1_21/m_1"},
{"-P 2c", 11, "c", "P_21/m = P_1_1_21/m"},
{"-P 2xa", 11, "a", "P_21/m = P_21/m_1_1"},
{"-C 2y", 12, "b1", "C_2/m = C_1_2/m_1"},
{"-A 2y", 12, "b2", "C_2/m = A_1_2/m_1"},
{"-I 2y", 12, "b3", "C_2/m = I_1_2/m_1"},
{"-A 2", 12, "c1", "C_2/m = A_1_1_2/m"},
{"-B 2", 12, "c2", "C_2/m = B_1_1_2/m = B_2/m"},
{"-I 2", 12, "c3", "C_2/m = I_1_1_2/m"},
{"-B 2x", 12, "a1", "C_2/m = B_2/m_1_1"},
{"-C 2x", 12, "a2", "C_2/m = C_2/m_1_1"},
{"-I 2x", 12, "a3", "C_2/m = I_2/m_1_1"},
{"-P 2yc", 13, "b1", "P_2/c = P_1_2/c_1"},
{"-P 2yac", 13, "b2", "P_2/c = P_1_2/n_1"},
{"-P 2ya", 13, "b3", "P_2/c = P_1_2/a_1"},
{"-P 2a", 13, "c1", "P_2/c = P_1_1_2/a"},
{"-P 2ab", 13, "c2", "P_2/c = P_1_1_2/n"},
{"-P 2b", 13, "c3", "P_2/c = P_1_1_2/b = P_2/b"},
{"-P 2xb", 13, "a1", "P_2/c = P_2/b_1_1"},
{"-P 2xbc", 13, "a2", "P_2/c = P_2/n_1_1"},
{"-P 2xc", 13, "a3", "P_2/c = P_2/c_1_1"},
{"-P 2ybc", 14, "b1", "P_21/c = P_1_21/c_1"},
{"-P 2yn", 14, "b2", "P_21/c = P_1_21/n_1"},
{"-P 2yab", 14, "b3", "P_21/c = P_1_21/a_1"},
{"-P 2ac", 14, "c1", "P_21/c = P_1_1_21/a"},
{"-P 2n", 14, "c2", "P_21/c = P_1_1_21/n"},
{"-P 2bc", 14, "c3", "P_21/c = P_1_1_21/b = P_21/b"},
{"-P 2xab", 14, "a1", "P_21/c = P_21/b_1_1"},
{"-P 2xn", 14, "a2", "P_21/c = P_21/n_1_1"},
{"-P 2xac", 14, "a3", "P_21/c = P_21/c_1_1"},
{"-C 2yc", 15, "b1", "C_2/c = C_1_2/c_1"},
{"-A 2yac", 15, "b2", "C_2/c = A_1_2/n_1"},
{"-I 2ya", 15, "b3", "C_2/c = I_1_2/a_1"},
{"-A 2ya", 15, "-b1", "C_2/c = A_1_2/a_1"},
{"-C 2ybc", 15, "-b2", "C_2/c = C_1_2/n_1"},
{"-I 2yc", 15, "-b3", "C_2/c = I_1_2/c_1"},
{"-A 2a", 15, "c1", "C_2/c = A_1_1_2/a"},
{"-B 2bc", 15, "c2", "C_2/c = B_1_1_2/n"},
{"-I 2b", 15, "c3", "C_2/c = I_1_1_2/b"},
{"-B 2b", 15, "-c1", "C_2/c = B_1_1_2/b = B_2/b"},
{"-A 2ac", 15, "-c2", "C_2/c = A_1_1_2/n"},
{"-I 2a", 15, "-c3", "C_2/c = I_1_1_2/a"},
{"-B 2xb", 15, "a1", "C_2/c = B_2/b_1_1"},
{"-C 2xbc", 15, "a2", "C_2/c = C_2/n_1_1"},
{"-I 2xc", 15, "a3", "C_2/c = I_2/c_1_1"},
{"-C 2xc", 15, "-a1", "C_2/c = C_2/c_1_1"},
{"-B 2xbc", 15, "-a2", "C_2/c = B_2/n_1_1"},
{"-I 2xb", 15, "-a3", "C_2/c = I_2/b_1_1"},
{" P 2 2", 16, "", "P_2_2_2"},
{" P 2c 2", 17, "", "P_2_2_21"},
{" P 2a 2a", 17, "cab", "P_21_2_2"},
{" P 2 2b", 17, "bca", "P_2_21_2"},
{" P 2 2ab", 18, "", "P_21_21_2"},
{" P 2bc 2", 18, "cab", "P_2_21_21"},
{" P 2ac 2ac", 18, "bca", "P_21_2_21"},
{" P 2ac 2ab", 19, "", "P_21_21_21"},
{" C 2c 2", 20, "", "C_2_2_21"},
{" A 2a 2a", 20, "cab", "A_21_2_2"},
{" B 2 2b", 20, "bca", "B_2_21_2"},
{" C 2 2", 21, "", "C_2_2_2"},
{" A 2 2", 21, "cab", "A_2_2_2"},
{" B 2 2", 21, "bca", "B_2_2_2"},
{" F 2 2", 22, "", "F_2_2_2"},
{" I 2 2", 23, "", "I_2_2_2"},
{" I 2b 2c", 24, "", "I_21_21_21"},
{" P 2 -2", 25, "", "P_m_m_2"},
{" P -2 2", 25, "cab", "P_2_m_m"},
{" P -2 -2", 25, "bca", "P_m_2_m"},
{" P 2c -2", 26, "", "P_m_c_21"},
{" P 2c -2c", 26, "ba-c", "P_c_m_21"},
{" P -2a 2a", 26, "cab", "P_21_m_a"},
{" P -2 2a", 26, "-cba", "P_21_a_m"},
{" P -2 -2b", 26, "bca", "P_b_21_m"},
{" P -2b -2", 26, "a-cb", "P_m_21_b"},
{" P 2 -2c", 27, "", "P_c_c_2"},
{" P -2a 2", 27, "cab", "P_2_a_a"},
{" P -2b -2b", 27, "bca", "P_b_2_b"},
{" P 2 -2a", 28, "", "P_m_a_2"},
{" P 2 -2b", 28, "ba-c", "P_b_m_2"},
{" P -2b 2", 28, "cab", "P_2_m_b"},
{" P -2c 2", 28, "-cba", "P_2_c_m"},
{" P -2c -2c", 28, "bca", "P_c_2_m"},
{" P -2a -2a", 28, "a-cb", "P_m_2_a"},
{" P 2c -2ac", 29, "", "P_c_a_21"},
{" P 2c -2b", 29, "ba-c", "P_b_c_21"},
{" P -2b 2a", 29, "cab", "P_21_a_b"},
{" P -2ac 2a", 29, "-cba", "P_21_c_a"},
{" P -2bc -2c", 29, "bca", "P_c_21_b"},
{" P -2a -2ab", 29, "a-cb", "P_b_21_a"},
{" P 2 -2bc", 30, "", "P_n_c_2"},
{" P 2 -2ac", 30, "ba-c", "P_c_n_2"},
{" P -2ac 2", 30, "cab", "P_2_n_a"},
{" P -2ab 2", 30, "-cba", "P_2_a_n"},
{" P -2ab -2ab", 30, "bca", "P_b_2_n"},
{" P -2bc -2bc", 30, "a-cb", "P_n_2_b"},
{" P 2ac -2", 31, "", "P_m_n_21"},
{" P 2bc -2bc", 31, "ba-c", "P_n_m_21"},
{" P -2ab 2ab", 31, "cab", "P_21_m_n"},
{" P -2 2ac", 31, "-cba", "P_21_n_m"},
{" P -2 -2bc", 31, "bca", "P_n_21_m"},
{" P -2ab -2", 31, "a-cb", "P_m_21_n"},
{" P 2 -2ab", 32, "", "P_b_a_2"},
{" P -2bc 2", 32, "cab", "P_2_c_b"},
{" P -2ac -2ac", 32, "bca", "P_c_2_a"},
{" P 2c -2n", 33, "", "P_n_a_21"},
{" P 2c -2ab", 33, "ba-c", "P_b_n_21"},
{" P -2bc 2a", 33, "cab", "P_21_n_b"},
{" P -2n 2a", 33, "-cba", "P_21_c_n"},
{" P -2n -2ac", 33, "bca", "P_c_21_n"},
{" P -2ac -2n", 33, "a-cb", "P_n_21_a"},
{" P 2 -2n", 34, "", "P_n_n_2"},
{" P -2n 2", 34, "cab", "P_2_n_n"},
{" P -2n -2n", 34, "bca", "P_n_2_n"},
{" C 2 -2", 35, "", "C_m_m_2"},
{" A -2 2", 35, "cab", "A_2_m_m"},
{" B -2 -2", 35, "bca", "B_m_2_m"},
{" C 2c -2", 36, "", "C_m_c_21"},
{" C 2c -2c", 36, "ba-c", "C_c_m_21"},
{" A -2a 2a", 36, "cab", "A_21_m_a"},
{" A -2 2a", 36, "-cba", "A_21_a_m"},
{" B -2 -2b", 36, "bca", "B_b_21_m"},
{" B -2b -2", 36, "a-cb", "B_m_21_b"},
{" C 2 -2c", 37, "", "C_c_c_2"},
{" A -2a 2", 37, "cab", "A_2_a_a"},
{" B -2b -2b", 37, "bca", "B_b_2_b"},
{" A 2 -2", 38, "", "A_m_m_2"},
{" B 2 -2", 38, "ba-c", "B_m_m_2"},
{" B -2 2", 38, "cab", "B_2_m_m"},
{" C -2 2", 38, "-cba", "C_2_m_m"},
{" C -2 -2", 38, "bca", "C_m_2_m"},
{" A -2 -2", 38, "a-cb", "A_m_2_m"},
{" A 2 -2c", 39, "", "A_b_m_2"},
{" B 2 -2c", 39, "ba-c", "B_m_a_2"},
{" B -2c 2", 39, "cab", "B_2_c_m"},
{" C -2b 2", 39, "-cba", "C_2_m_b"},
{" C -2b -2b", 39, "bca", "C_m_2_a"},
{" A -2c -2c", 39, "a-cb", "A_c_2_m"},
{" A 2 -2a", 40, "", "A_m_a_2"},
{" B 2 -2b", 40, "ba-c", "B_b_m_2"},
{" B -2b 2", 40, "cab", "B_2_m_b"},
{" C -2c 2", 40, "-cba", "C_2_c_m"},
{" C -2c -2c", 40, "bca", "C_c_2_m"},
{" A -2a -2a", 40, "a-cb", "A_m_2_a"},
{" A 2 -2ac", 41, "", "A_b_a_2"},
{" B 2 -2bc", 41, "ba-c", "B_b_a_2"},
{" B -2bc 2", 41, "cab", "B_2_c_b"},
{" C -2bc 2", 41, "-cba", "C_2_c_b"},
{" C -2bc -2bc", 41, "bca", "C_c_2_a"},
{" A -2ac -2ac", 41, "a-cb", "A_c_2_a"},
{" F 2 -2", 42, "", "F_m_m_2"},
{" F -2 2", 42, "cab", "F_2_m_m"},
{" F -2 -2", 42, "bca", "F_m_2_m"},
{" F 2 -2d", 43, "", "F_d_d_2"},
{" F -2d 2", 43, "cab", "F_2_d_d"},
{" F -2d -2d", 43, "bca", "F_d_2_d"},
{" I 2 -2", 44, "", "I_m_m_2"},
{" I -2 2", 44, "cab", "I_2_m_m"},
{" I -2 -2", 44, "bca", "I_m_2_m"},
{" I 2 -2c", 45, "", "I_b_a_2"},
{" I -2a 2", 45, "cab", "I_2_c_b"},
{" I -2b -2b", 45, "bca", "I_c_2_a"},
{" I 2 -2a", 46, "", "I_m_a_2"},
{" I 2 -2b", 46, "ba-c", "I_b_m_2"},
{" I -2b 2", 46, "cab", "I_2_m_b"},
{" I -2c 2", 46, "-cba", "I_2_c_m"},
{" I -2c -2c", 46, "bca", "I_c_2_m"},
{" I -2a -2a", 46, "a-cb", "I_m_2_a"},
{"-P 2 2", 47, "", "P_m_m_m"},
{" P 2 2 -1n", 48, "1", "P_n_n_n"},
{"-P 2ab 2bc", 48, "2", "P_n_n_n"},
{"-P 2 2c", 49, "", "P_c_c_m"},
{"-P 2a 2", 49, "cab", "P_m_a_a"},
{"-P 2b 2b", 49, "bca", "P_b_m_b"},
{" P 2 2 -1ab", 50, "1", "P_b_a_n"},
{"-P 2ab 2b", 50, "2", "P_b_a_n"},
{" P 2 2 -1bc", 50, "1cab", "P_n_c_b"},
{"-P 2b 2bc", 50, "2cab", "P_n_c_b"},
{" P 2 2 -1ac", 50, "1bca", "P_c_n_a"},
{"-P 2a 2c", 50, "2bca", "P_c_n_a"},
{"-P 2a 2a", 51, "", "P_m_m_a"},
{"-P 2b 2", 51, "ba-c", "P_m_m_b"},
{"-P 2 2b", 51, "cab", "P_b_m_m"},
{"-P 2c 2c", 51, "-cba", "P_c_m_m"},
{"-P 2c 2", 51, "bca", "P_m_c_m"},
{"-P 2 2a", 51, "a-cb", "P_m_a_m"},
{"-P 2a 2bc", 52, "", "P_n_n_a"},
{"-P 2b 2n", 52, "ba-c", "P_n_n_b"},
{"-P 2n 2b", 52, "cab", "P_b_n_n"},
{"-P 2ab 2c", 52, "-cba", "P_c_n_n"},
{"-P 2ab 2n", 52, "bca", "P_n_c_n"},
{"-P 2n 2bc", 52, "a-cb", "P_n_a_n"},
{"-P 2ac 2", 53, "", "P_m_n_a"},
{"-P 2bc 2bc", 53, "ba-c", "P_n_m_b"},
{"-P 2ab 2ab", 53, "cab", "P_b_m_n"},
{"-P 2 2ac", 53, "-cba", "P_c_n_m"},
{"-P 2 2bc", 53, "bca", "P_n_c_m"},
{"-P 2ab 2", 53, "a-cb", "P_m_a_n"},
{"-P 2a 2ac", 54, "", "P_c_c_a"},
{"-P 2b 2c", 54, "ba-c", "P_c_c_b"},
{"-P 2a 2b", 54, "cab", "P_b_a_a"},
{"-P 2ac 2c", 54, "-cba", "P_c_a_a"},
{"-P 2bc 2b", 54, "bca", "P_b_c_b"},
{"-P 2b 2ab", 54, "a-cb", "P_b_a_b"},
{"-P 2 2ab", 55, "", "P_b_a_m"},
{"-P 2bc 2", 55, "cab", "P_m_c_b"},
{"-P 2ac 2ac", 55, "bca", "P_c_m_a"},
{"-P 2ab 2ac", 56, "", "P_c_c_n"},
{"-P 2ac 2bc", 56, "cab", "P_n_a_a"},
{"-P 2bc 2ab", 56, "bca", "P_b_n_b"},
{"-P 2c 2b", 57, "", "P_b_c_m"},
{"-P 2c 2ac", 57, "ba-c", "P_c_a_m"},
{"-P 2ac 2a", 57, "cab", "P_m_c_a"},
{"-P 2b 2a", 57, "-cba", "P_m_a_b"},
{"-P 2a 2ab", 57, "bca", "P_b_m_a"},
{"-P 2bc 2c", 57, "a-cb", "P_c_m_b"},
{"-P 2 2n", 58, "", "P_n_n_m"},
{"-P 2n 2", 58, "cab", "P_m_n_n"},
{"-P 2n 2n", 58, "bca", "P_n_m_n"},
{" P 2 2ab -1ab", 59, "1", "P_m_m_n"},
{"-P 2ab 2a", 59, "2", "P_m_m_n"},
{" P 2bc 2 -1bc", 59, "1cab", "P_n_m_m"},
{"-P 2c 2bc", 59, "2cab", "P_n_m_m"},
{" P 2ac 2ac -1ac", 59, "1bca", "P_m_n_m"},
{"-P 2c 2a", 59, "2bca", "P_m_n_m"},
{"-P 2n 2ab", 60, "", "P_b_c_n"},
{"-P 2n 2c", 60, "ba-c", "P_c_a_n"},
{"-P 2a 2n", 60, "cab", "P_n_c_a"},
{"-P 2bc 2n", 60, "-cba", "P_n_a_b"},
{"-P 2ac 2b", 60, "bca", "P_b_n_a"},
{"-P 2b 2ac", 60, "a-cb", "P_c_n_b"},
{"-P 2ac 2ab", 61, "", "P_b_c_a"},
{"-P 2bc 2ac", 61, "ba-c", "P_c_a_b"},
{"-P 2ac 2n", 62, "", "P_n_m_a"},
{"-P 2bc 2a", 62, "ba-c", "P_m_n_b"},
{"-P 2c 2ab", 62, "cab", "P_b_n_m"},
{"-P 2n 2ac", 62, "-cba", "P_c_m_n"},
{"-P 2n 2a", 62, "bca", "P_m_c_n"},
{"-P 2c 2n", 62, "a-cb", "P_n_a_m"},
{"-C 2c 2", 63, "", "C_m_c_m"},
{"-C 2c 2c", 63, "ba-c", "C_c_m_m"},
{"-A 2a 2a", 63, "cab", "A_m_m_a"},
{"-A 2 2a", 63, "-cba", "A_m_a_m"},
{"-B 2 2b", 63, "bca", "B_b_m_m"},
{"-B 2b 2", 63, "a-cb", "B_m_m_b"},
{"-C 2bc 2", 64, "", "C_m_c_a"},
{"-C 2bc 2bc", 64, "ba-c", "C_c_m_b"},
{"-A 2ac 2ac", 64, "cab", "A_b_m_a"},
{"-A 2 2ac", 64, "-cba", "A_c_a_m"},
{"-B 2 2bc", 64, "bca", "B_b_c_m"},
{"-B 2bc 2", 64, "a-cb", "B_m_a_b"},
{"-C 2 2", 65, "", "C_m_m_m"},
{"-A 2 2", 65, "cab", "A_m_m_m"},
{"-B 2 2", 65, "bca", "B_m_m_m"},
{"-C 2 2c", 66, "", "C_c_c_m"},
{"-A 2a 2", 66, "cab", "A_m_a_a"},
{"-B 2b 2b", 66, "bca", "B_b_m_b"},
{"-C 2b 2", 67, "", "C_m_m_a"},
{"-C 2b 2b", 67, "ba-c", "C_m_m_b"},
{"-A 2c 2c", 67, "cab", "A_b_m_m"},
{"-A 2 2c", 67, "-cba", "A_c_m_m"},
{"-B 2 2c", 67, "bca", "B_m_c_m"},
{"-B 2c 2", 67, "a-cb", "B_m_a_m"},
{" C 2 2 -1bc", 68, "1", "C_c_c_a"},
{"-C 2b 2bc", 68, "2", "C_c_c_a"},
{" C 2 2 -1bc", 68, "1ba-c", "C_c_c_b"},
{"-C 2b 2c", 68, "2ba-c", "C_c_c_b"},
{" A 2 2 -1ac", 68, "1cab", "A_b_a_a"},
{"-A 2a 2c", 68, "2cab", "A_b_a_a"},
{" A 2 2 -1ac", 68, "1-cba", "A_c_a_a"},
{"-A 2ac 2c", 68, "2-cba", "A_c_a_a"},
{" B 2 2 -1bc", 68, "1bca", "B_b_c_b"},
{"-B 2bc 2b", 68, "2bca", "B_b_c_b"},
{" B 2 2 -1bc", 68, "1a-cb", "B_b_a_b"},
{"-B 2b 2bc", 68, "2a-cb", "B_b_a_b"},
{"-F 2 2", 69, "", "F_m_m_m"},
{" F 2 2 -1d", 70, "1", "F_d_d_d"},
{"-F 2uv 2vw", 70, "2", "F_d_d_d"},
{"-I 2 2", 71, "", "I_m_m_m"},
{"-I 2 2c", 72, "", "I_b_a_m"},
{"-I 2a 2", 72, "cab", "I_m_c_b"},
{"-I 2b 2b", 72, "bca", "I_c_m_a"},
{"-I 2b 2c", 73, "", "I_b_c_a"},
{"-I 2a 2b", 73, "ba-c", "I_c_a_b"},
{"-I 2b 2", 74, "", "I_m_m_a"},
{"-I 2a 2a", 74, "ba-c", "I_m_m_b"},
{"-I 2c 2c", 74, "cab", "I_b_m_m"},
{"-I 2 2b", 74, "-cba", "I_c_m_m"},
{"-I 2 2a", 74, "bca", "I_m_c_m"},
{"-I 2c 2", 74, "a-cb", "I_m_a_m"},
{" P 4", 75, "", "P_4"},
{" P 4w", 76, "", "P_41"},
{" P 4c", 77, "", "P_42"},
{" P 4cw", 78, "", "P_43"},
{" I 4", 79, "", "I_4"},
{" I 4bw", 80, "", "I_41"},
{" P -4", 81, "", "P_-4"},
{" I -4", 82, "", "I_-4"},
{"-P 4", 83, "", "P_4/m"},
{"-P 4c", 84, "", "P_42/m"},
{" P 4ab -1ab", 85, "1", "P_4/n"},
{"-P 4a", 85, "2", "P_4/n"},
{" P 4n -1n", 86, "1", "P_42/n"},
{"-P 4bc", 86, "2", "P_42/n"},
{"-I 4", 87, "", "I_4/m"},
{" I 4bw -1bw", 88, "1", "I_41/a"},
{"-I 4ad", 88, "2", "I_41/a"},
{" P 4 2", 89, "", "P_4_2_2"},
{" P 4ab 2ab", 90, "", "P_42_1_2"},
{" P 4w 2c", 91, "", "P_41_2_2"},
{" P 4abw 2nw", 92, "", "P_41_21_2"},
{" P 4c 2", 93, "", "P_42_2_2"},
{" P 4n 2n", 94, "", "P_42_21_2"},
{" P 4cw 2c", 95, "", "P_43_2_2"},
{" P 4nw 2abw", 96, "", "P_43_21_2"},
{" I 4 2", 97, "", "I_4_2_2"},
{" I 4bw 2bw", 98, "", "I_41_2_2"},
{" P 4 -2", 99, "", "P_4_m_m"},
{" P 4 -2ab", 100, "", "P_4_b_m"},
{" P 4c -2c", 101, "", "P_42_c_m"},
{" P 4n -2n", 102, "", "P_42_n_m"},
{" P 4 -2c", 103, "", "P_4_c_c"},
{" P 4 -2n", 104, "", "P_4_n_c"},
{" P 4c -2", 105, "", "P_42_m_c"},
{" P 4c -2ab", 106, "", "P_42_b_c"},
{" I 4 -2", 107, "", "I_4_m_m"},
{" I 4 -2c", 108, "", "I_4_c_m"},
{" I 4bw -2", 109, "", "I_41_m_d"},
{" I 4bw -2c", 110, "", "I_41_c_d"},
{" P -4 2", 111, "", "P_-4_2_m"},
{" P -4 2c", 112, "", "P_-4_2_c"},
{" P -4 2ab", 113, "", "P_-4_21_m"},
{" P -4 2n", 114, "", "P_-4_21_c"},
{" P -4 -2", 115, "", "P_-4_m_2"},
{" P -4 -2c", 116, "", "P_-4_c_2"},
{" P -4 -2ab", 117, "", "P_-4_b_2"},
{" P -4 -2n", 118, "", "P_-4_n_2"},
{" I -4 -2", 119, "", "I_-4_m_2"},
{" I -4 -2c", 120, "", "I_-4_c_2"},
{" I -4 2", 121, "", "I_-4_2_m"},
{" I -4 2bw", 122, "", "I_-4_2_d"},
{"-P 4 2", 123, "", "P_4/m_m_m"},
{"-P 4 2c", 124, "", "P_4/m_c_c"},
{" P 4 2 -1ab", 125, "1", "P_4/n_b_m"},
{"-P 4a 2b", 125, "2", "P_4/n_b_m"},
{" P 4 2 -1n", 126, "1", "P_4/n_n_c"},
{"-P 4a 2bc", 126, "2", "P_4/n_n_c"},
{"-P 4 2ab", 127, "", "P_4/m_b_m"},
{"-P 4 2n", 128, "", "P_4/m_n_c"},
{" P 4ab 2ab -1ab", 129, "1", "P_4/n_m_m"},
{"-P 4a 2a", 129, "2", "P_4/n_m_m"},
{" P 4ab 2n -1ab", 130, "1", "P_4/n_c_c"},
{"-P 4a 2ac", 130, "2", "P_4/n_c_c"},
{"-P 4c 2", 131, "", "P_42/m_m_c"},
{"-P 4c 2c", 132, "", "P_42/m_c_m"},
{" P 4n 2c -1n", 133, "1", "P_42/n_b_c"},
{"-P 4ac 2b", 133, "2", "P_42/n_b_c"},
{" P 4n 2 -1n", 134, "1", "P_42/n_n_m"},
{"-P 4ac 2bc", 134, "2", "P_42/n_n_m"},
{"-P 4c 2ab", 135, "", "P_42/m_b_c"},
{"-P 4n 2n", 136, "", "P_42/m_n_m"},
{" P 4n 2n -1n", 137, "1", "P_42/n_m_c"},
{"-P 4ac 2a", 137, "2", "P_42/n_m_c"},
{" P 4n 2ab -1n", 138, "1", "P_42/n_c_m"},
{"-P 4ac 2ac", 138, "2", "P_42/n_c_m"},
{"-I 4 2", 139, "", "I_4/m_m_m"},
{"-I 4 2c", 140, "", "I_4/m_c_m"},
{" I 4bw 2bw -1bw", 141, "1", "I_41/a_m_d"},
{"-I 4bd 2", 141, "2", "I_41/a_m_d"},
{" I 4bw 2aw -1bw", 142, "1", "I_41/a_c_d"},
{"-I 4bd 2c", 142, "2", "I_41/a_c_d"},
{" P 3", 143, "", "P_3"},
{" P 31", 144, "", "P_31"},
{" P 32", 145, "", "P_32"},
{" R 3", 146, "H", "R_3"},
{" P 3*", 146, "R", "R_3"},
{"-P 3", 147, "", "P_-3"},
{"-R 3", 148, "H", "R_-3"},
{"-P 3*", 148, "R", "R_-3"},
{" P 3 2", 149, "", "P_3_1_2"},
{" P 3 2\"", 150, "", "P_3_2_1"},
{" P 31 2c (0 0 1)", 151, "", "P_31_1_2"},
{" P 31 2\"", 152, "", "P_31_2_1"},
{" P 32 2c (0 0 -1)", 153, "", "P_32_1_2"},
{" P 32 2\"", 154, "", "P_32_2_1"},
{" R 3 2\"", 155, "H", "R_32"},
{" P 3* 2", 155, "R", "R_32"},
{" P 3 -2\"", 156, "", "P_3_m_1"},
{" P 3 -2", 157, "", "P_3_1_m"},
{" P 3 -2\"c", 158, "", "P_3_c_1"},
{" P 3 -2c", 159, "", "P_3_1_c"},
{" R 3 -2\"", 160, "H", "R_3_m"},
{" P 3* -2", 160, "R", "R_3_m"},
{" R 3 -2\"c", 161, "H", "R_3_c"},
{" P 3* -2n", 161, "R", "R_3_c"},
{"-P 3 2", 162, "", "P_-3_1_m"},
{"-P 3 2c", 163, "", "P_-3_1_c"},
{"-P 3 2\"", 164, "", "P_-3_m_1"},
{"-P 3 2\"c", 165, "", "P_-3_c_1"},
{"-R 3 2\"", 166, "H", "R_-3_m"},
{"-P 3* 2", 166, "R", "R_-3_m"},
{"-R 3 2\"c", 167, "H", "R_-3_c"},
{"-P 3* 2n", 167, "R", "R_-3_c"},
{" P 6", 168, "", "P_6"},
{" P 61", 169, "", "P_61"},
{" P 65", 170, "", "P_65"},
{" P 62", 171, "", "P_62"},
{" P 64", 172, "", "P_64"},
{" P 6c", 173, "", "P_63"},
{" P -6", 174, "", "P_-6"},
{"-P 6", 175, "", "P_6/m"},
{"-P 6c", 176, "", "P_63/m"},
{" P 6 2", 177, "", "P_6_2_2"},
{" P 61 2 (0 0 -1)", 178, "", "P_61_2_2"},
{" P 65 2 (0 0 1)", 179, "", "P_65_2_2"},
{" P 62 2c (0 0 1)", 180, "", "P_62_2_2"},
{" P 64 2c (0 0 -1)", 181, "", "P_64_2_2"},
{" P 6c 2c", 182, "", "P_63_2_2"},
{" P 6 -2", 183, "", "P_6_m_m"},
{" P 6 -2c", 184, "", "P_6_c_c"},
{" P 6c -2", 185, "", "P_63_c_m"},
{" P 6c -2c", 186, "", "P_63_m_c"},
{" P -6 2", 187, "", "P_-6_m_2"},
{" P -6c 2", 188, "", "P_-6_c_2"},
{" P -6 -2", 189, "", "P_-6_2_m"},
{" P -6c -2c", 190, "", "P_-6_2_c"},
{"-P 6 2", 191, "", "P_6/m_m_m"},
{"-P 6 2c", 192, "", "P_6/m_c_c"},
{"-P 6c 2", 193, "", "P_63/m_c_m"},
{"-P 6c 2c", 194, "", "P_63/m_m_c"},
{" P 2 2 3", 195, "", "P_2_3"},
{" F 2 2 3", 196, "", "F_2_3"},
{" I 2 2 3", 197, "", "I_2_3"},
{" P 2ac 2ab 3", 198, "", "P_21_3"},
{" I 2b 2c 3", 199, "", "I_21_3"},
{"-P 2 2 3", 200, "", "P_m_-3"},
{" P 2 2 3 -1n", 201, "1", "P_n_-3"},
{"-P 2ab 2bc 3", 201, "2", "P_n_-3"},
{"-F 2 2 3", 202, "", "F_m_-3"},
{" F 2 2 3 -1d", 203, "1", "F_d_-3"},
{"-F 2uv 2vw 3", 203, "2", "F_d_-3"},
{"-I 2 2 3", 204, "", "I_m_-3"},
{"-P 2ac 2ab 3", 205, "", "P_a_-3"},
{"-I 2b 2c 3", 206, "", "I_a_-3"},
{" P 4 2 3", 207, "", "P_4_3_2"},
{" P 4n 2 3", 208, "", "P_42_3_2"},
{" F 4 2 3", 209, "", "F_4_3_2"},
{" F 4d 2 3", 210, "", "F_41_3_2"},
{" I 4 2 3", 211, "", "I_4_3_2"},
{" P 4acd 2ab 3", 212, "", "P_43_3_2"},
{" P 4bd 2ab 3", 213, "", "P_41_3_2"},
{" I 4bd 2c 3", 214, "", "I_41_3_2"},
{" P -4 2 3", 215, "", "P_-4_3_m"},
{" F -4 2 3", 216, "", "F_-4_3_m"},
{" I -4 2 3", 217, "", "I_-4_3_m"},
{" P -4n 2 3", 218, "", "P_-4_3_n"},
{" F -4c 2 3", 219, "", "F_-4_3_c"},
{" I -4bd 2c 3", 220, "", "I_-4_3_d"},
{"-P 4 2 3", 221, "", "P_m_-3_m"},
{" P 4 2 3 -1n", 222, "1", "P_n_-3_n"},
{"-P 4a 2bc 3", 222, "2", "P_n_-3_n"},
{"-P 4n 2 3", 223, "", "P_m_-3_n"},
{" P 4n 2 3 -1n", 224, "1", "P_n_-3_m"},
{"-P 4bc 2bc 3", 224, "2", "P_n_-3_m"},
{"-F 4 2 3", 225, "", "F_m_-3_m"},
{"-F 4c 2 3", 226, "", "F_m_-3_c"},
{" F 4d 2 3 -1d", 227, "1", "F_d_-3_m"},
{"-F 4vw 2vw 3", 227, "2", "F_d_-3_m"},
{" F 4d 2 3 -1cd", 228, "1", "F_d_-3_c"},
{"-F 4cvw 2vw 3", 228, "2", "F_d_-3_c"},
{"-I 4 2 3", 229, "", "I_m_-3_m"},
{"-I 4bd 2c 3", 230, "", "I_a_-3_d"},
{NULL, 0, NULL, NULL}
};
#endif /* SGCLIB_C__ */
#define Sg_nLoopInv(SgInfo_)\
((SgInfo_)->Centric == -1 ? 2 : 1)
#define InitRotMx(RotMx, diagonal)\
{\
int private_i_;\
for (private_i_ = 0; private_i_ < 9; private_i_++)\
(RotMx)[private_i_] = (private_i_ % 4 ? 0 : diagonal);\
}
#define InitSeitzMx(SeitzMx_, diagonal)\
{\
int private_i_;\
for (private_i_ = 0; private_i_ < 12; private_i_++)\
(SeitzMx_)->a[private_i_] = (private_i_ % 4 ? 0 : diagonal);\
}
#if defined(SGCLIB_C__) || defined(SGCOREDEF__)
#define SpecialSMx_Identity 0x01
#define SpecialSMx_Inversion 0x02
#define SpecialSMx_Transl0 0x04
#endif
/* sgclib.c */
void SetSgError(const char *msg);
int iModPositive(int ix, int iy);
int traceRotMx(const int *RotMx);
int deterRotMx(const int *RotMx);
void RotMx_t_Vector(int *R_t_V, const int *RotMx, const int *Vector,
int FacTr);
void RotMxMultiply(int *rmxab, const int *rmxa, const int *rmxb);
void RotateRotMx(int *RotMx, const int *RMx, const int *InvRMx);
void SeitzMxMultiply(T_RTMx * smxab, const T_RTMx * smxa,
const T_RTMx * smxb);
void RTMxMultiply(T_RTMx * rtmxab, const T_RTMx * rtmxa,
const T_RTMx * rtmxb, int FacAug, int FacTr);
void InverseRotMx(const int *RotMx, int *InvRotMx);
void InverseRTMx(const T_RTMx * RTMx, T_RTMx * InvRTMx);
int IsSMxTransl0(const T_LatticeInfo * LatticeInfo, const int *SeitzMxT);
int CompareSeitzMx(const T_LatticeInfo * LatticeInfo,
const T_RTMx * SeitzMxA, const T_RTMx * SeitzMxB);
int GetRotMxOrder(const int *RotMx);
int GetRotMxInfo(const int *RotMx, T_RotMxInfo * RotMxInfo);
const T_RotMxInfo *ListOrBufRotMxInfo(const T_SgInfo * SgInfo, int iList,
T_RotMxInfo * BufRotMxInfo);
int Add2ListSeitzMx(T_SgInfo * SgInfo, const T_RTMx * NewSMx);
int AddInversion2ListSeitzMx(T_SgInfo * SgInfo);
int AddLatticeTr2ListSeitzMx(T_SgInfo * SgInfo,
const T_LatticeInfo * LatticeInfo);
int ApplyOriginShift(T_SgInfo * SgInfo);
int FindSeitzMx(const T_SgInfo * SgInfo,
int Order, int HonorSign, int RefAxis, int DirCode);
void InitSgInfo(T_SgInfo * SgInfo);
int CompleteSgInfo(T_SgInfo * SgInfo);
int CB_SMx(T_RTMx * CSiC,
const T_RTMx * CBMx, const T_RTMx * SMx,
const T_RTMx * InvCBMx);
int TransformSgInfo(const T_SgInfo * SgInfo, const T_RTMx * CBMx,
const T_RTMx * InvCBMx, T_SgInfo * BC_SgInfo);
/* sgio.c */
const T_TabSgName *FindTabSgNameEntry(const char *UserSgName,
int VolLetter);
unsigned int SgID_Number(const T_TabSgName * tsgn);
int ParseSymXYZ(const char *SymXYZ, T_RTMx * SeitzMx, int FacTr);
int ParseHallSymbol(const char *hsym, T_SgInfo * SgInfo);
int PrintFullHM_SgName(const T_TabSgName * tsgn, int space, FILE * fpout);
void PrintTabSgNameEntry(const T_TabSgName * tsgn, int Style, int space,
FILE * fpout);
const char *FormatFraction(int nume, int deno, int Decimal,
char *Buffer, int SizeBuffer);
const char *RTMx2XYZ(const T_RTMx * RTMx, int FacRo, int FacTr,
int Decimal, int TrFirst, int Low,
const char *Seperator,
char *BufferXYZ, int SizeBufferXYZ);
void PrintMapleRTMx(const T_RTMx * RTMx, int FacRo, int FacTr,
const char *Label, FILE * fpout);
void ListSgInfo(const T_SgInfo * SgInfo, int F_XYZ, int F_Verbose,
FILE * fpout);
/* sgfind.c */
const T_TabSgName *FindReferenceSpaceGroup(T_SgInfo * SgInfo,
T_RTMx * CBMx,
T_RTMx * InvCBMx);
/* sghkl.c */
int IsSysAbsent_hkl(const T_SgInfo * SgInfo,
int h, int k, int l, int *TH_Restriction);
int BuildEq_hkl(const T_SgInfo * SgInfo, T_Eq_hkl * Eq_hkl, int h, int k,
int l);
int AreSymEquivalent_hkl(const T_SgInfo * SgInfo, int h1, int k1, int l1,
int h2, int k2, int l2);
void SetListMin_hkl(const T_SgInfo * SgInfo, int Maxk, int Maxl, int *Minh,
int *Mink, int *Minl);
int IsSuppressed_hkl(const T_SgInfo * SgInfo, int Minh, int Mink, int Minl,
int Maxk, int Maxl, int h, int k, int l);
/* sgsi.c */
void MarkLegalOrigins(const T_SgInfo * SgInfo, int *TestField);
int Verify_si(int h, int k, int l, const int *TestField);
int Is_si(const T_SgInfo * SgInfo, int h, int k, int l);
int Set_si(T_SgInfo * SgInfo);
void Set_uvw(const T_SgInfo * SgInfo, int h, int k, int l, int *uvw);
#endif /* SGINFO_H__ */