Files
sics/sginfo.h
koennecke 361ee9ebea - Reworked the connection object and the IO system
- Reworked the support for TRICS
- Added a second generation motor
2009-02-03 08:05:39 +00:00

1790 lines
55 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__ */