8 typedef enum CrystalSpaceGroup {
10 CrystalSpaceGroupHelical=1
13 #ifdef __CRYSTALINIT__
14 char* CrystalSpaceGroupString[] = {
20 extern char* CrystalSpaceGroupString[];
23 typedef float CrystalParaTypeReal;
24 typedef int CrystalParaTypeInteger;
26 typedef struct CrystalParaTypeRealCoord {
27 CrystalParaTypeReal x;
28 CrystalParaTypeReal y;
29 CrystalParaTypeReal z;
30 } CrystalParaTypeRealCoord;
32 typedef struct CrystalParaTypeIntegerCoord {
33 CrystalParaTypeInteger x;
34 CrystalParaTypeInteger y;
35 CrystalParaTypeInteger z;
36 } CrystalParaTypeIntegerCoord;
38 typedef struct CrystalParaTypeRealAxis {
39 CrystalParaTypeReal a;
40 CrystalParaTypeReal b;
41 CrystalParaTypeReal c;
42 } CrystalParaTypeRealAxis;
44 typedef struct CrystalParaTypeIntegerAxis {
45 CrystalParaTypeInteger a;
46 CrystalParaTypeInteger b;
47 CrystalParaTypeInteger c;
48 } CrystalParaTypeIntegerAxis;
50 typedef struct HelicalSymmetryInfo {
51 CrystalParaTypeInteger t; /* Turn */
52 CrystalParaTypeInteger u; /* Unit */
53 CrystalParaTypeInteger n; /* n-strands */
56 Don't change the below variables directly,
57 bacause the variables can be calculated by the upper's.
59 CrystalParaTypeReal dz; /* dz = TruePitch/unit */
60 CrystalParaTypeReal dphi; /* dphi = 2*PI*turn/unit */
61 } HelicalSymmetryInfo;
63 typedef struct CrystalInfo {
64 CrystalParaTypeRealCoord aAxis; /* Unit Cell Vector : a-axis : Length = 1 */
65 CrystalParaTypeRealCoord bAxis; /* Unit Cell Vector : b-axis : Length = 1 */
66 CrystalParaTypeRealCoord cAxis; /* Unit Cell Vector : c-axis : Length = 1 */
67 CrystalParaTypeRealAxis CellLength; /* Unit Cell Size a, b, c-axis [A] */
68 CrystalParaTypeRealCoord Origin; /* Unit Cell Origin [A] */
69 CrystalParaTypeIntegerAxis N; /* Number of Unit Cells a, b, c-axis */
70 CrystalParaTypeIntegerAxis StartN; /* Start of Unit Cells a, b, c-axis */
71 CrystalSpaceGroup SpaceGroup;
73 /* Information for Special Symmetry */
74 HelicalSymmetryInfo HelixInfo;
75 /* For HelicalSymmetry :
76 The filament axis (z-axis) is treated as the c-axis.
77 The azimuthal axis (phi-axis) is treated as the b-axis.
78 The radius axis (r-axis) is treated as the a-axis.
85 extern void crystalInit(CrystalInfo* crystal);
87 extern void crystalSpaceGroupPrint(FILE* fpt, int mode);
89 extern void crystalInfoRead(FILE* fpt, CrystalInfo* linfo, int mode);
90 extern void crystalInfoWrite(FILE* fpt, CrystalInfo* linfo, int mode);
91 extern void crystalInfoFileFormat(FILE* fpt, int mode);
93 extern void crystalCellLengthSet(CrystalInfo* C, char axis, CrystalParaTypeReal length, int mode);
94 extern void crystalAxisSet(CrystalInfo* C, char axis, CrystalParaTypeReal x, CrystalParaTypeReal y, CrystalParaTypeReal z, int mode);
95 extern void crystalCellLengthSetUsingAxis(CrystalInfo* C, char axis, int mode);
96 extern void crystalAxisSetUsingCellLength(CrystalInfo* C, char axis, int mode);
100 #endif /* CRYSTAL_H */