3 <H2>Information from source codes</H2>
8 $Date: 2002/02/14 10:18:46 $
11 $Log: crystalHelix.c,v $
13 ../src/crystalInfoFile.c:
31 typedef enum CrystalSpaceGroup {
32 CrystalSpaceGroupP1=0,
33 CrystalSpaceGroupHelical=1
36 #ifdef __CRYSTALINIT__
37 char* CrystalSpaceGroupString[] = {
43 extern char* CrystalSpaceGroupString[];
46 typedef float CrystalParaTypeReal;
47 typedef int CrystalParaTypeInteger;
49 typedef struct CrystalParaTypeRealCoord {
50 CrystalParaTypeReal x;
51 CrystalParaTypeReal y;
52 CrystalParaTypeReal z;
53 } CrystalParaTypeRealCoord;
55 typedef struct CrystalParaTypeIntegerCoord {
56 CrystalParaTypeInteger x;
57 CrystalParaTypeInteger y;
58 CrystalParaTypeInteger z;
59 } CrystalParaTypeIntegerCoord;
61 typedef struct CrystalParaTypeRealAxis {
62 CrystalParaTypeReal a;
63 CrystalParaTypeReal b;
64 CrystalParaTypeReal c;
65 } CrystalParaTypeRealAxis;
67 typedef struct CrystalParaTypeIntegerAxis {
68 CrystalParaTypeInteger a;
69 CrystalParaTypeInteger b;
70 CrystalParaTypeInteger c;
71 } CrystalParaTypeIntegerAxis;
73 typedef struct HelicalSymmetryInfo {
74 CrystalParaTypeInteger t; /* Turn */
75 CrystalParaTypeInteger u; /* Unit */
76 CrystalParaTypeInteger n; /* n-strands */
79 Don't change the below variables directly,
80 bacause the variables can be calculated by the upper's.
82 CrystalParaTypeReal dz; /* dz = TruePitch/unit */
83 CrystalParaTypeReal dphi; /* dphi = 2*PI*turn/unit */
84 } HelicalSymmetryInfo;
86 typedef struct CrystalInfo {
87 CrystalParaTypeRealCoord aAxis; /* Unit Cell Vector : a-axis : Length = 1 */
88 CrystalParaTypeRealCoord bAxis; /* Unit Cell Vector : b-axis : Length = 1 */
89 CrystalParaTypeRealCoord cAxis; /* Unit Cell Vector : c-axis : Length = 1 */
90 CrystalParaTypeRealAxis CellLength; /* Unit Cell Size a, b, c-axis [A] */
91 CrystalParaTypeRealCoord Origin; /* Unit Cell Origin [A] */
92 CrystalParaTypeIntegerAxis N; /* Number of Unit Cells a, b, c-axis */
93 CrystalParaTypeIntegerAxis StartN; /* Start of Unit Cells a, b, c-axis */
94 CrystalSpaceGroup SpaceGroup;
96 /* Reciprocal Space */
97 CrystalParaTypeRealCoord aReciprocalAxis;
98 CrystalParaTypeRealCoord bReciprocalAxis;
99 CrystalParaTypeRealCoord cReciprocalAxis;
101 /* Information for Special Symmetry */
102 HelicalSymmetryInfo HelixInfo;
103 /* For HelicalSymmetry :
104 The filament axis (z-axis) is treated as the c-axis.
105 The azimuthal axis (phi-axis) is treated as the b-axis.
106 The radius axis (r-axis) is treated as the a-axis.
112 /* prototype begin */
117 extern void crystalInit(CrystalInfo* crystal);
119 extern void crystalSpaceGroupPrint(FILE* fpt, int mode);
121 extern void crystalInfoRead(FILE* fpt, CrystalInfo* linfo, int mode);
122 extern void crystalInfoWrite(FILE* fpt, CrystalInfo* linfo, int mode);
123 extern void crystalInfoFileFormat(FILE* fpt, int mode);
125 extern void crystalCellLengthSet(CrystalInfo* C, char axis, CrystalParaTypeReal length, int mode);
126 extern void crystalAxisSet(CrystalInfo* C, char axis, CrystalParaTypeReal x, CrystalParaTypeReal y, CrystalParaTypeReal z, int mode);
127 extern void crystalCellLengthSetUsingAxis(CrystalInfo* C, char axis, int mode);
128 extern void crystalAxisSetUsingCellLength(CrystalInfo* C, char axis, int mode);
130 extern double crystalInfoGetLatticeVolume(CrystalInfo* linfo, int mode);
131 extern void crystalInfoGetReciprocalLattice(CrystalInfo* linfo, int mode);
139 #endif /* CRYSTAL_H */