「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);