「Crystal(API)」の版間の差分
提供: Eospedia
(ページの作成:「General/'''Crystal'''は結晶構造のためのAPI です。 == 定数 == typedef enum CrystalSpaceGroup { CrystalSpaceGroupP1=0, CrystalSpaceGroupHelical=1 } Cry...」) |
(→ファイル書き出し) |
||
(同じ利用者による、間の4版が非表示) | |||
行2: | 行2: | ||
== 定数 == | == 定数 == | ||
+ | === 結晶構造 === | ||
+ | CrystalInfo->SpaceGroupの値として使用します。 | ||
typedef enum CrystalSpaceGroup { | typedef enum CrystalSpaceGroup { | ||
CrystalSpaceGroupP1=0, | CrystalSpaceGroupP1=0, | ||
行78: | 行80: | ||
== API == | == API == | ||
+ | === 初期化 === | ||
+ | crystalを初期化します。 | ||
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); | ||
− | |||
+ | === 軸の長さ設定 === | ||
+ | Cについて指定した軸axisの長さをlengthとして設定します。<br> | ||
+ | さらにcrystalAxisSetUsingCellLengthを使用してその座標も再計算します。 | ||
extern void crystalCellLengthSet(CrystalInfo* C, char axis, CrystalParaTypeReal length, int mode); | extern void crystalCellLengthSet(CrystalInfo* C, char axis, CrystalParaTypeReal length, int mode); | ||
+ | |||
+ | 指定した軸axisの座標を算出して、C->pAxis.x(p=a, b, c)へ格納します。 | ||
+ | extern void crystalAxisSetUsingCellLength(CrystalInfo* C, char axis, int mode); | ||
+ | |||
+ | === 軸の座標設定 === | ||
+ | Cについて指定した軸axisの座標を(x, y, z)として設定します。<br> | ||
+ | さらにcrystalCellLengthSetUsingAxisを使用してその長さも再計算します。 | ||
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.p(p=a, b, c)へ格納します。 | ||
extern void crystalCellLengthSetUsingAxis(CrystalInfo* C, char axis, int mode); | extern void crystalCellLengthSetUsingAxis(CrystalInfo* C, char axis, int mode); | ||
− | extern void | + | |
+ | === API情報 === | ||
+ | ヘルプ | ||
+ | extern void crystalInfoFileFormat(FILE* fpt, int mode); | ||
+ | |||
+ | 使用可能な結晶構造をfptへ出力します。(CrystalSpaceGroupStringのリスト) | ||
+ | extern void crystalSpaceGroupPrint(FILE* fpt, int mode); |
2014年10月6日 (月) 01:56時点における最新版
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);
軸の長さ設定
Cについて指定した軸axisの長さをlengthとして設定します。
さらにcrystalAxisSetUsingCellLengthを使用してその座標も再計算します。
extern void crystalCellLengthSet(CrystalInfo* C, char axis, CrystalParaTypeReal length, int mode);
指定した軸axisの座標を算出して、C->pAxis.x(p=a, b, c)へ格納します。
extern void crystalAxisSetUsingCellLength(CrystalInfo* C, char axis, int mode);
軸の座標設定
Cについて指定した軸axisの座標を(x, y, z)として設定します。
さらにcrystalCellLengthSetUsingAxisを使用してその長さも再計算します。
extern void crystalAxisSet(CrystalInfo* C, char axis, CrystalParaTypeReal x, CrystalParaTypeReal y, CrystalParaTypeReal z, int mode);
指定した軸axisの長さを算出して、C->CellLength.p(p=a, b, c)へ格納します。
extern void crystalCellLengthSetUsingAxis(CrystalInfo* C, char axis, int mode);
API情報
ヘルプ
extern void crystalInfoFileFormat(FILE* fpt, int mode);
使用可能な結晶構造をfptへ出力します。(CrystalSpaceGroupStringのリスト)
extern void crystalSpaceGroupPrint(FILE* fpt, int mode);