<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.yasunaga-lab.bio.kyutech.ac.jp/Eos/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://www.yasunaga-lab.bio.kyutech.ac.jp/Eos/index.php?action=history&amp;feed=atom&amp;title=Crystal%28API%29</id>
		<title>Crystal(API) - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://www.yasunaga-lab.bio.kyutech.ac.jp/Eos/index.php?action=history&amp;feed=atom&amp;title=Crystal%28API%29"/>
		<link rel="alternate" type="text/html" href="http://www.yasunaga-lab.bio.kyutech.ac.jp/Eos/index.php?title=Crystal(API)&amp;action=history"/>
		<updated>2026-05-04T17:10:20Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.6</generator>

	<entry>
		<id>http://www.yasunaga-lab.bio.kyutech.ac.jp/Eos/index.php?title=Crystal(API)&amp;diff=4415&amp;oldid=prev</id>
		<title>Kinoshita: Created page with &quot;General/'''Crystal''' is API for Crystal Structure.  == constant == === Crystal Structure === Use as value of '''CrystalInfo-&gt;SpaceGroup'''.  typedef enum CrystalSpaceGroup {...&quot;</title>
		<link rel="alternate" type="text/html" href="http://www.yasunaga-lab.bio.kyutech.ac.jp/Eos/index.php?title=Crystal(API)&amp;diff=4415&amp;oldid=prev"/>
				<updated>2014-10-06T02:17:35Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;General/&amp;#039;&amp;#039;&amp;#039;Crystal&amp;#039;&amp;#039;&amp;#039; is API for Crystal Structure.  == constant == === Crystal Structure === Use as value of &amp;#039;&amp;#039;&amp;#039;CrystalInfo-&amp;gt;SpaceGroup&amp;#039;&amp;#039;&amp;#039;.  typedef enum CrystalSpaceGroup {...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;General/'''Crystal''' is API for Crystal Structure.&lt;br /&gt;
&lt;br /&gt;
== constant ==&lt;br /&gt;
=== Crystal Structure ===&lt;br /&gt;
Use as value of '''CrystalInfo-&amp;gt;SpaceGroup'''.&lt;br /&gt;
 typedef enum CrystalSpaceGroup {&lt;br /&gt;
 	CrystalSpaceGroupP1=0,&lt;br /&gt;
 	CrystalSpaceGroupHelical=1&lt;br /&gt;
 } CrystalSpaceGroup;&lt;br /&gt;
&lt;br /&gt;
 #ifdef __CRYSTALINIT__ &lt;br /&gt;
 char* CrystalSpaceGroupString[] = {&lt;br /&gt;
 	&amp;quot;P1&amp;quot;,&lt;br /&gt;
 	&amp;quot;HelicalSymmmetry&amp;quot;,&lt;br /&gt;
 	NULL	&lt;br /&gt;
 };&lt;br /&gt;
 #else&lt;br /&gt;
 extern char* CrystalSpaceGroupString[];&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
== struct ==&lt;br /&gt;
 typedef float CrystalParaTypeReal;&lt;br /&gt;
 typedef int   CrystalParaTypeInteger;&lt;br /&gt;
&lt;br /&gt;
 typedef struct CrystalParaTypeRealCoord {&lt;br /&gt;
 	CrystalParaTypeReal x;&lt;br /&gt;
 	CrystalParaTypeReal y;&lt;br /&gt;
 	CrystalParaTypeReal z;&lt;br /&gt;
 } CrystalParaTypeRealCoord;&lt;br /&gt;
&lt;br /&gt;
 typedef struct CrystalParaTypeIntegerCoord {&lt;br /&gt;
 	CrystalParaTypeInteger x;&lt;br /&gt;
 	CrystalParaTypeInteger y;&lt;br /&gt;
 	CrystalParaTypeInteger z;&lt;br /&gt;
 } CrystalParaTypeIntegerCoord;&lt;br /&gt;
&lt;br /&gt;
 typedef struct CrystalParaTypeRealAxis {&lt;br /&gt;
 	CrystalParaTypeReal a;&lt;br /&gt;
 	CrystalParaTypeReal b;&lt;br /&gt;
 	CrystalParaTypeReal c;&lt;br /&gt;
 } CrystalParaTypeRealAxis;&lt;br /&gt;
&lt;br /&gt;
 typedef struct CrystalParaTypeIntegerAxis {&lt;br /&gt;
 	CrystalParaTypeInteger a;&lt;br /&gt;
 	CrystalParaTypeInteger b;&lt;br /&gt;
 	CrystalParaTypeInteger c;&lt;br /&gt;
 } CrystalParaTypeIntegerAxis;&lt;br /&gt;
&lt;br /&gt;
 typedef struct HelicalSymmetryInfo {&lt;br /&gt;
 	CrystalParaTypeInteger t;         /* Turn */&lt;br /&gt;
 	CrystalParaTypeInteger u;         /* Unit */ &lt;br /&gt;
 	CrystalParaTypeInteger n;         /* n-strands */&lt;br /&gt;
 &lt;br /&gt;
 	/* &lt;br /&gt;
 		Don't change the below variables directly,&lt;br /&gt;
 		bacause the variables can be calculated by the upper's.&lt;br /&gt;
 	*/&lt;br /&gt;
 	CrystalParaTypeReal    dz;     /* dz     = TruePitch/unit */&lt;br /&gt;
 	CrystalParaTypeReal    dphi;   /* dphi   = 2*PI*turn/unit */&lt;br /&gt;
 } HelicalSymmetryInfo;&lt;br /&gt;
&lt;br /&gt;
 typedef struct CrystalInfo {&lt;br /&gt;
 	CrystalParaTypeRealCoord    aAxis;    /* Unit Cell Vector : a-axis : Length = 1 */&lt;br /&gt;
 	CrystalParaTypeRealCoord    bAxis;    /* Unit Cell Vector : b-axis : Length = 1 */&lt;br /&gt;
 	CrystalParaTypeRealCoord    cAxis;    /* Unit Cell Vector : c-axis : Length = 1 */&lt;br /&gt;
 	CrystalParaTypeRealAxis     CellLength;    /* Unit Cell Size   a, b, c-axis [A] */&lt;br /&gt;
 	CrystalParaTypeRealCoord    Origin;        /* Unit Cell Origin [A] */&lt;br /&gt;
 	CrystalParaTypeIntegerAxis  N;             /* Number of Unit Cells a, b, c-axis */&lt;br /&gt;
 	CrystalParaTypeIntegerAxis  StartN;        /* Start  of Unit Cells a, b, c-axis */&lt;br /&gt;
 	CrystalSpaceGroup           SpaceGroup;&lt;br /&gt;
 	&lt;br /&gt;
 	/* Information for Special Symmetry */&lt;br /&gt;
 	HelicalSymmetryInfo HelixInfo;&lt;br /&gt;
 		/* For HelicalSymmetry : &lt;br /&gt;
 			The filament axis (z-axis) is treated as the c-axis. &lt;br /&gt;
 			The azimuthal axis (phi-axis) is treated as the b-axis. &lt;br /&gt;
 			The radius axis (r-axis) is treated as the a-axis.&lt;br /&gt;
 		*/&lt;br /&gt;
 } CrystalInfo;&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
=== Initialize ===&lt;br /&gt;
Initialize '''crystal'''.&lt;br /&gt;
 extern void crystalInit(CrystalInfo* crystal);&lt;br /&gt;
&lt;br /&gt;
=== File Read ===&lt;br /&gt;
Read data in file '''fpt''', and store to '''linfo'''.&lt;br /&gt;
 extern void crystalInfoRead(FILE* fpt, CrystalInfo* linfo, int mode);&lt;br /&gt;
&lt;br /&gt;
=== File Write ===&lt;br /&gt;
Write data of  '''linfo''' to file '''fpt'''.&lt;br /&gt;
 extern void crystalInfoWrite(FILE* fpt, CrystalInfo* linfo, int mode);&lt;br /&gt;
&lt;br /&gt;
=== Set length of axis ===&lt;br /&gt;
Set the '''length''' of specified '''axis''' in '''C'''.&amp;lt;br&amp;gt;&lt;br /&gt;
In addition, recalculate its coordinates by using '''crystalAxisSetUsingCellLength'''.&lt;br /&gt;
 extern void crystalCellLengthSet(CrystalInfo* C, char axis, CrystalParaTypeReal length, int mode);&lt;br /&gt;
&lt;br /&gt;
Calculate coordinates of specified '''axis''', and store to '''C'''-&amp;gt;pAxis.x(p=a, b, c).&lt;br /&gt;
 extern void crystalAxisSetUsingCellLength(CrystalInfo* C, char axis, int mode);&lt;br /&gt;
&lt;br /&gt;
=== Set coordinates of axis ===&lt;br /&gt;
Set the '''coordinates''' of specified '''axis''' in '''C'''.&amp;lt;br&amp;gt;&lt;br /&gt;
In addition, recalculate its length by using '''crystalCellLengthSetUsingAxis'''.&lt;br /&gt;
 extern void crystalAxisSet(CrystalInfo* C, char axis, CrystalParaTypeReal x, CrystalParaTypeReal y, CrystalParaTypeReal z, int mode);&lt;br /&gt;
&lt;br /&gt;
Calculate length of specified '''axis''', and store to '''C'''-&amp;gt;CellLength.p(p=a, b, c).&lt;br /&gt;
 extern void crystalCellLengthSetUsingAxis(CrystalInfo* C, char axis, int mode);&lt;br /&gt;
&lt;br /&gt;
=== APIInformation ===&lt;br /&gt;
Help&lt;br /&gt;
 extern void crystalInfoFileFormat(FILE* fpt, int mode);&lt;br /&gt;
&lt;br /&gt;
Output useable crystal structure to '''fpt'''.(List: '''CrystalSpaceGroupString''')&lt;br /&gt;
 extern void crystalSpaceGroupPrint(FILE* fpt, int mode);&lt;/div&gt;</summary>
		<author><name>Kinoshita</name></author>	</entry>

	</feed>