「Crystal(API)」の版間の差分
提供: Eospedia
(→定数) |
(→API) |
||
| 行84: | 行84: | ||
extern void crystalInit(CrystalInfo* crystal); | extern void crystalInit(CrystalInfo* crystal); | ||
| + | === ファイル読み込み === | ||
| + | ファイルfptからデータを読み出して、linfoへ格納します。 | ||
extern void crystalInfoRead(FILE* fpt, CrystalInfo* linfo, int mode); | extern void crystalInfoRead(FILE* fpt, CrystalInfo* linfo, int mode); | ||
| + | |||
| + | === ファイル書き出し === | ||
| + | linfoのデータをファイルfptへ書き出します。 | ||
extern void crystalInfoWrite(FILE* fpt, CrystalInfo* linfo, int mode); | extern void crystalInfoWrite(FILE* fpt, CrystalInfo* linfo, int mode); | ||
| − | + | ||
extern void crystalCellLengthSet(CrystalInfo* C, char axis, CrystalParaTypeReal length, int mode); | extern void crystalCellLengthSet(CrystalInfo* C, char axis, CrystalParaTypeReal length, int mode); | ||
extern void crystalAxisSet(CrystalInfo* C, char axis, CrystalParaTypeReal x, CrystalParaTypeReal y, CrystalParaTypeReal z, int mode); | extern void crystalAxisSet(CrystalInfo* C, char axis, CrystalParaTypeReal x, CrystalParaTypeReal y, CrystalParaTypeReal z, int mode); | ||
| + | |||
| + | 指定した軸axisの長さを算出して、C->CellLength.へ格納します。 | ||
extern void crystalCellLengthSetUsingAxis(CrystalInfo* C, char axis, int mode); | extern void crystalCellLengthSetUsingAxis(CrystalInfo* C, char axis, int mode); | ||
extern void crystalAxisSetUsingCellLength(CrystalInfo* C, char axis, int mode); | extern void crystalAxisSetUsingCellLength(CrystalInfo* C, char axis, int mode); | ||
=== API情報 === | === API情報 === | ||
| + | ヘルプ | ||
| + | extern void crystalInfoFileFormat(FILE* fpt, int mode); | ||
| + | |||
使用可能な結晶構造をfptへ出力します。(CrystalSpaceGroupStringのリスト) | 使用可能な結晶構造をfptへ出力します。(CrystalSpaceGroupStringのリスト) | ||
extern void crystalSpaceGroupPrint(FILE* fpt, int mode); | extern void crystalSpaceGroupPrint(FILE* fpt, int mode); | ||
2014年10月6日 (月) 01:39時点における版
General/Crystalは結晶構造のためのAPI です。
定数
結晶構造
CrystalInfo->SpaceGroupの値として使用します。
typedef enum CrystalSpaceGroup {
CrystalSpaceGroupP1=0,
CrystalSpaceGroupHelical=1
} CrystalSpaceGroup;
#ifdef __CRYSTALINIT__
char* CrystalSpaceGroupString[] = {
"P1",
"HelicalSymmmetry",
NULL
};
#else
extern char* CrystalSpaceGroupString[];
#endif
構造体
typedef float CrystalParaTypeReal; typedef int CrystalParaTypeInteger;
typedef struct CrystalParaTypeRealCoord {
CrystalParaTypeReal x;
CrystalParaTypeReal y;
CrystalParaTypeReal z;
} CrystalParaTypeRealCoord;
typedef struct CrystalParaTypeIntegerCoord {
CrystalParaTypeInteger x;
CrystalParaTypeInteger y;
CrystalParaTypeInteger z;
} CrystalParaTypeIntegerCoord;
typedef struct CrystalParaTypeRealAxis {
CrystalParaTypeReal a;
CrystalParaTypeReal b;
CrystalParaTypeReal c;
} CrystalParaTypeRealAxis;
typedef struct CrystalParaTypeIntegerAxis {
CrystalParaTypeInteger a;
CrystalParaTypeInteger b;
CrystalParaTypeInteger c;
} CrystalParaTypeIntegerAxis;
typedef struct HelicalSymmetryInfo {
CrystalParaTypeInteger t; /* Turn */
CrystalParaTypeInteger u; /* Unit */
CrystalParaTypeInteger n; /* n-strands */
/*
Don't change the below variables directly,
bacause the variables can be calculated by the upper's.
*/
CrystalParaTypeReal dz; /* dz = TruePitch/unit */
CrystalParaTypeReal dphi; /* dphi = 2*PI*turn/unit */
} HelicalSymmetryInfo;
typedef struct CrystalInfo {
CrystalParaTypeRealCoord aAxis; /* Unit Cell Vector : a-axis : Length = 1 */
CrystalParaTypeRealCoord bAxis; /* Unit Cell Vector : b-axis : Length = 1 */
CrystalParaTypeRealCoord cAxis; /* Unit Cell Vector : c-axis : Length = 1 */
CrystalParaTypeRealAxis CellLength; /* Unit Cell Size a, b, c-axis [A] */
CrystalParaTypeRealCoord Origin; /* Unit Cell Origin [A] */
CrystalParaTypeIntegerAxis N; /* Number of Unit Cells a, b, c-axis */
CrystalParaTypeIntegerAxis StartN; /* Start of Unit Cells a, b, c-axis */
CrystalSpaceGroup SpaceGroup;
/* Information for Special Symmetry */
HelicalSymmetryInfo HelixInfo;
/* For HelicalSymmetry :
The filament axis (z-axis) is treated as the c-axis.
The azimuthal axis (phi-axis) is treated as the b-axis.
The radius axis (r-axis) is treated as the a-axis.
*/
} CrystalInfo;
API
初期化
crystalを初期化します。
extern void crystalInit(CrystalInfo* crystal);
ファイル読み込み
ファイルfptからデータを読み出して、linfoへ格納します。
extern void crystalInfoRead(FILE* fpt, CrystalInfo* linfo, int mode);
ファイル書き出し
linfoのデータをファイルfptへ書き出します。
extern void crystalInfoWrite(FILE* fpt, CrystalInfo* linfo, int mode);
extern void crystalCellLengthSet(CrystalInfo* C, char axis, CrystalParaTypeReal length, int mode); extern void crystalAxisSet(CrystalInfo* C, char axis, CrystalParaTypeReal x, CrystalParaTypeReal y, CrystalParaTypeReal z, int mode);
指定した軸axisの長さを算出して、C->CellLength.へ格納します。
extern void crystalCellLengthSetUsingAxis(CrystalInfo* C, char axis, int mode); extern void crystalAxisSetUsingCellLength(CrystalInfo* C, char axis, int mode);
API情報
ヘルプ
extern void crystalInfoFileFormat(FILE* fpt, int mode);
使用可能な結晶構造をfptへ出力します。(CrystalSpaceGroupStringのリスト)
extern void crystalSpaceGroupPrint(FILE* fpt, int mode);